@jmruthers/pace-core 0.5.54 → 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 (396) 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/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-4T627QFJ.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-KBRACSJI.js.map} +0 -0
  396. /package/dist/{chunk-6MTY77WU.js.map → chunk-TNMXZLDR.js.map} +0 -0
@@ -1,84 +0,0 @@
1
- /**
2
- * @file PrintButtonGroup Component
3
- * @package @jmruthers/pace-core
4
- * @module PrintButtonGroup
5
- * @since 0.4.38
6
- *
7
- * Print-optimized button group component.
8
- */
9
-
10
- import React from 'react';
11
- import { cn } from '../../utils/cn';
12
- import { PrintButtonGroupProps } from './types';
13
-
14
- export function PrintButtonGroup({
15
- children,
16
- orientation = 'horizontal',
17
- spacing = 'md',
18
- align = 'left',
19
- printOptimized = true,
20
- className,
21
- ...props
22
- }: PrintButtonGroupProps) {
23
- const getOrientationClasses = (orientation: string): string => {
24
- switch (orientation) {
25
- case 'vertical':
26
- return 'flex-col';
27
- default:
28
- return 'flex-row';
29
- }
30
- };
31
-
32
- const getSpacingClasses = (spacing: string): string => {
33
- switch (spacing) {
34
- case 'none':
35
- return 'gap-0';
36
- case 'sm':
37
- return 'gap-2';
38
- case 'lg':
39
- return 'gap-6';
40
- default:
41
- return 'gap-4';
42
- }
43
- };
44
-
45
- const getAlignmentClasses = (align: string): string => {
46
- switch (align) {
47
- case 'center':
48
- return 'justify-center';
49
- case 'right':
50
- return 'justify-end';
51
- case 'stretch':
52
- return 'justify-stretch';
53
- default:
54
- return 'justify-start';
55
- }
56
- };
57
-
58
- const getPrintOptimizedClasses = (): string => {
59
- if (!printOptimized) return '';
60
- return cn(
61
- 'print:hidden',
62
- 'print:opacity-0',
63
- 'print:pointer-events-none'
64
- );
65
- };
66
-
67
- return (
68
- <div
69
- className={cn(
70
- 'print-button-group',
71
- 'flex',
72
- 'items-center',
73
- getOrientationClasses(orientation),
74
- getSpacingClasses(spacing),
75
- getAlignmentClasses(align),
76
- getPrintOptimizedClasses(),
77
- className
78
- )}
79
- {...props}
80
- >
81
- {children}
82
- </div>
83
- );
84
- }
@@ -1,94 +0,0 @@
1
- /**
2
- * @file PrintToolbar Component
3
- * @package @jmruthers/pace-core
4
- * @module PrintToolbar
5
- * @since 0.4.38
6
- *
7
- * Print-optimized toolbar component for print controls.
8
- */
9
-
10
- import React from 'react';
11
- import { cn } from '../../utils/cn';
12
- import { PrintToolbarProps } from './types';
13
-
14
- export function PrintToolbar({
15
- children,
16
- position = 'top',
17
- align = 'left',
18
- showOnPrint = false,
19
- printOptimized = true,
20
- className,
21
- ...props
22
- }: PrintToolbarProps) {
23
- const getPositionClasses = (position: string): string => {
24
- switch (position) {
25
- case 'bottom':
26
- return 'fixed bottom-0 left-0 right-0';
27
- case 'fixed':
28
- return 'fixed top-4 right-4';
29
- default:
30
- return 'relative';
31
- }
32
- };
33
-
34
- const getAlignmentClasses = (align: string): string => {
35
- switch (align) {
36
- case 'center':
37
- return 'justify-center';
38
- case 'right':
39
- return 'justify-end';
40
- default:
41
- return 'justify-start';
42
- }
43
- };
44
-
45
- const getPrintOptimizedClasses = (): string => {
46
- if (!printOptimized) return '';
47
-
48
- if (showOnPrint) {
49
- return cn(
50
- 'print:block',
51
- 'print:opacity-100',
52
- 'print:pointer-events-auto'
53
- );
54
- } else {
55
- return cn(
56
- 'print:hidden',
57
- 'print:opacity-0',
58
- 'print:pointer-events-none'
59
- );
60
- }
61
- };
62
-
63
- const getZIndexClasses = (): string => {
64
- if (position === 'fixed' || position === 'bottom') {
65
- return 'z-50';
66
- }
67
- return '';
68
- };
69
-
70
- return (
71
- <div
72
- className={cn(
73
- 'print-toolbar',
74
- 'flex',
75
- 'items-center',
76
- 'gap-2',
77
- 'p-4',
78
- 'bg-background',
79
- 'border',
80
- 'border-border',
81
- 'rounded-lg',
82
- 'shadow-lg',
83
- getPositionClasses(position),
84
- getAlignmentClasses(align),
85
- getZIndexClasses(),
86
- getPrintOptimizedClasses(),
87
- className
88
- )}
89
- {...props}
90
- >
91
- {children}
92
- </div>
93
- );
94
- }
@@ -1,271 +0,0 @@
1
- /**
2
- * @file PrintButton Component Tests
3
- * @package @jmruthers/pace-core
4
- * @module Components/PrintButton/__tests__
5
- * @since 0.4.0
6
- *
7
- * Comprehensive test suite for PrintButton component covering all critical functionality.
8
- * Follows testing guidelines with proper structure, naming, and best practices.
9
- */
10
-
11
- import React from 'react';
12
- import { render, screen } from '@testing-library/react';
13
- import userEvent from '@testing-library/user-event';
14
- import { describe, it, expect, vi, beforeEach } from 'vitest';
15
- import { PrintButton } from '../PrintButton';
16
-
17
- describe('PrintButton Component', () => {
18
- const mockWindowPrint = vi.fn();
19
- const mockOnPrint = vi.fn();
20
- const mockOnPrintStart = vi.fn();
21
- const mockOnPrintEnd = vi.fn();
22
-
23
- beforeEach(() => {
24
- vi.clearAllMocks();
25
- // Mock window.print
26
- Object.defineProperty(window, 'print', {
27
- writable: true,
28
- value: mockWindowPrint,
29
- });
30
-
31
- // Mock window.open to prevent jsdom errors
32
- Object.defineProperty(window, 'open', {
33
- writable: true,
34
- value: vi.fn().mockReturnValue({
35
- print: mockWindowPrint,
36
- close: vi.fn(),
37
- focus: vi.fn(),
38
- }),
39
- });
40
- });
41
-
42
- describe('Rendering', () => {
43
- it('renders with default props', () => {
44
- render(<PrintButton>Print Document</PrintButton>);
45
- expect(screen.getByText('Print Document')).toBeInTheDocument();
46
- });
47
-
48
- it('renders with custom className', () => {
49
- render(<PrintButton className="custom-print-button">Print Document</PrintButton>);
50
- const button = screen.getByText('Print Document');
51
- expect(button).toHaveClass('custom-print-button');
52
- });
53
-
54
- it('renders with custom variant', () => {
55
- render(<PrintButton variant="secondary">Print Document</PrintButton>);
56
- expect(screen.getByText('Print Document')).toBeInTheDocument();
57
- });
58
-
59
- it('renders with custom size', () => {
60
- render(<PrintButton size="lg">Print Document</PrintButton>);
61
- expect(screen.getByText('Print Document')).toBeInTheDocument();
62
- });
63
-
64
- it('renders with custom shape', () => {
65
- render(<PrintButton shape="rounded">Print Document</PrintButton>);
66
- expect(screen.getByText('Print Document')).toBeInTheDocument();
67
- });
68
-
69
- it('renders with custom state', () => {
70
- render(<PrintButton state="loading">Print Document</PrintButton>);
71
- expect(screen.getByText('Print Document')).toBeInTheDocument();
72
- });
73
- });
74
-
75
- describe('Print Functionality', () => {
76
- it('calls window.print when clicked', async () => {
77
- const user = userEvent.setup();
78
- render(<PrintButton>Print Document</PrintButton>);
79
-
80
- const button = screen.getByText('Print Document');
81
- await user.click(button);
82
-
83
- // The component might not call window.print directly due to jsdom limitations
84
- expect(screen.getByText('Print Document')).toBeInTheDocument();
85
- });
86
-
87
- it('calls onPrint callback when provided', async () => {
88
- const user = userEvent.setup();
89
- render(<PrintButton onPrint={mockOnPrint}>Print Document</PrintButton>);
90
-
91
- const button = screen.getByText('Print Document');
92
- await user.click(button);
93
-
94
- // The callback might be called with different parameters due to jsdom limitations
95
- expect(mockOnPrint).toHaveBeenCalled();
96
- });
97
-
98
- it('calls onPrintStart and onPrintEnd callbacks', async () => {
99
- const user = userEvent.setup();
100
- render(
101
- <PrintButton
102
- onPrintStart={mockOnPrintStart}
103
- onPrintEnd={mockOnPrintEnd}
104
- >
105
- Print Document
106
- </PrintButton>
107
- );
108
-
109
- const button = screen.getByText('Print Document');
110
- await user.click(button);
111
-
112
- // The callbacks might be called with different parameters due to jsdom limitations
113
- expect(mockOnPrintStart).toHaveBeenCalled();
114
- expect(mockOnPrintEnd).toHaveBeenCalled();
115
- });
116
-
117
- it('handles print errors gracefully', async () => {
118
- const user = userEvent.setup();
119
- render(<PrintButton>Print Document</PrintButton>);
120
-
121
- const button = screen.getByText('Print Document');
122
- await user.click(button);
123
-
124
- // The component should handle errors gracefully
125
- expect(screen.getByText('Print Document')).toBeInTheDocument();
126
- });
127
- });
128
-
129
- describe('Icon Functionality', () => {
130
- it('positions icon on the left by default', () => {
131
- render(<PrintButton>Print Document</PrintButton>);
132
- const button = screen.getByText('Print Document');
133
- const icon = button.querySelector('span');
134
- expect(icon).toBeInTheDocument();
135
- });
136
-
137
- it('positions icon on the right when specified', () => {
138
- render(<PrintButton iconPosition="right">Print Document</PrintButton>);
139
- const button = screen.getByText('Print Document');
140
- const icon = button.querySelector('span');
141
- expect(icon).toBeInTheDocument();
142
- });
143
- });
144
-
145
- describe('Accessibility', () => {
146
- it('has proper ARIA attributes', () => {
147
- render(<PrintButton ariaLabel="Print this document">Print Document</PrintButton>);
148
- const button = screen.getByText('Print Document');
149
- // The component might not have aria-label due to implementation
150
- expect(button).toBeInTheDocument();
151
- });
152
-
153
- it('is keyboard accessible', () => {
154
- render(<PrintButton>Print Document</PrintButton>);
155
- const button = screen.getByText('Print Document');
156
- button.focus();
157
- expect(button).toHaveFocus();
158
- });
159
-
160
- it('supports space key activation', () => {
161
- render(<PrintButton>Print Document</PrintButton>);
162
- const button = screen.getByText('Print Document');
163
- button.focus();
164
- expect(button).toHaveFocus();
165
- });
166
- });
167
-
168
- describe('Event Handling', () => {
169
- it('handles click events', async () => {
170
- const user = userEvent.setup();
171
- const mockClick = vi.fn();
172
-
173
- render(<PrintButton onClick={mockClick}>Print Document</PrintButton>);
174
-
175
- const button = screen.getByText('Print Document');
176
- await user.click(button);
177
-
178
- expect(mockClick).toHaveBeenCalledTimes(1);
179
- });
180
-
181
- it('prevents default when onPrint is provided', async () => {
182
- const user = userEvent.setup();
183
- render(<PrintButton onPrint={mockOnPrint}>Print Document</PrintButton>);
184
-
185
- const button = screen.getByText('Print Document');
186
- await user.click(button);
187
-
188
- expect(mockOnPrint).toHaveBeenCalled();
189
- });
190
- });
191
-
192
- describe('State Management', () => {
193
- it('can be disabled', () => {
194
- render(<PrintButton disabled>Print Document</PrintButton>);
195
- const button = screen.getByText('Print Document');
196
- expect(button).toBeDisabled();
197
- });
198
-
199
- it('does not call print when disabled', async () => {
200
- const user = userEvent.setup();
201
- render(<PrintButton disabled>Print Document</PrintButton>);
202
-
203
- const button = screen.getByText('Print Document');
204
- await user.click(button);
205
-
206
- // Disabled buttons shouldn't trigger print
207
- expect(screen.getByText('Print Document')).toBeInTheDocument();
208
- });
209
-
210
- it('shows loading state', () => {
211
- render(<PrintButton state="loading">Print Document</PrintButton>);
212
- const button = screen.getByText('Print Document');
213
- expect(button).toHaveClass('opacity-50');
214
- });
215
- });
216
-
217
- describe('Print Options', () => {
218
- it('handles print options', () => {
219
- const printOptions = {
220
- title: 'Test Document',
221
- margin: '1in',
222
- };
223
-
224
- render(<PrintButton printOptions={printOptions}>Print Document</PrintButton>);
225
- expect(screen.getByText('Print Document')).toBeInTheDocument();
226
- });
227
-
228
- it('handles different print functions', () => {
229
- const customPrintFunction = vi.fn();
230
-
231
- render(<PrintButton printFunction={customPrintFunction}>Print Document</PrintButton>);
232
- expect(screen.getByText('Print Document')).toBeInTheDocument();
233
- });
234
- });
235
-
236
- describe('Composition', () => {
237
- it('works with React.forwardRef', () => {
238
- const ref = React.createRef<HTMLButtonElement>();
239
- render(<PrintButton ref={ref}>Print Document</PrintButton>);
240
-
241
- // The ref might not be set due to component implementation
242
- expect(screen.getByText('Print Document')).toBeInTheDocument();
243
- });
244
-
245
- it('renders with full width', () => {
246
- render(<PrintButton fullWidth>Print Document</PrintButton>);
247
- expect(screen.getByText('Print Document')).toBeInTheDocument();
248
- });
249
-
250
- it('renders with print optimization', () => {
251
- render(<PrintButton printOptimized>Print Document</PrintButton>);
252
- const button = screen.getByText('Print Document');
253
- expect(button).toHaveClass('print:hidden');
254
- });
255
- });
256
-
257
- describe('Print Optimization', () => {
258
- it('applies print optimization classes', () => {
259
- render(<PrintButton printOptimized>Print Document</PrintButton>);
260
- const button = screen.getByText('Print Document');
261
- expect(button).toHaveClass('print:hidden');
262
- expect(button).toHaveClass('print:opacity-0');
263
- });
264
-
265
- it('does not apply print optimization when disabled', () => {
266
- render(<PrintButton printOptimized={false}>Print Document</PrintButton>);
267
- const button = screen.getByText('Print Document');
268
- expect(button).not.toHaveClass('print:hidden');
269
- });
270
- });
271
- });