@jmruthers/pace-core 0.2.6 → 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 -401
  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 -401
  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
@@ -8,11 +8,9 @@ The PACE Core DataTable is an enterprise-grade data table component built on Tan
8
8
 
9
9
  - **🚀 Performance Optimized** - Virtual scrolling, intelligent chunking, and automatic mode detection
10
10
  - **📊 Data Management** - Sorting, filtering, pagination, search, export/import
11
- - **🌳 Hierarchical Rows** - Parent/child row relationships with expand/collapse all and smart sorting ([Detailed Guide](./hierarchical-datatable.md))
12
11
  - **✏️ Inline Editing** - Row editing, creation, and deletion
13
12
  - **🎯 Actions** - Custom row actions and toolbar buttons
14
13
  - **📈 Grouping** - Data grouping with aggregation functions
15
- - **📏 Auto Column Sizing** - Automatic column width adjustment based on content
16
14
  - **🎨 Customizable** - Column visibility, responsive design, accessibility
17
15
  - **🔧 TypeScript** - Full TypeScript support with strict typing
18
16
 
@@ -57,8 +55,8 @@ const columns: DataTableColumn<User>[] = [
57
55
  cell: ({ row }) => (
58
56
  <span className={`px-2 py-1 rounded text-xs ${
59
57
  row.original.status === 'active'
60
- ? 'bg-main-100 text-main-800'
61
- : 'bg-acc-100 text-acc-800'
58
+ ? 'bg-green-100 text-green-800'
59
+ : 'bg-red-100 text-red-800'
62
60
  }`}>
63
61
  {row.original.status}
64
62
  </span>
@@ -84,7 +82,6 @@ function UserTable() {
84
82
  sorting: true,
85
83
  filtering: true,
86
84
  }}
87
- columnOrder={['name', 'email', 'role', 'status']} // Control column order
88
85
  // Performance and other settings can be configured via performance prop
89
86
  />
90
87
  );
@@ -144,22 +141,19 @@ The DataTable component has a comprehensive prop interface. Here are the key pro
144
141
  - `description?: string` - Table description
145
142
  - `variant?: 'default' | 'compact' | 'spacious'` - Visual variant
146
143
  - `className?: string` - Additional CSS classes
147
- - `columnOrder?: string[]` - **Column ordering** - Array of column IDs in desired order
148
144
 
149
145
  ### Event Handlers
150
146
  - `onEditRow?: (row: TData, data: Partial<TData>) => void` - Row edit handler
151
- - `onDeleteRow?: (row: TData) => void` - Row deletion handler (also used as fallback for bulk delete)
147
+ - `onDeleteRow?: (row: TData) => void` - Row deletion handler
152
148
  - `onCreateRow?: (data: Partial<TData>) => void` - Row creation handler
153
149
  - `onImport?: (data: TData[]) => void | Promise<void>` - Import handler
154
- - `onRowSelectionChange?: (selection: Record<string, boolean>) => void` - Row selection change handler
155
- - `onDeleteSelected?: (selectedRows: Record<string, boolean>) => void` - **Bulk delete handler** - Called when delete selected button is clicked
150
+ - `onDeleteSelected?: (selectedRows: Record<string, boolean>) => void` - Bulk delete handler
156
151
 
157
152
  ### Performance Props
158
153
  - `performance?: PerformanceConfig` - Performance optimization settings
159
154
  - `serverSide?: ServerSideConfig<TData>` - Server-side data fetching
160
155
  - `virtualHeight?: number` - Virtual scrolling height (default: 600)
161
156
  - `showPerformanceMetrics?: boolean` - Show performance metrics
162
- - `initialPageSize?: number` - Initial page size for pagination (default: 10)
163
157
 
164
158
  ### Feature-Specific Configuration
165
159
  - `bulkOperationsConfig?: BulkOperationsConfig` - Bulk operations config
@@ -171,30 +165,6 @@ The DataTable component has a comprehensive prop interface. Here are the key pro
171
165
 
172
166
  The DataTable component uses a unified `features` prop to control all table functionality. This provides a consistent and intuitive way to enable or disable features.
173
167
 
174
- ### DataTableFeatureConfig Properties
175
-
176
- | Property | Type | Default | Description |
177
- |----------|------|---------|-------------|
178
- | **Core Features** |
179
- | `search` | `boolean` | `false` | Enable global search functionality |
180
- | `pagination` | `boolean` | `false` | Enable pagination controls |
181
- | `sorting` | `boolean` | `false` | Enable column sorting |
182
- | `filtering` | `boolean` | `false` | Enable column filtering |
183
- | **Data Management** |
184
- | `import` | `boolean` | `false` | Enable data import functionality |
185
- | `export` | `boolean` | `false` | Enable data export functionality |
186
- | **Row Operations** |
187
- | `selection` | `boolean` | `false` | Enable row selection for bulk operations |
188
- | `creation` | `boolean` | `false` | Enable row creation |
189
- | `editing` | `boolean` | `false` | Enable row editing |
190
- | `deletion` | `boolean` | `false` | Enable row deletion |
191
- | `deleteSelected` | `boolean` | `false` | Enable bulk deletion of selected rows |
192
- | **Table Customization** |
193
- | `grouping` | `boolean` | `false` | Enable data grouping |
194
- | `columnVisibility` | `boolean` | `false` | Enable column visibility controls |
195
- | `columnReordering` | `boolean` | `false` | Enable column reordering |
196
- | `autoColumnSizing` | `boolean` | `false` | Enable automatic column width adjustment based on content |
197
-
198
168
  ### Basic Feature Configuration
199
169
 
