@jmruthers/pace-core 0.2.7 → 0.4.1

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 (982) hide show
  1. package/CHANGELOG.md +1 -26
  2. package/README.md +229 -231
  3. package/dist/{DataTable-EEUDXPE5.js → DataTable-2LB6HI6V.js} +17 -10
  4. package/dist/{DataTable-C1AEm9Cx.d.ts → DataTable-BDBqkU-i.d.ts} +51 -23
  5. package/dist/{PublicLoadingSpinner-DztrzuJr.d.ts → Table-CIm9IWqk.d.ts} +122 -635
  6. package/dist/UnifiedAuthProvider-V7y63NjT.d.ts +88 -0
  7. package/dist/{api-ETQ6YJ3C.js → api-AIJ3IJX3.js} +4 -6
  8. package/dist/{appConfig-BVGyuvI7.d.ts → appConfig-fB1pP_v3.d.ts} +1 -1
  9. package/dist/{audit-BUW3LMJB.js → audit-PD5L5ZSC.js} +3 -3
  10. package/dist/{chunk-ETEJVKYK.js → chunk-4MCJAK7J.js} +4927 -504
  11. package/dist/chunk-4MCJAK7J.js.map +1 -0
  12. package/dist/{chunk-CDQ3PX7L.js → chunk-4ZTIEYU2.js} +1 -1
  13. package/dist/chunk-4ZTIEYU2.js.map +1 -0
  14. package/dist/{chunk-PLDDJCW6.js → chunk-DC5AMYBS.js} +5 -15
  15. package/dist/{chunk-HEMJ4SUJ.js → chunk-H4PZ4B3Y.js} +27 -124
  16. package/dist/chunk-H4PZ4B3Y.js.map +1 -0
  17. package/dist/{chunk-HNDFPXUU.js → chunk-IOX76PSM.js} +28 -270
  18. package/dist/chunk-IOX76PSM.js.map +1 -0
  19. package/dist/{chunk-TIVL4UQ7.js → chunk-JUUNUW3O.js} +5 -14
  20. package/dist/chunk-JUUNUW3O.js.map +1 -0
  21. package/dist/chunk-KK6WIDK6.js +63 -0
  22. package/dist/chunk-KK6WIDK6.js.map +1 -0
  23. package/dist/chunk-U7DY5T33.js +11 -0
  24. package/dist/chunk-U7DY5T33.js.map +1 -0
  25. package/dist/{chunk-SS3E6QLB.js → chunk-WHLSWC6W.js} +61 -16
  26. package/dist/chunk-WHLSWC6W.js.map +1 -0
  27. package/dist/chunk-XI7QFSSC.js +790 -0
  28. package/dist/chunk-XI7QFSSC.js.map +1 -0
  29. package/dist/chunk-XIJMMBDD.js +73 -0
  30. package/dist/chunk-XIJMMBDD.js.map +1 -0
  31. package/dist/{chunk-7BNPOCLL.js → chunk-YNU5QJ4S.js} +5 -22
  32. package/dist/chunk-YNU5QJ4S.js.map +1 -0
  33. package/dist/chunk-YWYCNGWH.js +2070 -0
  34. package/dist/chunk-YWYCNGWH.js.map +1 -0
  35. package/dist/chunk-ZJ3UKPIW.js +952 -0
  36. package/dist/chunk-ZJ3UKPIW.js.map +1 -0
  37. package/dist/components.d.ts +10 -906
  38. package/dist/components.js +77 -3255
  39. package/dist/components.js.map +1 -1
  40. package/dist/{database-C3Szpi5J.d.ts → database-CAMsquLm.d.ts} +11 -28
  41. package/dist/hooks.d.ts +6 -7
  42. package/dist/hooks.js +11 -35
  43. package/dist/hooks.js.map +1 -1
  44. package/dist/index.d.ts +111 -245
  45. package/dist/index.js +178 -187
  46. package/dist/index.js.map +1 -1
  47. package/dist/{organisation-CO3Sh3_D.d.ts → organisation-DLNNQhPB.d.ts} +1 -1
  48. package/dist/providers.d.ts +4 -4
  49. package/dist/providers.js +5 -19
  50. package/dist/rbac/index.d.ts +5 -61
  51. package/dist/rbac/index.js +93 -256
  52. package/dist/rbac/index.js.map +1 -1
  53. package/dist/{types-DiRQsGJs.d.ts → types-Bavn44NW.d.ts} +36 -71
  54. package/dist/types.d.ts +5 -5
  55. package/dist/types.js +2 -7
  56. package/dist/types.js.map +1 -1
  57. package/dist/{unified-CM7T0aTK.d.ts → unified-BtRpPbmp.d.ts} +2 -1
  58. package/dist/useAppConfig-CZNJJsT_.d.ts +148 -0
  59. package/dist/utils.d.ts +60 -83
  60. package/dist/utils.js +55633 -277
  61. package/dist/utils.js.map +1 -1
  62. package/dist/validation.d.ts +1 -1
  63. package/dist/validation.js +1 -1
  64. package/docs/README.md +32 -46
  65. package/docs/api/README.md +229 -231
  66. package/docs/api/classes/ErrorBoundary.md +1 -1
  67. package/docs/api/interfaces/AggregateConfig.md +4 -4
  68. package/docs/api/interfaces/ButtonProps.md +2 -2
  69. package/docs/api/interfaces/CardProps.md +2 -2
  70. package/docs/api/interfaces/ColorPalette.md +1 -1
  71. package/docs/api/interfaces/ColorShade.md +1 -1
  72. package/docs/api/interfaces/DataTableAction.md +7 -85
  73. package/docs/api/interfaces/DataTableColumn.md +12 -131
  74. package/docs/api/interfaces/DataTableProps.md +274 -64
  75. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  76. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  77. package/docs/api/interfaces/EventContextType.md +7 -7
  78. package/docs/api/interfaces/EventProviderProps.md +2 -2
  79. package/docs/api/interfaces/FooterProps.md +1 -1
  80. package/docs/api/interfaces/InputProps.md +2 -2
  81. package/docs/api/interfaces/LabelProps.md +1 -1
  82. package/docs/api/interfaces/LoginFormProps.md +1 -1
  83. package/docs/api/interfaces/NavigationItem.md +1 -1
  84. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  85. package/docs/api/interfaces/Organisation.md +1 -1
  86. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  87. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  88. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  89. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  90. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -26
  91. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  92. package/docs/api/interfaces/PaletteData.md +1 -1
  93. package/docs/api/interfaces/StyleImport.md +2 -2
  94. package/docs/api/interfaces/ToastActionElement.md +1 -1
  95. package/docs/api/interfaces/ToastProps.md +1 -1
  96. package/docs/api/interfaces/UnifiedAuthContextType.md +46 -447
  97. package/docs/api/interfaces/UnifiedAuthProviderProps.md +9 -95
  98. package/docs/api/interfaces/UserEventAccess.md +14 -14
  99. package/docs/api/interfaces/UserMenuProps.md +6 -6
  100. package/docs/api/interfaces/UserProfile.md +1 -1
  101. package/docs/api/modules.md +773 -1631
  102. package/docs/api-reference/components.md +43 -761
  103. package/docs/api-reference/hooks.md +0 -126
  104. package/docs/api-reference/providers.md +65 -141
  105. package/docs/api-reference/types.md +36 -66
  106. package/docs/api-reference/utilities.md +1 -1
  107. package/docs/architecture/README.md +2 -1
  108. package/docs/consuming-app-example.md +96 -42
  109. package/docs/core-concepts/events.md +3 -3
  110. package/docs/core-concepts/organisations.md +1 -0
  111. package/docs/core-concepts/rbac-system.md +10 -23
  112. package/docs/documentation-style-checklist.md +2 -8
  113. package/docs/getting-started/examples/README.md +1 -15
  114. package/docs/getting-started/examples/basic-auth-app.md +119 -444
  115. package/docs/getting-started/examples/full-featured-app.md +6 -6
  116. package/docs/getting-started/installation.md +52 -231
  117. package/docs/getting-started/quick-start.md +24 -121
  118. package/docs/implementation-guides/app-layout.md +108 -133
  119. package/docs/implementation-guides/data-tables.md +29 -1011
  120. package/docs/implementation-guides/forms.md +3 -3
  121. package/docs/implementation-guides/large-datasets.md +2 -2
  122. package/docs/implementation-guides/navigation.md +1 -1
  123. package/docs/implementation-guides/permission-enforcement.md +4 -4
  124. package/docs/migration/README.md +8 -18
  125. package/docs/migration/rbac-migration.md +0 -50
  126. package/docs/migration-guide.md +104 -51
  127. package/docs/performance/README.md +4 -1
  128. package/docs/quick-reference.md +36 -53
  129. package/docs/rbac/README.md +69 -136
  130. package/docs/rbac/api-reference.md +8 -39
  131. package/docs/rbac/examples.md +66 -237
  132. package/docs/rbac/getting-started.md +16 -131
  133. package/docs/rbac/quick-start.md +323 -499
  134. package/docs/rbac/troubleshooting.md +262 -240
  135. package/docs/security/README.md +1 -50
  136. package/docs/styles/README.md +117 -143
  137. package/docs/testing/README.md +10 -6
  138. package/docs/troubleshooting/common-issues.md +14 -604
  139. package/docs/usage.md +90 -28
  140. package/docs/visual-testing.md +7 -0
  141. package/package.json +24 -43
  142. package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +0 -160
  143. package/dist/appNameResolver-7GHF5ED2.js +0 -22
  144. package/dist/chunk-2V3Y6YBC.js +0 -114
  145. package/dist/chunk-2V3Y6YBC.js.map +0 -1
  146. package/dist/chunk-7BNPOCLL.js.map +0 -1
  147. package/dist/chunk-BEZRLNK3.js +0 -1744
  148. package/dist/chunk-BEZRLNK3.js.map +0 -1
  149. package/dist/chunk-C5G2A4PO.js +0 -1349
  150. package/dist/chunk-C5G2A4PO.js.map +0 -1
  151. package/dist/chunk-CDQ3PX7L.js.map +0 -1
  152. package/dist/chunk-ETEJVKYK.js.map +0 -1
  153. package/dist/chunk-EWKPTNPO.js +0 -5139
  154. package/dist/chunk-EWKPTNPO.js.map +0 -1
  155. package/dist/chunk-HEMJ4SUJ.js.map +0 -1
  156. package/dist/chunk-HNDFPXUU.js.map +0 -1
  157. package/dist/chunk-MZBUOP4P.js +0 -119
  158. package/dist/chunk-MZBUOP4P.js.map +0 -1
  159. package/dist/chunk-N2EUGZRW.js +0 -98
  160. package/dist/chunk-N2EUGZRW.js.map +0 -1
  161. package/dist/chunk-NQ4TOOO6.js +0 -20
  162. package/dist/chunk-NQ4TOOO6.js.map +0 -1
  163. package/dist/chunk-OHXGNT3K.js +0 -21
  164. package/dist/chunk-OHXGNT3K.js.map +0 -1
  165. package/dist/chunk-PLDDJCW6.js.map +0 -1
  166. package/dist/chunk-RRUYHORU.js +0 -3431
  167. package/dist/chunk-RRUYHORU.js.map +0 -1
  168. package/dist/chunk-SS3E6QLB.js.map +0 -1
  169. package/dist/chunk-TIVL4UQ7.js.map +0 -1
  170. package/dist/chunk-VYG4AXYW.js +0 -388
  171. package/dist/chunk-VYG4AXYW.js.map +0 -1
  172. package/dist/chunk-YDJW5XTN.js +0 -84
  173. package/dist/chunk-YDJW5XTN.js.map +0 -1
  174. package/dist/styles/core.css +0 -422
  175. package/dist/styles/fonts/georama-italic.woff2 +0 -0
  176. package/dist/styles/fonts/georama.woff2 +0 -0
  177. package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
  178. package/dist/styles/fonts/open-sans.woff2 +0 -0
  179. package/dist/styles/fonts/reddit-mono.woff2 +0 -0
  180. package/dist/styles/index.d.ts +0 -36
  181. package/dist/styles/index.js +0 -24
  182. package/dist/styles/index.js.map +0 -1
  183. package/dist/theming/runtime.d.ts +0 -73
  184. package/dist/theming/runtime.js +0 -16
  185. package/dist/theming/runtime.js.map +0 -1
  186. package/dist/usePublicRouteParams-B6i0KtXW.d.ts +0 -477
  187. package/docs/INDEX.md +0 -192
  188. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  189. package/docs/api/interfaces/EventLogoProps.md +0 -152
  190. package/docs/api/interfaces/FileSizeLimits.md +0 -7
  191. package/docs/api/interfaces/FileUploadProps.md +0 -154
  192. package/docs/api/interfaces/InactivityWarningModalProps.md +0 -115
  193. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  194. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  195. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  196. package/docs/api/interfaces/PublicPageFooterProps.md +0 -112
  197. package/docs/api/interfaces/PublicPageHeaderProps.md +0 -138
  198. package/docs/api/interfaces/PublicPageLayoutProps.md +0 -138
  199. package/docs/api/interfaces/StorageConfig.md +0 -41
  200. package/docs/api/interfaces/StorageFileInfo.md +0 -74
  201. package/docs/api/interfaces/StorageFileMetadata.md +0 -140
  202. package/docs/api/interfaces/StorageListOptions.md +0 -86
  203. package/docs/api/interfaces/StorageListResult.md +0 -41
  204. package/docs/api/interfaces/StorageUploadOptions.md +0 -88
  205. package/docs/api/interfaces/StorageUploadResult.md +0 -63
  206. package/docs/api/interfaces/StorageUrlOptions.md +0 -47
  207. package/docs/api/interfaces/UseInactivityTrackerOptions.md +0 -136
  208. package/docs/api/interfaces/UseInactivityTrackerReturn.md +0 -123
  209. package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
  210. package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -81
  211. package/docs/api/interfaces/UsePublicEventOptions.md +0 -34
  212. package/docs/api/interfaces/UsePublicEventReturn.md +0 -68
  213. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +0 -94
  214. package/docs/best-practices/README.md +0 -400
  215. package/docs/consuming-app-vite-config.md +0 -233
  216. package/docs/examples/navigation-menu-auth-fix.md +0 -344
  217. package/docs/implementation-guides/hierarchical-datatable.md +0 -850
  218. package/docs/implementation-guides/public-pages.md +0 -752
  219. package/docs/migration/quick-migration-guide.md +0 -320
  220. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -272
  221. package/docs/migration/v0.4.16-css-first-approach.md +0 -306
  222. package/docs/migration/v0.4.17-source-path-fix.md +0 -229
  223. package/docs/print-components/README.md +0 -258
  224. package/docs/print-components/api-reference.md +0 -636
  225. package/docs/print-components/examples/README.md +0 -204
  226. package/docs/print-components/examples/basic-report.tsx +0 -92
  227. package/docs/print-components/examples/card-catalog.tsx +0 -149
  228. package/docs/print-components/examples/cover-page-report.tsx +0 -163
  229. package/docs/print-components/quick-start.md +0 -363
  230. package/docs/troubleshooting/README.md +0 -497
  231. package/docs/troubleshooting/styling-issues.md +0 -219
  232. package/docs/troubleshooting/tailwind-content-scanning.md +0 -213
  233. package/src/__mocks__/lucide-react.ts +0 -181
  234. package/src/__tests__/README.md +0 -404
  235. package/src/__tests__/debug-provider.unit.test.tsx +0 -67
  236. package/src/__tests__/e2e/workflows.test.tsx +0 -373
  237. package/src/__tests__/hybridPermissions.unit.test.tsx +0 -474
  238. package/src/__tests__/index.integration.test.ts +0 -491
  239. package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +0 -47
  240. package/src/__tests__/mocks/MockAuthProvider.tsx +0 -63
  241. package/src/__tests__/mocks/enhancedSupabaseMock.ts +0 -252
  242. package/src/__tests__/mocks/index.test.ts +0 -23
  243. package/src/__tests__/mocks/index.ts +0 -16
  244. package/src/__tests__/mocks/mockAuth.ts +0 -155
  245. package/src/__tests__/mocks/mockSupabase.ts +0 -83
  246. package/src/__tests__/mocks/mockSupabaseClient.ts +0 -63
  247. package/src/__tests__/mocks/providers.tsx +0 -22
  248. package/src/__tests__/patterns/__tests__/testPatterns.test.ts +0 -394
  249. package/src/__tests__/patterns/testPatterns.ts +0 -124
  250. package/src/__tests__/performance/componentPerformance.performance.test.ts +0 -27
  251. package/src/__tests__/performance/index.ts +0 -24
  252. package/src/__tests__/performance/performanceValidation.performance.test.ts +0 -15
  253. package/src/__tests__/security/security.unit.test.tsx +0 -7
  254. package/src/__tests__/security/securityValidation.security.test.tsx +0 -153
  255. package/src/__tests__/setup.ts +0 -259
  256. package/src/__tests__/setupTests.d.ts +0 -1
  257. package/src/__tests__/shared/componentTestUtils.tsx +0 -475
  258. package/src/__tests__/shared/errorHandlingTestUtils.ts +0 -107
  259. package/src/__tests__/shared/index.ts +0 -81
  260. package/src/__tests__/shared/integrationTestUtils.tsx +0 -375
  261. package/src/__tests__/shared/performanceTestUtils.tsx +0 -476
  262. package/src/__tests__/shared/testUtils.optimized.tsx +0 -685
  263. package/src/__tests__/simple.test.tsx +0 -20
  264. package/src/__tests__/templates/accessibility.test.template.tsx +0 -279
  265. package/src/__tests__/templates/component.test.template.tsx +0 -122
  266. package/src/__tests__/templates/integration.test.template.tsx +0 -199
  267. package/src/__tests__/test-utils/dataFactories.ts +0 -60
  268. package/src/__tests__/test-utils/index.ts +0 -6
  269. package/src/__tests__/typeSafety.unit.test.ts +0 -65
  270. package/src/__tests__/unifiedAuth.unit.test.tsx +0 -151
  271. package/src/__tests__/utils/accessibilityHelpers.ts +0 -254
  272. package/src/__tests__/utils/assertions.ts +0 -50
  273. package/src/__tests__/utils/deterministicHelpers.ts +0 -31
  274. package/src/__tests__/utils/edgeCaseConfig.test.ts +0 -75
  275. package/src/__tests__/utils/edgeCaseConfig.ts +0 -98
  276. package/src/__tests__/utils/mockHelpers.ts +0 -149
  277. package/src/__tests__/utils/mockLoader.ts +0 -101
  278. package/src/__tests__/utils/performanceHelpers.ts +0 -55
  279. package/src/__tests__/utils/performanceTestHelpers.ts +0 -68
  280. package/src/__tests__/utils/testDataFactories.ts +0 -28
  281. package/src/__tests__/utils/testIsolation.ts +0 -67
  282. package/src/__tests__/utils/visualTestHelpers.ts +0 -20
  283. package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +0 -68
  284. package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +0 -14
  285. package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +0 -217
  286. package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +0 -24
  287. package/src/__tests__/visual/componentSnapshots.visual.test.tsx +0 -33
  288. package/src/__tests__/visual/componentVisuals.visual.test.tsx +0 -12
  289. package/src/__tests__/visual/visualRegression.visual.test.tsx +0 -20
  290. package/src/components/Alert/Alert.tsx +0 -134
  291. package/src/components/Alert/__tests__/Alert.unit.test.tsx +0 -381
  292. package/src/components/Alert/index.ts +0 -2
  293. package/src/components/Avatar/Avatar.tsx +0 -84
  294. package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +0 -232
  295. package/src/components/Avatar/index.ts +0 -2
  296. package/src/components/Button/Button.tsx +0 -270
  297. package/src/components/Button/__tests__/Button.accessibility.test.tsx +0 -131
  298. package/src/components/Button/__tests__/Button.comprehensive.test.tsx +0 -721
  299. package/src/components/Button/__tests__/Button.unit.test.tsx +0 -189
  300. package/src/components/Button/__tests__/EventSelector.integration.test.tsx +0 -285
  301. package/src/components/Button/index.ts +0 -2
  302. package/src/components/Card/Card.tsx +0 -271
  303. package/src/components/Card/__tests__/Card.accessibility.test.tsx +0 -394
  304. package/src/components/Card/__tests__/Card.comprehensive.test.tsx +0 -599
  305. package/src/components/Card/__tests__/Card.integration.test.tsx +0 -673
  306. package/src/components/Card/__tests__/Card.performance.test.tsx +0 -546
  307. package/src/components/Card/__tests__/Card.unit.test.tsx +0 -330
  308. package/src/components/Card/__tests__/Card.visual.test.tsx +0 -599
  309. package/src/components/Card/__tests__/README.md +0 -211
  310. package/src/components/Card/index.ts +0 -1
  311. package/src/components/Checkbox/Checkbox.tsx +0 -75
  312. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  313. package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +0 -520
  314. package/src/components/Checkbox/index.ts +0 -2
  315. package/src/components/DataTable/DataTable.tsx +0 -438
  316. package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +0 -251
  317. package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +0 -680
  318. package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +0 -323
  319. package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +0 -716
  320. package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +0 -589
  321. package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +0 -316
  322. package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +0 -546
  323. package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +0 -386
  324. package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +0 -338
  325. package/src/components/DataTable/__tests__/DataTable.sorting.test.tsx +0 -321
  326. package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +0 -320
  327. package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +0 -583
  328. package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +0 -711
  329. package/src/components/DataTable/__tests__/README.md +0 -145
  330. package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +0 -66
  331. package/src/components/DataTable/__tests__/performance-regression.test.tsx +0 -777
  332. package/src/components/DataTable/__tests__/performance.test.tsx +0 -365
  333. package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +0 -103
  334. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -381
  335. package/src/components/DataTable/__tests__/test-utils.ts +0 -94
  336. package/src/components/DataTable/components/ActionButtons.tsx +0 -177
  337. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +0 -160
  338. package/src/components/DataTable/components/ColumnFilter.tsx +0 -114
  339. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +0 -100
  340. package/src/components/DataTable/components/DataTableBody.tsx +0 -461
  341. package/src/components/DataTable/components/DataTableCore.tsx +0 -941
  342. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +0 -214
  343. package/src/components/DataTable/components/DataTableModals.tsx +0 -87
  344. package/src/components/DataTable/components/DataTableToolbar.tsx +0 -250
  345. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -144
  346. package/src/components/DataTable/components/EditableRow.tsx +0 -159
  347. package/src/components/DataTable/components/EmptyState.tsx +0 -64
  348. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  349. package/src/components/DataTable/components/FilterRow.tsx +0 -100
  350. package/src/components/DataTable/components/GroupHeader.tsx +0 -42
  351. package/src/components/DataTable/components/GroupingDropdown.tsx +0 -96
  352. package/src/components/DataTable/components/ImportModal.tsx +0 -345
  353. package/src/components/DataTable/components/LoadingState.tsx +0 -12
  354. package/src/components/DataTable/components/PaginationControls.tsx +0 -332
  355. package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -713
  356. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  357. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -513
  358. package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +0 -150
  359. package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -224
  360. package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +0 -244
  361. package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +0 -629
  362. package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +0 -470
  363. package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +0 -160
  364. package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +0 -251
  365. package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +0 -171
  366. package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +0 -290
  367. package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +0 -147
  368. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +0 -182
  369. package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +0 -123
  370. package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +0 -660
  371. package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +0 -256
  372. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -498
  373. package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +0 -112
  374. package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +0 -133
  375. package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +0 -172
  376. package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +0 -222
  377. package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +0 -780
  378. package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +0 -65
  379. package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +0 -634
  380. package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +0 -48
  381. package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +0 -541
  382. package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +0 -228
  383. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +0 -568
  384. package/src/components/DataTable/components/index.ts +0 -16
  385. package/src/components/DataTable/context/DataTableContext.tsx +0 -97
  386. package/src/components/DataTable/core/ActionManager.ts +0 -235
  387. package/src/components/DataTable/core/ColumnFactory.ts +0 -268
  388. package/src/components/DataTable/core/ColumnManager.ts +0 -205
  389. package/src/components/DataTable/core/DataManager.ts +0 -188
  390. package/src/components/DataTable/core/DataTableContext.tsx +0 -181
  391. package/src/components/DataTable/core/LocalDataAdapter.ts +0 -264
  392. package/src/components/DataTable/core/PluginRegistry.ts +0 -229
  393. package/src/components/DataTable/core/StateManager.ts +0 -311
  394. package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +0 -405
  395. package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +0 -445
  396. package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +0 -288
  397. package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +0 -623
  398. package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +0 -431
  399. package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +0 -433
  400. package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +0 -422
  401. package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +0 -207
  402. package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +0 -278
  403. package/src/components/DataTable/core/index.ts +0 -8
  404. package/src/components/DataTable/core/interfaces.ts +0 -338
  405. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -418
  406. package/src/components/DataTable/examples/HierarchicalExample.tsx +0 -472
  407. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -173
  408. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -502
  409. package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +0 -281
  410. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +0 -407
  411. package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +0 -679
  412. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -95
  413. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -110
  414. package/src/components/DataTable/hooks/useDataTableState.ts +0 -325
  415. package/src/components/DataTable/hooks/useHierarchicalState.ts +0 -174
  416. package/src/components/DataTable/index.ts +0 -68
  417. package/src/components/DataTable/styles.ts +0 -171
  418. package/src/components/DataTable/types.ts +0 -473
  419. package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +0 -267
  420. package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +0 -467
  421. package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +0 -380
  422. package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +0 -233
  423. package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +0 -414
  424. package/src/components/DataTable/utils/debugTools.ts +0 -583
  425. package/src/components/DataTable/utils/errorHandling.ts +0 -494
  426. package/src/components/DataTable/utils/exportUtils.ts +0 -126
  427. package/src/components/DataTable/utils/flexibleImport.ts +0 -510
  428. package/src/components/DataTable/utils/hierarchicalSorting.ts +0 -151
  429. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -218
  430. package/src/components/DataTable/utils/index.ts +0 -1
  431. package/src/components/DataTable/utils/performanceUtils.ts +0 -351
  432. package/src/components/Dialog/Dialog.tsx +0 -782
  433. package/src/components/Dialog/README.md +0 -804
  434. package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +0 -521
  435. package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +0 -157
  436. package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +0 -538
  437. package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +0 -1373
  438. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  439. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  440. package/src/components/Dialog/examples/HtmlDialogExample.tsx +0 -202
  441. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  442. package/src/components/Dialog/examples/SmartDialogExample.tsx +0 -322
  443. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -151
  444. package/src/components/Dialog/index.ts +0 -12
  445. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  446. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  447. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -312
  448. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +0 -517
  449. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +0 -572
  450. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +0 -579
  451. package/src/components/ErrorBoundary/index.ts +0 -8
  452. package/src/components/EventSelector/EventSelector.tsx +0 -360
  453. package/src/components/EventSelector/__tests__/EventSelector.test.tsx +0 -528
  454. package/src/components/EventSelector/index.ts +0 -3
  455. package/src/components/EventSelector/types.ts +0 -79
  456. package/src/components/FileUpload/FileUpload.example.tsx +0 -218
  457. package/src/components/FileUpload/FileUpload.tsx +0 -237
  458. package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +0 -992
  459. package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +0 -927
  460. package/src/components/FileUpload/__tests__/FileUpload.test.tsx +0 -855
  461. package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +0 -1311
  462. package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +0 -937
  463. package/src/components/FileUpload/index.ts +0 -6
  464. package/src/components/Footer/Footer.tsx +0 -197
  465. package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +0 -359
  466. package/src/components/Footer/__tests__/Footer.integration.test.tsx +0 -353
  467. package/src/components/Footer/__tests__/Footer.performance.test.tsx +0 -309
  468. package/src/components/Footer/__tests__/Footer.unit.test.tsx +0 -309
  469. package/src/components/Footer/__tests__/Footer.visual.test.tsx +0 -335
  470. package/src/components/Footer/index.ts +0 -17
  471. package/src/components/Form/Form.tsx +0 -166
  472. package/src/components/Form/FormErrorSummary.tsx +0 -113
  473. package/src/components/Form/FormField.tsx +0 -249
  474. package/src/components/Form/FormFieldset.tsx +0 -127
  475. package/src/components/Form/FormLiveRegion.tsx +0 -198
  476. package/src/components/Form/__tests__/Form.accessibility.test.tsx +0 -820
  477. package/src/components/Form/__tests__/Form.unit.test.tsx +0 -305
  478. package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +0 -285
  479. package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +0 -241
  480. package/src/components/Form/index.ts +0 -26
  481. package/src/components/Header/Header.tsx +0 -301
  482. package/src/components/Header/__tests__/Header.accessibility.test.tsx +0 -382
  483. package/src/components/Header/__tests__/Header.comprehensive.test.tsx +0 -509
  484. package/src/components/Header/__tests__/Header.unit.test.tsx +0 -335
  485. package/src/components/Header/index.ts +0 -4
  486. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +0 -196
  487. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +0 -164
  488. package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +0 -224
  489. package/src/components/InactivityWarningModal/index.ts +0 -9
  490. package/src/components/Input/Input.tsx +0 -201
  491. package/src/components/Input/__mocks__/Input.tsx +0 -2
  492. package/src/components/Input/__tests__/Input.accessibility.test.tsx +0 -632
  493. package/src/components/Input/__tests__/Input.unit.test.tsx +0 -1121
  494. package/src/components/Input/index.ts +0 -9
  495. package/src/components/Label/Label.tsx +0 -186
  496. package/src/components/Label/__tests__/Label.accessibility.test.tsx +0 -239
  497. package/src/components/Label/__tests__/Label.unit.test.tsx +0 -331
  498. package/src/components/Label/index.ts +0 -2
  499. package/src/components/LoadingSpinner/LoadingSpinner.tsx +0 -98
  500. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +0 -116
  501. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +0 -144
  502. package/src/components/LoadingSpinner/index.ts +0 -3
  503. package/src/components/LoginForm/LoginForm.tsx +0 -273
  504. package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +0 -201
  505. package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +0 -119
  506. package/src/components/LoginForm/index.ts +0 -3
  507. package/src/components/NavigationMenu/NavigationMenu.tsx +0 -698
  508. package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +0 -378
  509. package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +0 -768
  510. package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +0 -576
  511. package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +0 -585
  512. package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +0 -783
  513. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +0 -810
  514. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +0 -494
  515. package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +0 -331
  516. package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +0 -347
  517. package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +0 -584
  518. package/src/components/NavigationMenu/index.ts +0 -10
  519. package/src/components/NavigationMenu/types.ts +0 -85
  520. package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -304
  521. package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +0 -664
  522. package/src/components/OrganisationSelector/index.ts +0 -9
  523. package/src/components/PaceAppLayout/PaceAppLayout.tsx +0 -699
  524. package/src/components/PaceAppLayout/README.md +0 -278
  525. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -288
  526. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -893
  527. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +0 -629
  528. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -782
  529. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -904
  530. package/src/components/PaceAppLayout/index.ts +0 -1
  531. package/src/components/PaceLoginPage/PaceLoginPage.tsx +0 -221
  532. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +0 -463
  533. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +0 -586
  534. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +0 -533
  535. package/src/components/PaceLoginPage/index.ts +0 -1
  536. package/src/components/PasswordReset/PasswordChangeForm.tsx +0 -186
  537. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  538. package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +0 -408
  539. package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +0 -561
  540. package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +0 -304
  541. package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +0 -20
  542. package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +0 -523
  543. package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +0 -29
  544. package/src/components/PasswordReset/index.ts +0 -4
  545. package/src/components/Print/__tests__/Print.comprehensive.test.tsx +0 -331
  546. package/src/components/PrintButton/PrintButton.tsx +0 -321
  547. package/src/components/PrintButton/PrintButtonGroup.tsx +0 -84
  548. package/src/components/PrintButton/PrintToolbar.tsx +0 -94
  549. package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +0 -429
  550. package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +0 -277
  551. package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +0 -264
  552. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +0 -438
  553. package/src/components/PrintButton/index.ts +0 -33
  554. package/src/components/PrintButton/types.ts +0 -173
  555. package/src/components/PrintCard/PrintCard.tsx +0 -154
  556. package/src/components/PrintCard/PrintCardContent.tsx +0 -57
  557. package/src/components/PrintCard/PrintCardFooter.tsx +0 -60
  558. package/src/components/PrintCard/PrintCardGrid.tsx +0 -91
  559. package/src/components/PrintCard/PrintCardHeader.tsx +0 -78
  560. package/src/components/PrintCard/PrintCardImage.tsx +0 -81
  561. package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +0 -233
  562. package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +0 -284
  563. package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +0 -214
  564. package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +0 -264
  565. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +0 -239
  566. package/src/components/PrintCard/index.ts +0 -34
  567. package/src/components/PrintCard/types.ts +0 -171
  568. package/src/components/PrintDataTable/PrintDataTable.tsx +0 -215
  569. package/src/components/PrintDataTable/PrintTableGroup.tsx +0 -90
  570. package/src/components/PrintDataTable/PrintTableRow.tsx +0 -76
  571. package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +0 -361
  572. package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +0 -314
  573. package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +0 -362
  574. package/src/components/PrintDataTable/index.ts +0 -25
  575. package/src/components/PrintDataTable/types.ts +0 -67
  576. package/src/components/PrintFooter/PrintFooter.tsx +0 -183
  577. package/src/components/PrintFooter/PrintFooterContent.tsx +0 -71
  578. package/src/components/PrintFooter/PrintFooterInfo.tsx +0 -86
  579. package/src/components/PrintFooter/PrintPageNumber.tsx +0 -90
  580. package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +0 -500
  581. package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +0 -321
  582. package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +0 -335
  583. package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +0 -340
  584. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +0 -390
  585. package/src/components/PrintFooter/index.ts +0 -30
  586. package/src/components/PrintFooter/types.ts +0 -149
  587. package/src/components/PrintGrid/PrintGrid.tsx +0 -180
  588. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +0 -109
  589. package/src/components/PrintGrid/PrintGridContainer.tsx +0 -128
  590. package/src/components/PrintGrid/PrintGridItem.tsx +0 -220
  591. package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +0 -340
  592. package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +0 -261
  593. package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +0 -338
  594. package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +0 -338
  595. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +0 -359
  596. package/src/components/PrintGrid/index.ts +0 -31
  597. package/src/components/PrintGrid/types.ts +0 -159
  598. package/src/components/PrintHeader/PrintCoverHeader.tsx +0 -230
  599. package/src/components/PrintHeader/PrintHeader.tsx +0 -150
  600. package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +0 -309
  601. package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +0 -202
  602. package/src/components/PrintHeader/index.ts +0 -17
  603. package/src/components/PrintHeader/types.ts +0 -42
  604. package/src/components/PrintLayout/PrintLayout.tsx +0 -122
  605. package/src/components/PrintLayout/PrintLayoutContext.tsx +0 -66
  606. package/src/components/PrintLayout/PrintPageBreak.tsx +0 -52
  607. package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +0 -238
  608. package/src/components/PrintLayout/examples/PrintShowcase.tsx +0 -230
  609. package/src/components/PrintLayout/index.ts +0 -19
  610. package/src/components/PrintLayout/types.ts +0 -37
  611. package/src/components/PrintPageBreak/PrintPageBreak.tsx +0 -120
  612. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +0 -90
  613. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +0 -112
  614. package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +0 -263
  615. package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +0 -239
  616. package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +0 -235
  617. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +0 -279
  618. package/src/components/PrintPageBreak/index.ts +0 -23
  619. package/src/components/PrintPageBreak/types.ts +0 -94
  620. package/src/components/PrintSection/PrintColumn.tsx +0 -104
  621. package/src/components/PrintSection/PrintDivider.tsx +0 -101
  622. package/src/components/PrintSection/PrintSection.tsx +0 -129
  623. package/src/components/PrintSection/PrintSectionContent.tsx +0 -75
  624. package/src/components/PrintSection/PrintSectionHeader.tsx +0 -97
  625. package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +0 -385
  626. package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +0 -373
  627. package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +0 -390
  628. package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +0 -321
  629. package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +0 -334
  630. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +0 -258
  631. package/src/components/PrintSection/index.ts +0 -33
  632. package/src/components/PrintSection/types.ts +0 -155
  633. package/src/components/PrintText/PrintText.tsx +0 -116
  634. package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +0 -351
  635. package/src/components/PrintText/index.ts +0 -16
  636. package/src/components/PrintText/types.ts +0 -24
  637. package/src/components/Progress/Progress.tsx +0 -116
  638. package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +0 -240
  639. package/src/components/Progress/__tests__/Progress.unit.test.tsx +0 -242
  640. package/src/components/Progress/index.ts +0 -3
  641. package/src/components/PublicLayout/EventLogo.tsx +0 -287
  642. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -279
  643. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -208
  644. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -130
  645. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  646. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  647. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  648. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -178
  649. package/src/components/PublicLayout/PublicPageLayout.tsx +0 -232
  650. package/src/components/PublicLayout/PublicPageProvider.tsx +0 -137
  651. package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +0 -761
  652. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +0 -228
  653. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -228
  654. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -459
  655. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -362
  656. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -522
  657. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -599
  658. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -513
  659. package/src/components/PublicLayout/index.ts +0 -51
  660. package/src/components/RBAC/PagePermissionGuard.tsx +0 -287
  661. package/src/components/RBAC/RBACGuard.tsx +0 -143
  662. package/src/components/RBAC/RBACProvider.tsx +0 -186
  663. package/src/components/RBAC/RoleBasedContent.tsx +0 -129
  664. package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +0 -683
  665. package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +0 -573
  666. package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +0 -467
  667. package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +0 -475
  668. package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +0 -569
  669. package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +0 -352
  670. package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +0 -128
  671. package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +0 -657
  672. package/src/components/RBAC/index.ts +0 -23
  673. package/src/components/Select/Select.tsx +0 -660
  674. package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +0 -437
  675. package/src/components/Select/__tests__/Select.accessibility.test.tsx +0 -1202
  676. package/src/components/Select/__tests__/Select.actual.test.tsx +0 -774
  677. package/src/components/Select/__tests__/Select.comprehensive.test.tsx +0 -837
  678. package/src/components/Select/__tests__/Select.enhanced.test.tsx +0 -1101
  679. package/src/components/Select/__tests__/Select.integration.test.tsx +0 -772
  680. package/src/components/Select/__tests__/Select.performance.test.tsx +0 -695
  681. package/src/components/Select/__tests__/Select.real-world.test.tsx +0 -1046
  682. package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +0 -968
  683. package/src/components/Select/__tests__/Select.unit.test.tsx +0 -647
  684. package/src/components/Select/__tests__/Select.utils.test.tsx +0 -890
  685. package/src/components/Select/index.ts +0 -1
  686. package/src/components/SuperAdminGuard.tsx +0 -116
  687. package/src/components/Table/Table.tsx +0 -222
  688. package/src/components/Table/__tests__/Table.accessibility.test.tsx +0 -233
  689. package/src/components/Table/__tests__/Table.unit.test.tsx +0 -235
  690. package/src/components/Table/index.ts +0 -11
  691. package/src/components/Toast/Toast.tsx +0 -339
  692. package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +0 -238
  693. package/src/components/Toast/__tests__/Toast.integration.test.tsx +0 -699
  694. package/src/components/Toast/__tests__/Toast.unit.test.tsx +0 -750
  695. package/src/components/Toast/index.ts +0 -14
  696. package/src/components/Tooltip/Tooltip.tsx +0 -167
  697. package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +0 -121
  698. package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +0 -185
  699. package/src/components/Tooltip/index.ts +0 -7
  700. package/src/components/UserMenu/UserMenu.tsx +0 -243
  701. package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +0 -139
  702. package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +0 -188
  703. package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +0 -458
  704. package/src/components/UserMenu/index.ts +0 -3
  705. package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +0 -524
  706. package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +0 -455
  707. package/src/components/__tests__/SuperAdminGuard.test.tsx +0 -456
  708. package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +0 -456
  709. package/src/components/examples/PermissionExample.tsx +0 -150
  710. package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +0 -360
  711. package/src/components/index.ts +0 -434
  712. package/src/components.ts +0 -19
  713. package/src/constants/performance.ts +0 -14
  714. package/src/examples/CorrectPublicPageImplementation.tsx +0 -301
  715. package/src/examples/PublicEventPage.tsx +0 -274
  716. package/src/examples/PublicPageApp.tsx +0 -308
  717. package/src/examples/PublicPageUsageExample.tsx +0 -216
  718. package/src/hooks/__tests__/hooks.integration.test.tsx +0 -575
  719. package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -115
  720. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -133
  721. package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
  722. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -293
  723. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -385
  724. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -286
  725. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -838
  726. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -627
  727. package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -911
  728. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -537
  729. package/src/hooks/__tests__/useToast.unit.test.tsx +0 -62
  730. package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
  731. package/src/hooks/index.ts +0 -56
  732. package/src/hooks/public/__tests__/usePublicEvent.test.tsx +0 -397
  733. package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +0 -690
  734. package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +0 -449
  735. package/src/hooks/public/index.ts +0 -34
  736. package/src/hooks/public/usePublicEvent.ts +0 -261
  737. package/src/hooks/public/usePublicEventLogo.ts +0 -285
  738. package/src/hooks/public/usePublicRouteParams.ts +0 -259
  739. package/src/hooks/useAppConfig.ts +0 -94
  740. package/src/hooks/useComponentPerformance.ts +0 -39
  741. package/src/hooks/useDataTablePerformance.ts +0 -387
  742. package/src/hooks/useDataTableState.ts +0 -110
  743. package/src/hooks/useDebounce.ts +0 -18
  744. package/src/hooks/useFocusManagement.ts +0 -161
  745. package/src/hooks/useFocusTrap.ts +0 -155
  746. package/src/hooks/useInactivityTracker.ts +0 -372
  747. package/src/hooks/useIsMobile.ts +0 -42
  748. package/src/hooks/useKeyboardShortcuts.ts +0 -237
  749. package/src/hooks/useOrganisationPermissions.ts +0 -208
  750. package/src/hooks/useOrganisationSecurity.ts +0 -262
  751. package/src/hooks/usePerformanceMonitor.ts +0 -128
  752. package/src/hooks/usePermissionCache.ts +0 -455
  753. package/src/hooks/useRBAC.ts +0 -262
  754. package/src/hooks/useSecureDataAccess.ts +0 -586
  755. package/src/hooks/useStorage.ts +0 -274
  756. package/src/hooks/useToast.ts +0 -242
  757. package/src/hooks/useZodForm.ts +0 -28
  758. package/src/index.ts +0 -200
  759. package/src/providers/AuthProvider.tsx +0 -369
  760. package/src/providers/EventProvider.tsx +0 -324
  761. package/src/providers/InactivityProvider.tsx +0 -238
  762. package/src/providers/OrganisationProvider.tsx +0 -588
  763. package/src/providers/RBACProvider.tsx +0 -634
  764. package/src/providers/UnifiedAuthProvider.tsx +0 -327
  765. package/src/providers/__tests__/EventProvider.unit.test.tsx +0 -768
  766. package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +0 -116
  767. package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +0 -1312
  768. package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +0 -601
  769. package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +0 -683
  770. package/src/providers/__tests__/index.unit.test.ts +0 -78
  771. package/src/providers/index.ts +0 -15
  772. package/src/rbac/README.md +0 -885
  773. package/src/rbac/__tests__/PagePermissionGuard.test.tsx +0 -673
  774. package/src/rbac/__tests__/README.md +0 -170
  775. package/src/rbac/__tests__/RoleBasedRouter.test.tsx +0 -709
  776. package/src/rbac/__tests__/TestContext.tsx +0 -72
  777. package/src/rbac/__tests__/__mocks__/cache.ts +0 -144
  778. package/src/rbac/__tests__/__mocks__/supabase.ts +0 -152
  779. package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +0 -782
  780. package/src/rbac/__tests__/adapters-hooks.test.tsx +0 -561
  781. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -963
  782. package/src/rbac/__tests__/adapters.test.tsx +0 -444
  783. package/src/rbac/__tests__/api.test.ts +0 -620
  784. package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +0 -792
  785. package/src/rbac/__tests__/audit-observability.test.ts +0 -549
  786. package/src/rbac/__tests__/audit.test.ts +0 -616
  787. package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +0 -230
  788. package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +0 -889
  789. package/src/rbac/__tests__/cache-invalidation.test.ts +0 -457
  790. package/src/rbac/__tests__/cache.test.ts +0 -458
  791. package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +0 -859
  792. package/src/rbac/__tests__/components-navigation-guard.test.tsx +0 -895
  793. package/src/rbac/__tests__/components-navigation-provider.test.tsx +0 -692
  794. package/src/rbac/__tests__/components-page-permission-guard.test.tsx +0 -673
  795. package/src/rbac/__tests__/components-page-permission-provider.test.tsx +0 -614
  796. package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +0 -836
  797. package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +0 -837
  798. package/src/rbac/__tests__/components-permission-enforcer.test.tsx +0 -825
  799. package/src/rbac/__tests__/components-role-based-router.test.tsx +0 -709
  800. package/src/rbac/__tests__/components-secure-data-provider.test.tsx +0 -607
  801. package/src/rbac/__tests__/config.test.ts +0 -583
  802. package/src/rbac/__tests__/core-logic-unit.test.ts +0 -190
  803. package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +0 -1467
  804. package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +0 -151
  805. package/src/rbac/__tests__/core-permission-logic-simple.test.ts +0 -968
  806. package/src/rbac/__tests__/core-permission-logic.test.ts +0 -966
  807. package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +0 -988
  808. package/src/rbac/__tests__/edge-cases.test.ts +0 -654
  809. package/src/rbac/__tests__/engine.test.ts +0 -361
  810. package/src/rbac/__tests__/engine.unit.test.ts +0 -361
  811. package/src/rbac/__tests__/hooks.enhanced.test.tsx +0 -979
  812. package/src/rbac/__tests__/hooks.fixed.test.tsx +0 -475
  813. package/src/rbac/__tests__/hooks.test.tsx +0 -385
  814. package/src/rbac/__tests__/index.test.ts +0 -269
  815. package/src/rbac/__tests__/integration.enhanced.test.tsx +0 -824
  816. package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +0 -261
  817. package/src/rbac/__tests__/performance.enhanced.test.tsx +0 -724
  818. package/src/rbac/__tests__/permissions.test.ts +0 -383
  819. package/src/rbac/__tests__/requires-event.test.ts +0 -330
  820. package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +0 -1349
  821. package/src/rbac/__tests__/scope-isolation.test.ts +0 -755
  822. package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +0 -592
  823. package/src/rbac/__tests__/secure-client-rls.test.ts +0 -377
  824. package/src/rbac/__tests__/security.test.ts +0 -296
  825. package/src/rbac/__tests__/setup.ts +0 -228
  826. package/src/rbac/__tests__/test-utils-enhanced.tsx +0 -400
  827. package/src/rbac/__tests__/types.test.ts +0 -685
  828. package/src/rbac/adapters.tsx +0 -726
  829. package/src/rbac/api.ts +0 -339
  830. package/src/rbac/audit-enhanced.ts +0 -339
  831. package/src/rbac/audit.ts +0 -338
  832. package/src/rbac/cache.ts +0 -215
  833. package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -294
  834. package/src/rbac/components/NavigationGuard.tsx +0 -294
  835. package/src/rbac/components/NavigationProvider.tsx +0 -314
  836. package/src/rbac/components/PagePermissionGuard.tsx +0 -430
  837. package/src/rbac/components/PagePermissionProvider.tsx +0 -274
  838. package/src/rbac/components/PermissionEnforcer.tsx +0 -307
  839. package/src/rbac/components/RoleBasedRouter.tsx +0 -425
  840. package/src/rbac/components/SecureDataProvider.tsx +0 -319
  841. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -631
  842. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -667
  843. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -647
  844. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -496
  845. package/src/rbac/components/index.ts +0 -64
  846. package/src/rbac/config.ts +0 -133
  847. package/src/rbac/docs/event-based-apps.md +0 -285
  848. package/src/rbac/engine.ts +0 -1026
  849. package/src/rbac/eslint-rules.js +0 -285
  850. package/src/rbac/examples/CompleteRBACExample.tsx +0 -323
  851. package/src/rbac/examples/EventBasedApp.tsx +0 -238
  852. package/src/rbac/hooks.ts +0 -570
  853. package/src/rbac/index.ts +0 -114
  854. package/src/rbac/permissions.ts +0 -293
  855. package/src/rbac/secureClient.ts +0 -244
  856. package/src/rbac/security.ts +0 -346
  857. package/src/rbac/testing/__tests__/index.test.tsx +0 -342
  858. package/src/rbac/testing/index.tsx +0 -340
  859. package/src/rbac/types.ts +0 -343
  860. package/src/rbac/utils/__tests__/eventContext.test.ts +0 -428
  861. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -428
  862. package/src/rbac/utils/eventContext.ts +0 -83
  863. package/src/styles/__tests__/styles.unit.test.ts +0 -164
  864. package/src/styles/core.css +0 -422
  865. package/src/styles/index.ts +0 -51
  866. package/src/test-dom-cleanup.test.tsx +0 -38
  867. package/src/theming/__tests__/README.md +0 -335
  868. package/src/theming/__tests__/runtime.accessibility.test.ts +0 -474
  869. package/src/theming/__tests__/runtime.error.test.ts +0 -616
  870. package/src/theming/__tests__/runtime.integration.test.ts +0 -376
  871. package/src/theming/__tests__/runtime.performance.test.ts +0 -411
  872. package/src/theming/__tests__/runtime.unit.test.ts +0 -470
  873. package/src/theming/runtime.ts +0 -187
  874. package/src/types/__tests__/database.unit.test.ts +0 -489
  875. package/src/types/__tests__/guards.unit.test.ts +0 -146
  876. package/src/types/__tests__/index.unit.test.ts +0 -77
  877. package/src/types/__tests__/organisation.unit.test.ts +0 -713
  878. package/src/types/__tests__/rbac.unit.test.ts +0 -621
  879. package/src/types/__tests__/security.unit.test.ts +0 -347
  880. package/src/types/__tests__/supabase.unit.test.ts +0 -658
  881. package/src/types/__tests__/theme.unit.test.ts +0 -218
  882. package/src/types/__tests__/unified.unit.test.ts +0 -537
  883. package/src/types/__tests__/validation.unit.test.ts +0 -616
  884. package/src/types/database.ts +0 -472
  885. package/src/types/guards.ts +0 -30
  886. package/src/types/index.ts +0 -25
  887. package/src/types/organisation.ts +0 -184
  888. package/src/types/security.ts +0 -70
  889. package/src/types/supabase.ts +0 -166
  890. package/src/types/theme.ts +0 -6
  891. package/src/types/unified.ts +0 -262
  892. package/src/types/validation.ts +0 -164
  893. package/src/types/vitest-globals.d.ts +0 -43
  894. package/src/utils/__mocks__/supabaseMock.ts +0 -75
  895. package/src/utils/__mocks__/supabaseMock.tsx +0 -198
  896. package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
  897. package/src/utils/__tests__/appNameResolver.unit.test.ts +0 -137
  898. package/src/utils/__tests__/audit.unit.test.ts +0 -69
  899. package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
  900. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -317
  901. package/src/utils/__tests__/cn.unit.test.ts +0 -34
  902. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -480
  903. package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -322
  904. package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
  905. package/src/utils/__tests__/formatting.unit.test.ts +0 -66
  906. package/src/utils/__tests__/index.unit.test.ts +0 -251
  907. package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -304
  908. package/src/utils/__tests__/organisationContext.unit.test.ts +0 -192
  909. package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -259
  910. package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
  911. package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
  912. package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
  913. package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
  914. package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -334
  915. package/src/utils/__tests__/secureErrors.unit.test.ts +0 -377
  916. package/src/utils/__tests__/secureStorage.unit.test.ts +0 -293
  917. package/src/utils/__tests__/security.unit.test.ts +0 -127
  918. package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -280
  919. package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -370
  920. package/src/utils/__tests__/validation.unit.test.ts +0 -84
  921. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -571
  922. package/src/utils/appConfig.ts +0 -47
  923. package/src/utils/appIdResolver.ts +0 -130
  924. package/src/utils/appNameResolver.ts +0 -190
  925. package/src/utils/audit.ts +0 -127
  926. package/src/utils/auth-utils.ts +0 -96
  927. package/src/utils/bundleAnalysis.ts +0 -129
  928. package/src/utils/cn.ts +0 -7
  929. package/src/utils/debugLogger.ts +0 -46
  930. package/src/utils/deviceFingerprint.ts +0 -215
  931. package/src/utils/dynamicUtils.ts +0 -105
  932. package/src/utils/formatting.ts +0 -77
  933. package/src/utils/index.ts +0 -145
  934. package/src/utils/lazyLoad.tsx +0 -44
  935. package/src/utils/organisationContext.ts +0 -135
  936. package/src/utils/performanceBenchmark.ts +0 -64
  937. package/src/utils/performanceBudgets.ts +0 -111
  938. package/src/utils/permissionTypes.ts +0 -37
  939. package/src/utils/permissionUtils.ts +0 -31
  940. package/src/utils/print/PrintDataProcessor.ts +0 -390
  941. package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +0 -219
  942. package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +0 -353
  943. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +0 -397
  944. package/src/utils/print/index.ts +0 -29
  945. package/src/utils/print/types.ts +0 -196
  946. package/src/utils/print/usePrintOptimization.ts +0 -272
  947. package/src/utils/sanitization.ts +0 -264
  948. package/src/utils/schemaUtils.ts +0 -37
  949. package/src/utils/secureDataAccess.ts +0 -361
  950. package/src/utils/secureErrors.ts +0 -79
  951. package/src/utils/secureStorage.ts +0 -244
  952. package/src/utils/security.ts +0 -156
  953. package/src/utils/securityMonitor.ts +0 -45
  954. package/src/utils/sessionTracking.ts +0 -170
  955. package/src/utils/storage/README.md +0 -348
  956. package/src/utils/storage/__tests__/config.unit.test.ts +0 -206
  957. package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -648
  958. package/src/utils/storage/__tests__/index.unit.test.ts +0 -167
  959. package/src/utils/storage/__tests__/types.unit.test.ts +0 -441
  960. package/src/utils/storage/config.ts +0 -100
  961. package/src/utils/storage/helpers.ts +0 -359
  962. package/src/utils/storage/index.ts +0 -36
  963. package/src/utils/storage/types.ts +0 -90
  964. package/src/utils/validation.ts +0 -111
  965. package/src/utils/validationUtils.ts +0 -120
  966. package/src/validation/__tests__/common.unit.test.ts +0 -101
  967. package/src/validation/__tests__/csrf.unit.test.ts +0 -302
  968. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -98
  969. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -466
  970. package/src/validation/common.ts +0 -53
  971. package/src/validation/csrf.ts +0 -214
  972. package/src/validation/index.ts +0 -43
  973. package/src/validation/passwordSchema.ts +0 -125
  974. package/src/validation/sanitization.ts +0 -96
  975. package/src/validation/schemaUtils.ts +0 -42
  976. package/src/validation/sqlInjectionProtection.ts +0 -242
  977. package/src/validation/user.ts +0 -34
  978. package/dist/{DataTable-EEUDXPE5.js.map → DataTable-2LB6HI6V.js.map} +0 -0
  979. package/dist/{api-ETQ6YJ3C.js.map → api-AIJ3IJX3.js.map} +0 -0
  980. package/dist/{appNameResolver-7GHF5ED2.js.map → audit-PD5L5ZSC.js.map} +0 -0
  981. package/dist/{audit-BUW3LMJB.js.map → chunk-DC5AMYBS.js.map} +0 -0
  982. package/dist/{validation-PM_iOaTI.d.ts → validation-D2-NNCCE.d.ts} +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/index.ts","../src/components/Form/FormField.tsx","../src/components/Form/FormErrorSummary.tsx","../src/components/Form/FormLiveRegion.tsx","../src/components/Form/FormFieldset.tsx","../src/hooks/useRBAC.ts","../src/components/SuperAdminGuard.tsx","../src/components/PrintLayout/PrintLayout.tsx","../src/components/PrintLayout/PrintLayoutContext.tsx","../src/components/PrintHeader/PrintHeader.tsx","../src/components/PrintText/PrintText.tsx","../src/components/PrintHeader/PrintCoverHeader.tsx","../src/components/PrintDataTable/PrintDataTable.tsx","../src/components/PrintDataTable/PrintTableGroup.tsx","../src/components/PrintDataTable/PrintTableRow.tsx","../src/components/PrintCard/PrintCard.tsx","../src/components/PrintCard/PrintCardHeader.tsx","../src/components/PrintCard/PrintCardContent.tsx","../src/components/PrintCard/PrintCardFooter.tsx","../src/components/PrintCard/PrintCardImage.tsx","../src/components/PrintCard/PrintCardGrid.tsx","../src/components/PrintSection/PrintSection.tsx","../src/components/PrintSection/PrintSectionHeader.tsx","../src/components/PrintSection/PrintSectionContent.tsx","../src/components/PrintSection/PrintColumn.tsx","../src/components/PrintSection/PrintDivider.tsx","../src/components/PrintButton/PrintButton.tsx","../src/components/PrintButton/PrintButtonGroup.tsx","../src/components/PrintButton/PrintToolbar.tsx","../src/components/PrintGrid/PrintGrid.tsx","../src/components/PrintGrid/PrintGridItem.tsx","../src/components/PrintGrid/PrintGridContainer.tsx","../src/components/PrintGrid/PrintGridBreakpoint.tsx","../src/components/PrintFooter/PrintFooter.tsx","../src/components/PrintFooter/PrintPageNumber.tsx","../src/components/PrintFooter/PrintFooterContent.tsx","../src/components/PrintFooter/PrintFooterInfo.tsx","../src/components/PrintPageBreak/PrintPageBreak.tsx","../src/components/PrintPageBreak/PrintPageBreakIndicator.tsx","../src/components/PrintPageBreak/PrintPageBreakGroup.tsx"],"sourcesContent":["/**\n * @file Complete Components Library Export\n * @package @jmruthers/pace-core\n * @module Components\n * @since 0.1.0\n * \n * This file exports ALL components, providers, and utilities in the PACE Core library.\n * Use this import path when you need access to specialized components not included in the main export.\n * \n * @example\n * // Complete library access\n * import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';\n * \n * // For common components, prefer the main export:\n * import { Button, Card } from '@jmruthers/pace-core';\n */\n\n// ============================================================================\n// AUTHENTICATION & AUTHORIZATION\n// ============================================================================\n\n// Unified auth provider (replaces individual providers)\nexport { UnifiedAuthProvider, useUnifiedAuth } from '../providers/UnifiedAuthProvider';\nexport type { UnifiedAuthProviderProps, UnifiedAuthContextType } from '../providers/UnifiedAuthProvider';\n\n// ============================================================================\n// BASIC UI COMPONENTS\n// ============================================================================\n\nexport { Button } from './Button';\nexport type { ButtonProps } from './Button';\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardTitle, \n CardDescription, \n CardContent,\n CardActions\n} from './Card';\nexport type { CardProps, CardActionsProps } from './Card';\n\nexport { Input } from './Input';\nexport type { InputProps } from './Input';\nexport { Label } from './Label';\nexport type { LabelProps } from './Label';\n\nexport { Alert, AlertTitle, AlertDescription } from './Alert';\nexport { Avatar, AvatarImage, AvatarFallback } from './Avatar';\n\nexport { Checkbox } from './Checkbox';\nexport { Progress } from './Progress';\n\n// Table components\nexport {\n Table,\n TableHeader,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableRow,\n} from './Table/Table';\n\n// ============================================================================\n// ADVANCED UI COMPONENTS\n// ============================================================================\n\n// Dialog exports\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogBody,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from './Dialog/Dialog';\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogContentProps,\n DialogOverlayProps,\n DialogHeaderProps,\n DialogFooterProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogSize\n} from './Dialog/Dialog';\n\n// Dropdown Menu exports\n// DropdownMenu components have been merged into Select components\n\n// Select exports (includes all dropdown functionality)\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n} from './Select';\n\n// Toast exports\nexport {\n Toast,\n Toaster,\n ToastAction,\n ToastProvider,\n ToastViewport,\n ToastTitle,\n ToastDescription,\n ToastClose,\n useToast,\n} from './Toast';\nexport type { ToastActionElement, ToastProps } from './Toast';\n\n// Tooltip exports\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipRoot } from './Tooltip';\n\n// ============================================================================\n// DATA DISPLAY COMPONENTS\n// ============================================================================\n\nexport {\n DataTable,\n type DataTableProps,\n type DataTableColumn,\n type DataTableAction,\n type DataTableToolbarButton,\n type AggregateConfig,\n type EmptyStateConfig,\n type GetRowId\n} from './DataTable';\n\n// Re-export types from DataTable types\nexport type { DataRecord } from './DataTable/types';\n\n// ============================================================================\n// FORM COMPONENTS\n// ============================================================================\n\nexport { \n Form, \n FormField, \n FormErrorSummary, \n FormLiveRegion, \n FormFieldset \n} from './Form';\nexport type { \n FormProps, \n FormFieldProps, \n FormErrorSummaryProps, \n FormLiveRegionProps, \n FormFieldsetProps \n} from './Form';\n\n// LoginForm - ensure it's exported\nexport { LoginForm } from './LoginForm';\nexport type { LoginFormProps } from './LoginForm';\n\n// ============================================================================\n// LAYOUT COMPONENTS\n// ============================================================================\n\nexport { Header } from './Header';\nexport { Footer } from './Footer';\nexport type { FooterProps } from './Footer';\n\n// Public Layout Components\nexport * from './PublicLayout';\n\n// ============================================================================\n// SECURITY COMPONENTS\n// ============================================================================\n\n// Super Admin Guard components\nexport { \n SuperAdminGuard, \n SuperAdminBadge, \n SuperAdminDebugPanel \n} from './SuperAdminGuard';\nexport type { SuperAdminGuardProps } from './SuperAdminGuard';\n\n// Removed: Protected and AdminGuard components (unused)\n\n// ============================================================================\n// NAVIGATION COMPONENTS\n// ============================================================================\n\nexport {\n NavigationMenu,\n} from './NavigationMenu';\nexport type { NavigationMenuProps, NavigationItem } from './NavigationMenu';\n\nexport { OrganisationSelector } from './OrganisationSelector';\nexport type { OrganisationSelectorProps } from './OrganisationSelector';\n\nexport { UserMenu } from './UserMenu';\n\n// Reusable Page/Layout Components\nexport * from './PaceAppLayout';\nexport * from './PaceLoginPage';\n\n// ============================================================================\n// UTILITY COMPONENTS\n// ============================================================================\n\nexport { ErrorBoundary } from './ErrorBoundary';\nexport type { ErrorBoundaryProps, ErrorBoundaryState } from './ErrorBoundary';\nexport { LoadingSpinner } from './LoadingSpinner';\n\n// ============================================================================\n// EVENT MANAGEMENT\n// ============================================================================\n\nexport { EventSelector } from './EventSelector';\n\n// ============================================================================\n// AUTHENTICATION FORMS\n// ============================================================================\n\n// Password Component exports\nexport { PasswordResetForm } from './PasswordReset';\n\n// ============================================================================\n// STORAGE COMPONENTS\n// ============================================================================\n\nexport { FileUpload } from './FileUpload';\nexport type { FileUploadProps } from './FileUpload';\n\n// ============================================================================\n// PRINT COMPONENTS\n// ============================================================================\n\n// Print Layout components\nexport { PrintLayout, PrintLayoutProvider, usePrintLayout } from './PrintLayout';\nexport type { \n PrintLayoutProps, \n PrintLayoutContextType, \n PageSize,\n Orientation \n} from './PrintLayout';\n\n// Print Header components\nexport { PrintHeader, PrintCoverHeader } from './PrintHeader';\nexport type { \n PrintHeaderProps, \n PrintCoverHeaderProps,\n PrintBranding,\n PrintMetadata \n} from './PrintHeader';\n\n// Print Text component\nexport { PrintText } from './PrintText';\nexport type { \n PrintTextProps, \n PrintTextVariant, \n PrintTextWeight, \n PrintTextColor \n} from './PrintText';\n\n// Print Data Table components\nexport { PrintDataTable, PrintTableGroup, PrintTableRow } from './PrintDataTable';\nexport type { \n PrintDataTableProps,\n PrintTableGroupProps,\n PrintTableRowProps,\n PrintGrouping,\n PrintTableStyling,\n PrintColumnAlign,\n PrintBreakType,\n PrintHeaderStyle,\n PrintRowStyle,\n PrintCellPadding\n} from './PrintDataTable';\n\n// Print Card components\nexport { \n PrintCard, \n PrintCardHeader, \n PrintCardContent, \n PrintCardFooter, \n PrintCardImage, \n PrintCardGrid \n} from './PrintCard';\nexport type { \n PrintCardProps,\n PrintCardHeaderProps,\n PrintCardContentProps,\n PrintCardFooterProps,\n PrintCardImageProps,\n PrintCardGridProps,\n PrintCardVariant,\n PrintCardSize,\n PrintCardLayout,\n PrintCardBackgroundColor,\n PrintCardTextColor,\n PrintCardAlignment,\n PrintCardPadding,\n PrintCardAspectRatio,\n PrintCardObjectFit,\n PrintCardGap\n} from './PrintCard';\n\n// Print Section components\nexport { \n PrintSection, \n PrintSectionHeader, \n PrintSectionContent, \n PrintColumn, \n PrintDivider \n} from './PrintSection';\nexport type { \n PrintSectionProps,\n PrintSectionHeaderProps,\n PrintSectionContentProps,\n PrintColumnProps,\n PrintDividerProps,\n PrintSectionLayout,\n PrintSectionGap,\n PrintSectionSpacing,\n PrintSectionBackground,\n PrintSectionAlignment,\n PrintSectionPadding,\n PrintColumnWidth,\n PrintVerticalAlignment,\n PrintDividerStyle,\n PrintDividerColor,\n PrintDividerThickness\n} from './PrintSection';\n\n// Print Button components\nexport { PrintButton, PrintButtonGroup, PrintToolbar } from './PrintButton';\nexport type { \n PrintButtonProps,\n PrintButtonGroupProps,\n PrintToolbarProps,\n PrintButtonVariant,\n PrintButtonSize,\n PrintButtonShape,\n PrintButtonState,\n IconPosition,\n PrintToolbarPosition,\n PrintToolbarAlign,\n PrintFunction,\n PrintOptions\n} from './PrintButton';\n\n// Print Grid components\nexport { \n PrintGrid, \n PrintGridItem, \n PrintGridContainer, \n PrintGridBreakpoint \n} from './PrintGrid';\nexport type { \n PrintGridProps,\n PrintGridItemProps,\n PrintGridContainerProps,\n PrintGridBreakpointProps,\n PrintGridColumns,\n PrintGridGap,\n PrintGridAlign,\n PrintGridJustify,\n PrintGridItemSpan,\n PrintGridItemStart,\n PrintGridMaxWidth,\n PrintGridPadding,\n PrintGridMargin,\n PrintGridBackground,\n PrintGridBreakpointSize\n} from './PrintGrid';\n\n// Print Footer components\nexport { \n PrintFooter, \n PrintPageNumber, \n PrintFooterContent, \n PrintFooterInfo \n} from './PrintFooter';\nexport type { \n PrintFooterProps,\n PrintPageNumberProps,\n PrintFooterContentProps,\n PrintFooterInfoProps,\n PrintFooterPosition,\n PrintFooterAlign,\n PrintPageNumberFormat,\n PrintPageNumberPosition,\n PrintFooterBackground,\n PrintFooterPadding,\n PrintFooterMargin,\n PrintFooterHeight,\n PrintFooterContentAlign,\n PrintFooterInfoAlign\n} from './PrintFooter';\n\n// Print Page Break components\nexport { \n PrintPageBreak, \n PrintPageBreakIndicator, \n PrintPageBreakGroup \n} from './PrintPageBreak';\nexport type { \n PrintPageBreakProps,\n PrintPageBreakIndicatorProps,\n PrintPageBreakGroupProps,\n PrintPageBreakType,\n PrintPageBreakStrength,\n PrintPageBreakIndicatorType,\n PrintPageBreakIndicatorColor,\n PrintPageBreakIndicatorSize\n} from './PrintPageBreak';\n\n// ============================================================================\n// HOOKS\n// ============================================================================\n\nexport { useStorage, useFileUpload } from '../hooks/useStorage';\nexport type { UseStorageOptions, UseStorageReturn } from '../hooks/useStorage';\n\n// RBAC Components - Use the new RBAC system\n// For RBAC functionality, import from @jmruthers/pace-core/rbac\n// export { PermissionGuard, AccessLevelGuard } from '@jmruthers/pace-core/rbac';\n","/**\n * @file FormField Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A flexible form field component that integrates with React Hook Form and provides\n * built-in validation, error handling, and accessibility features.\n *\n * Features:\n * - React Hook Form integration with Controller\n * - Built-in validation with error display\n * - Accessible labels and error messages\n * - Custom render function support\n * - TypeScript support with generic field paths\n * - Consistent styling with error states\n * - Test ID support for testing\n * - Flexible input types and props\n *\n * @example\n * ```tsx\n * // Basic text field\n * <FormField\n * name=\"username\"\n * label=\"Username\"\n * placeholder=\"Enter your username\"\n * validation={{ required: true }}\n * />\n * \n * // Email field with custom validation\n * <FormField\n * name=\"email\"\n * label=\"Email Address\"\n * type=\"email\"\n * validation={{\n * required: true,\n * pattern: {\n * value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n * message: \"Invalid email address\"\n * }\n * }}\n * />\n * \n * // Custom render function\n * <FormField\n * name=\"avatar\"\n * label=\"Profile Picture\"\n * render={({ field }) => (\n * <input\n * {...field}\n * type=\"file\"\n * accept=\"image/*\"\n * className=\"file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-sec-50 file:text-sec-700 hover:file:bg-sec-100\"\n * />\n * )}\n * />\n * \n * // With test ID for testing\n * <FormField\n * name=\"password\"\n * label=\"Password\"\n * type=\"password\"\n * data-testid=\"password-field\"\n * validation={{\n * required: true,\n * minLength: {\n * value: 8,\n * message: \"Password must be at least 8 characters\"\n * }\n * }}\n * />\n * ```\n *\n * @accessibility\n * - Proper label association with htmlFor\n * - Error messages with role=\"alert\"\n * - Required field indicators\n * - Focus management\n * - Screen reader friendly error announcements\n * - Keyboard navigation support\n *\n * @dependencies\n * - react-hook-form - Form integration\n * - React 18+ - Hooks and context\n * - Tailwind CSS - Styling\n */\n\nimport React from 'react';\nimport { useFormContext, Controller, FieldPath, FieldValues } from 'react-hook-form';\nimport { cn } from '../../utils/cn';\nimport { Label } from '../Label';\n\nexport interface FormFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> {\n /**\n * Field name\n */\n name: TName;\n \n /**\n * Field label\n */\n label?: string;\n \n /**\n * Field type\n */\n type?: string;\n \n /**\n * Placeholder text\n */\n placeholder?: string;\n \n /**\n * Additional props for the input\n */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n \n /**\n * Validation rules\n */\n validation?: {\n required?: boolean;\n pattern?: {\n value: RegExp;\n message: string;\n };\n minLength?: {\n value: number;\n message: string;\n };\n maxLength?: {\n value: number;\n message: string;\n };\n };\n \n /**\n * Custom render function\n */\n render?: ({ field }: { field: any }) => React.ReactElement;\n \n /**\n * Test ID\n */\n 'data-testid'?: string;\n \n /**\n * Class name\n */\n className?: string;\n}\n\n/**\n * FormField component for React Hook Form integration\n * \n * @template TFieldValues - The type of form field values\n * @template TName - The type of the field name (must be a valid field path)\n * @param props - Form field configuration and validation\n * @returns JSX.Element - The rendered form field with validation\n * \n * @example\n * ```tsx\n * <FormField\n * name=\"email\"\n * label=\"Email\"\n * type=\"email\"\n * validation={{\n * required: true,\n * pattern: {\n * value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n * message: \"Please enter a valid email address\"\n * }\n * }}\n * />\n * ```\n */\nexport function FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n label,\n type = \"text\",\n placeholder,\n inputProps,\n validation,\n render,\n 'data-testid': testId,\n className,\n}: FormFieldProps<TFieldValues, TName>) {\n const { control, formState: { errors } } = useFormContext<TFieldValues>();\n const fieldError = errors[name];\n\n // Safely extract error message\n const errorMessage = fieldError && typeof fieldError === 'object' && 'message' in fieldError \n ? String(fieldError.message) \n : undefined;\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <Label htmlFor={name}>\n {label}\n {validation?.required && (\n <span className=\"text-destructive ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </Label>\n )}\n \n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field }) => {\n if (render) {\n return render({ field });\n }\n \n return (\n <input\n {...field}\n id={name}\n type={type}\n placeholder={placeholder}\n data-testid={testId}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n fieldError && \"border-destructive focus-visible:ring-destructive\"\n )}\n {...inputProps}\n />\n );\n }}\n />\n \n {errorMessage && (\n <p className=\"text-destructive\" role=\"alert\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n","\n/**\n * @file FormErrorSummary Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A form error summary component that displays validation errors in a user-friendly format.\n * Provides a centralized location for users to see all form errors at once.\n *\n * Features:\n * - Displays all form errors in one place\n * - Configurable error display format\n * - Optional field name display\n * - Accessible error presentation\n * - Consistent styling with Alert component\n * - Automatic error filtering\n * - Responsive design\n *\n * @example\n * ```tsx\n * // Basic error summary\n * <FormErrorSummary errors={formErrors} />\n * \n * // With custom title\n * <FormErrorSummary \n * errors={formErrors}\n * title=\"Please correct the following issues:\"\n * />\n * \n * // Show field names with errors\n * <FormErrorSummary \n * errors={formErrors}\n * showFieldNames={true}\n * />\n * \n * // In a form with React Hook Form\n * const { formState: { errors } } = useForm();\n * \n * <Form onSubmit={handleSubmit}>\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"password\" label=\"Password\" />\n * <FormErrorSummary errors={errors} />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * ```\n *\n * @accessibility\n * - Uses Alert component for consistent accessibility\n * - Proper heading hierarchy with h3\n * - List structure for error items\n * - Screen reader friendly error announcements\n * - High contrast support via Alert component\n *\n * @dependencies\n * - Alert component for consistent styling\n * - React 18+ - Component framework\n * - Tailwind CSS - Styling\n */\n\nimport { Alert } from '../Alert';\n\nexport interface FormErrorSummaryProps {\n /** Form validation errors object */\n errors?: Record<string, any>;\n /** Title displayed above the error list */\n title?: string;\n /** Whether to show field names alongside error messages */\n showFieldNames?: boolean;\n}\n\n/**\n * FormErrorSummary component for displaying form validation errors\n * \n * This component provides a user-friendly way to display all form errors\n * in one centralized location, improving the user experience by making\n * it clear what needs to be fixed.\n * \n * @param props - Component configuration\n * @param props.errors - Form validation errors object\n * @param props.title - Title displayed above the error list\n * @param props.showFieldNames - Whether to show field names with errors\n * @returns JSX.Element - The rendered error summary or null if no errors\n */\nexport function FormErrorSummary({ \n errors = {}, \n title = \"Please fix the following errors:\",\n showFieldNames = false \n}: FormErrorSummaryProps) {\n const errorEntries = Object.entries(errors).filter(([, value]) => Boolean(value));\n\n if (errorEntries.length === 0) {\n return null;\n }\n\n return (\n <Alert variant=\"destructive\" className=\"mb-4\">\n <div>\n <h3>{title}</h3>\n <ul className=\"list-disc list-inside space-y-1\">\n {errorEntries.map(([field, error], index) => {\n const message = typeof error === 'object' && error.message ? error.message : String(error);\n return (\n <li key={index} className=\"text-sm\">\n {showFieldNames ? `${field}: ${message}` : message}\n </li>\n );\n })}\n </ul>\n </div>\n </Alert>\n );\n}\n","/**\n * @file FormLiveRegion Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * An accessible live region component for form validation announcements.\n * Provides real-time feedback to screen readers about form validation states\n * and error messages, improving accessibility for users with assistive technologies.\n *\n * Features:\n * - Real-time form validation announcements\n * - Configurable politeness levels (polite/assertive)\n * - Customizable delay timing\n * - Field-level and form-level announcements\n * - Success message customization\n * - Automatic error counting and field identification\n * - Accessibility compliant with ARIA live regions\n * - Integration with React Hook Form\n *\n * @example\n * ```tsx\n * // Basic live region\n * const { control, formState } = useForm();\n * \n * <Form onSubmit={handleSubmit}>\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"password\" label=\"Password\" />\n * <FormLiveRegion form={{ control, formState }} />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * \n * // With custom configuration\n * <FormLiveRegion\n * form={{ control, formState }}\n * politeness=\"assertive\"\n * delay={1000}\n * successMessage=\"Your form was submitted successfully!\"\n * enableFieldAnnouncements={true}\n * />\n * \n * // In a complex form\n * function ComplexForm() {\n * const methods = useForm({\n * defaultValues: { name: '', email: '', message: '' }\n * });\n * \n * return (\n * <FormProvider {...methods}>\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <FormField name=\"name\" label=\"Name\" />\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"message\" label=\"Message\" />\n * <FormLiveRegion \n * form={methods}\n * politeness=\"polite\"\n * delay={300}\n * />\n * <Button type=\"submit\">Send Message</Button>\n * </form>\n * </FormProvider>\n * );\n * }\n * ```\n *\n * @accessibility\n * - ARIA live region for screen reader announcements\n * - Configurable politeness levels for different message types\n * - Automatic error counting and field identification\n * - Non-intrusive validation feedback\n * - WCAG 2.1 AA compliant\n * - Screen reader friendly error announcements\n *\n * @dependencies\n * - react-hook-form - Form state management\n * - React 18+ - Hooks and effects\n * - Tailwind CSS - Styling\n */\n\nimport React, { useEffect, useState } from 'react';\nimport { UseFormReturn, FieldValues } from 'react-hook-form';\nimport { cn } from '../../utils/cn';\n\n/**\n * Props for the FormLiveRegion component\n */\nexport interface FormLiveRegionProps<T extends FieldValues> {\n /** React Hook Form instance */\n form: UseFormReturn<T>;\n /** ARIA live region politeness level */\n politeness?: 'polite' | 'assertive';\n /** Delay before announcing messages (in ms) */\n delay?: number;\n /** Custom success message */\n successMessage?: string;\n /** Custom class name */\n className?: string;\n /** Enable field-level validation announcements */\n enableFieldAnnouncements?: boolean;\n}\n\n/**\n * FormLiveRegion component for accessible form validation announcements\n */\nexport function FormLiveRegion<T extends FieldValues>({\n form,\n politeness = 'polite',\n delay = 500,\n successMessage = 'Form submitted successfully',\n className,\n enableFieldAnnouncements = true\n}: FormLiveRegionProps<T>): React.ReactElement {\n const [message, setMessage] = useState<string>('');\n const { formState } = form;\n\n // Handle form-level announcements\n useEffect(() => {\n let timeoutId: NodeJS.Timeout;\n\n if (formState.isSubmitting) {\n setMessage('Submitting form...');\n } else if (formState.isSubmitSuccessful) {\n timeoutId = setTimeout(() => {\n setMessage(successMessage);\n }, delay);\n } else if (formState.errors && Object.keys(formState.errors).length > 0) {\n const errorCount = Object.keys(formState.errors).length;\n const errorFields = Object.keys(formState.errors).join(', ');\n setMessage(`Form has ${errorCount} error${errorCount === 1 ? '' : 's'} in: ${errorFields}`);\n } else if (formState.isValid && formState.isDirty) {\n setMessage('Form is valid');\n } else {\n setMessage('');\n }\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [formState, delay, successMessage]);\n\n // Handle field-level announcements\n useEffect(() => {\n if (!enableFieldAnnouncements) return;\n\n let timeoutId: NodeJS.Timeout;\n \n const fieldErrors = formState.errors;\n const touchedFields = formState.touchedFields;\n \n // Find newly touched fields with errors\n const newErrors = Object.keys(fieldErrors).filter(field => {\n // Type-safe access to touchedFields\n const touchedField = touchedFields as Record<string, boolean>;\n return touchedField[field] && fieldErrors[field as keyof typeof fieldErrors];\n });\n\n if (newErrors.length > 0) {\n timeoutId = setTimeout(() => {\n const errorField = newErrors[0];\n const errorData = fieldErrors[errorField as keyof typeof fieldErrors];\n const errorMessage = errorData?.message;\n if (errorMessage) {\n setMessage(`${errorField}: ${errorMessage}`);\n }\n }, delay);\n }\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [formState.errors, formState.touchedFields, enableFieldAnnouncements, delay]);\n\n if (!message) {\n return <></>;\n }\n\n return (\n <div\n role=\"status\"\n aria-live={politeness}\n aria-atomic=\"true\"\n className={cn('sr-only', className)}\n style={{\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden'\n }}\n >\n {message}\n </div>\n );\n}\n","/**\n * @file FormFieldset Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A form fieldset component that groups related form fields together with a legend\n * and optional description. Provides semantic structure and accessibility for form sections.\n *\n * Features:\n * - Semantic fieldset grouping for related form fields\n * - Accessible legend with required indicator\n * - Optional description text with proper ARIA association\n * - Consistent styling with design system\n * - Forwarded ref support\n * - Customizable styling via className\n * - Required field indication\n * - Responsive design\n *\n * @example\n * ```tsx\n * // Basic fieldset\n * <FormFieldset legend=\"Personal Information\">\n * <FormField name=\"firstName\" label=\"First Name\" />\n * <FormField name=\"lastName\" label=\"Last Name\" />\n * <FormField name=\"email\" label=\"Email\" />\n * </FormFieldset>\n * \n * // Fieldset with description\n * <FormFieldset \n * legend=\"Contact Details\" \n * description=\"We'll use this information to contact you about your order\"\n * >\n * <FormField name=\"phone\" label=\"Phone Number\" />\n * <FormField name=\"address\" label=\"Address\" />\n * </FormFieldset>\n * \n * // Required fieldset\n * <FormFieldset \n * legend=\"Account Settings\" \n * required={true}\n * description=\"These settings are required for account creation\"\n * >\n * <FormField name=\"username\" label=\"Username\" required />\n * <FormField name=\"password\" label=\"Password\" type=\"password\" required />\n * </FormFieldset>\n * \n * // With custom styling\n * <FormFieldset \n * legend=\"Preferences\"\n * className=\"bg-sec-50 border-sec-200\"\n * >\n * <FormField name=\"newsletter\" label=\"Subscribe to newsletter\" type=\"checkbox\" />\n * <FormField name=\"notifications\" label=\"Enable notifications\" type=\"checkbox\" />\n * </FormFieldset>\n * ```\n *\n * @accessibility\n * - Proper semantic HTML with fieldset and legend\n * - ARIA describedby association for descriptions\n * - Required field indication with asterisk\n * - Screen reader friendly structure\n * - Keyboard navigation support\n * - WCAG 2.1 AA compliant\n *\n * @dependencies\n * - React 18+ - Component framework and hooks\n * - Tailwind CSS - Styling\n * - cn utility - Class name merging\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FormFieldsetProps extends React.FieldsetHTMLAttributes<HTMLFieldSetElement> {\n /** The legend text for the fieldset */\n legend: string;\n /** Optional description text below the legend */\n description?: string;\n /** Whether the fieldset contains required fields */\n required?: boolean;\n /** Form fields to group within the fieldset */\n children: React.ReactNode;\n}\n\n/**\n * FormFieldset component for grouping related form fields\n * \n * This component provides semantic grouping for form fields with proper\n * accessibility support and consistent styling. Use it to organize\n * related form inputs into logical sections.\n * \n * @param props - Component configuration\n * @param props.legend - The legend text for the fieldset\n * @param props.description - Optional description text\n * @param props.required - Whether the fieldset contains required fields\n * @param props.children - Form fields to group\n * @param ref - Forwarded ref to the fieldset element\n * @returns JSX.Element - The rendered fieldset with legend and fields\n */\nexport const FormFieldset = React.forwardRef<HTMLFieldSetElement, FormFieldsetProps>(\n ({ legend, description, required, className, children, ...props }, ref) => {\n const descriptionId = React.useId();\n \n return (\n <fieldset\n ref={ref}\n className={cn(\"space-y-4 border border-input rounded-lg p-4\", className)}\n aria-describedby={description ? descriptionId : undefined}\n {...props}\n >\n <legend className=\"px-2\">\n {legend}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </legend>\n {description && (\n <p id={descriptionId} className=\"text-muted-foreground\">\n {description}\n </p>\n )}\n {children}\n </fieldset>\n );\n }\n);\n\nFormFieldset.displayName = \"FormFieldset\";\n","/**\n * @file RBAC Hook\n * @package @jmruthers/pace-core\n * @module Hooks/RBAC\n * @since 0.3.0\n *\n * A React hook that provides access to the new RBAC (Role-Based Access Control) system.\n * This hook integrates with the database to provide real-time role and permission information.\n *\n * Features:\n * - Real-time role detection (global, organisation, event-app)\n * - Permission checking with database validation\n * - Hierarchical permission resolution\n * - Loading states and error handling\n * - Type-safe permission operations\n * - Automatic context detection\n *\n * @example\n * ```tsx\n * import { useRBAC } from '@jmruthers/pace-core';\n * \n * function MyComponent() {\n * const {\n * globalRole,\n * organisationRole,\n * eventAppRole,\n * hasPermission,\n * isSuperAdmin,\n * isLoading,\n * error\n * } = useRBAC();\n * \n * if (isLoading) return <div>Loading permissions...</div>;\n * if (error) return <div>Error: {error.message}</div>;\n * \n * return (\n * <div>\n * {isSuperAdmin && <AdminPanel />}\n * {hasPermission('read', 'dashboard') && <Dashboard />}\n * {hasPermission('create', 'events') && <CreateEventButton />}\n * </div>\n * );\n * }\n * ```\n *\n * @accessibility\n * - No direct accessibility concerns (hook)\n * - Enables accessible permission-based UI rendering\n * - Supports screen reader friendly conditional content\n *\n * @security\n * - Database-backed permission validation\n * - Hierarchical permission resolution\n * - Organisation context enforcement\n * - Real-time permission updates\n *\n * @performance\n * - Optimized with useMemo and useCallback\n * - Permission caching\n * - Minimal re-renders\n * - Lazy loading of permissions\n *\n * @dependencies\n * - React 18+ - Hooks and effects\n * - @supabase/supabase-js - Database integration\n * - RBAC types - Type definitions\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useUnifiedAuth } from '../providers/UnifiedAuthProvider';\nimport { useOrganisations } from '../providers/OrganisationProvider';\nimport { useEvents } from '../providers/EventProvider';\nimport type { \n UserRBACContext, \n GlobalRole, \n OrganisationRole, \n EventAppRole, \n Operation,\n RBACPermission \n} from '../rbac/types';\n\nexport function useRBAC(pageId?: string): UserRBACContext {\n const { user, session, supabase, appName } = useUnifiedAuth();\n const { selectedOrganisation } = useOrganisations();\n \n // Try to get events context, but don't fail if not available\n let selectedEvent = null;\n try {\n const eventsContext = useEvents();\n selectedEvent = eventsContext.selectedEvent;\n } catch (error) {\n // EventProvider not available, continue without event context\n console.debug('useRBAC: EventProvider not available, continuing without event context');\n }\n \n // State\n const [globalRole, setGlobalRole] = useState<GlobalRole | null>(null);\n const [organisationRole, setOrganisationRole] = useState<OrganisationRole | null>(null);\n const [eventAppRole, setEventAppRole] = useState<EventAppRole | null>(null);\n const [permissions, setPermissions] = useState<RBACPermission[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Load RBAC context\n const loadRBACContext = useCallback(async () => {\n if (!user || !session || !supabase || !appName) {\n console.log('[useRBAC] Missing required dependencies, clearing RBAC state');\n setGlobalRole(null);\n setOrganisationRole(null);\n setEventAppRole(null);\n setPermissions([]);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // First resolve app name to app_id\n const { data: appData, error: appError } = await supabase\n .from('rbac_apps')\n .select('id')\n .eq('name', appName)\n .eq('is_active', true)\n .single();\n\n if (appError || !appData) {\n console.warn('App not found or inactive:', appName);\n setIsLoading(false);\n return;\n }\n\n const { data, error: rpcError } = await supabase.rpc('get_rbac_permissions', {\n p_user_id: user.id,\n p_app_id: appData.id,\n p_event_id: selectedEvent?.event_id || null,\n p_organisation_id: selectedOrganisation?.id || null,\n p_page_id: pageId || null\n });\n\n if (rpcError) {\n throw new Error(`Failed to load RBAC permissions: ${rpcError.message}`);\n }\n\n if (data) {\n // Extract roles from permissions based on permission_type\n const globalPerms = data.filter((p: RBACPermission) => p.permission_type === 'all_permissions');\n const orgPerms = data.filter((p: RBACPermission) => p.permission_type === 'organisation_access');\n const eventPerms = data.filter((p: RBACPermission) => p.permission_type === 'event_app_access');\n\n // Set roles (take the highest permission for each type)\n setGlobalRole(globalPerms.length > 0 ? 'super_admin' : null);\n setOrganisationRole(orgPerms.length > 0 ? orgPerms[0].role_name as OrganisationRole : null);\n setEventAppRole(eventPerms.length > 0 ? eventPerms[0].role_name as EventAppRole : null);\n setPermissions(data);\n } else {\n setPermissions([]);\n }\n } catch (err) {\n console.error('RBAC Context Loading Error:', err);\n setError(err instanceof Error ? err : new Error('Unknown error loading RBAC context'));\n setPermissions([]);\n } finally {\n setIsLoading(false);\n }\n }, [user?.id, session, supabase, appName, selectedEvent?.event_id, selectedOrganisation?.id, pageId]);\n\n // Permission checking function\n const hasPermission = useCallback(async (operation: Operation, targetPageId?: string): Promise<boolean> => {\n if (!user || !session || !supabase || !appName) return false;\n\n // Super admin has all permissions\n if (globalRole === 'super_admin') {\n return true;\n }\n\n try {\n // First resolve app name to app_id\n const { data: appData, error: appError } = await supabase\n .from('rbac_apps')\n .select('id')\n .eq('name', appName)\n .eq('is_active', true)\n .single();\n\n if (appError || !appData) {\n console.warn('App not found or inactive:', appName);\n return false;\n }\n\n const { data, error } = await supabase.rpc('check_page_permission', {\n p_user_id: user.id,\n p_app_id: appData.id,\n p_page_id: targetPageId || pageId || 'default',\n p_operation: operation,\n p_event_id: selectedEvent?.event_id,\n p_organisation_id: selectedOrganisation?.id\n });\n\n if (error) {\n console.error('Permission check failed:', error);\n return false;\n }\n\n return data === true;\n } catch (err) {\n console.error('Permission check error:', err);\n return false;\n }\n }, [user, supabase, appName, selectedEvent, selectedOrganisation, pageId, globalRole]);\n\n // Simple permission check for global roles (synchronous)\n const hasGlobalPermission = useCallback((permission: string): boolean => {\n // Super admin has all permissions\n if (globalRole === 'super_admin') {\n return true;\n }\n \n // Check specific global roles\n if (permission === 'super_admin') {\n return globalRole === 'super_admin';\n }\n \n if (permission === 'org_admin') {\n return organisationRole === 'org_admin' || globalRole === 'super_admin';\n }\n \n return false;\n }, [globalRole, organisationRole]);\n\n // Computed properties\n const isSuperAdmin = useMemo(() => globalRole === 'super_admin', [globalRole]);\n const isOrgAdmin = useMemo(() => organisationRole === 'org_admin', [organisationRole]);\n const isEventAdmin = useMemo(() => eventAppRole === 'event_admin', [eventAppRole]);\n const canManageOrganisation = useMemo(() => \n isSuperAdmin || isOrgAdmin, [isSuperAdmin, isOrgAdmin]\n );\n const canManageEvent = useMemo(() => \n isSuperAdmin || isEventAdmin, [isSuperAdmin, isEventAdmin]\n );\n\n // Load context when dependencies change\n useEffect(() => {\n loadRBACContext();\n }, [loadRBACContext]);\n\n return {\n user, // Add user to the returned context\n globalRole,\n organisationRole,\n eventAppRole,\n hasPermission,\n hasGlobalPermission,\n isSuperAdmin,\n isOrgAdmin,\n isEventAdmin,\n canManageOrganisation,\n canManageEvent,\n isLoading,\n error\n };\n} ","/**\n * Super Admin Guard Component\n * @package @jmruthers/pace-core\n * @module Components/SuperAdminGuard\n * @since 1.0.0\n * \n * A reusable component for protecting content that should only be visible to super admins.\n */\n\nimport React from 'react';\nimport { useRBAC } from '../hooks/useRBAC';\n\nexport interface SuperAdminGuardProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n showDebugInfo?: boolean;\n}\n\n/**\n * Super Admin Guard Component\n * \n * Renders children only if the current user is a super admin.\n * Provides a fallback for non-super admin users.\n * \n * @param children - Content to render for super admins\n * @param fallback - Content to render for non-super admins (optional)\n * @param showDebugInfo - Whether to show debug information (optional)\n */\nexport function SuperAdminGuard({ \n children, \n fallback = null, \n showDebugInfo = false \n}: SuperAdminGuardProps) {\n const { isSuperAdmin, hasGlobalPermission, isLoading } = useRBAC();\n\n // Show loading state\n if (isLoading) {\n return (\n <div className=\"super-admin-guard-loading\">\n <div className=\"loading-spinner\" />\n <span>Checking permissions...</span>\n </div>\n );\n }\n\n // Show debug info if enabled\n if (showDebugInfo) {\n console.log('[SuperAdminGuard] Debug Info:', {\n isSuperAdmin,\n isLoading\n });\n }\n\n // Render children for super admins\n if (isSuperAdmin) {\n return (\n <div className=\"super-admin-content\">\n {children}\n </div>\n );\n }\n\n // Render fallback for non-super admins\n return (\n <div className=\"super-admin-fallback\">\n {fallback}\n </div>\n );\n}\n\n/**\n * Super Admin Badge Component\n * \n * Shows a visual indicator when the current user is a super admin.\n */\nexport function SuperAdminBadge() {\n const { isSuperAdmin } = useRBAC();\n\n if (!isSuperAdmin) {\n return null;\n }\n\n return (\n <div className=\"super-admin-badge\">\n <span className=\"badge-text\">SUPER ADMIN</span>\n </div>\n );\n}\n\n/**\n * Super Admin Debug Panel\n * \n * Shows debug information about the current user's permissions.\n * Only visible to super admins and in development mode.\n */\nexport function SuperAdminDebugPanel() {\n const { isSuperAdmin, isLoading } = useRBAC();\n\n // Only show in development or for super admins\n if (process.env.NODE_ENV !== 'development' && !isSuperAdmin) {\n return null;\n }\n\n return (\n <div className=\"super-admin-debug-panel\">\n <h4>Super Admin Debug Info</h4>\n <div className=\"debug-info\">\n <p><strong>Is Super Admin:</strong> {isSuperAdmin ? 'Yes' : 'No'}</p>\n <p><strong>Is Loading:</strong> {isLoading ? 'Yes' : 'No'}</p>\n <p><strong>Environment:</strong> {process.env.NODE_ENV}</p>\n </div>\n </div>\n );\n}\n\nexport default SuperAdminGuard;\n","/**\n * @file PrintLayout Component\n * @package @jmruthers/pace-core\n * @module PrintLayout\n * @since 0.4.38\n * \n * Base print-optimized layout component with A4 support and first page header management.\n * \n * Features:\n * - Print-optimized base layout\n * - A4 page size support (portrait/landscape)\n * - First page vs subsequent page header management\n * - Print media query integration\n * - Page break controls\n * \n * @example\n * ```tsx\n * <PrintLayout orientation=\"portrait\" pageSize=\"A4\">\n * <PrintHeader title=\"Report\" />\n * <PrintSection title=\"Data\">\n * <PrintDataTable data={data} columns={columns} />\n * </PrintSection>\n * </PrintLayout>\n * ```\n * \n * @example\n * ```tsx\n * <PrintLayout \n * orientation=\"landscape\" \n * pageSize=\"A4\"\n * firstPageHeader={<PrintCoverHeader title=\"Annual Report\" />}\n * subsequentPageHeader={<PrintHeader title=\"Annual Report\" />}\n * >\n * <PrintSection title=\"Executive Summary\">\n * Content goes here\n * </PrintSection>\n * </PrintLayout>\n * ```\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintLayoutProvider } from './PrintLayoutContext';\nimport type { PrintLayoutProps } from './types';\n\n/**\n * PrintLayout component provides a print-optimized base layout with support for\n * different page sizes, orientations, and header management.\n */\nexport function PrintLayout({\n children,\n orientation = 'portrait',\n pageSize = 'A4',\n showHeader = true,\n showFooter = true,\n firstPageHeader,\n subsequentPageHeader,\n className,\n ...props\n}: PrintLayoutProps) {\n const hasFirstPageHeader = Boolean(firstPageHeader);\n const hasSubsequentPageHeader = Boolean(subsequentPageHeader);\n\n const getPageSizeClass = () => {\n if (pageSize === 'A4') {\n return orientation === 'landscape' ? 'print-a4-landscape' : 'print-a4-portrait';\n }\n // Future: Add A3, A5 support\n return 'print-a4-portrait';\n };\n\n const getHeaderClass = () => {\n if (hasFirstPageHeader && hasSubsequentPageHeader) {\n return 'print-first-page-header print-subsequent-header';\n }\n if (hasFirstPageHeader) {\n return 'print-first-page-header';\n }\n if (hasSubsequentPageHeader) {\n return 'print-subsequent-header';\n }\n return '';\n };\n\n return (\n <PrintLayoutProvider\n pageSize={pageSize}\n orientation={orientation}\n hasFirstPageHeader={hasFirstPageHeader}\n hasSubsequentPageHeader={hasSubsequentPageHeader}\n >\n <div\n className={cn(\n 'print-layout',\n getPageSizeClass(),\n getHeaderClass(),\n className\n )}\n {...props}\n >\n {/* First page header */}\n {hasFirstPageHeader && (\n <div className=\"print-first-page-only\">\n {firstPageHeader}\n </div>\n )}\n\n {/* Subsequent page header */}\n {hasSubsequentPageHeader && (\n <div className=\"print-subsequent-pages-only\">\n {subsequentPageHeader}\n </div>\n )}\n\n {/* Main content */}\n <div className=\"print-text\">\n {children}\n </div>\n </div>\n </PrintLayoutProvider>\n );\n}\n","/**\n * @file PrintLayout Context\n * @package @jmruthers/pace-core\n * @module PrintLayout\n * @since 0.4.38\n * \n * Context for managing print layout state and page detection.\n */\n\nimport React, { createContext, useContext, useState, useEffect } from 'react';\nimport type { PrintLayoutContextType, PageSize, Orientation } from './types';\n\nconst PrintLayoutContext = createContext<PrintLayoutContextType | undefined>(undefined);\n\nexport interface PrintLayoutProviderProps {\n children: React.ReactNode;\n pageSize: PageSize;\n orientation: Orientation;\n hasFirstPageHeader: boolean;\n hasSubsequentPageHeader: boolean;\n}\n\nexport function PrintLayoutProvider({\n children,\n pageSize,\n orientation,\n hasFirstPageHeader,\n hasSubsequentPageHeader,\n}: PrintLayoutProviderProps) {\n const [isFirstPage, setIsFirstPage] = useState(true);\n\n useEffect(() => {\n // Simple page detection - in a real implementation, this would be more sophisticated\n // For now, we'll assume first page until content overflows\n const handleResize = () => {\n // This is a simplified implementation\n // In a real scenario, you'd measure content height vs page height\n setIsFirstPage(true);\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const value: PrintLayoutContextType = {\n isFirstPage,\n pageSize,\n orientation,\n hasFirstPageHeader,\n hasSubsequentPageHeader,\n };\n\n return (\n <PrintLayoutContext.Provider value={value}>\n {children}\n </PrintLayoutContext.Provider>\n );\n}\n\nexport function usePrintLayout(): PrintLayoutContextType {\n const context = useContext(PrintLayoutContext);\n if (context === undefined) {\n throw new Error('usePrintLayout must be used within a PrintLayoutProvider');\n }\n return context;\n}\n","/**\n * @file PrintHeader Component\n * @package @jmruthers/pace-core\n * @module PrintHeader\n * @since 0.4.38\n * \n * Flexible print header component with branding and metadata display.\n * \n * Features:\n * - Flexible branding integration\n * - Metadata display with icons\n * - Print date automation\n * - Responsive layout for screen/print\n * - Integration with existing theme system\n * \n * @example\n * ```tsx\n * <PrintHeader \n * title=\"Data Report\"\n * subtitle=\"Q4 Analytics\"\n * branding={{\n * companyName: \"Acme Corp\",\n * projectName: \"Q4 Analytics\",\n * version: \"v1.2\"\n * }}\n * metadata={[\n * { label: \"Status\", value: \"Complete\", icon: CheckIcon },\n * { label: \"Generated\", value: \"2024-01-15\", icon: CalendarIcon }\n * ]}\n * />\n * ```\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport type { PrintHeaderProps, PrintBranding, PrintMetadata } from './types';\n\n/**\n * PrintHeader component provides flexible branding and metadata display for print layouts.\n */\nexport function PrintHeader({\n title,\n subtitle,\n branding,\n metadata = [],\n printDate = true,\n className,\n}: PrintHeaderProps) {\n const formatPrintDate = () => {\n return new Date().toLocaleDateString('en-AU', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n };\n\n const renderBranding = (branding: PrintBranding) => {\n const { logo, companyName, projectName, version, tagline } = branding;\n \n return (\n <div className=\"flex items-center space-x-4 mb-4\">\n {logo && (\n <img \n src={logo} \n alt={companyName || 'Company Logo'} \n className=\"h-8 w-auto print:h-6\"\n />\n )}\n <div className=\"flex-1\">\n {companyName && (\n <PrintText variant=\"subheading\" weight=\"semibold\" className=\"mb-1\">\n {companyName}\n </PrintText>\n )}\n {projectName && (\n <PrintText variant=\"body\" color=\"muted\" className=\"mb-1\">\n {projectName}\n </PrintText>\n )}\n {version && (\n <PrintText variant=\"small\" color=\"muted\">\n {version}\n </PrintText>\n )}\n {tagline && (\n <PrintText variant=\"small\" color=\"muted\" className=\"italic\">\n {tagline}\n </PrintText>\n )}\n </div>\n </div>\n );\n };\n\n const renderMetadata = (metadata: PrintMetadata[]) => {\n if (metadata.length === 0) return null;\n\n return (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-4\">\n {metadata.map((item, index) => (\n <div key={index} className=\"flex items-center space-x-2\">\n {item.icon && (\n <item.icon className=\"h-4 w-4 text-muted-foreground print:h-3 print:w-3\" />\n )}\n <div>\n <PrintText variant=\"small\" color=\"muted\" className=\"block\">\n {item.label}\n </PrintText>\n <PrintText variant=\"body\" weight=\"medium\" className=\"block\">\n {item.value}\n </PrintText>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <header className={cn('print-header border-b border-border pb-4 mb-6', className)}>\n {/* Branding */}\n {branding && renderBranding(branding)}\n \n {/* Title and Subtitle */}\n <div className=\"mb-4\">\n <PrintText variant=\"heading\" className=\"mb-2\">\n {title}\n </PrintText>\n {subtitle && (\n <PrintText variant=\"subheading\" color=\"muted\">\n {subtitle}\n </PrintText>\n )}\n </div>\n \n {/* Metadata */}\n {metadata.length > 0 && renderMetadata(metadata)}\n \n {/* Print Date */}\n {printDate && (\n <div className=\"flex justify-end\">\n <PrintText variant=\"small\" color=\"muted\">\n Printed on {formatPrintDate()}\n </PrintText>\n </div>\n )}\n </header>\n );\n}\n","/**\n * @file PrintText Component\n * @package @jmruthers/pace-core\n * @module PrintText\n * @since 0.4.38\n * \n * Print-optimized typography component with consistent text styling.\n * \n * Features:\n * - Print-optimized typography\n * - Consistent text styling variants\n * - Print-specific font sizing\n * - High contrast for readability\n * - Integration with existing theme system\n * \n * @example\n * ```tsx\n * <PrintText variant=\"heading\">Main Title</PrintText>\n * <PrintText variant=\"body\" weight=\"medium\">Body text content</PrintText>\n * <PrintText variant=\"caption\" color=\"muted\">Caption text</PrintText>\n * ```\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport type { PrintTextProps, PrintTextVariant, PrintTextWeight, PrintTextColor } from './types';\n\n/**\n * PrintText component provides print-optimized typography with consistent styling.\n */\nexport function PrintText({\n children,\n variant = 'body',\n weight = 'normal',\n color = 'primary',\n printOptimized = true,\n className,\n as: Component = 'p',\n ...props\n}: PrintTextProps) {\n const getVariantClasses = (variant: PrintTextVariant): string => {\n const baseClasses = 'print-text';\n \n switch (variant) {\n case 'heading':\n return cn(baseClasses, 'text-2xl leading-tight');\n case 'subheading':\n return cn(baseClasses, 'text-xl leading-snug');\n case 'body':\n return cn(baseClasses, 'text-base leading-relaxed');\n case 'caption':\n return cn(baseClasses, 'text-sm leading-normal');\n case 'small':\n return cn(baseClasses, 'text-xs leading-tight');\n default:\n return baseClasses;\n }\n };\n\n const getWeightClasses = (weight: PrintTextWeight): string => {\n switch (weight) {\n case 'normal':\n return 'font-normal';\n case 'medium':\n return 'font-medium';\n case 'semibold':\n return 'font-semibold';\n case 'bold':\n return 'font-bold';\n default:\n return 'font-normal';\n }\n };\n\n const getColorClasses = (color: PrintTextColor): string => {\n switch (color) {\n case 'primary':\n return 'text-foreground';\n case 'secondary':\n return 'text-secondary-foreground';\n case 'muted':\n return 'text-muted-foreground';\n case 'accent':\n return 'text-accent-foreground';\n default:\n return 'text-foreground';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n \n return cn(\n 'print-text',\n // Print-specific font sizing\n 'print:text-sm print:leading-tight',\n // High contrast for print\n 'print:text-black print:bg-white'\n );\n };\n\n return (\n <Component\n className={cn(\n getVariantClasses(variant),\n getWeightClasses(weight),\n getColorClasses(color),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n","/**\n * @file PrintCoverHeader Component\n * @package @jmruthers/pace-core\n * @module PrintHeader\n * @since 0.4.38\n * \n * Cover-style print header component for first pages with enhanced branding.\n * \n * Features:\n * - Cover-style header design\n * - Large logo and title support\n * - Background image/color customization\n * - Professional first page appearance\n * - Flexible branding integration\n * \n * @example\n * ```tsx\n * <PrintCoverHeader\n * title=\"Annual Report 2024\"\n * subtitle=\"Financial Performance & Strategic Overview\"\n * branding={{\n * logo: \"/logo.png\",\n * companyName: \"Acme Corporation\",\n * tagline: \"Innovation Through Excellence\"\n * }}\n * logoSize=\"large\"\n * titleSize=\"xl\"\n * showDivider={true}\n * backgroundColor=\"#f8f9fa\"\n * metadata={[\n * { label: \"Period\", value: \"Jan 1 - Dec 31, 2024\", icon: CalendarIcon },\n * { label: \"Prepared by\", value: \"Finance Team\", icon: UserIcon }\n * ]}\n * />\n * ```\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport type { PrintCoverHeaderProps } from './types';\n\n/**\n * PrintCoverHeader component provides a cover-style header design for first pages.\n */\nexport function PrintCoverHeader({\n title,\n subtitle,\n branding,\n metadata = [],\n printDate = true,\n coverStyle = true,\n logoSize = 'medium',\n titleSize = 'large',\n showDivider = false,\n backgroundImage,\n backgroundColor,\n className,\n}: PrintCoverHeaderProps) {\n const formatPrintDate = () => {\n return new Date().toLocaleDateString('en-AU', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n };\n\n const getLogoSizeClasses = (size: 'small' | 'medium' | 'large') => {\n switch (size) {\n case 'small':\n return 'h-16 w-auto print:h-12';\n case 'medium':\n return 'h-24 w-auto print:h-20';\n case 'large':\n return 'h-32 w-auto print:h-24';\n default:\n return 'h-24 w-auto print:h-20';\n }\n };\n\n const getTitleSizeClasses = (size: 'small' | 'medium' | 'large' | 'xl') => {\n switch (size) {\n case 'small':\n return 'text-3xl print:text-2xl';\n case 'medium':\n return 'text-4xl print:text-3xl';\n case 'large':\n return 'text-5xl print:text-4xl';\n case 'xl':\n return 'text-6xl print:text-5xl';\n default:\n return 'text-4xl print:text-3xl';\n }\n };\n\n const getBackgroundStyle = () => {\n const style: React.CSSProperties = {};\n \n if (backgroundImage) {\n style.backgroundImage = `url(${backgroundImage})`;\n style.backgroundSize = 'cover';\n style.backgroundPosition = 'center';\n style.backgroundRepeat = 'no-repeat';\n }\n \n if (backgroundColor) {\n style.backgroundColor = backgroundColor;\n }\n \n return style;\n };\n\n const renderBranding = () => {\n if (!branding) return null;\n \n const { logo, companyName, projectName, version, tagline } = branding;\n \n return (\n <div className=\"flex flex-col items-center text-center mb-8\">\n {logo && (\n <img \n src={logo} \n alt={companyName || 'Company Logo'} \n className={cn(\n getLogoSizeClasses(logoSize),\n 'mb-4'\n )}\n />\n )}\n \n {companyName && (\n <PrintText variant=\"subheading\" weight=\"semibold\" className=\"mb-2\">\n {companyName}\n </PrintText>\n )}\n \n {projectName && (\n <PrintText variant=\"body\" color=\"muted\" className=\"mb-2\">\n {projectName}\n </PrintText>\n )}\n \n {version && (\n <PrintText variant=\"small\" color=\"muted\" className=\"mb-2\">\n {version}\n </PrintText>\n )}\n \n {tagline && (\n <PrintText variant=\"small\" color=\"muted\" className=\"italic\">\n {tagline}\n </PrintText>\n )}\n </div>\n );\n };\n\n const renderMetadata = () => {\n if (metadata.length === 0) return null;\n\n return (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-6 mb-8\">\n {metadata.map((item, index) => (\n <div key={index} className=\"flex items-center space-x-3\">\n {item.icon && (\n <item.icon className=\"h-5 w-5 text-muted-foreground print:h-4 print:w-4\" />\n )}\n <div>\n <PrintText variant=\"small\" color=\"muted\" className=\"block\">\n {item.label}\n </PrintText>\n <PrintText variant=\"body\" weight=\"medium\" className=\"block\">\n {item.value}\n </PrintText>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <header \n className={cn(\n 'print-cover-header min-h-[400px] flex flex-col justify-center px-8 py-12',\n 'print:min-h-[300px] print:px-6 print:py-8',\n className\n )}\n style={getBackgroundStyle()}\n >\n {/* Branding */}\n {renderBranding()}\n \n {/* Title and Subtitle */}\n <div className=\"text-center mb-8\">\n <PrintText \n variant=\"heading\" \n className={cn(\n 'mb-4',\n getTitleSizeClasses(titleSize)\n )}\n >\n {title}\n </PrintText>\n {subtitle && (\n <PrintText variant=\"subheading\" color=\"muted\" className=\"max-w-3xl mx-auto\">\n {subtitle}\n </PrintText>\n )}\n </div>\n \n {/* Divider */}\n {showDivider && (\n <div className=\"w-24 h-1 bg-primary mx-auto mb-8\" />\n )}\n \n {/* Metadata */}\n {renderMetadata()}\n \n {/* Print Date */}\n {printDate && (\n <div className=\"flex justify-center mt-auto\">\n <PrintText variant=\"small\" color=\"muted\">\n Printed on {formatPrintDate()}\n </PrintText>\n </div>\n )}\n </header>\n );\n}\n","/**\n * @file PrintDataTable Component\n * @package @jmruthers/pace-core\n * @module PrintDataTable\n * @since 0.4.38\n * \n * Print-optimized data table component with grouping and styling options.\n * \n * Features:\n * - Print-optimized table rendering\n * - Column grouping with custom headers\n * - Page break controls per column\n * - Print-specific styling options\n * - Integration with existing theme system\n * \n * @example\n * ```tsx\n * <PrintDataTable\n * data={reportData}\n * columns={columns}\n * title=\"Analytics Summary\"\n * grouping={{\n * enabled: true,\n * groupBy: 'category',\n * groupHeader: (group) => <CategoryGroupHeader group={group} />\n * }}\n * printOptimized={true}\n * />\n * ```\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintTableGroup } from './PrintTableGroup';\nimport type { PrintDataTableProps, PrintColumn } from './types';\n\n/**\n * PrintDataTable component provides print-optimized table rendering with grouping support.\n */\nexport function PrintDataTable({\n data,\n columns,\n title,\n showTitle = true,\n grouping,\n styling = {\n headerStyle: 'solid',\n rowStyle: 'striped',\n cellPadding: 'normal'\n },\n printOptimized = true,\n className,\n ...props\n}: PrintDataTableProps) {\n const getTableClasses = () => {\n const baseClasses = 'w-full border-collapse';\n \n if (printOptimized) {\n return cn(\n baseClasses,\n 'print:text-xs print:leading-tight',\n 'print:border-black print:border-solid'\n );\n }\n \n return baseClasses;\n };\n\n const getHeaderClasses = () => {\n const baseClasses = 'text-left font-semibold';\n \n switch (styling.headerStyle) {\n case 'solid':\n return cn(baseClasses, 'bg-primary text-primary-foreground');\n case 'outline':\n return cn(baseClasses, 'border-2 border-primary text-primary');\n default:\n return baseClasses;\n }\n };\n\n const getRowClasses = (isEven: boolean) => {\n const baseClasses = 'border-b border-border';\n \n switch (styling.rowStyle) {\n case 'striped':\n return cn(baseClasses, isEven ? 'bg-muted/30' : 'bg-background');\n case 'solid':\n return cn(baseClasses, 'bg-background');\n case 'bordered':\n return cn(baseClasses, 'border border-border bg-background');\n default:\n return baseClasses;\n }\n };\n\n const getCellPaddingClasses = () => {\n switch (styling.cellPadding) {\n case 'compact':\n return 'px-2 py-1 print:px-1 print:py-0.5';\n case 'spacious':\n return 'px-6 py-4 print:px-4 print:py-2';\n case 'normal':\n default:\n return 'px-4 py-2 print:px-2 print:py-1';\n }\n };\n\n const renderTableHeader = () => (\n <thead>\n <tr className={getHeaderClasses()}>\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n getCellPaddingClasses(),\n 'text-left',\n column.align === 'center' && 'text-center',\n column.align === 'right' && 'text-right',\n column.printBreak === 'avoid' && 'print-break-avoid',\n column.printBreak === 'always' && 'print-break-before'\n )}\n style={{ width: column.width }}\n >\n <PrintText variant=\"small\" weight=\"semibold\">\n {column.header}\n </PrintText>\n </th>\n ))}\n </tr>\n </thead>\n );\n\n const renderTableBody = () => {\n if (grouping?.enabled) {\n const groupedData = groupDataByField(data, grouping.groupBy);\n \n return (\n <tbody>\n {Object.entries(groupedData).map(([groupKey, groupData], groupIndex) => (\n <PrintTableGroup\n key={groupKey}\n groupKey={groupKey}\n groupData={groupData}\n columns={columns}\n groupHeader={grouping.groupHeader}\n styling={styling}\n printOptimized={printOptimized}\n />\n ))}\n </tbody>\n );\n }\n\n return (\n <tbody>\n {data.map((row, index) => (\n <tr\n key={index}\n className={getRowClasses(index % 2 === 0)}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(\n getCellPaddingClasses(),\n 'text-left',\n column.align === 'center' && 'text-center',\n column.align === 'right' && 'text-right',\n column.printBreak === 'avoid' && 'print-break-avoid'\n )}\n >\n <PrintText variant=\"small\">\n {column.render ? column.render(row[column.key], row) : row[column.key]}\n </PrintText>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n };\n\n return (\n <div className={cn('print-data-table', className)} {...props}>\n {title && showTitle && (\n <div className=\"mb-4\">\n <PrintText variant=\"subheading\" weight=\"semibold\">\n {title}\n </PrintText>\n </div>\n )}\n \n <div className=\"overflow-x-auto print:overflow-visible\">\n <table className={getTableClasses()}>\n {renderTableHeader()}\n {renderTableBody()}\n </table>\n </div>\n </div>\n );\n}\n\n// Helper function to group data by field\nfunction groupDataByField(data: any[], field: string): Record<string, any[]> {\n return data.reduce((groups, item) => {\n const key = item[field] || 'Unknown';\n if (!groups[key]) {\n groups[key] = [];\n }\n groups[key].push(item);\n return groups;\n }, {} as Record<string, any[]>);\n}\n","/**\n * @file PrintTableGroup Component\n * @package @jmruthers/pace-core\n * @module PrintDataTable\n * @since 0.4.38\n * \n * Component for rendering grouped table data in PrintDataTable.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintTableRow } from './PrintTableRow';\nimport type { PrintTableGroupProps } from './types';\n\n/**\n * PrintTableGroup component renders a group of table rows with optional group header.\n */\nexport function PrintTableGroup({\n groupKey,\n groupData,\n columns,\n groupHeader,\n styling = {\n headerStyle: 'solid',\n rowStyle: 'striped',\n cellPadding: 'normal'\n },\n printOptimized = true,\n}: PrintTableGroupProps) {\n const getGroupHeaderClasses = () => {\n const baseClasses = 'bg-muted text-muted-foreground font-semibold';\n \n if (printOptimized) {\n return cn(\n baseClasses,\n 'print:bg-gray-100 print:text-black print:font-bold'\n );\n }\n \n return baseClasses;\n };\n\n const getCellPaddingClasses = () => {\n switch (styling.cellPadding) {\n case 'compact':\n return 'px-2 py-1 print:px-1 print:py-0.5';\n case 'spacious':\n return 'px-6 py-4 print:px-4 print:py-2';\n case 'normal':\n default:\n return 'px-4 py-2 print:px-2 print:py-1';\n }\n };\n\n return (\n <>\n {/* Group Header */}\n <tr className={getGroupHeaderClasses()}>\n <td\n colSpan={columns.length}\n className={cn(\n getCellPaddingClasses(),\n 'print-break-avoid'\n )}\n >\n {groupHeader ? (\n groupHeader(groupKey)\n ) : (\n <PrintText variant=\"small\" weight=\"semibold\">\n {groupKey}\n </PrintText>\n )}\n </td>\n </tr>\n \n {/* Group Rows */}\n {groupData.map((row, index) => (\n <PrintTableRow\n key={index}\n row={row}\n columns={columns}\n styling={styling}\n printOptimized={printOptimized}\n isEven={index % 2 === 0}\n />\n ))}\n </>\n );\n}\n","/**\n * @file PrintTableRow Component\n * @package @jmruthers/pace-core\n * @module PrintDataTable\n * @since 0.4.38\n * \n * Component for rendering individual table rows in PrintDataTable.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport type { PrintTableRowProps } from './types';\n\n/**\n * PrintTableRow component renders a single table row with styling and print optimization.\n */\nexport function PrintTableRow({\n row,\n columns,\n styling = {\n headerStyle: 'solid',\n rowStyle: 'striped',\n cellPadding: 'normal'\n },\n printOptimized = true,\n isEven = false,\n}: PrintTableRowProps) {\n const getRowClasses = () => {\n const baseClasses = 'border-b border-border';\n \n switch (styling.rowStyle) {\n case 'striped':\n return cn(baseClasses, isEven ? 'bg-muted/30' : 'bg-background');\n case 'solid':\n return cn(baseClasses, 'bg-background');\n case 'bordered':\n return cn(baseClasses, 'border border-border bg-background');\n default:\n return baseClasses;\n }\n };\n\n const getCellPaddingClasses = () => {\n switch (styling.cellPadding) {\n case 'compact':\n return 'px-2 py-1 print:px-1 print:py-0.5';\n case 'spacious':\n return 'px-6 py-4 print:px-4 print:py-2';\n case 'normal':\n default:\n return 'px-4 py-2 print:px-2 print:py-1';\n }\n };\n\n return (\n <tr className={getRowClasses()}>\n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(\n getCellPaddingClasses(),\n 'text-left',\n column.align === 'center' && 'text-center',\n column.align === 'right' && 'text-right',\n column.printBreak === 'avoid' && 'print-break-avoid'\n )}\n >\n <PrintText variant=\"small\">\n {column.render ? column.render(row[column.key], row) : (row[column.key] ?? '')}\n </PrintText>\n </td>\n ))}\n </tr>\n );\n}\n","/**\n * @file PrintCard Component\n * @package @jmruthers/pace-core\n * @module PrintCard\n * @since 0.4.38\n * \n * Print-optimized card component for catalogs and directories.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintCardProps } from './types';\n\nexport function PrintCard({\n children,\n title,\n subtitle,\n variant = 'default',\n size = 'md',\n layout = 'vertical',\n showBorder = true,\n backgroundColor = 'white',\n textColor = 'primary',\n printOptimized = true,\n className,\n ...props\n}: PrintCardProps) {\n const getVariantClasses = (variant: string): string => {\n switch (variant) {\n case 'outlined':\n return 'border-2 border-border bg-transparent';\n case 'filled':\n return 'border-0 bg-muted';\n case 'elevated':\n return 'shadow-lg border-0 bg-background';\n default:\n return 'border border-border bg-background';\n }\n };\n\n const getSizeClasses = (size: string): string => {\n switch (size) {\n case 'sm':\n return 'p-3';\n case 'lg':\n return 'p-6';\n case 'xl':\n return 'p-8';\n default:\n return 'p-4';\n }\n };\n\n const getLayoutClasses = (layout: string): string => {\n switch (layout) {\n case 'horizontal':\n return 'flex-row items-center';\n case 'compact':\n return 'p-2';\n default:\n return 'flex-col';\n }\n };\n\n const getBackgroundClasses = (backgroundColor: string, variant: string): string => {\n // Don't override variant backgrounds unless explicitly set\n if (variant === 'outlined' && backgroundColor === 'white') {\n return 'bg-transparent';\n }\n \n switch (backgroundColor) {\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n case 'accent':\n return 'bg-accent text-accent-foreground';\n default:\n return '';\n }\n };\n\n const getTextColorClasses = (textColor: string, backgroundColor: string): string => {\n // If background color sets text color, use that instead\n if (backgroundColor === 'primary') {\n return 'text-primary-foreground';\n }\n if (backgroundColor === 'secondary') {\n return 'text-secondary-foreground';\n }\n if (backgroundColor === 'accent') {\n return 'text-accent-foreground';\n }\n \n switch (textColor) {\n case 'secondary':\n return 'text-secondary-foreground';\n case 'muted':\n return 'text-muted-foreground';\n case 'accent':\n return 'text-accent-foreground';\n case 'destructive':\n return 'text-destructive-foreground';\n default:\n return 'text-foreground';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:shadow-none',\n 'print:border-black',\n 'print:bg-white',\n 'print:text-black'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-card',\n 'flex',\n 'rounded-lg',\n getVariantClasses(variant),\n getBackgroundClasses(backgroundColor, variant),\n getTextColorClasses(textColor, backgroundColor),\n getSizeClasses(size),\n getLayoutClasses(layout),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {title && (\n <div className=\"mb-2\">\n <PrintText variant=\"heading\" weight=\"semibold\">\n {title}\n </PrintText>\n {subtitle && (\n <PrintText variant=\"caption\" color=\"muted\" className=\"mt-1\">\n {subtitle}\n </PrintText>\n )}\n </div>\n )}\n {children}\n </div>\n );\n}\n","/**\n * @file PrintCardHeader Component\n * @package @jmruthers/pace-core\n * @module PrintCardHeader\n * @since 0.4.38\n * \n * Print-optimized card header component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintCardHeaderProps } from './types';\n\nexport function PrintCardHeader({\n children,\n title,\n subtitle,\n actions,\n align = 'left',\n printOptimized = true,\n className,\n ...props\n}: PrintCardHeaderProps) {\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-after-avoid',\n 'print:mb-2'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-card-header',\n 'flex',\n 'items-center',\n 'justify-between',\n 'mb-4',\n getAlignmentClasses(align),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n <div className=\"flex-1\">\n {title && (\n <PrintText variant=\"heading\" weight=\"semibold\">\n {title}\n </PrintText>\n )}\n {subtitle && (\n <PrintText variant=\"caption\" color=\"muted\" className=\"mt-1\">\n {subtitle}\n </PrintText>\n )}\n {children}\n </div>\n {actions && (\n <div className=\"ml-4 flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @file PrintCardContent Component\n * @package @jmruthers/pace-core\n * @module PrintCardContent\n * @since 0.4.38\n * \n * Print-optimized card content component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintCardContentProps } from './types';\n\nexport function PrintCardContent({\n children,\n padding = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintCardContentProps) {\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n default:\n return 'p-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:text-sm',\n 'print:leading-tight'\n );\n };\n\n return (\n <div\n data-testid=\"print-card-content\"\n className={cn(\n 'print-card-content',\n getPaddingClasses(padding),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintCardFooter Component\n * @package @jmruthers/pace-core\n * @module PrintCardFooter\n * @since 0.4.38\n * \n * Print-optimized card footer component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintCardFooterProps } from './types';\n\nexport function PrintCardFooter({\n children,\n align = 'left',\n printOptimized = true,\n className,\n ...props\n}: PrintCardFooterProps) {\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-before-avoid',\n 'print:mt-2',\n 'print:pt-2',\n 'print:border-t',\n 'print:border-gray-300'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-card-footer',\n 'mt-4',\n 'pt-4',\n 'border-t',\n 'border-border',\n getAlignmentClasses(align),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintCardImage Component\n * @package @jmruthers/pace-core\n * @module PrintCardImage\n * @since 0.4.38\n * \n * Print-optimized card image component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintCardImageProps } from './types';\n\nexport function PrintCardImage({\n src,\n alt,\n width,\n height,\n aspectRatio = 'auto',\n objectFit = 'cover',\n printOptimized = true,\n className,\n ...props\n}: PrintCardImageProps) {\n const getAspectRatioClasses = (aspectRatio: string): string => {\n switch (aspectRatio) {\n case 'square':\n return 'aspect-square';\n case 'portrait':\n return 'aspect-[3/4]';\n case 'landscape':\n return 'aspect-[4/3]';\n default:\n return '';\n }\n };\n\n const getObjectFitClasses = (objectFit: string): string => {\n switch (objectFit) {\n case 'contain':\n return 'object-contain';\n case 'fill':\n return 'object-fill';\n case 'none':\n return 'object-none';\n case 'scale-down':\n return 'object-scale-down';\n default:\n return 'object-cover';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:max-w-full',\n 'print:h-auto',\n 'print:break-inside-avoid'\n );\n };\n\n return (\n <img\n src={src}\n alt={alt}\n width={width}\n height={height}\n className={cn(\n 'print-card-image',\n 'w-full',\n 'h-auto',\n 'rounded-md',\n getAspectRatioClasses(aspectRatio),\n getObjectFitClasses(objectFit),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n />\n );\n}\n","/**\n * @file PrintCardGrid Component\n * @package @jmruthers/pace-core\n * @module PrintCardGrid\n * @since 0.4.38\n * \n * Print-optimized card grid component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintCardGridProps } from './types';\n\nexport function PrintCardGrid({\n children,\n columns = 3,\n gap = 'md',\n rowGap = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintCardGridProps) {\n const getColumnClasses = (columns: number): string => {\n switch (columns) {\n case 1:\n return 'grid-cols-1';\n case 2:\n return 'grid-cols-2';\n case 4:\n return 'grid-cols-4';\n case 5:\n return 'grid-cols-5';\n case 6:\n return 'grid-cols-6';\n default:\n return 'grid-cols-3';\n }\n };\n\n const getGapClasses = (gap: string): string => {\n switch (gap) {\n case 'sm':\n return 'gap-2';\n case 'lg':\n return 'gap-6';\n case 'xl':\n return 'gap-8';\n default:\n return 'gap-4';\n }\n };\n\n const getRowGapClasses = (rowGap: string): string => {\n switch (rowGap) {\n case 'sm':\n return 'gap-y-2';\n case 'lg':\n return 'gap-y-6';\n case 'xl':\n return 'gap-y-8';\n default:\n return 'gap-y-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:grid-cols-2',\n 'print:gap-2',\n 'print:break-inside-avoid'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-card-grid',\n 'grid',\n getColumnClasses(columns),\n getGapClasses(gap),\n getRowGapClasses(rowGap),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintSection Component\n * @package @jmruthers/pace-core\n * @module PrintSection\n * @since 0.4.38\n * \n * Print-optimized section component for content organization with column layouts.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintSectionProps } from './types';\n\nexport function PrintSection({\n children,\n title,\n subtitle,\n layout = 'single',\n gap = 'md',\n spacing = 'md',\n showBorder = false,\n background = 'transparent',\n printOptimized = true,\n className,\n ...props\n}: PrintSectionProps) {\n const getLayoutClasses = (layout: string): string => {\n switch (layout) {\n case 'two-column':\n return 'grid grid-cols-2';\n case 'three-column':\n return 'grid grid-cols-3';\n case 'four-column':\n return 'grid grid-cols-4';\n default:\n return 'block';\n }\n };\n\n const getGapClasses = (gap: string): string => {\n switch (gap) {\n case 'sm':\n return 'gap-2';\n case 'lg':\n return 'gap-6';\n case 'xl':\n return 'gap-8';\n default:\n return 'gap-4';\n }\n };\n\n const getSpacingClasses = (spacing: string): string => {\n switch (spacing) {\n case 'none':\n return 'py-0';\n case 'sm':\n return 'py-2';\n case 'lg':\n return 'py-6';\n case 'xl':\n return 'py-8';\n default:\n return 'py-4';\n }\n };\n\n const getBackgroundClasses = (background: string): string => {\n switch (background) {\n case 'white':\n return 'bg-background';\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n default:\n return 'bg-transparent';\n }\n };\n\n const getBorderClasses = (): string => {\n if (!showBorder) return '';\n return 'border border-border rounded-lg p-4';\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4',\n 'print:border-black',\n 'print:bg-white',\n 'print:text-black'\n );\n };\n\n return (\n <section\n className={cn(\n 'print-section',\n getLayoutClasses(layout),\n getGapClasses(gap),\n getSpacingClasses(spacing),\n getBackgroundClasses(background),\n getBorderClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {title && (\n <div className=\"mb-4\">\n <PrintText variant=\"heading\" weight=\"semibold\">\n {title}\n </PrintText>\n {subtitle && (\n <PrintText variant=\"caption\" color=\"muted\" className=\"mt-1\">\n {subtitle}\n </PrintText>\n )}\n </div>\n )}\n {children}\n </section>\n );\n}\n","/**\n * @file PrintSectionHeader Component\n * @package @jmruthers/pace-core\n * @module PrintSectionHeader\n * @since 0.4.38\n * \n * Print-optimized section header component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintSectionHeaderProps } from './types';\n\nexport function PrintSectionHeader({\n children,\n title,\n subtitle,\n level = 2,\n align = 'left',\n showDivider = false,\n printOptimized = true,\n className,\n ...props\n}: PrintSectionHeaderProps) {\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getDividerClasses = (): string => {\n if (!showDivider) return '';\n return 'border-b border-border pb-2 mb-4';\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-after-avoid',\n 'print:mb-2',\n 'print:border-black'\n );\n };\n\n const getHeadingVariant = (level: number) => {\n switch (level) {\n case 1:\n return 'heading' as const;\n case 2:\n return 'heading' as const;\n case 3:\n return 'subheading' as const;\n case 4:\n return 'subheading' as const;\n case 5:\n return 'body' as const;\n case 6:\n return 'body' as const;\n default:\n return 'heading' as const;\n }\n };\n\n const HeadingTag = `h${level}` as keyof JSX.IntrinsicElements;\n\n return (\n <HeadingTag\n className={cn(\n 'print-section-header',\n 'mb-4',\n getAlignmentClasses(align),\n getDividerClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {title && (\n <PrintText variant={getHeadingVariant(level)} weight=\"semibold\">\n {title}\n </PrintText>\n )}\n {subtitle && (\n <PrintText variant=\"caption\" color=\"muted\" className=\"mt-1\">\n {subtitle}\n </PrintText>\n )}\n {children}\n </HeadingTag>\n );\n}\n","/**\n * @file PrintSectionContent Component\n * @package @jmruthers/pace-core\n * @module PrintSectionContent\n * @since 0.4.38\n * \n * Print-optimized section content component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintSectionContentProps } from './types';\n\nexport function PrintSectionContent({\n children,\n padding = 'md',\n background = 'transparent',\n printOptimized = true,\n className,\n ...props\n}: PrintSectionContentProps) {\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n default:\n return 'p-4';\n }\n };\n\n const getBackgroundClasses = (background: string): string => {\n switch (background) {\n case 'white':\n return 'bg-background';\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n default:\n return 'bg-transparent';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:text-sm',\n 'print:leading-tight',\n 'print:bg-white',\n 'print:text-black'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-section-content',\n getPaddingClasses(padding),\n getBackgroundClasses(background),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintColumn Component\n * @package @jmruthers/pace-core\n * @module PrintColumn\n * @since 0.4.38\n * \n * Print-optimized column component for section layouts.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintColumnProps } from './types';\n\nexport function PrintColumn({\n children,\n width = 'auto',\n align = 'left',\n verticalAlign = 'top',\n padding = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintColumnProps) {\n const getWidthClasses = (width: string): string => {\n switch (width) {\n case '1/2':\n return 'col-span-1';\n case '1/3':\n return 'col-span-1';\n case '2/3':\n return 'col-span-2';\n case '1/4':\n return 'col-span-1';\n case '3/4':\n return 'col-span-3';\n case 'full':\n return 'col-span-full';\n default:\n return '';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getVerticalAlignmentClasses = (verticalAlign: string): string => {\n switch (verticalAlign) {\n case 'middle':\n return 'flex items-center';\n case 'bottom':\n return 'flex items-end';\n default:\n return 'flex items-start';\n }\n };\n\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n default:\n return 'p-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-2',\n 'print:text-sm',\n 'print:leading-tight'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-column',\n getWidthClasses(width),\n getAlignmentClasses(align),\n getVerticalAlignmentClasses(verticalAlign),\n getPaddingClasses(padding),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintDivider Component\n * @package @jmruthers/pace-core\n * @module PrintDivider\n * @since 0.4.38\n * \n * Print-optimized divider component for section separation.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintDividerProps } from './types';\n\nexport function PrintDivider({\n style = 'solid',\n color = 'default',\n thickness = 'thin',\n spacing = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintDividerProps) {\n const getStyleClasses = (style: string): string => {\n switch (style) {\n case 'dashed':\n return 'border-dashed';\n case 'dotted':\n return 'border-dotted';\n case 'thick':\n return 'border-solid border-4';\n default:\n return 'border-solid';\n }\n };\n\n const getColorClasses = (color: string): string => {\n switch (color) {\n case 'muted':\n return 'border-muted-foreground';\n case 'primary':\n return 'border-primary';\n case 'secondary':\n return 'border-secondary';\n case 'accent':\n return 'border-accent';\n default:\n return 'border-border';\n }\n };\n\n const getThicknessClasses = (thickness: string, style: string): string => {\n // Don't override thick style\n if (style === 'thick') return '';\n \n switch (thickness) {\n case 'medium':\n return 'border-2';\n case 'thick':\n return 'border-4';\n default:\n return 'border';\n }\n };\n\n const getSpacingClasses = (spacing: string): string => {\n switch (spacing) {\n case 'none':\n return 'my-0';\n case 'sm':\n return 'my-2';\n case 'lg':\n return 'my-6';\n default:\n return 'my-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:border-black',\n 'print:break-inside-avoid'\n );\n };\n\n return (\n <hr\n className={cn(\n 'print-divider',\n 'border-t',\n getStyleClasses(style),\n getColorClasses(color),\n getThicknessClasses(thickness, style),\n getSpacingClasses(spacing),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n />\n );\n}\n","/**\n * @file PrintButton Component\n * @package @jmruthers/pace-core\n * @module PrintButton\n * @since 0.4.38\n * \n * Print-optimized button component with print functionality.\n */\n\nimport React, { useState } from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintButtonProps, PrintOptions } from './types';\n\nexport function PrintButton({\n children,\n variant = 'primary',\n size = 'md',\n shape = 'default',\n state = 'default',\n printFunction = 'print',\n printSelector,\n printOptions = {},\n onClick,\n onPrint,\n onPrintStart,\n onPrintEnd,\n showIcon = true,\n icon,\n iconPosition = 'left',\n fullWidth = false,\n printOptimized = true,\n className,\n ...props\n}: PrintButtonProps) {\n const [isPrinting, setIsPrinting] = useState(false);\n\n const getVariantClasses = (variant: string): string => {\n switch (variant) {\n case 'secondary':\n return 'bg-secondary text-secondary-foreground hover:bg-secondary/80';\n case 'outline':\n return 'border border-input bg-background hover:bg-accent hover:text-accent-foreground';\n case 'ghost':\n return 'hover:bg-accent hover:text-accent-foreground';\n case 'destructive':\n return 'bg-destructive text-destructive-foreground hover:bg-destructive/90';\n default:\n return 'bg-primary text-primary-foreground hover:bg-primary/90';\n }\n };\n\n const getSizeClasses = (size: string): string => {\n switch (size) {\n case 'sm':\n return 'h-8 px-3 text-xs';\n case 'lg':\n return 'h-12 px-8 text-base';\n case 'xl':\n return 'h-14 px-10 text-lg';\n default:\n return 'h-10 px-4 text-sm';\n }\n };\n\n const getShapeClasses = (shape: string): string => {\n switch (shape) {\n case 'rounded':\n return 'rounded-lg';\n case 'pill':\n return 'rounded-full';\n case 'square':\n return 'rounded-none';\n default:\n return 'rounded-md';\n }\n };\n\n const getStateClasses = (state: string): string => {\n switch (state) {\n case 'loading':\n return 'opacity-50 cursor-not-allowed';\n case 'disabled':\n return 'opacity-50 cursor-not-allowed pointer-events-none';\n default:\n return 'cursor-pointer';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:hidden',\n 'print:opacity-0',\n 'print:pointer-events-none'\n );\n };\n\n const getDefaultIcon = () => {\n if (icon) return icon;\n \n switch (printFunction) {\n case 'printSelection':\n return '📄';\n case 'printPage':\n return '📃';\n case 'printElement':\n return '🎯';\n default:\n return '🖨️';\n }\n };\n\n const handlePrint = async () => {\n if (isPrinting || state === 'disabled' || state === 'loading') return;\n\n setIsPrinting(true);\n onPrintStart?.();\n\n try {\n switch (printFunction) {\n case 'print':\n await printDocument(printOptions);\n break;\n case 'printSelection':\n if (printSelector) {\n await printSelection(printSelector, printOptions);\n }\n break;\n case 'printPage':\n await printPage(printOptions);\n break;\n case 'printElement':\n if (printSelector) {\n await printElement(printSelector, printOptions);\n }\n break;\n }\n onPrint?.(true);\n } catch (error) {\n onPrint?.(false, error as Error);\n } finally {\n setIsPrinting(false);\n onPrintEnd?.();\n }\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (printFunction) {\n event.preventDefault();\n handlePrint();\n }\n onClick?.(event);\n };\n\n const isDisabled = state === 'disabled' || state === 'loading' || isPrinting;\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'print-button',\n 'inline-flex',\n 'items-center',\n 'justify-center',\n 'whitespace-nowrap',\n 'font-medium',\n 'ring-offset-background',\n 'transition-colors',\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-ring',\n 'focus-visible:ring-offset-2',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n getVariantClasses(variant),\n getSizeClasses(size),\n getShapeClasses(shape),\n getStateClasses(state),\n fullWidth && 'w-full',\n getPrintOptimizedClasses(),\n className\n )}\n disabled={isDisabled}\n onClick={handleClick}\n {...props}\n >\n {showIcon && iconPosition === 'left' && (\n <span className=\"mr-2\">\n {getDefaultIcon()}\n </span>\n )}\n {children}\n {showIcon && iconPosition === 'right' && (\n <span className=\"ml-2\">\n {getDefaultIcon()}\n </span>\n )}\n </button>\n );\n}\n\n// Print utility functions\nasync function printDocument(options: PrintOptions): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n // Apply print styles if provided\n if (options.stylesheetUrl) {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = options.stylesheetUrl;\n link.media = options.mediaQuery || 'print';\n document.head.appendChild(link);\n }\n\n // Set print options\n const printWindow = window.open('', '_blank');\n if (!printWindow) {\n reject(new Error('Unable to open print window'));\n return;\n }\n\n printWindow.document.write(`\n <html>\n <head>\n <title>${options.title || 'Print Document'}</title>\n <style>\n @page {\n margin: ${options.margins?.top || '0.5in'} ${options.margins?.right || '0.5in'} ${options.margins?.bottom || '0.5in'} ${options.margins?.left || '0.5in'};\n size: ${options.orientation === 'landscape' ? 'A4 landscape' : 'A4 portrait'};\n }\n body { \n font-family: Arial, sans-serif; \n line-height: 1.4;\n color: #000;\n background: #fff;\n }\n @media print {\n * { -webkit-print-color-adjust: ${options.colorAdjust || 'exact'}; }\n }\n </style>\n </head>\n <body>\n ${document.documentElement.outerHTML}\n </body>\n </html>\n `);\n\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n printWindow.close();\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nasync function printSelection(selector: string, options: PrintOptions): Promise<void> {\n const element = document.querySelector(selector);\n if (!element) {\n throw new Error(`Element with selector \"${selector}\" not found`);\n }\n \n return printElement(selector, options);\n}\n\nasync function printPage(options: PrintOptions): Promise<void> {\n return printDocument(options);\n}\n\nasync function printElement(selector: string, options: PrintOptions): Promise<void> {\n const element = document.querySelector(selector);\n if (!element) {\n throw new Error(`Element with selector \"${selector}\" not found`);\n }\n\n return new Promise((resolve, reject) => {\n try {\n const printWindow = window.open('', '_blank');\n if (!printWindow) {\n reject(new Error('Unable to open print window'));\n return;\n }\n\n printWindow.document.write(`\n <html>\n <head>\n <title>${options.title || 'Print Element'}</title>\n <style>\n @page {\n margin: ${options.margins?.top || '0.5in'} ${options.margins?.right || '0.5in'} ${options.margins?.bottom || '0.5in'} ${options.margins?.left || '0.5in'};\n size: ${options.orientation === 'landscape' ? 'A4 landscape' : 'A4 portrait'};\n }\n body { \n font-family: Arial, sans-serif; \n line-height: 1.4;\n color: #000;\n background: #fff;\n }\n @media print {\n * { -webkit-print-color-adjust: ${options.colorAdjust || 'exact'}; }\n }\n </style>\n </head>\n <body>\n ${element.outerHTML}\n </body>\n </html>\n `);\n\n printWindow.document.close();\n printWindow.focus();\n printWindow.print();\n printWindow.close();\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n","/**\n * @file PrintButtonGroup Component\n * @package @jmruthers/pace-core\n * @module PrintButtonGroup\n * @since 0.4.38\n * \n * Print-optimized button group component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintButtonGroupProps } from './types';\n\nexport function PrintButtonGroup({\n children,\n orientation = 'horizontal',\n spacing = 'md',\n align = 'left',\n printOptimized = true,\n className,\n ...props\n}: PrintButtonGroupProps) {\n const getOrientationClasses = (orientation: string): string => {\n switch (orientation) {\n case 'vertical':\n return 'flex-col';\n default:\n return 'flex-row';\n }\n };\n\n const getSpacingClasses = (spacing: string): string => {\n switch (spacing) {\n case 'none':\n return 'gap-0';\n case 'sm':\n return 'gap-2';\n case 'lg':\n return 'gap-6';\n default:\n return 'gap-4';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'justify-center';\n case 'right':\n return 'justify-end';\n case 'stretch':\n return 'justify-stretch';\n default:\n return 'justify-start';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:hidden',\n 'print:opacity-0',\n 'print:pointer-events-none'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-button-group',\n 'flex',\n 'items-center',\n getOrientationClasses(orientation),\n getSpacingClasses(spacing),\n getAlignmentClasses(align),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintToolbar Component\n * @package @jmruthers/pace-core\n * @module PrintToolbar\n * @since 0.4.38\n * \n * Print-optimized toolbar component for print controls.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintToolbarProps } from './types';\n\nexport function PrintToolbar({\n children,\n position = 'top',\n align = 'left',\n showOnPrint = false,\n printOptimized = true,\n className,\n ...props\n}: PrintToolbarProps) {\n const getPositionClasses = (position: string): string => {\n switch (position) {\n case 'bottom':\n return 'fixed bottom-0 left-0 right-0';\n case 'fixed':\n return 'fixed top-4 right-4';\n default:\n return 'relative';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'justify-center';\n case 'right':\n return 'justify-end';\n default:\n return 'justify-start';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n \n if (showOnPrint) {\n return cn(\n 'print:block',\n 'print:opacity-100',\n 'print:pointer-events-auto'\n );\n } else {\n return cn(\n 'print:hidden',\n 'print:opacity-0',\n 'print:pointer-events-none'\n );\n }\n };\n\n const getZIndexClasses = (): string => {\n if (position === 'fixed' || position === 'bottom') {\n return 'z-50';\n }\n return '';\n };\n\n return (\n <div\n className={cn(\n 'print-toolbar',\n 'flex',\n 'items-center',\n 'gap-2',\n 'p-4',\n 'bg-background',\n 'border',\n 'border-border',\n 'rounded-lg',\n 'shadow-lg',\n getPositionClasses(position),\n getAlignmentClasses(align),\n getZIndexClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintGrid Component\n * @package @jmruthers/pace-core\n * @module PrintGrid\n * @since 0.4.38\n * \n * Print-optimized grid component with responsive and print-specific columns.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintGridProps } from './types';\n\nexport function PrintGrid({\n children,\n columns = 12,\n gap = 'md',\n rowGap,\n columnGap,\n align = 'stretch',\n justify = 'start',\n printColumns,\n printGap,\n printRowGap,\n printColumnGap,\n printOptimized = true,\n className,\n ...props\n}: PrintGridProps) {\n const getColumnsClasses = (cols: number): string => {\n switch (cols) {\n case 1:\n return 'grid-cols-1';\n case 2:\n return 'grid-cols-2';\n case 3:\n return 'grid-cols-3';\n case 4:\n return 'grid-cols-4';\n case 5:\n return 'grid-cols-5';\n case 6:\n return 'grid-cols-6';\n case 12:\n return 'grid-cols-12';\n default:\n return 'grid-cols-12';\n }\n };\n\n const getGapClasses = (gap: string): string => {\n switch (gap) {\n case 'none':\n return 'gap-0';\n case 'sm':\n return 'gap-2';\n case 'lg':\n return 'gap-6';\n case 'xl':\n return 'gap-8';\n default:\n return 'gap-4';\n }\n };\n\n const getRowGapClasses = (gap: string): string => {\n switch (gap) {\n case 'none':\n return 'gap-y-0';\n case 'sm':\n return 'gap-y-2';\n case 'lg':\n return 'gap-y-6';\n case 'xl':\n return 'gap-y-8';\n default:\n return 'gap-y-4';\n }\n };\n\n const getColumnGapClasses = (gap: string): string => {\n switch (gap) {\n case 'none':\n return 'gap-x-0';\n case 'sm':\n return 'gap-x-2';\n case 'lg':\n return 'gap-x-6';\n case 'xl':\n return 'gap-x-8';\n default:\n return 'gap-x-4';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'start':\n return 'items-start';\n case 'center':\n return 'items-center';\n case 'end':\n return 'items-end';\n default:\n return 'items-stretch';\n }\n };\n\n const getJustifyClasses = (justify: string): string => {\n switch (justify) {\n case 'center':\n return 'justify-center';\n case 'end':\n return 'justify-end';\n case 'between':\n return 'justify-between';\n case 'around':\n return 'justify-around';\n case 'evenly':\n return 'justify-evenly';\n default:\n return 'justify-start';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4'\n );\n };\n\n const getPrintColumnsClasses = (): string => {\n if (!printColumns) return '';\n return cn(\n 'print:grid',\n `print:${getColumnsClasses(printColumns)}`\n );\n };\n\n const getPrintGapClasses = (): string => {\n if (!printGap) return '';\n return `print:${getGapClasses(printGap)}`;\n };\n\n const getPrintRowGapClasses = (): string => {\n if (!printRowGap) return '';\n return `print:${getRowGapClasses(printRowGap)}`;\n };\n\n const getPrintColumnGapClasses = (): string => {\n if (!printColumnGap) return '';\n return `print:${getColumnGapClasses(printColumnGap)}`;\n };\n\n return (\n <div\n className={cn(\n 'print-grid',\n 'grid',\n getColumnsClasses(columns),\n getGapClasses(gap),\n rowGap && getRowGapClasses(rowGap),\n columnGap && getColumnGapClasses(columnGap),\n getAlignmentClasses(align),\n getJustifyClasses(justify),\n getPrintOptimizedClasses(),\n getPrintColumnsClasses(),\n getPrintGapClasses(),\n getPrintRowGapClasses(),\n getPrintColumnGapClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintGridItem Component\n * @package @jmruthers/pace-core\n * @module PrintGridItem\n * @since 0.4.38\n * \n * Print-optimized grid item component with column and row spans.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintGridItemProps } from './types';\n\nexport function PrintGridItem({\n children,\n colSpan = 1,\n rowSpan = 1,\n colStart,\n rowStart,\n align = 'stretch',\n justify = 'start',\n printColSpan,\n printRowSpan,\n printColStart,\n printRowStart,\n printOptimized = true,\n className,\n ...props\n}: PrintGridItemProps) {\n const getColSpanClasses = (span: number | string): string => {\n if (span === 'full') return 'col-span-full';\n \n switch (span) {\n case 1:\n return 'col-span-1';\n case 2:\n return 'col-span-2';\n case 3:\n return 'col-span-3';\n case 4:\n return 'col-span-4';\n case 5:\n return 'col-span-5';\n case 6:\n return 'col-span-6';\n case 12:\n return 'col-span-12';\n default:\n return 'col-span-1';\n }\n };\n\n const getRowSpanClasses = (span: number | string): string => {\n if (span === 'full') return 'row-span-full';\n \n switch (span) {\n case 1:\n return 'row-span-1';\n case 2:\n return 'row-span-2';\n case 3:\n return 'row-span-3';\n case 4:\n return 'row-span-4';\n case 5:\n return 'row-span-5';\n case 6:\n return 'row-span-6';\n default:\n return 'row-span-1';\n }\n };\n\n const getColStartClasses = (start: number | string): string => {\n if (start === 'auto') return 'col-start-auto';\n \n switch (start) {\n case 1:\n return 'col-start-1';\n case 2:\n return 'col-start-2';\n case 3:\n return 'col-start-3';\n case 4:\n return 'col-start-4';\n case 5:\n return 'col-start-5';\n case 6:\n return 'col-start-6';\n case 7:\n return 'col-start-7';\n case 8:\n return 'col-start-8';\n case 9:\n return 'col-start-9';\n case 10:\n return 'col-start-10';\n case 11:\n return 'col-start-11';\n case 12:\n return 'col-start-12';\n case 13:\n return 'col-start-13';\n default:\n return 'col-start-auto';\n }\n };\n\n const getRowStartClasses = (start: number | string): string => {\n if (start === 'auto') return 'row-start-auto';\n \n switch (start) {\n case 1:\n return 'row-start-1';\n case 2:\n return 'row-start-2';\n case 3:\n return 'row-start-3';\n case 4:\n return 'row-start-4';\n case 5:\n return 'row-start-5';\n case 6:\n return 'row-start-6';\n case 7:\n return 'row-start-7';\n case 8:\n return 'row-start-8';\n case 9:\n return 'row-start-9';\n case 10:\n return 'row-start-10';\n case 11:\n return 'row-start-11';\n case 12:\n return 'row-start-12';\n case 13:\n return 'row-start-13';\n default:\n return 'row-start-auto';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'start':\n return 'self-start';\n case 'center':\n return 'self-center';\n case 'end':\n return 'self-end';\n default:\n return 'self-stretch';\n }\n };\n\n const getJustifyClasses = (justify: string): string => {\n switch (justify) {\n case 'center':\n return 'justify-self-center';\n case 'end':\n return 'justify-self-end';\n case 'stretch':\n return 'justify-self-stretch';\n default:\n return 'justify-self-start';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-2'\n );\n };\n\n const getPrintColSpanClasses = (): string => {\n if (!printColSpan) return '';\n return `print:${getColSpanClasses(printColSpan)}`;\n };\n\n const getPrintRowSpanClasses = (): string => {\n if (!printRowSpan) return '';\n return `print:${getRowSpanClasses(printRowSpan)}`;\n };\n\n const getPrintColStartClasses = (): string => {\n if (!printColStart) return '';\n return `print:${getColStartClasses(printColStart)}`;\n };\n\n const getPrintRowStartClasses = (): string => {\n if (!printRowStart) return '';\n return `print:${getRowStartClasses(printRowStart)}`;\n };\n\n return (\n <div\n className={cn(\n 'print-grid-item',\n getColSpanClasses(colSpan),\n getRowSpanClasses(rowSpan),\n colStart && getColStartClasses(colStart),\n rowStart && getRowStartClasses(rowStart),\n getAlignmentClasses(align),\n getJustifyClasses(justify),\n getPrintOptimizedClasses(),\n getPrintColSpanClasses(),\n getPrintRowSpanClasses(),\n getPrintColStartClasses(),\n getPrintRowStartClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintGridContainer Component\n * @package @jmruthers/pace-core\n * @module PrintGridContainer\n * @since 0.4.38\n * \n * Print-optimized grid container component with max width and spacing controls.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintGridContainerProps } from './types';\n\nexport function PrintGridContainer({\n children,\n maxWidth = 'full',\n padding = 'md',\n margin = 'none',\n background = 'transparent',\n printOptimized = true,\n className,\n ...props\n}: PrintGridContainerProps) {\n const getMaxWidthClasses = (maxWidth: string): string => {\n switch (maxWidth) {\n case 'sm':\n return 'max-w-sm';\n case 'md':\n return 'max-w-md';\n case 'lg':\n return 'max-w-lg';\n case 'xl':\n return 'max-w-xl';\n case '2xl':\n return 'max-w-2xl';\n case '3xl':\n return 'max-w-3xl';\n case '4xl':\n return 'max-w-4xl';\n case '5xl':\n return 'max-w-5xl';\n case '6xl':\n return 'max-w-6xl';\n case '7xl':\n return 'max-w-7xl';\n case 'full':\n return 'max-w-full';\n default:\n return 'max-w-full';\n }\n };\n\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n case 'xl':\n return 'p-8';\n default:\n return 'p-4';\n }\n };\n\n const getMarginClasses = (margin: string): string => {\n switch (margin) {\n case 'none':\n return 'm-0';\n case 'sm':\n return 'm-2';\n case 'md':\n return 'm-4';\n case 'lg':\n return 'm-6';\n case 'xl':\n return 'm-8';\n case 'auto':\n return 'mx-auto';\n default:\n return 'm-0';\n }\n };\n\n const getBackgroundClasses = (background: string): string => {\n switch (background) {\n case 'white':\n return 'bg-background';\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n default:\n return 'bg-transparent';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:max-w-full',\n 'print:break-inside-avoid',\n 'print:mb-4'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-grid-container',\n 'w-full',\n getMaxWidthClasses(maxWidth),\n getPaddingClasses(padding),\n getMarginClasses(margin),\n getBackgroundClasses(background),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintGridBreakpoint Component\n * @package @jmruthers/pace-core\n * @module PrintGridBreakpoint\n * @since 0.4.38\n * \n * Print-optimized grid breakpoint component for responsive grid layouts.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintGridBreakpointProps } from './types';\n\nexport function PrintGridBreakpoint({\n children,\n size = 'md',\n columns = 12,\n gap = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintGridBreakpointProps) {\n const getSizeClasses = (size: string): string => {\n switch (size) {\n case 'sm':\n return 'sm:';\n case 'md':\n return 'md:';\n case 'lg':\n return 'lg:';\n case 'xl':\n return 'xl:';\n case '2xl':\n return '2xl:';\n default:\n return 'md:';\n }\n };\n\n const getColumnsClasses = (cols: number): string => {\n switch (cols) {\n case 1:\n return 'grid-cols-1';\n case 2:\n return 'grid-cols-2';\n case 3:\n return 'grid-cols-3';\n case 4:\n return 'grid-cols-4';\n case 5:\n return 'grid-cols-5';\n case 6:\n return 'grid-cols-6';\n case 12:\n return 'grid-cols-12';\n default:\n return 'grid-cols-12';\n }\n };\n\n const getGapClasses = (gap: string): string => {\n switch (gap) {\n case 'none':\n return 'gap-0';\n case 'sm':\n return 'gap-2';\n case 'lg':\n return 'gap-6';\n case 'xl':\n return 'gap-8';\n default:\n return 'gap-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4'\n );\n };\n\n const getResponsiveClasses = (): string => {\n const sizePrefix = getSizeClasses(size);\n const columnsClass = getColumnsClasses(columns);\n const gapClass = getGapClasses(gap);\n \n return cn(\n `${sizePrefix}grid`,\n `${sizePrefix}${columnsClass}`,\n `${sizePrefix}${gapClass}`\n );\n };\n\n return (\n <div\n className={cn(\n 'print-grid-breakpoint',\n getResponsiveClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintFooter Component\n * @package @jmruthers/pace-core\n * @module PrintFooter\n * @since 0.4.38\n * \n * Print-optimized footer component with page numbering and content.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintPageNumber } from './PrintPageNumber';\nimport { PrintFooterProps } from './types';\n\nexport function PrintFooter({\n children,\n text,\n position = 'relative',\n align = 'center',\n showPageNumbers = false,\n pageNumberFormat = '1',\n pageNumberTemplate,\n pageNumberPosition = 'right',\n showTotalPages = false,\n background = 'transparent',\n showBorder = false,\n padding = 'md',\n margin = 'none',\n height = 'auto',\n printOptimized = true,\n className,\n ...props\n}: PrintFooterProps) {\n const getPositionClasses = (position: string): string => {\n switch (position) {\n case 'fixed':\n return 'fixed bottom-0 left-0 right-0';\n case 'absolute':\n return 'absolute bottom-0 left-0 right-0';\n case 'sticky':\n return 'sticky bottom-0';\n default:\n return 'relative';\n }\n };\n\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'left':\n return 'justify-start';\n case 'center':\n return 'justify-center';\n case 'right':\n return 'justify-end';\n case 'between':\n return 'justify-between';\n case 'around':\n return 'justify-around';\n case 'evenly':\n return 'justify-evenly';\n default:\n return 'justify-center';\n }\n };\n\n const getBackgroundClasses = (background: string): string => {\n switch (background) {\n case 'white':\n return 'bg-background';\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n default:\n return 'bg-transparent';\n }\n };\n\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n case 'xl':\n return 'p-8';\n default:\n return 'p-4';\n }\n };\n\n const getMarginClasses = (margin: string): string => {\n switch (margin) {\n case 'none':\n return 'm-0';\n case 'sm':\n return 'm-2';\n case 'md':\n return 'm-4';\n case 'lg':\n return 'm-6';\n case 'xl':\n return 'm-8';\n default:\n return 'm-0';\n }\n };\n\n const getHeightClasses = (height: string): string => {\n switch (height) {\n case 'sm':\n return 'h-8';\n case 'md':\n return 'h-12';\n case 'lg':\n return 'h-16';\n case 'xl':\n return 'h-20';\n default:\n return 'h-auto';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4',\n 'print:border-black',\n 'print:bg-white',\n 'print:text-black'\n );\n };\n\n const getBorderClasses = (): string => {\n if (!showBorder) return '';\n return 'border-t border-border';\n };\n\n return (\n <footer\n className={cn(\n 'print-footer',\n 'flex',\n 'items-center',\n 'w-full',\n getPositionClasses(position),\n getAlignmentClasses(align),\n getBackgroundClasses(background),\n getPaddingClasses(padding),\n getMarginClasses(margin),\n getHeightClasses(height),\n getBorderClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {text && (\n <PrintText variant=\"small\" color=\"muted\">\n {text}\n </PrintText>\n )}\n \n {children}\n \n {showPageNumbers && (\n <PrintPageNumber\n format={pageNumberFormat}\n template={pageNumberTemplate}\n position={pageNumberPosition}\n showTotal={showTotalPages}\n printOptimized={printOptimized}\n />\n )}\n </footer>\n );\n}\n","/**\n * @file PrintPageNumber Component\n * @package @jmruthers/pace-core\n * @module PrintPageNumber\n * @since 0.4.38\n * \n * Print-optimized page number component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintPageNumberProps } from './types';\n\nexport function PrintPageNumber({\n children,\n format = '1',\n template,\n position = 'right',\n showTotal = false,\n currentPage = 1,\n totalPages = 1,\n printOptimized = true,\n className,\n ...props\n}: PrintPageNumberProps) {\n const getPositionClasses = (position: string): string => {\n switch (position) {\n case 'left':\n return 'justify-start';\n case 'center':\n return 'justify-center';\n default:\n return 'justify-end';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:text-sm',\n 'print:font-medium'\n );\n };\n\n const formatPageNumber = (): string => {\n if (template) {\n return template\n .replace('{current}', currentPage.toString())\n .replace('{total}', totalPages.toString())\n .replace('{page}', currentPage.toString());\n }\n\n switch (format) {\n case '1 of 5':\n return `${currentPage} of ${totalPages}`;\n case 'Page 1':\n return `Page ${currentPage}`;\n case 'Page 1 of 5':\n return `Page ${currentPage} of ${totalPages}`;\n case '1/5':\n return `${currentPage}/${totalPages}`;\n case 'custom':\n return template || currentPage.toString();\n default:\n return currentPage.toString();\n }\n };\n\n return (\n <div\n className={cn(\n 'print-page-number',\n 'flex',\n 'items-center',\n getPositionClasses(position),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children || (\n <PrintText variant=\"small\" color=\"muted\">\n {formatPageNumber()}\n </PrintText>\n )}\n </div>\n );\n}\n","/**\n * @file PrintFooterContent Component\n * @package @jmruthers/pace-core\n * @module PrintFooterContent\n * @since 0.4.38\n * \n * Print-optimized footer content component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintFooterContentProps } from './types';\n\nexport function PrintFooterContent({\n children,\n align = 'left',\n padding = 'none',\n printOptimized = true,\n className,\n ...props\n}: PrintFooterContentProps) {\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getPaddingClasses = (padding: string): string => {\n switch (padding) {\n case 'none':\n return 'p-0';\n case 'sm':\n return 'p-2';\n case 'lg':\n return 'p-6';\n case 'xl':\n return 'p-8';\n default:\n return 'p-4';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:text-sm',\n 'print:leading-tight'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-footer-content',\n getAlignmentClasses(align),\n getPaddingClasses(padding),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","/**\n * @file PrintFooterInfo Component\n * @package @jmruthers/pace-core\n * @module PrintFooterInfo\n * @since 0.4.38\n * \n * Print-optimized footer info component.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintFooterInfoProps } from './types';\n\nexport function PrintFooterInfo({\n children,\n align = 'left',\n background = 'transparent',\n showBorder = false,\n printOptimized = true,\n className,\n ...props\n}: PrintFooterInfoProps) {\n const getAlignmentClasses = (align: string): string => {\n switch (align) {\n case 'center':\n return 'text-center';\n case 'right':\n return 'text-right';\n default:\n return 'text-left';\n }\n };\n\n const getBackgroundClasses = (background: string): string => {\n switch (background) {\n case 'white':\n return 'bg-background';\n case 'gray':\n return 'bg-muted';\n case 'primary':\n return 'bg-primary text-primary-foreground';\n case 'secondary':\n return 'bg-secondary text-secondary-foreground';\n default:\n return 'bg-transparent';\n }\n };\n\n const getBorderClasses = (): string => {\n if (!showBorder) return '';\n return 'border border-border rounded';\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:text-sm',\n 'print:leading-tight',\n 'print:border-black',\n 'print:bg-white',\n 'print:text-black'\n );\n };\n\n return (\n <div\n className={cn(\n 'print-footer-info',\n 'p-3',\n 'rounded',\n getAlignmentClasses(align),\n getBackgroundClasses(background),\n getBorderClasses(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n <PrintText variant=\"small\" color=\"muted\">\n {children}\n </PrintText>\n </div>\n );\n}\n","/**\n * @file PrintPageBreak Component\n * @package @jmruthers/pace-core\n * @module PrintPageBreak\n * @since 0.4.38\n * \n * Enhanced print page break component with visual indicators and controls.\n */\n\nimport React, { ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintPageBreakIndicator } from './PrintPageBreakIndicator';\nimport { PrintPageBreakProps } from './types';\n\nexport function PrintPageBreak({\n type = 'auto',\n strength = 'normal',\n showIndicator = false,\n indicator,\n label,\n description,\n printOptimized = true,\n className,\n ...props\n}: PrintPageBreakProps) {\n const getBreakClass = (): string => {\n const baseClass = 'print-page-break';\n \n switch (type) {\n case 'before':\n return cn(baseClass, 'print-break-before');\n case 'after':\n return cn(baseClass, 'print-break-after');\n case 'avoid':\n return cn(baseClass, 'print-break-avoid');\n case 'always':\n return cn(baseClass, 'print-break-before print-break-after');\n case 'left':\n return cn(baseClass, 'print-break-before', 'print:page-break-before:left');\n case 'right':\n return cn(baseClass, 'print-break-before', 'print:page-break-before:right');\n default:\n return baseClass;\n }\n };\n\n const getStrengthClass = (): string => {\n switch (strength) {\n case 'weak':\n return 'print:page-break-inside:avoid';\n case 'strong':\n return 'print:page-break-inside:avoid print:break-inside-avoid';\n default:\n return '';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4'\n );\n };\n\n const renderIndicator = (): ReactNode => {\n if (!showIndicator) return null;\n \n if (indicator) {\n return indicator;\n }\n \n return (\n <PrintPageBreakIndicator\n type=\"line\"\n color=\"muted\"\n size=\"md\"\n printOptimized={printOptimized}\n />\n );\n };\n\n const renderLabel = (): ReactNode => {\n if (!label) return null;\n \n return (\n <PrintText variant=\"small\" color=\"muted\" className=\"text-center\">\n {label}\n </PrintText>\n );\n };\n\n const renderDescription = (): ReactNode => {\n if (!description) return null;\n \n return (\n <PrintText variant=\"small\" color=\"muted\" className=\"text-center mt-1\">\n {description}\n </PrintText>\n );\n };\n\n return (\n <div\n className={cn(\n getBreakClass(),\n getStrengthClass(),\n getPrintOptimizedClasses(),\n className\n )}\n aria-hidden=\"true\"\n {...props}\n >\n {renderIndicator()}\n {renderLabel()}\n {renderDescription()}\n </div>\n );\n}\n","/**\n * @file PrintPageBreakIndicator Component\n * @package @jmruthers/pace-core\n * @module PrintPageBreakIndicator\n * @since 0.4.38\n * \n * Visual indicator component for page breaks.\n */\n\nimport React, { ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintPageBreakIndicatorProps } from './types';\n\nexport function PrintPageBreakIndicator({\n children,\n type = 'line',\n color = 'default',\n size = 'md',\n printOptimized = true,\n className,\n ...props\n}: PrintPageBreakIndicatorProps) {\n const getTypeClasses = (): string => {\n switch (type) {\n case 'dotted':\n return 'border-dotted';\n case 'dashed':\n return 'border-dashed';\n case 'text':\n return 'text-center';\n case 'icon':\n return 'text-center';\n default:\n return 'border-solid';\n }\n };\n\n const getColorClasses = (): string => {\n switch (color) {\n case 'primary':\n return 'border-primary text-primary';\n case 'secondary':\n return 'border-secondary text-secondary';\n case 'muted':\n return 'border-muted-foreground text-muted-foreground';\n case 'accent':\n return 'border-accent text-accent';\n default:\n return 'border-border text-foreground';\n }\n };\n\n const getSizeClasses = (): string => {\n switch (size) {\n case 'sm':\n return 'h-1 text-xs';\n case 'lg':\n return 'h-3 text-lg';\n default:\n return 'h-2 text-sm';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:border-black',\n 'print:text-black'\n );\n };\n\n const renderContent = (): ReactNode => {\n if (children) {\n return children;\n }\n\n switch (type) {\n case 'text':\n return '--- Page Break ---';\n case 'icon':\n return '📄';\n case 'line':\n return '--- Page Break ---';\n default:\n return '--- Page Break ---';\n }\n };\n\n const isLineType = type === 'line' || type === 'dotted' || type === 'dashed';\n\n return (\n <div\n className={cn(\n 'print-page-break-indicator',\n 'flex',\n 'items-center',\n 'justify-center',\n 'w-full',\n getTypeClasses(),\n getColorClasses(),\n getSizeClasses(),\n isLineType && 'border-t',\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {renderContent()}\n </div>\n );\n}\n","/**\n * @file PrintPageBreakGroup Component\n * @package @jmruthers/pace-core\n * @module PrintPageBreakGroup\n * @since 0.4.38\n * \n * Group component for managing page breaks across multiple elements.\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\nimport { PrintText } from '../PrintText';\nimport { PrintPageBreakGroupProps } from './types';\n\nexport function PrintPageBreakGroup({\n children,\n type = 'auto',\n strength = 'normal',\n label,\n description,\n printOptimized = true,\n className,\n ...props\n}: PrintPageBreakGroupProps) {\n const getBreakClass = (): string => {\n const baseClass = 'print-page-break-group';\n \n switch (type) {\n case 'before':\n return cn(baseClass, 'print-break-before');\n case 'after':\n return cn(baseClass, 'print-break-after');\n case 'avoid':\n return cn(baseClass, 'print-break-avoid');\n case 'always':\n return cn(baseClass, 'print-break-before print-break-after');\n case 'left':\n return cn(baseClass, 'print-break-before', 'print:page-break-before:left');\n case 'right':\n return cn(baseClass, 'print-break-before', 'print:page-break-before:right');\n default:\n return baseClass;\n }\n };\n\n const getStrengthClass = (): string => {\n switch (strength) {\n case 'weak':\n return 'print:page-break-inside:avoid';\n case 'strong':\n return 'print:page-break-inside:avoid print:break-inside-avoid';\n default:\n return '';\n }\n };\n\n const getPrintOptimizedClasses = (): string => {\n if (!printOptimized) return '';\n return cn(\n 'print:break-inside-avoid',\n 'print:mb-4'\n );\n };\n\n return (\n <div\n className={cn(\n getBreakClass(),\n getStrengthClass(),\n getPrintOptimizedClasses(),\n className\n )}\n {...props}\n >\n {label && (\n <PrintText variant=\"small\" color=\"muted\" className=\"mb-2\">\n {label}\n </PrintText>\n )}\n \n {children}\n \n {description && (\n <PrintText variant=\"small\" color=\"muted\" className=\"mt-2\">\n {description}\n </PrintText>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","React","jsx","jsxs","useState","useEffect","error","jsx","jsxs","useState","useEffect","jsx","jsx","jsxs","jsx","variant","weight","color","jsx","jsxs","branding","metadata","jsx","jsxs","jsx","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","variant","size","layout","backgroundColor","textColor","jsx","jsxs","align","jsx","padding","jsx","align","jsx","aspectRatio","objectFit","jsx","columns","gap","rowGap","jsx","jsxs","layout","gap","spacing","background","jsx","jsxs","align","level","jsx","padding","background","jsx","width","align","verticalAlign","padding","jsx","style","color","thickness","spacing","useState","jsx","jsxs","variant","size","shape","state","jsx","orientation","spacing","align","jsx","position","align","jsx","gap","align","justify","jsx","align","justify","jsx","maxWidth","padding","margin","background","jsx","size","gap","jsx","position","jsx","jsxs","position","align","background","padding","margin","height","jsx","align","padding","jsx","align","background","jsx","jsx","jsxs","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/components/Form/FormField.tsx","../src/components/Form/FormErrorSummary.tsx","../src/components/Form/FormLiveRegion.tsx","../src/components/Form/FormFieldset.tsx","../src/hooks/useRBAC.ts","../src/components/SuperAdminGuard.tsx"],"sourcesContent":["/**\n * @file FormField Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A flexible form field component that integrates with React Hook Form and provides\n * built-in validation, error handling, and accessibility features.\n *\n * Features:\n * - React Hook Form integration with Controller\n * - Built-in validation with error display\n * - Accessible labels and error messages\n * - Custom render function support\n * - TypeScript support with generic field paths\n * - Consistent styling with error states\n * - Test ID support for testing\n * - Flexible input types and props\n *\n * @example\n * ```tsx\n * // Basic text field\n * <FormField\n * name=\"username\"\n * label=\"Username\"\n * placeholder=\"Enter your username\"\n * validation={{ required: true }}\n * />\n * \n * // Email field with custom validation\n * <FormField\n * name=\"email\"\n * label=\"Email Address\"\n * type=\"email\"\n * validation={{\n * required: true,\n * pattern: {\n * value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n * message: \"Invalid email address\"\n * }\n * }}\n * />\n * \n * // Custom render function\n * <FormField\n * name=\"avatar\"\n * label=\"Profile Picture\"\n * render={({ field }) => (\n * <input\n * {...field}\n * type=\"file\"\n * accept=\"image/*\"\n * className=\"file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-app-sec-50 file:text-app-sec-700 hover:file:bg-app-sec-100\"\n * />\n * )}\n * />\n * \n * // With test ID for testing\n * <FormField\n * name=\"password\"\n * label=\"Password\"\n * type=\"password\"\n * data-testid=\"password-field\"\n * validation={{\n * required: true,\n * minLength: {\n * value: 8,\n * message: \"Password must be at least 8 characters\"\n * }\n * }}\n * />\n * ```\n *\n * @accessibility\n * - Proper label association with htmlFor\n * - Error messages with role=\"alert\"\n * - Required field indicators\n * - Focus management\n * - Screen reader friendly error announcements\n * - Keyboard navigation support\n *\n * @dependencies\n * - react-hook-form - Form integration\n * - React 18+ - Hooks and context\n * - Tailwind CSS - Styling\n */\n\nimport React from 'react';\nimport { useFormContext, Controller, FieldPath, FieldValues } from 'react-hook-form';\nimport { cn } from '../../utils/cn';\nimport { Label } from '../Label';\n\nexport interface FormFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> {\n /**\n * Field name\n */\n name: TName;\n \n /**\n * Field label\n */\n label?: string;\n \n /**\n * Field type\n */\n type?: string;\n \n /**\n * Placeholder text\n */\n placeholder?: string;\n \n /**\n * Additional props for the input\n */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n \n /**\n * Validation rules\n */\n validation?: {\n required?: boolean;\n pattern?: {\n value: RegExp;\n message: string;\n };\n minLength?: {\n value: number;\n message: string;\n };\n maxLength?: {\n value: number;\n message: string;\n };\n };\n \n /**\n * Custom render function\n */\n render?: ({ field }: { field: any }) => React.ReactElement;\n \n /**\n * Test ID\n */\n 'data-testid'?: string;\n \n /**\n * Class name\n */\n className?: string;\n}\n\n/**\n * FormField component for React Hook Form integration\n * \n * @template TFieldValues - The type of form field values\n * @template TName - The type of the field name (must be a valid field path)\n * @param props - Form field configuration and validation\n * @returns JSX.Element - The rendered form field with validation\n * \n * @example\n * ```tsx\n * <FormField\n * name=\"email\"\n * label=\"Email\"\n * type=\"email\"\n * validation={{\n * required: true,\n * pattern: {\n * value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n * message: \"Please enter a valid email address\"\n * }\n * }}\n * />\n * ```\n */\nexport function FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n label,\n type = \"text\",\n placeholder,\n inputProps,\n validation,\n render,\n 'data-testid': testId,\n className,\n}: FormFieldProps<TFieldValues, TName>) {\n const { control, formState: { errors } } = useFormContext<TFieldValues>();\n const fieldError = errors[name];\n\n // Safely extract error message\n const errorMessage = fieldError && typeof fieldError === 'object' && 'message' in fieldError \n ? String(fieldError.message) \n : undefined;\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {label && (\n <Label htmlFor={name}>\n {label}\n {validation?.required && (\n <span className=\"text-destructive ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </Label>\n )}\n \n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field }) => {\n if (render) {\n return render({ field });\n }\n \n return (\n <input\n {...field}\n id={name}\n type={type}\n placeholder={placeholder}\n data-testid={testId}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n fieldError && \"border-destructive focus-visible:ring-destructive\"\n )}\n {...inputProps}\n />\n );\n }}\n />\n \n {errorMessage && (\n <p className=\"text-destructive\" role=\"alert\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n","\n/**\n * @file FormErrorSummary Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A form error summary component that displays validation errors in a user-friendly format.\n * Provides a centralized location for users to see all form errors at once.\n *\n * Features:\n * - Displays all form errors in one place\n * - Configurable error display format\n * - Optional field name display\n * - Accessible error presentation\n * - Consistent styling with Alert component\n * - Automatic error filtering\n * - Responsive design\n *\n * @example\n * ```tsx\n * // Basic error summary\n * <FormErrorSummary errors={formErrors} />\n * \n * // With custom title\n * <FormErrorSummary \n * errors={formErrors}\n * title=\"Please correct the following issues:\"\n * />\n * \n * // Show field names with errors\n * <FormErrorSummary \n * errors={formErrors}\n * showFieldNames={true}\n * />\n * \n * // In a form with React Hook Form\n * const { formState: { errors } } = useForm();\n * \n * <Form onSubmit={handleSubmit}>\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"password\" label=\"Password\" />\n * <FormErrorSummary errors={errors} />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * ```\n *\n * @accessibility\n * - Uses Alert component for consistent accessibility\n * - Proper heading hierarchy with h3\n * - List structure for error items\n * - Screen reader friendly error announcements\n * - High contrast support via Alert component\n *\n * @dependencies\n * - Alert component for consistent styling\n * - React 18+ - Component framework\n * - Tailwind CSS - Styling\n */\n\nimport { Alert } from '../Alert';\n\nexport interface FormErrorSummaryProps {\n /** Form validation errors object */\n errors?: Record<string, any>;\n /** Title displayed above the error list */\n title?: string;\n /** Whether to show field names alongside error messages */\n showFieldNames?: boolean;\n}\n\n/**\n * FormErrorSummary component for displaying form validation errors\n * \n * This component provides a user-friendly way to display all form errors\n * in one centralized location, improving the user experience by making\n * it clear what needs to be fixed.\n * \n * @param props - Component configuration\n * @param props.errors - Form validation errors object\n * @param props.title - Title displayed above the error list\n * @param props.showFieldNames - Whether to show field names with errors\n * @returns JSX.Element - The rendered error summary or null if no errors\n */\nexport function FormErrorSummary({ \n errors = {}, \n title = \"Please fix the following errors:\",\n showFieldNames = false \n}: FormErrorSummaryProps) {\n const errorEntries = Object.entries(errors).filter(([, value]) => Boolean(value));\n\n if (errorEntries.length === 0) {\n return null;\n }\n\n return (\n <Alert variant=\"destructive\" className=\"mb-4\">\n <div>\n <h3>{title}</h3>\n <ul className=\"list-disc list-inside space-y-1\">\n {errorEntries.map(([field, error], index) => {\n const message = typeof error === 'object' && error.message ? error.message : String(error);\n return (\n <li key={index} className=\"text-sm\">\n {showFieldNames ? `${field}: ${message}` : message}\n </li>\n );\n })}\n </ul>\n </div>\n </Alert>\n );\n}\n","/**\n * @file FormLiveRegion Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * An accessible live region component for form validation announcements.\n * Provides real-time feedback to screen readers about form validation states\n * and error messages, improving accessibility for users with assistive technologies.\n *\n * Features:\n * - Real-time form validation announcements\n * - Configurable politeness levels (polite/assertive)\n * - Customizable delay timing\n * - Field-level and form-level announcements\n * - Success message customization\n * - Automatic error counting and field identification\n * - Accessibility compliant with ARIA live regions\n * - Integration with React Hook Form\n *\n * @example\n * ```tsx\n * // Basic live region\n * const { control, formState } = useForm();\n * \n * <Form onSubmit={handleSubmit}>\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"password\" label=\"Password\" />\n * <FormLiveRegion form={{ control, formState }} />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * \n * // With custom configuration\n * <FormLiveRegion\n * form={{ control, formState }}\n * politeness=\"assertive\"\n * delay={1000}\n * successMessage=\"Your form was submitted successfully!\"\n * enableFieldAnnouncements={true}\n * />\n * \n * // In a complex form\n * function ComplexForm() {\n * const methods = useForm({\n * defaultValues: { name: '', email: '', message: '' }\n * });\n * \n * return (\n * <FormProvider {...methods}>\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <FormField name=\"name\" label=\"Name\" />\n * <FormField name=\"email\" label=\"Email\" />\n * <FormField name=\"message\" label=\"Message\" />\n * <FormLiveRegion \n * form={methods}\n * politeness=\"polite\"\n * delay={300}\n * />\n * <Button type=\"submit\">Send Message</Button>\n * </form>\n * </FormProvider>\n * );\n * }\n * ```\n *\n * @accessibility\n * - ARIA live region for screen reader announcements\n * - Configurable politeness levels for different message types\n * - Automatic error counting and field identification\n * - Non-intrusive validation feedback\n * - WCAG 2.1 AA compliant\n * - Screen reader friendly error announcements\n *\n * @dependencies\n * - react-hook-form - Form state management\n * - React 18+ - Hooks and effects\n * - Tailwind CSS - Styling\n */\n\nimport React, { useEffect, useState } from 'react';\nimport { UseFormReturn, FieldValues } from 'react-hook-form';\nimport { cn } from '../../utils/cn';\n\n/**\n * Props for the FormLiveRegion component\n */\nexport interface FormLiveRegionProps<T extends FieldValues> {\n /** React Hook Form instance */\n form: UseFormReturn<T>;\n /** ARIA live region politeness level */\n politeness?: 'polite' | 'assertive';\n /** Delay before announcing messages (in ms) */\n delay?: number;\n /** Custom success message */\n successMessage?: string;\n /** Custom class name */\n className?: string;\n /** Enable field-level validation announcements */\n enableFieldAnnouncements?: boolean;\n}\n\n/**\n * FormLiveRegion component for accessible form validation announcements\n */\nexport function FormLiveRegion<T extends FieldValues>({\n form,\n politeness = 'polite',\n delay = 500,\n successMessage = 'Form submitted successfully',\n className,\n enableFieldAnnouncements = true\n}: FormLiveRegionProps<T>): React.ReactElement {\n const [message, setMessage] = useState<string>('');\n const { formState } = form;\n\n // Handle form-level announcements\n useEffect(() => {\n let timeoutId: NodeJS.Timeout;\n\n if (formState.isSubmitting) {\n setMessage('Submitting form...');\n } else if (formState.isSubmitSuccessful) {\n timeoutId = setTimeout(() => {\n setMessage(successMessage);\n }, delay);\n } else if (formState.errors && Object.keys(formState.errors).length > 0) {\n const errorCount = Object.keys(formState.errors).length;\n const errorFields = Object.keys(formState.errors).join(', ');\n setMessage(`Form has ${errorCount} error${errorCount === 1 ? '' : 's'} in: ${errorFields}`);\n } else if (formState.isValid && formState.isDirty) {\n setMessage('Form is valid');\n } else {\n setMessage('');\n }\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [formState, delay, successMessage]);\n\n // Handle field-level announcements\n useEffect(() => {\n if (!enableFieldAnnouncements) return;\n\n let timeoutId: NodeJS.Timeout;\n \n const fieldErrors = formState.errors;\n const touchedFields = formState.touchedFields;\n \n // Find newly touched fields with errors\n const newErrors = Object.keys(fieldErrors).filter(field => {\n // Type-safe access to touchedFields\n const touchedField = touchedFields as Record<string, boolean>;\n return touchedField[field] && fieldErrors[field as keyof typeof fieldErrors];\n });\n\n if (newErrors.length > 0) {\n timeoutId = setTimeout(() => {\n const errorField = newErrors[0];\n const errorData = fieldErrors[errorField as keyof typeof fieldErrors];\n const errorMessage = errorData?.message;\n if (errorMessage) {\n setMessage(`${errorField}: ${errorMessage}`);\n }\n }, delay);\n }\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [formState.errors, formState.touchedFields, enableFieldAnnouncements, delay]);\n\n if (!message) {\n return <></>;\n }\n\n return (\n <div\n role=\"status\"\n aria-live={politeness}\n aria-atomic=\"true\"\n className={cn('sr-only', className)}\n style={{\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden'\n }}\n >\n {message}\n </div>\n );\n}\n","/**\n * @file FormFieldset Component\n * @package @jmruthers/pace-core\n * @module Components/Form\n * @since 0.1.0\n *\n * A form fieldset component that groups related form fields together with a legend\n * and optional description. Provides semantic structure and accessibility for form sections.\n *\n * Features:\n * - Semantic fieldset grouping for related form fields\n * - Accessible legend with required indicator\n * - Optional description text with proper ARIA association\n * - Consistent styling with design system\n * - Forwarded ref support\n * - Customizable styling via className\n * - Required field indication\n * - Responsive design\n *\n * @example\n * ```tsx\n * // Basic fieldset\n * <FormFieldset legend=\"Personal Information\">\n * <FormField name=\"firstName\" label=\"First Name\" />\n * <FormField name=\"lastName\" label=\"Last Name\" />\n * <FormField name=\"email\" label=\"Email\" />\n * </FormFieldset>\n * \n * // Fieldset with description\n * <FormFieldset \n * legend=\"Contact Details\" \n * description=\"We'll use this information to contact you about your order\"\n * >\n * <FormField name=\"phone\" label=\"Phone Number\" />\n * <FormField name=\"address\" label=\"Address\" />\n * </FormFieldset>\n * \n * // Required fieldset\n * <FormFieldset \n * legend=\"Account Settings\" \n * required={true}\n * description=\"These settings are required for account creation\"\n * >\n * <FormField name=\"username\" label=\"Username\" required />\n * <FormField name=\"password\" label=\"Password\" type=\"password\" required />\n * </FormFieldset>\n * \n * // With custom styling\n * <FormFieldset \n * legend=\"Preferences\"\n * className=\"bg-gray-50 border-gray-200\"\n * >\n * <FormField name=\"newsletter\" label=\"Subscribe to newsletter\" type=\"checkbox\" />\n * <FormField name=\"notifications\" label=\"Enable notifications\" type=\"checkbox\" />\n * </FormFieldset>\n * ```\n *\n * @accessibility\n * - Proper semantic HTML with fieldset and legend\n * - ARIA describedby association for descriptions\n * - Required field indication with asterisk\n * - Screen reader friendly structure\n * - Keyboard navigation support\n * - WCAG 2.1 AA compliant\n *\n * @dependencies\n * - React 18+ - Component framework and hooks\n * - Tailwind CSS - Styling\n * - cn utility - Class name merging\n */\n\nimport React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FormFieldsetProps extends React.FieldsetHTMLAttributes<HTMLFieldSetElement> {\n /** The legend text for the fieldset */\n legend: string;\n /** Optional description text below the legend */\n description?: string;\n /** Whether the fieldset contains required fields */\n required?: boolean;\n /** Form fields to group within the fieldset */\n children: React.ReactNode;\n}\n\n/**\n * FormFieldset component for grouping related form fields\n * \n * This component provides semantic grouping for form fields with proper\n * accessibility support and consistent styling. Use it to organize\n * related form inputs into logical sections.\n * \n * @param props - Component configuration\n * @param props.legend - The legend text for the fieldset\n * @param props.description - Optional description text\n * @param props.required - Whether the fieldset contains required fields\n * @param props.children - Form fields to group\n * @param ref - Forwarded ref to the fieldset element\n * @returns JSX.Element - The rendered fieldset with legend and fields\n */\nexport const FormFieldset = React.forwardRef<HTMLFieldSetElement, FormFieldsetProps>(\n ({ legend, description, required, className, children, ...props }, ref) => {\n const descriptionId = React.useId();\n \n return (\n <fieldset\n ref={ref}\n className={cn(\"space-y-4 border border-input rounded-lg p-4\", className)}\n aria-describedby={description ? descriptionId : undefined}\n {...props}\n >\n <legend className=\"px-2\">\n {legend}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </legend>\n {description && (\n <p id={descriptionId} className=\"text-muted-foreground\">\n {description}\n </p>\n )}\n {children}\n </fieldset>\n );\n }\n);\n\nFormFieldset.displayName = \"FormFieldset\";\n","/**\n * @file RBAC Hook\n * @package @jmruthers/pace-core\n * @module Hooks/RBAC\n * @since 0.3.0\n *\n * A React hook that provides access to the new RBAC (Role-Based Access Control) system.\n * This hook integrates with the database to provide real-time role and permission information.\n *\n * Features:\n * - Real-time role detection (global, organisation, event-app)\n * - Permission checking with database validation\n * - Hierarchical permission resolution\n * - Loading states and error handling\n * - Type-safe permission operations\n * - Automatic context detection\n *\n * @example\n * ```tsx\n * import { useRBAC } from '@jmruthers/pace-core';\n * \n * function MyComponent() {\n * const {\n * globalRole,\n * organisationRole,\n * eventAppRole,\n * hasPermission,\n * isSuperAdmin,\n * isLoading,\n * error\n * } = useRBAC();\n * \n * if (isLoading) return <div>Loading permissions...</div>;\n * if (error) return <div>Error: {error.message}</div>;\n * \n * return (\n * <div>\n * {isSuperAdmin && <AdminPanel />}\n * {hasPermission('read', 'dashboard') && <Dashboard />}\n * {hasPermission('create', 'events') && <CreateEventButton />}\n * </div>\n * );\n * }\n * ```\n *\n * @accessibility\n * - No direct accessibility concerns (hook)\n * - Enables accessible permission-based UI rendering\n * - Supports screen reader friendly conditional content\n *\n * @security\n * - Database-backed permission validation\n * - Hierarchical permission resolution\n * - Organisation context enforcement\n * - Real-time permission updates\n *\n * @performance\n * - Optimized with useMemo and useCallback\n * - Permission caching\n * - Minimal re-renders\n * - Lazy loading of permissions\n *\n * @dependencies\n * - React 18+ - Hooks and effects\n * - @supabase/supabase-js - Database integration\n * - RBAC types - Type definitions\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useUnifiedAuth } from '../providers/UnifiedAuthProvider';\nimport { useOrganisations } from '../providers/OrganisationProvider';\nimport { useEvents } from '../providers/EventProvider';\nimport type { \n UserRBACContext, \n GlobalRole, \n OrganisationRole, \n EventAppRole, \n Operation,\n RBACPermission \n} from '../rbac/types';\n\nexport function useRBAC(pageId?: string): UserRBACContext {\n const { user, supabase, appName } = useUnifiedAuth();\n const { selectedOrganisation } = useOrganisations();\n \n // Try to get events context, but don't fail if not available\n let selectedEvent = null;\n try {\n const eventsContext = useEvents();\n selectedEvent = eventsContext.selectedEvent;\n } catch (error) {\n // EventProvider not available, continue without event context\n console.debug('useRBAC: EventProvider not available, continuing without event context');\n }\n \n // State\n const [globalRole, setGlobalRole] = useState<GlobalRole | null>(null);\n const [organisationRole, setOrganisationRole] = useState<OrganisationRole | null>(null);\n const [eventAppRole, setEventAppRole] = useState<EventAppRole | null>(null);\n const [permissions, setPermissions] = useState<RBACPermission[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Load RBAC context\n const loadRBACContext = useCallback(async () => {\n if (!user || !supabase || !appName) {\n setGlobalRole(null);\n setOrganisationRole(null);\n setEventAppRole(null);\n setPermissions([]);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const { data, error: rpcError } = await supabase.rpc('get_rbac_permissions', {\n p_user_id: user.id,\n p_app_name: appName,\n p_event_id: selectedEvent?.event_id || null,\n p_organisation_id: selectedOrganisation?.id || null,\n p_page_id: pageId || null\n });\n\n if (rpcError) {\n throw new Error(`Failed to load RBAC permissions: ${rpcError.message}`);\n }\n\n if (data) {\n // Extract roles from permissions based on permission_type\n const globalPerms = data.filter((p: RBACPermission) => p.permission_type === 'all_permissions');\n const orgPerms = data.filter((p: RBACPermission) => p.permission_type === 'organisation_access');\n const eventPerms = data.filter((p: RBACPermission) => p.permission_type === 'event_app_access');\n\n // Set roles (take the highest permission for each type)\n setGlobalRole(globalPerms.length > 0 ? 'super_admin' : null);\n setOrganisationRole(orgPerms.length > 0 ? orgPerms[0].role_name as OrganisationRole : null);\n setEventAppRole(eventPerms.length > 0 ? eventPerms[0].role_name as EventAppRole : null);\n setPermissions(data);\n } else {\n setPermissions([]);\n }\n } catch (err) {\n console.error('RBAC Context Loading Error:', err);\n setError(err instanceof Error ? err : new Error('Unknown error loading RBAC context'));\n setPermissions([]);\n } finally {\n setIsLoading(false);\n }\n }, [user?.id, supabase, appName, selectedEvent?.event_id, selectedOrganisation?.id, pageId]);\n\n // Permission checking function\n const hasPermission = useCallback(async (operation: Operation, targetPageId?: string): Promise<boolean> => {\n if (!user || !supabase || !appName) return false;\n\n // Super admin has all permissions\n if (globalRole === 'super_admin') {\n return true;\n }\n\n try {\n const { data, error } = await supabase.rpc('check_page_permission', {\n p_user_id: user.id,\n p_app_name: appName,\n p_page_id: targetPageId || pageId || 'default',\n p_operation: operation,\n p_event_id: selectedEvent?.event_id,\n p_organisation_id: selectedOrganisation?.id\n });\n\n if (error) {\n console.error('Permission check failed:', error);\n return false;\n }\n\n return data === true;\n } catch (err) {\n console.error('Permission check error:', err);\n return false;\n }\n }, [user, supabase, appName, selectedEvent, selectedOrganisation, pageId, globalRole]);\n\n // Simple permission check for global roles (synchronous)\n const hasGlobalPermission = useCallback((permission: string): boolean => {\n // Super admin has all permissions\n if (globalRole === 'super_admin') {\n return true;\n }\n \n // Check specific global roles\n if (permission === 'super_admin') {\n return globalRole === 'super_admin';\n }\n \n if (permission === 'org_admin') {\n return organisationRole === 'org_admin' || globalRole === 'super_admin';\n }\n \n return false;\n }, [globalRole, organisationRole]);\n\n // Computed properties\n const isSuperAdmin = useMemo(() => globalRole === 'super_admin', [globalRole]);\n const isOrgAdmin = useMemo(() => organisationRole === 'org_admin', [organisationRole]);\n const isEventAdmin = useMemo(() => eventAppRole === 'event_admin', [eventAppRole]);\n const canManageOrganisation = useMemo(() => \n isSuperAdmin || isOrgAdmin, [isSuperAdmin, isOrgAdmin]\n );\n const canManageEvent = useMemo(() => \n isSuperAdmin || isEventAdmin, [isSuperAdmin, isEventAdmin]\n );\n\n // Load context when dependencies change\n useEffect(() => {\n loadRBACContext();\n }, [loadRBACContext]);\n\n return {\n user, // Add user to the returned context\n globalRole,\n organisationRole,\n eventAppRole,\n hasPermission,\n hasGlobalPermission,\n isSuperAdmin,\n isOrgAdmin,\n isEventAdmin,\n canManageOrganisation,\n canManageEvent,\n isLoading,\n error\n };\n} ","/**\n * Super Admin Guard Component\n * @package @jmruthers/pace-core\n * @module Components/SuperAdminGuard\n * @since 1.0.0\n * \n * A reusable component for protecting content that should only be visible to super admins.\n */\n\nimport React from 'react';\nimport { useRBAC } from '../hooks/useRBAC';\n\nexport interface SuperAdminGuardProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n showDebugInfo?: boolean;\n}\n\n/**\n * Super Admin Guard Component\n * \n * Renders children only if the current user is a super admin.\n * Provides a fallback for non-super admin users.\n * \n * @param children - Content to render for super admins\n * @param fallback - Content to render for non-super admins (optional)\n * @param showDebugInfo - Whether to show debug information (optional)\n */\nexport function SuperAdminGuard({ \n children, \n fallback = null, \n showDebugInfo = false \n}: SuperAdminGuardProps) {\n const { isSuperAdmin, hasGlobalPermission, isLoading } = useRBAC();\n\n // Show loading state\n if (isLoading) {\n return (\n <div className=\"super-admin-guard-loading\">\n <div className=\"loading-spinner\" />\n <span>Checking permissions...</span>\n </div>\n );\n }\n\n // Show debug info if enabled\n if (showDebugInfo) {\n console.log('[SuperAdminGuard] Debug Info:', {\n isSuperAdmin,\n isLoading\n });\n }\n\n // Render children for super admins\n if (isSuperAdmin) {\n return (\n <div className=\"super-admin-content\">\n {children}\n </div>\n );\n }\n\n // Render fallback for non-super admins\n return (\n <div className=\"super-admin-fallback\">\n {fallback}\n </div>\n );\n}\n\n/**\n * Super Admin Badge Component\n * \n * Shows a visual indicator when the current user is a super admin.\n */\nexport function SuperAdminBadge() {\n const { isSuperAdmin } = useRBAC();\n\n if (!isSuperAdmin) {\n return null;\n }\n\n return (\n <div className=\"super-admin-badge\">\n <span className=\"badge-text\">SUPER ADMIN</span>\n </div>\n );\n}\n\n/**\n * Super Admin Debug Panel\n * \n * Shows debug information about the current user's permissions.\n * Only visible to super admins and in development mode.\n */\nexport function SuperAdminDebugPanel() {\n const { isSuperAdmin, isLoading } = useRBAC();\n\n // Only show in development or for super admins\n if (process.env.NODE_ENV !== 'development' && !isSuperAdmin) {\n return null;\n }\n\n return (\n <div className=\"super-admin-debug-panel\">\n <h4>Super Admin Debug Info</h4>\n <div className=\"debug-info\">\n <p><strong>Is Super Admin:</strong> {isSuperAdmin ? 'Yes' : 'No'}</p>\n <p><strong>Is Loading:</strong> {isLoading ? 'Yes' : 'No'}</p>\n <p><strong>Environment:</strong> {process.env.NODE_ENV}</p>\n </div>\n </div>\n );\n}\n\nexport default SuperAdminGuard;\n"],"mappings":"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","names":["jsx","jsxs","jsx","React","jsx","jsxs","React","useState","useEffect","error","useState","useEffect","jsx","jsxs"]}