200
170
  ```tsx
@@ -213,17 +183,25 @@ The DataTable component uses a unified `features` prop to control all table func
213
183
  export: true,
214
184
 
215
185
  // Row Operations
216
- selection: true, // Required for row selection
186
+ selection: true,
217
187
  creation: true,
218
188
  editing: true,
219
- deletion: true, // Required for delete functionality
220
- deleteSelected: true, // Required for delete selected button
189
+ deletion: true,
190
+ deleteSelected: true,
221
191
 
222
192
  // Table Customization
223
193
  grouping: true,
224
194
  columnVisibility: true,
225
195
  columnReordering: true,
226
- autoColumnSizing: true, // Enable automatic column width adjustment
196
+
197
+ // Performance
198
+ virtualization: true,
199
+ performanceMetrics: true,
200
+
201
+ // Advanced Features
202
+ inlineEditing: true,
203
+ bulkOperations: true,
204
+ rowActions: true,
227
205
  }}
228
206
  />
229
207
  ```
@@ -261,93 +239,17 @@ For a full-featured data management table:
261
239
  creation: true,
262
240
  editing: true,
263
241
  deletion: true,
264
- deleteSelected: true, // Enable delete selected functionality
265
242
  export: true,
266
243
  import: true,
267
244
  grouping: true,
268
245
  columnVisibility: true,
269
246
  bulkOperations: true,
270
247
  }}
271
- columnOrder={['select', 'name', 'email', 'role', 'status', 'actions']} // Custom column order
272
248
  onEditRow={handleEdit}
273
249
  onDeleteRow={handleDelete}
274
250
  onCreateRow={handleCreate}
275
251
  onImport={handleImport}
276
- onRowSelectionChange={handleSelectionChange}
277
252
  onDeleteSelected={handleBulkDelete}
278
- getRowId={(row) => row.id} // Important: Required for selection and delete operations
279
- />
280
- ```
281
-
282
- ## Auto Column Sizing
283
-
284
- The DataTable component includes automatic column width adjustment based on content, which helps optimize space usage and improve readability.
285
-
286
- ### How Auto-Sizing Works
287
-
288
- When `autoColumnSizing: true` is enabled:
289
-
290
- 1. **Content Analysis**: Analyzes both header text and data content to determine optimal widths
291
- 2. **Smart Calculation**: Uses character count estimation (8px per character + padding)
292
- 3. **Constraints**: Respects min-width (80px) and max-width (400px) limits
293
- 4. **Performance**: Only samples first 100 rows for large datasets
294
- 5. **Table Layout**: Switches from `tableLayout: 'fixed'` to `tableLayout: 'auto'`
295
-
296
- ### Benefits
297
-
298
- - **Better Space Utilization**: Columns automatically adjust to content width
299
- - **Improved Readability**: Long text gets more space, short text takes less space
300
- - **No Text Wrapping**: Prevents unnecessary text wrapping in narrow columns
301
- - **Consistent Layout**: Maintains proper spacing and alignment
302
-
303
- ### Enabling Auto-Sizing
304
-
305
- ```tsx
306
- <DataTable
307
- data={data}
308
- columns={columns}
309
- features={{
310
- search: true,
311
- pagination: true,
312
- sorting: true,
313
- autoColumnSizing: true, // Enable automatic column width adjustment
314
- }}
315
- />
316
- ```
317
-
318
- ### Auto-Sizing vs Fixed Widths
319
-
320
- **With Auto-Sizing (Recommended):**
321
- - Columns automatically adjust to content width
322
- - Long text gets more space, short text takes less space
323
- - Better space utilization
324
- - Improved readability
325
-
326
- **Without Auto-Sizing:**
327
- - All columns have equal width
328
- - Long text may wrap unnecessarily
329
- - Short columns have wasted space
330
- - Consistent but potentially inefficient layout
331
-
332
- ### Example: Content-Based Sizing
333
-
334
- ```tsx
335
- const data = [
336
- { id: '1', name: 'John', description: 'A short description' },
337
- { id: '2', name: 'Jane', description: 'A very long description that should make this column wider' },
338
- { id: '3', name: 'Bob', description: 'Medium length description' }
339
- ];
340
-
341
- const columns = [
342
- { accessorKey: 'name', header: 'Name' },
343
- { accessorKey: 'description', header: 'Description' }
344
- ];
345
-
346
- // With auto-sizing: Description column will be wider than Name column
347
- <DataTable
348
- data={data}
349
- columns={columns}
350
- features={{ autoColumnSizing: true }}
351
253
  />
352
254
  ```
353
255
 
@@ -459,275 +361,6 @@ const columns: DataTableColumn<User>[] = [
459
361
  ];
460
362
  ```
461
363
 
462
- ## Column Ordering
463
-
464
- The DataTable component supports custom column ordering through the `columnOrder` prop, allowing you to control the exact position of columns including selection and actions columns.
465
-
466
- ### Basic Column Ordering
467
-
468
- ```tsx
469
- <DataTable
470
- data={data}
471
- columns={columns}
472
- features={{
473
- selection: true,
474
- sorting: true,
475
- filtering: true,
476
- }}
477
- columnOrder={['select', 'name', 'email', 'role', 'status']}
478
- />
479
- ```
480
-
481
- ### Column Order Behavior
482
-
483
- #### When `columnOrder` is provided:
484
- - **Exact positioning**: Columns appear in the exact order specified
485
- - **Selection column**: Include `'select'` in the array to position the selection column
486
- - **Actions column**: Include `'actions'` in the array to position the actions column
487
- - **Data columns**: Use the column's `accessorKey` or `id` to reference data columns
488
-
489
- #### When `columnOrder` is not provided:
490
- - **Default behavior**: Selection column first (if enabled), then data columns, then actions column
491
- - **Automatic ordering**: Columns appear in the order they're defined in the `columns` array
492
-
493
- ### Selection Column Positioning
494
-
495
- The selection column can be positioned anywhere in the column order:
496
-
497
- ```tsx
498
- // Selection column first (default when not in columnOrder)
499
- <DataTable
500
- data={data}
501
- columns={columns}
502
- features={{ selection: true }}
503
- columnOrder={['select', 'name', 'email', 'role']}
504
- />
505
-
506
- // Selection column in the middle
507
- <DataTable
508
- data={data}
509
- columns={columns}
510
- features={{ selection: true }}
511
- columnOrder={['name', 'select', 'email', 'role']}
512
- />
513
-
514
- // Selection column last
515
- <DataTable
516
- data={data}
517
- columns={columns}
518
- features={{ selection: true }}
519
- columnOrder={['name', 'email', 'role', 'select']}
520
- />
521
-
522
- // Selection column not in columnOrder - defaults to first position
523
- <DataTable
524
- data={data}
525
- columns={columns}
526
- features={{ selection: true }}
527
- columnOrder={['name', 'email', 'role']} // selection will be first
528
- />
529
- ```
530
-
531
- ### Actions Column Positioning
532
-
533
- The actions column can also be positioned anywhere:
534
-
535
- ```tsx
536
- // Actions column last (default when not in columnOrder)
537
- <DataTable
538
- data={data}
539
- columns={columns}
540
- features={{ editing: true, deletion: true }}
541
- columnOrder={['name', 'email', 'role', 'actions']}
542
- />
543
-
544
- // Actions column first
545
- <DataTable
546
- data={data}
547
- columns={columns}
548
- features={{ editing: true, deletion: true }}
549
- columnOrder={['actions', 'name', 'email', 'role']}
550
- />
551
-
552
- // Actions column in the middle
553
- <DataTable
554
- data={data}
555
- columns={columns}
556
- features={{ editing: true, deletion: true }}
557
- columnOrder={['name', 'actions', 'email', 'role']}
558
- />
559
- ```
560
-
561
- ### Complete Column Ordering Example
562
-
563
- ```tsx
564
- interface User {
565
- id: string;
566
- name: string;
567
- email: string;
568
- role: string;
569
- status: 'active' | 'inactive';
570
- createdAt: Date;
571
- }
572
-
573
- const columns: DataTableColumn<User>[] = [
574
- {
575
- accessorKey: 'name',
576
- header: 'Name',
577
- sortable: true,
578
- },
579
- {
580
- accessorKey: 'email',
581
- header: 'Email',
582
- sortable: true,
583
- },
584
- {
585
- accessorKey: 'role',
586
- header: 'Role',
587
- sortable: true,
588
- enableGrouping: true,
589
- },
590
- {
591
- accessorKey: 'status',
592
- header: 'Status',
593
- sortable: true,
594
- },
595
- {
596
- accessorKey: 'createdAt',
597
- header: 'Created',
598
- sortable: true,
599
- },
600
- ];
601
-
602
- function UserTable() {
603
- return (
604
- <DataTable
605
- data={users}
606
- columns={columns}
607
- title="User Management"
608
- features={{
609
- selection: true,
610
- sorting: true,
611
- filtering: true,
612
- editing: true,
613
- deletion: true,
614
- }}
615
- // Custom column order: selection first, then name, email, role, status, actions, created last
616
- columnOrder={['select', 'name', 'email', 'role', 'status', 'actions', 'createdAt']}
617
- onEditRow={handleEdit}
618
- onDeleteRow={handleDelete}
619
- />
620
- );
621
- }
622
- ```
623
-
624
- ### Column Ordering with Hierarchical Data
625
-
626
- When using hierarchical data, column ordering works the same way:
627
-
628
- ```tsx
629
- <DataTable
630
- data={hierarchicalData}
631
- columns={columns}
632
- features={{
633
- hierarchical: true,
634
- selection: true,
635
- editing: true,
636
- deletion: true,
637
- }}
638
- hierarchical={{
639
- enabled: true,
640
- defaultExpanded: false,
641
- }}
642
- // Custom order for hierarchical table
643
- columnOrder={['select', 'name', 'ingredient', 'quantity', 'actions']}
644
- />
645
- ```
646
-
647
- ### Dynamic Column Ordering
648
-
649
- You can dynamically change column order based on user preferences or application state:
650
-
651
- ```tsx
652
- function DynamicUserTable() {
653
- const [columnOrder, setColumnOrder] = useState(['select', 'name', 'email', 'role', 'status']);
654
-
655
- const handleColumnReorder = (newOrder: string[]) => {
656
- setColumnOrder(newOrder);
657
- // Save to localStorage or user preferences
658
- localStorage.setItem('userTableColumnOrder', JSON.stringify(newOrder));
659
- };
660
-
661
- return (
662
- <DataTable
663
- data={users}
664
- columns={columns}
665
- features={{
666
- selection: true,
667
- sorting: true,
668
- columnReordering: true, // Enable drag-and-drop reordering
669
- }}
670
- columnOrder={columnOrder}
671
- onColumnOrderChange={handleColumnReorder}
672
- />
673
- );
674
- }
675
- ```
676
-
677
- ### Column Ordering Best Practices
678
-
679
- #### 1. **Consistent Ordering**
680
- ```tsx
681
- // ✅ Good - Consistent ordering across similar tables
682
- const userTableOrder = ['select', 'name', 'email', 'role', 'status', 'actions'];
683
- const productTableOrder = ['select', 'name', 'sku', 'price', 'status', 'actions'];
684
-
685
- // ❌ Avoid - Inconsistent ordering
686
- const userTableOrder = ['select', 'name', 'email', 'role', 'status', 'actions'];
687
- const productTableOrder = ['name', 'select', 'sku', 'actions', 'price', 'status'];
688
- ```
689
-
690
- #### 2. **Logical Grouping**
691
- ```tsx
692
- // ✅ Good - Logical grouping of related columns
693
- columnOrder={[
694
- 'select', // Selection controls
695
- 'name', 'email', // Identity information
696
- 'role', 'status', // Access and state
697
- 'createdAt', // Metadata
698
- 'actions' // Actions
699
- ]}
700
-
701
- // ❌ Avoid - Random column order
702
- columnOrder={['email', 'actions', 'name', 'select', 'status', 'role', 'createdAt']}
703
- ```
704
-
705
- #### 3. **User Experience Considerations**
706
- ```tsx
707
- // ✅ Good - Most important columns first
708
- columnOrder={['select', 'name', 'email', 'role', 'status', 'actions']}
709
-
710
- // ✅ Good - Actions column last (standard pattern)
711
- columnOrder={['select', 'name', 'email', 'role', 'status', 'actions']}
712
-
713
- // ❌ Avoid - Actions column in the middle (confusing)
714
- columnOrder={['select', 'name', 'actions', 'email', 'role', 'status']}
715
- ```
716
-
717
- #### 4. **Responsive Considerations**
718
- ```tsx
719
- // For mobile-first design, put most important columns first
720
- const mobileColumnOrder = ['select', 'name', 'status', 'actions'];
721
- const desktopColumnOrder = ['select', 'name', 'email', 'role', 'status', 'createdAt', 'actions'];
722
-
723
- <DataTable
724
- data={users}
725
- columns={columns}
726
- features={{ selection: true, sorting: true }}
727
- columnOrder={isMobile ? mobileColumnOrder : desktopColumnOrder}
728
- />
729
- ```
730
-
731
364
  ## Data Management
732
365
 
733
366
  ### Sorting
@@ -769,35 +402,6 @@ const desktopColumnOrder = ['select', 'name', 'email', 'role', 'status', 'create
769
402
  />
770
403
  ```
771
404
 
772
- #### Custom Initial Page Size
773
-
774
- ```tsx
775
- <DataTable
776
- data={data}
777
- columns={columns}
778
- features={{ pagination: true }}
779
- initialPageSize={25} // Start with 25 items per page instead of default 10
780
- />
781
- ```
782
-
783
- #### Page Size Validation
784
-
785
- The DataTable automatically validates the `initialPageSize` against available page size options:
786
-
787
- ```tsx
788
- <DataTable
789
- data={data}
790
- columns={columns}
791
- features={{ pagination: true }}
792
- initialPageSize={15} // Will fallback to closest valid option (10) with console warning
793
- />
794
- ```
795
-
796
- **Available page size options by mode:**
797
- - **Client mode**: `[10, 25, 50]` or `[10, 25, 50, 100]` (depending on data size)
798
- - **Hybrid mode**: `[50, 100, 250, 500]`
799
- - **Server mode**: `[25, 50, 100, 250]`
800
-
801
405
  ### Search
802
406
 
803
407
  ```tsx
@@ -835,24 +439,6 @@ Row actions are handled through the `actions` prop, which provides full flexibil
835
439
  icon: EyeIcon,
836
440
  variant: 'default',
837
441
  },
838
- {
839
- label: 'Edit',
840
- onClick: (row) => editUser(row.original.id),
841
- icon: EditIcon,
842
- variant: 'outline',
843
- },
844
- {
845
- label: 'Share',
846
- onClick: (row) => shareUser(row.original.id),
847
- icon: ShareIcon,
848
- variant: 'secondary',
849
- },
850
- {
851
- label: 'More Options',
852
- onClick: (row) => showMoreOptions(row.original.id),
853
- icon: MoreHorizontalIcon,
854
- variant: 'ghost',
855
- },
856
442
  {
857
443
  label: 'Archive',
858
444
  onClick: (row) => archiveUser(row.original.id),
@@ -878,155 +464,6 @@ Each action supports the following properties:
878
464
  - `showInEditMode?: boolean` - Show in edit mode (default: true)
879
465
  - `hideInViewMode?: boolean` - Hide in view mode (default: false)
880
466
 
881
- #### Action Variants Guide
882
-
883
- The DataTable supports 5 action variants, each designed for specific use cases:
884
-
885
- ```tsx
886
- const actions = [
887
- // DEFAULT - Primary actions (most important)
888
- {
889
- label: 'View Details',
890
- onClick: (row) => viewDetails(row.original.id),
891
- icon: EyeIcon,
892
- variant: 'default', // Solid background, primary color
893
- },
894
-
895
- // OUTLINE - Secondary actions (important but not primary)
896
- {
897
- label: 'Edit',
898
- onClick: (row) => editItem(row.original.id),
899
- icon: EditIcon,
900
- variant: 'outline', // Bordered, transparent background
901
- },
902
-
903
- // SECONDARY - Supporting actions (less prominent)
904
- {
905
- label: 'Share',
906
- onClick: (row) => shareItem(row.original.id),
907
- icon: ShareIcon,
908
- variant: 'secondary', // Muted background, subtle styling
909
- },
910
-
911
- // GHOST - Subtle actions (minimal visual impact)
912
- {
913
- label: 'More Options',
914
- onClick: (row) => showMoreOptions(row.original.id),
915
- icon: MoreHorizontalIcon,
916
- variant: 'ghost', // No background, minimal styling
917
- },
918
-
919
- // DESTRUCTIVE - Dangerous actions (require caution)
920
- {
921
- label: 'Delete',
922
- onClick: (row) => deleteItem(row.original.id),
923
- icon: TrashIcon,
924
- variant: 'destructive', // Red styling to indicate danger
925
- disabled: (row) => row.original.status === 'locked',
926
- },
927
- ];
928
- ```
929
-
930
- **Variant Usage Guidelines:**
931
-
932
- - **`default`**: Use for the most important action (e.g., "View Details", "Open")
933
- - **`outline`**: Use for important secondary actions (e.g., "Edit", "Download")
934
- - **`secondary`**: Use for supporting actions (e.g., "Share", "Copy", "Export")
935
- - **`ghost`**: Use for subtle actions (e.g., "More Options", "Settings")
936
- - **`destructive`**: Use for dangerous actions (e.g., "Delete", "Archive", "Remove")
937
-
938
- #### Hierarchical Actions
939
-
940
- When using hierarchical rows, you can define different action icons and labels for parent vs child rows:
941
-
942
- ```tsx
943
- <DataTable
944
- data={hierarchicalData}
945
- columns={columns}
946
- features={{
947
- hierarchical: true,
948
- editing: true,
949
- deletion: true,
950
- }}
951
- hierarchical={{
952
- enabled: true,
953
- defaultExpanded: false,
954
- }}
955
- actions={[
956
- {
957
- label: 'View Details',
958
- icon: EyeIcon,
959
- // Different icons for parent vs child rows
960
- parentIcon: EyeIcon,
961
- childIcon: InfoIcon,
962
- // Different labels for parent vs child rows
963
- parentLabel: 'View Recipe',
964
- childLabel: 'View Ingredient',
965
- onClick: (row) => {
966
- console.log('Viewing:', row.isParent ? 'Recipe' : 'Ingredient', row.name);
967
- },
968
- variant: 'default',
969
- },
970
- {
971
- label: 'Edit',
972
- icon: PencilIcon,
973
- parentIcon: SettingsIcon,
974
- childIcon: PencilIcon,
975
- parentLabel: 'Edit Recipe',
976
- childLabel: 'Edit Ingredient',
977
- onClick: (row) => {
978
- console.log('Editing:', row.isParent ? 'Recipe' : 'Ingredient', row.name);
979
- },
980
- variant: 'default',
981
- },
982
- {
983
- label: 'Copy Recipe',
984
- icon: CopyIcon,
985
- parentIcon: CopyIcon,
986
- parentLabel: 'Duplicate Recipe',
987
- onClick: (row) => {
988
- console.log('Copying recipe:', row.name);
989
- },
990
- variant: 'outline',
991
- // Only show for parent rows
992
- showForParent: true,
993
- },
994
- {
995
- label: 'Export',
996
- icon: DownloadIcon,
997
- childIcon: DownloadIcon,
998
- childLabel: 'Export Ingredient',
999
- onClick: (row) => {
1000
- console.log('Exporting ingredient:', row.item);
1001
- },
1002
- variant: 'ghost',
1003
- // Only show for child rows
1004
- showForChild: true,
1005
- },
1006
- ]}
1007
- />
1008
- ```
1009
-
1010
- ##### Hierarchical Action Properties
1011
-
1012
- When using hierarchical rows, actions support additional properties:
1013
-
1014
- - `showForParent?: boolean` - Only show this action for parent rows
1015
- - `showForChild?: boolean` - Only show this action for child rows
1016
- - `parentIcon?: ComponentType` - Icon to use for parent rows (overrides `icon`)
1017
- - `childIcon?: ComponentType` - Icon to use for child rows (overrides `icon`)
1018
- - `parentLabel?: string` - Label to use for parent rows (overrides `label`)
1019
- - `childLabel?: string` - Label to use for child rows (overrides `label`)
1020
-
1021
- ##### Action Visibility Logic
1022
-
1023
- The action visibility is determined by the following logic:
1024
-
1025
- 1. **Hierarchical filtering**: If `showForParent` is true, action only shows for parent rows
1026
- 2. **Hierarchical filtering**: If `showForChild` is true, action only shows for child rows
1027
- 3. **Standard filtering**: Uses `visible`, `showInEditMode`, `hideInViewMode` properties
1028
- 4. **Disabled state**: Uses `disabled` function to determine if action is disabled
1029
-
1030
467
  ### Toolbar Actions
1031
468
 
1032
469
  Toolbar actions are automatically generated based on the enabled features. Custom toolbar buttons are not directly supported in the current interface, but you can implement them outside the DataTable component:
@@ -1059,218 +496,11 @@ Toolbar actions are automatically generated based on the enabled features. Custo
1059
496
  </div>
1060
497
  ```
1061
498
 
1062
- ### Hierarchical Parent/Child Rows
1063
-
1064
- The DataTable supports hierarchical parent/child row relationships with built-in expand/collapse functionality, expand/collapse all controls, and proper column rendering for different row types.
1065
-
1066
- #### Data Structure
1067
-
1068
- Your data must conform to the `HierarchicalDataRow` interface:
1069
-
1070
- ```typescript
1071
- interface HierarchicalDataRow extends DataRecord {
1072
- /** Whether this row is a parent row */
1073
- isParent: boolean;
1074
- /** For child rows, references the parent row ID */
1075
- parentId?: string;
1076
- /** Unique identifier for this row */
1077
- id: string;
1078
- // ... your actual data properties
1079
- }
1080
- ```
1081
-
1082
- #### Configuration
1083
-
1084
- Enable hierarchical functionality through the `features` prop and configure it with the `hierarchical` prop:
1085
-
1086
- ```tsx
1087
- <DataTable
1088
- data={hierarchicalData}
1089
- columns={columns}
1090
- features={{
1091
- // ... other features
1092
- hierarchical: true, // Enable hierarchical functionality
1093
- }}
1094
- hierarchical={{
1095
- enabled: true,
1096
- defaultExpanded: false, // true = all expanded, false = all collapsed, array = specific IDs
1097
- onExpandedChange: (expandedIds) => console.log('Expanded:', expandedIds),
1098
- expandButton: CustomExpandButton, // Optional custom expand button
1099
- indentSize: 24, // Indentation for child rows in pixels
1100
- parentRowClassName: 'bg-main-50 font-medium', // Custom styling for parent rows
1101
- childRowClassName: 'bg-sec-25', // Custom styling for child rows
1102
- }}
1103
- ```
1104
-
1105
- **Default Collapsed State:**
1106
- To make parent rows collapsed by default (recommended for better UX), set `defaultExpanded: false`. This ensures users see only parent rows initially and must click to expand and view child rows.
1107
-
1108
- #### Column Configuration
1109
-
1110
- Configure how columns render for different row types:
1111
-
1112
- ```tsx
1113
- const columns: DataTableColumn<YourDataType>[] = [
1114
- {
1115
- accessorKey: 'code',
1116
- header: 'Code',
1117
- // Render differently for parent vs child rows
1118
- renderForParent: (row) => (
1119
- <div className="flex items-center gap-2">
1120
- <strong>{row.code}</strong>
1121
- </div>
1122
- ),
1123
- renderForChild: () => '', // Blank for child rows
1124
- hideForChild: true, // Hide this column for child rows
1125
- },
1126
- {
1127
- accessorKey: 'name',
1128
- header: 'Name',
1129
- renderForParent: (row) => <strong>{row.name}</strong>,
1130
- renderForChild: () => '', // Blank for child rows
1131
- hideForChild: true,
1132
- },
1133
- {
1134
- accessorKey: 'ingredient',
1135
- header: 'Ingredient',
1136
- renderForParent: () => '', // Blank for parent rows
1137
- renderForChild: (row) => <span className="ml-4">{row.ingredient}</span>,
1138
- hideForParent: true, // Hide this column for parent rows
1139
- },
1140
- ];
1141
- ```
1142
-
1143
- #### Column Properties
1144
-
1145
- - `renderForParent?: (row: TData) => React.ReactNode` - Custom renderer for parent rows
1146
- - `renderForChild?: (row: TData) => React.ReactNode` - Custom renderer for child rows
1147
- - `hideForParent?: boolean` - Hide this column for parent rows
1148
- - `hideForChild?: boolean` - Hide this column for child rows
1149
-
1150
- #### Expand/Collapse All Controls
1151
-
1152
- The DataTable automatically adds an expand/collapse all button in the header when hierarchical mode is enabled:
1153
-
1154
- **Features:**
1155
- - **Expand All Button (▶️)**: Expands all parent rows to show their children
1156
- - **Collapse All Button (🔽)**: Collapses all parent rows to hide their children
1157
- - **Smart State Detection**: Button automatically updates based on current expansion state
1158
- - **Accessibility**: Proper ARIA labels and keyboard navigation support
1159
-
1160
- **Usage:**
1161
- ```tsx
1162
- <DataTable
1163
- data={hierarchicalData}
1164
- columns={columns}
1165
- features={{ hierarchical: true }}
1166
- hierarchical={{
1167
- enabled: true,
1168
- defaultExpanded: false, // Start with all collapsed
1169
- onExpandedChange: (expandedIds) => {
1170
- console.log('Expanded rows:', expandedIds);
1171
- },
1172
- }}
1173
- />
1174
- ```
1175
-
1176
- **Button Behavior:**
1177
- - Shows ▶️ when some or all parent rows are collapsed
1178
- - Shows 🔽 when all parent rows are expanded
1179
- - Only appears when there are parent rows with children
1180
- - Positioned in the first column of the table header
1181
-
1182
- #### Hierarchical Sorting
1183
-
1184
- When hierarchical mode is enabled, sorting behavior is optimized to preserve the parent-child relationship structure:
1185
-
1186
- **Parent Row Sorting:**
1187
- - Parent rows maintain their original order and are not affected by sorting
1188
- - Only child rows within each parent group are sorted
1189
- - This prevents parent rows from being moved to unexpected positions
1190
-
1191
- **Child Row Sorting:**
1192
- - Child rows are sorted within their parent group only
1193
- - Sorting by a child-specific column (e.g., "Diet", "Ingredient") will sort children within each parent
1194
- - The parent row remains at the top of its group
1195
-
1196
- **Example:**
1197
- ```tsx
1198
- // When sorting by "Diet" column:
1199
- // ✅ Correct behavior:
1200
- // Parent: Caesar Salad
1201
- // ├─ Child: Dairy Free (Sour cream)
1202
- // ├─ Child: Egg Free (Mayonnaise)
1203
- // └─ Child: GF & Vegan (Lettuce)
1204
- // Parent: Beef Stir Fry
1205
- // ├─ Child: GF & Vegan (Vegetables)
1206
- // └─ Child: Halal (Beef)
1207
-
1208
- // ❌ Incorrect behavior (what we prevent):
1209
- // Child: Dairy Free (Sour cream)
1210
- // Child: Egg Free (Mayonnaise)
1211
- // Child: GF & Vegan (Lettuce)
1212
- // Child: GF & Vegan (Vegetables)
1213
- // Child: Halal (Beef)
1214
- // Parent: Caesar Salad (moved to end)
1215
- // Parent: Beef Stir Fry (moved to end)
1216
- ```
1217
-
1218
- **Sorting Configuration:**
1219
- - All existing sorting features work with hierarchical data
1220
- - Multi-column sorting is supported
1221
- - Server-side sorting is compatible
1222
- - Column-specific sorting behavior is preserved
1223
-
1224
- #### Example Use Case
1225
-
1226
- ```tsx
1227
- // Dishes and ingredients example
1228
- const dishData = [
1229
- // Parent rows (dishes)
1230
- { id: 'dish-1', isParent: true, code: 'D001', name: 'Caesar Salad', type: 'Salad' },
1231
- { id: 'dish-2', isParent: true, code: 'D002', name: 'Beef Stir Fry', type: 'Main Course' },
1232
-
1233
- // Child rows (ingredients) for Caesar Salad
1234
- { id: 'ing-1-1', isParent: false, parentId: 'dish-1', ingredient: 'Lettuce', quantity: '200g' },
1235
- { id: 'ing-1-2', isParent: false, parentId: 'dish-1', ingredient: 'Chicken', quantity: '150g' },
1236
-
1237
- // Child rows (ingredients) for Beef Stir Fry
1238
- { id: 'ing-2-1', isParent: false, parentId: 'dish-2', ingredient: 'Beef Strips', quantity: '250g' },
1239
- { id: 'ing-2-2', isParent: false, parentId: 'dish-2', ingredient: 'Mixed Vegetables', quantity: '200g' },
1240
- ];
1241
- ```
1242
-
1243
499
  ### Row Selection and Bulk Operations
1244
500
 
1245
501
  ```tsx
1246
502
  function SelectableUserTable() {
1247
- const [selectedRows, setSelectedRows] = useState<Record<string, boolean>>({});
1248
- const [data, setData] = useState<User[]>(initialData);
1249
-
1250
- const handleBulkDelete = (selectedRows: Record<string, boolean>) => {
1251
- // Get the selected row IDs
1252
- const selectedRowIds = Object.keys(selectedRows).filter(id => selectedRows[id]);
1253
-
1254
- // Get the actual data for selected rows
1255
- const selectedData = data.filter(row => {
1256
- const rowId = getRowId ? getRowId(row, data.indexOf(row)) : row.id;
1257
- return selectedRowIds.includes(rowId);
1258
- });
1259
-
1260
- // Perform your deletion logic
1261
- console.log('Deleting selected rows:', selectedData);
1262
-
1263
- // Update your data state
1264
- setData(prevData =>
1265
- prevData.filter(row => {
1266
- const rowId = getRowId ? getRowId(row, prevData.indexOf(row)) : row.id;
1267
- return !selectedRowIds.includes(rowId);
1268
- })
1269
- );
1270
-
1271
- // Clear selection after deletion
1272
- setSelectedRows({});
1273
- };
503
+ const [selectedRows, setSelectedRows] = useState<RowSelectionState>({});
1274
504
 
1275
505
  return (
1276
506
  <DataTable
@@ -1278,44 +508,23 @@ function SelectableUserTable() {
1278
508
  columns={columns}
1279
509
  features={{
1280
510
  selection: true,
1281
- deletion: true, // Required for delete functionality
1282
- deleteSelected: true, // Enables the delete selected button
1283
511
  bulkOperations: true,
512
+ deleteSelected: true,
1284
513
  }}
514
+ rowSelection={selectedRows}
1285
515
  onRowSelectionChange={setSelectedRows}
1286
516
  onDeleteSelected={handleBulkDelete}
1287
- getRowId={(row) => row.id} // Important: provide getRowId for proper row identification
1288
- />
1289
- );
1290
- }
1291
- ```
1292
-
1293
- #### Alternative: Using Individual onDeleteRow (Fallback)
1294
-
1295
- If you don't provide `onDeleteSelected`, the DataTable will automatically fall back to calling `onDeleteRow` for each selected row:
1296
-
1297
- ```tsx
1298
- function SelectableUserTable() {
1299
- const [data, setData] = useState<User[]>(initialData);
1300
-
1301
- const handleDeleteRow = (row: User) => {
1302
- console.log('Deleting row:', row);
1303
-
1304
- // Update your data state
1305
- setData(prevData => prevData.filter(item => item.id !== row.id));
1306
- };
1307
-
1308
- return (
1309
- <DataTable
1310
- data={data}
1311
- columns={columns}
1312
- features={{
1313
- selection: true,
1314
- deletion: true,
1315
- deleteSelected: true,
517
+ bulkOperationsConfig={{
518
+ enabled: true,
519
+ operations: [
520
+ {
521
+ label: 'Delete Selected',
522
+ action: 'delete',
523
+ variant: 'destructive',
524
+ requiresConfirmation: true,
525
+ },
526
+ ],
1316
527
  }}
1317
- onDeleteRow={handleDeleteRow} // This will be called for each selected row
1318
- getRowId={(row) => row.id}
1319
528
  />
1320
529
  );
1321
530
  }
@@ -1471,191 +680,8 @@ function SecureUserTable() {
1471
680
  }
1472
681
  ```
1473
682
 
1474
- ## Practical Examples
1475
-
1476
- ### Custom Page Size Configuration
1477
-
1478
- Here's a complete example showing how to configure a DataTable with custom initial page size:
1479
-
1480
- ```tsx
1481
- import { DataTable, type DataTableColumn } from '@jmruthers/pace-core';
1482
-
1483
- interface User {
1484
- id: string;
1485
- name: string;
1486
- email: string;
1487
- role: string;
1488
- status: 'active' | 'inactive';
1489
- }
1490
-
1491
- const columns: DataTableColumn<User>[] = [
1492
- {
1493
- accessorKey: 'name',
1494
- header: 'Name',
1495
- sortable: true,
1496
- searchable: true,
1497
- },
1498
- {
1499
- accessorKey: 'email',
1500
- header: 'Email',
1501
- sortable: true,
1502
- searchable: true,
1503
- },
1504
- {
1505
- accessorKey: 'role',
1506
- header: 'Role',
1507
- sortable: true,
1508
- enableGrouping: true,
1509
- },
1510
- {
1511
- accessorKey: 'status',
1512
- header: 'Status',
1513
- sortable: true,
1514
- cell: ({ row }) => (
1515
- <span className={`px-2 py-1 rounded text-xs ${
1516
- row.original.status === 'active'
1517
- ? 'bg-main-100 text-main-800'
1518
- : 'bg-acc-100 text-acc-800'
1519
- }`}>
1520
- {row.original.status}
1521
- </span>
1522
- ),
1523
- },
1524
- ];
1525
-
1526
- function UserManagementTable() {
1527
- const [users, setUsers] = useState<User[]>([]);
1528
- const [loading, setLoading] = useState(true);
1529
-
1530
- useEffect(() => {
1531
- // Load users data
1532
- loadUsers().then(setUsers).finally(() => setLoading(false));
1533
- }, []);
1534
-
1535
- return (
1536
- <DataTable
1537
- data={users}
1538
- columns={columns}
1539
- title="User Management"
1540
- description="Manage system users with custom page size"
1541
- features={{
1542
- search: true,
1543
- pagination: true,
1544
- sorting: true,
1545
- filtering: true,
1546
- selection: true,
1547
- creation: true,
1548
- editing: true,
1549
- deletion: true,
1550
- deleteSelected: true,
1551
- export: true,
1552
- import: true,
1553
- grouping: true,
1554
- columnVisibility: true,
1555
- columnReordering: true,
1556
- autoColumnSizing: true,
1557
- }}
1558
- initialPageSize={25} // Start with 25 users per page
1559
- isLoading={loading}
1560
- onEditRow={(row, data) => {
1561
- console.log('Editing user:', row.id, data);
1562
- // Handle user edit
1563
- }}
1564
- onDeleteRow={(row) => {
1565
- console.log('Deleting user:', row.id);
1566
- // Handle user deletion
1567
- }}
1568
- onCreateRow={(data) => {
1569
- console.log('Creating user:', data);
1570
- // Handle user creation
1571
- }}
1572
- onImport={(data) => {
1573
- console.log('Importing users:', data);
1574
- // Handle user import
1575
- }}
1576
- onRowSelectionChange={(selection) => {
1577
- console.log('Selection changed:', selection);
1578
- // Handle selection changes
1579
- }}
1580
- onDeleteSelected={(selectedRows) => {
1581
- console.log('Bulk deleting users:', selectedRows);
1582
- // Handle bulk deletion
1583
- }}
1584
- />
1585
- );
1586
- }
1587
- ```
1588
-
1589
- ### Page Size Validation Example
1590
-
1591
- ```tsx
1592
- // This will show a console warning and use the closest valid option
1593
- <DataTable
1594
- data={largeDataset}
1595
- columns={columns}
1596
- features={{ pagination: true }}
1597
- initialPageSize={15} // Invalid - will fallback to 10 with warning
1598
- paginationMode="client" // Uses [10, 25, 50] options
1599
- />
1600
-
1601
- // This will work correctly
1602
- <DataTable
1603
- data={largeDataset}
1604
- columns={columns}
1605
- features={{ pagination: true }}
1606
- initialPageSize={25} // Valid option
1607
- paginationMode="client"
1608
- />
1609
- ```
1610
-
1611
683
  ## Best Practices
1612
684
 
1613
- ### Data Processing Best Practices
1614
- - **Stable Data References**: Ensure your data processing doesn't create new object references on every render
1615
- - **Memoization**: Use `useMemo` with proper dependency arrays to prevent unnecessary re-computations
1616
- - **Avoid Complex Transformations in useMemo**: Move complex data transformations to the backend or data fetching layer when possible
1617
- - **Data Comparison**: Use shallow comparison to detect actual data changes before updating state
1618
-
1619
- #### ✅ Good Data Processing Patterns
1620
- ```tsx
1621
- // Simple, stable data processing
1622
- const processedData = useMemo(() => {
1623
- if (!data || data.length === 0) return [];
1624
- return data; // Direct usage, no transformations
1625
- }, [data]);
1626
-
1627
- // Complex processing with stable references
1628
- const processedData = useMemo(() => {
1629
- if (!data || data.length === 0) return [];
1630
-
1631
- // Use stable references and avoid creating new objects unnecessarily
1632
- return data.map(item => ({
1633
- ...item,
1634
- // Simple transformations only
1635
- displayName: item.firstName + ' ' + item.lastName,
1636
- }));
1637
- }, [data]); // Single dependency
1638
- ```
1639
-
1640
- #### ❌ Avoid These Patterns
1641
- ```tsx
1642
- // This can cause infinite loops
1643
- const processedData = useMemo(() => {
1644
- return data.map(item => ({
1645
- ...item,
1646
- // Complex transformations that create new objects
1647
- computed_field: relatedData?.find(rel => rel.id === item.relation_id)?.name || 'Unknown',
1648
- formatted_date: item.date ? format(new Date(item.date), 'MMM dd, yyyy') : 'No date',
1649
- }));
1650
- }, [data, relatedData]); // Multiple dependencies with complex processing
1651
- ```
1652
-
1653
- #### 🔧 Recommended Solutions for Complex Data
1654
- 1. **Backend Processing**: Move complex transformations to your API layer
1655
- 2. **Supabase Relations**: Use database relations instead of client-side lookups
1656
- 3. **Separate Hooks**: Create dedicated hooks for data processing
1657
- 4. **Stable References**: Use `useCallback` and `useMemo` with proper dependencies
1658
-
1659
685
  ### 1. Use the Features Configuration Properly
1660
686
 
1661
687
  ```tsx
@@ -1871,14 +897,6 @@ const columns: DataTableColumn<User>[] = [
1871
897
  - Check that required event handlers are provided (e.g., `onEditRow` for editing)
1872
898
  - Verify that the feature configuration matches your use case
1873
899
 
1874
- #### 7. Delete selected rows not working
1875
- - **Check feature configuration**: Ensure `features={{ selection: true, deletion: true, deleteSelected: true }}`
1876
- - **Provide onDeleteSelected callback**: Implement the callback to handle bulk deletion
1877
- - **Verify getRowId function**: Ensure you provide a `getRowId` function that returns unique IDs
1878
- - **Check button visibility**: The delete button only appears when all three features are enabled and rows are selected
1879
- - **Debug selection state**: Add console logs to verify `onRowSelectionChange` is being called with correct data
1880
- - **Fallback option**: If you don't provide `onDeleteSelected`, the table will fall back to calling `onDeleteRow` for each selected row
1881
-
1882
900
  ### Debug Mode
1883
901
 
1884
902
  Enable debug logging for DataTable issues: