@jmruthers/pace-core 0.2.7 → 0.5.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 (541) hide show
  1. package/dist/{DataTable-EEUDXPE5.js → DataTable-GX3XERFJ.js} +8 -4
  2. package/dist/{DataTable-C1AEm9Cx.d.ts → DataTable-ltTFXHS3.d.ts} +3 -1
  3. package/dist/{chunk-VYG4AXYW.js → chunk-5EL3KHOQ.js} +2 -2
  4. package/dist/{chunk-ETEJVKYK.js → chunk-6CR3MRZN.js} +1426 -62
  5. package/dist/chunk-6CR3MRZN.js.map +1 -0
  6. package/dist/chunk-AUE24LVR.js +268 -0
  7. package/dist/chunk-AUE24LVR.js.map +1 -0
  8. package/dist/chunk-COBPIXXQ.js +379 -0
  9. package/dist/chunk-COBPIXXQ.js.map +1 -0
  10. package/dist/{chunk-EWKPTNPO.js → chunk-GSNM5D6H.js} +388 -86
  11. package/dist/chunk-GSNM5D6H.js.map +1 -0
  12. package/dist/{chunk-2V3Y6YBC.js → chunk-OEGRKULD.js} +1 -42
  13. package/dist/chunk-OEGRKULD.js.map +1 -0
  14. package/dist/chunk-OYRY44Q2.js +62 -0
  15. package/dist/chunk-OYRY44Q2.js.map +1 -0
  16. package/dist/{chunk-RRUYHORU.js → chunk-T3XIA4AJ.js} +297 -433
  17. package/dist/chunk-T3XIA4AJ.js.map +1 -0
  18. package/dist/{chunk-HEMJ4SUJ.js → chunk-TGDCLPP2.js} +11 -7
  19. package/dist/{chunk-HEMJ4SUJ.js.map → chunk-TGDCLPP2.js.map} +1 -1
  20. package/dist/{chunk-HNDFPXUU.js → chunk-U6JDHVC2.js} +6 -4
  21. package/dist/{chunk-HNDFPXUU.js.map → chunk-U6JDHVC2.js.map} +1 -1
  22. package/dist/{chunk-TIVL4UQ7.js → chunk-XJK2J4N6.js} +6 -4
  23. package/dist/{chunk-TIVL4UQ7.js.map → chunk-XJK2J4N6.js.map} +1 -1
  24. package/dist/components.d.ts +2 -2
  25. package/dist/components.js +21 -20
  26. package/dist/components.js.map +1 -1
  27. package/dist/hooks.d.ts +1 -1
  28. package/dist/hooks.js +7 -7
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +26 -25
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers.js +8 -7
  33. package/dist/rbac/index.d.ts +806 -806
  34. package/dist/rbac/index.js +937 -1179
  35. package/dist/rbac/index.js.map +1 -1
  36. package/dist/{types-DiRQsGJs.d.ts → types-BRDU7N6w.d.ts} +12 -1
  37. package/dist/utils.d.ts +2 -2
  38. package/dist/utils.js +6 -6
  39. package/docs/api/classes/ErrorBoundary.md +1 -1
  40. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  41. package/docs/api/interfaces/AggregateConfig.md +4 -4
  42. package/docs/api/interfaces/ButtonProps.md +1 -1
  43. package/docs/api/interfaces/CardProps.md +1 -1
  44. package/docs/api/interfaces/ColorPalette.md +1 -1
  45. package/docs/api/interfaces/ColorShade.md +1 -1
  46. package/docs/api/interfaces/DataTableAction.md +21 -8
  47. package/docs/api/interfaces/DataTableColumn.md +1 -1
  48. package/docs/api/interfaces/DataTableProps.md +46 -33
  49. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  50. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  51. package/docs/api/interfaces/EventContextType.md +1 -1
  52. package/docs/api/interfaces/EventLogoProps.md +1 -1
  53. package/docs/api/interfaces/EventProviderProps.md +1 -1
  54. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  55. package/docs/api/interfaces/FileUploadProps.md +1 -1
  56. package/docs/api/interfaces/FooterProps.md +1 -1
  57. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  58. package/docs/api/interfaces/InputProps.md +1 -1
  59. package/docs/api/interfaces/LabelProps.md +1 -1
  60. package/docs/api/interfaces/LoginFormProps.md +1 -1
  61. package/docs/api/interfaces/NavigationItem.md +1 -1
  62. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  63. package/docs/api/interfaces/Organisation.md +1 -1
  64. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  65. package/docs/api/interfaces/OrganisationMembership.md +2 -2
  66. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  67. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  68. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  69. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  70. package/docs/api/interfaces/PaletteData.md +1 -1
  71. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  72. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  73. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  74. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  75. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  76. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  77. package/docs/api/interfaces/StorageConfig.md +1 -1
  78. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  79. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  80. package/docs/api/interfaces/StorageListOptions.md +1 -1
  81. package/docs/api/interfaces/StorageListResult.md +1 -1
  82. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  83. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  84. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  85. package/docs/api/interfaces/StyleImport.md +1 -1
  86. package/docs/api/interfaces/ToastActionElement.md +1 -1
  87. package/docs/api/interfaces/ToastProps.md +1 -1
  88. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  89. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  90. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  91. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  92. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  93. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  94. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  95. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  96. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  97. package/docs/api/interfaces/UserEventAccess.md +1 -1
  98. package/docs/api/interfaces/UserMenuProps.md +1 -1
  99. package/docs/api/interfaces/UserProfile.md +1 -1
  100. package/docs/api/modules.md +3 -3
  101. package/package.json +5 -2
  102. package/src/__tests__/REBUILD_PLAN.md +223 -0
  103. package/src/__tests__/TESTING_GUIDELINES.md +341 -0
  104. package/src/__tests__/fixtures/mocks.ts +93 -0
  105. package/src/__tests__/helpers/component-test-utils.tsx +145 -0
  106. package/src/__tests__/helpers/test-utils.tsx +117 -0
  107. package/src/__tests__/integration/UserProfile.test.tsx +128 -0
  108. package/src/__tests__/setup.ts +37 -225
  109. package/src/__tests__/templates/component.test.template.tsx +97 -75
  110. package/src/__tests__/templates/hook.test.template.ts +173 -0
  111. package/src/__tests__/types/test.types.ts +106 -0
  112. package/src/components/Alert/Alert.test.tsx +496 -0
  113. package/src/components/Avatar/Avatar.test.tsx +484 -0
  114. package/src/components/Button/Button.test.tsx +662 -0
  115. package/src/components/Card/Card.test.tsx +593 -0
  116. package/src/components/Checkbox/Checkbox.test.tsx +461 -0
  117. package/src/components/DataTable/DataTable.tsx +9 -1
  118. package/src/components/DataTable/components/AccessDeniedPage.tsx +168 -0
  119. package/src/components/DataTable/components/ActionButtons.tsx +18 -1
  120. package/src/components/DataTable/components/DataTableCore.tsx +97 -11
  121. package/src/components/DataTable/components/DataTableToolbar.tsx +22 -10
  122. package/src/components/DataTable/components/UnifiedTableBody.tsx +33 -4
  123. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +1 -0
  124. package/src/components/DataTable/examples/HierarchicalExample.tsx +3 -0
  125. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +3 -0
  126. package/src/components/DataTable/examples/PerformanceExample.tsx +3 -0
  127. package/src/components/DataTable/types.ts +39 -1
  128. package/src/components/Dialog/Dialog.test.tsx +1139 -0
  129. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +752 -0
  130. package/src/components/FileUpload/FileUpload.test.tsx +665 -0
  131. package/src/hooks/useCounter.test.ts +135 -0
  132. package/src/rbac/index.ts +3 -3
  133. package/dist/chunk-2V3Y6YBC.js.map +0 -1
  134. package/dist/chunk-BEZRLNK3.js +0 -1744
  135. package/dist/chunk-BEZRLNK3.js.map +0 -1
  136. package/dist/chunk-ETEJVKYK.js.map +0 -1
  137. package/dist/chunk-EWKPTNPO.js.map +0 -1
  138. package/dist/chunk-OHXGNT3K.js +0 -21
  139. package/dist/chunk-OHXGNT3K.js.map +0 -1
  140. package/dist/chunk-RRUYHORU.js.map +0 -1
  141. package/src/__tests__/README.md +0 -404
  142. package/src/__tests__/debug-provider.unit.test.tsx +0 -67
  143. package/src/__tests__/e2e/workflows.test.tsx +0 -373
  144. package/src/__tests__/hybridPermissions.unit.test.tsx +0 -474
  145. package/src/__tests__/index.integration.test.ts +0 -491
  146. package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +0 -47
  147. package/src/__tests__/mocks/MockAuthProvider.tsx +0 -63
  148. package/src/__tests__/mocks/enhancedSupabaseMock.ts +0 -252
  149. package/src/__tests__/mocks/index.test.ts +0 -23
  150. package/src/__tests__/mocks/index.ts +0 -16
  151. package/src/__tests__/mocks/mockAuth.ts +0 -155
  152. package/src/__tests__/mocks/mockSupabase.ts +0 -83
  153. package/src/__tests__/mocks/mockSupabaseClient.ts +0 -63
  154. package/src/__tests__/mocks/providers.tsx +0 -22
  155. package/src/__tests__/patterns/__tests__/testPatterns.test.ts +0 -394
  156. package/src/__tests__/patterns/testPatterns.ts +0 -124
  157. package/src/__tests__/performance/componentPerformance.performance.test.ts +0 -27
  158. package/src/__tests__/performance/index.ts +0 -24
  159. package/src/__tests__/performance/performanceValidation.performance.test.ts +0 -15
  160. package/src/__tests__/security/security.unit.test.tsx +0 -7
  161. package/src/__tests__/security/securityValidation.security.test.tsx +0 -153
  162. package/src/__tests__/setupTests.d.ts +0 -1
  163. package/src/__tests__/shared/componentTestUtils.tsx +0 -475
  164. package/src/__tests__/shared/errorHandlingTestUtils.ts +0 -107
  165. package/src/__tests__/shared/index.ts +0 -81
  166. package/src/__tests__/shared/integrationTestUtils.tsx +0 -375
  167. package/src/__tests__/shared/performanceTestUtils.tsx +0 -476
  168. package/src/__tests__/shared/testUtils.optimized.tsx +0 -685
  169. package/src/__tests__/simple.test.tsx +0 -20
  170. package/src/__tests__/test-utils/dataFactories.ts +0 -60
  171. package/src/__tests__/test-utils/index.ts +0 -6
  172. package/src/__tests__/typeSafety.unit.test.ts +0 -65
  173. package/src/__tests__/unifiedAuth.unit.test.tsx +0 -151
  174. package/src/__tests__/utils/accessibilityHelpers.ts +0 -254
  175. package/src/__tests__/utils/assertions.ts +0 -50
  176. package/src/__tests__/utils/deterministicHelpers.ts +0 -31
  177. package/src/__tests__/utils/edgeCaseConfig.test.ts +0 -75
  178. package/src/__tests__/utils/edgeCaseConfig.ts +0 -98
  179. package/src/__tests__/utils/mockHelpers.ts +0 -149
  180. package/src/__tests__/utils/mockLoader.ts +0 -101
  181. package/src/__tests__/utils/performanceHelpers.ts +0 -55
  182. package/src/__tests__/utils/performanceTestHelpers.ts +0 -68
  183. package/src/__tests__/utils/testDataFactories.ts +0 -28
  184. package/src/__tests__/utils/testIsolation.ts +0 -67
  185. package/src/__tests__/utils/visualTestHelpers.ts +0 -20
  186. package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +0 -68
  187. package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +0 -14
  188. package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +0 -217
  189. package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +0 -24
  190. package/src/__tests__/visual/componentSnapshots.visual.test.tsx +0 -33
  191. package/src/__tests__/visual/componentVisuals.visual.test.tsx +0 -12
  192. package/src/__tests__/visual/visualRegression.visual.test.tsx +0 -20
  193. package/src/components/Alert/__tests__/Alert.unit.test.tsx +0 -381
  194. package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +0 -232
  195. package/src/components/Button/__tests__/Button.accessibility.test.tsx +0 -131
  196. package/src/components/Button/__tests__/Button.comprehensive.test.tsx +0 -721
  197. package/src/components/Button/__tests__/Button.unit.test.tsx +0 -189
  198. package/src/components/Button/__tests__/EventSelector.integration.test.tsx +0 -285
  199. package/src/components/Card/__tests__/Card.accessibility.test.tsx +0 -394
  200. package/src/components/Card/__tests__/Card.comprehensive.test.tsx +0 -599
  201. package/src/components/Card/__tests__/Card.integration.test.tsx +0 -673
  202. package/src/components/Card/__tests__/Card.performance.test.tsx +0 -546
  203. package/src/components/Card/__tests__/Card.unit.test.tsx +0 -330
  204. package/src/components/Card/__tests__/Card.visual.test.tsx +0 -599
  205. package/src/components/Card/__tests__/README.md +0 -211
  206. package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +0 -520
  207. package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +0 -251
  208. package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +0 -680
  209. package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +0 -323
  210. package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +0 -716
  211. package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +0 -589
  212. package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +0 -316
  213. package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +0 -546
  214. package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +0 -386
  215. package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +0 -338
  216. package/src/components/DataTable/__tests__/DataTable.sorting.test.tsx +0 -321
  217. package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +0 -320
  218. package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +0 -583
  219. package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +0 -711
  220. package/src/components/DataTable/__tests__/performance-regression.test.tsx +0 -777
  221. package/src/components/DataTable/__tests__/performance.test.tsx +0 -365
  222. package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +0 -150
  223. package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -224
  224. package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +0 -244
  225. package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +0 -629
  226. package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +0 -470
  227. package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +0 -160
  228. package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +0 -251
  229. package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +0 -171
  230. package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +0 -290
  231. package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +0 -147
  232. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +0 -182
  233. package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +0 -123
  234. package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +0 -660
  235. package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +0 -256
  236. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -498
  237. package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +0 -112
  238. package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +0 -133
  239. package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +0 -172
  240. package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +0 -222
  241. package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +0 -780
  242. package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +0 -65
  243. package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +0 -634
  244. package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +0 -48
  245. package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +0 -541
  246. package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +0 -228
  247. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +0 -568
  248. package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +0 -405
  249. package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +0 -445
  250. package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +0 -288
  251. package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +0 -623
  252. package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +0 -431
  253. package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +0 -433
  254. package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +0 -422
  255. package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +0 -207
  256. package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +0 -278
  257. package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +0 -281
  258. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +0 -407
  259. package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +0 -679
  260. package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +0 -267
  261. package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +0 -467
  262. package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +0 -380
  263. package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +0 -233
  264. package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +0 -414
  265. package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +0 -521
  266. package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +0 -157
  267. package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +0 -538
  268. package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +0 -1373
  269. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -151
  270. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  271. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +0 -517
  272. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +0 -572
  273. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +0 -579
  274. package/src/components/EventSelector/__tests__/EventSelector.test.tsx +0 -528
  275. package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +0 -992
  276. package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +0 -927
  277. package/src/components/FileUpload/__tests__/FileUpload.test.tsx +0 -855
  278. package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +0 -1311
  279. package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +0 -937
  280. package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +0 -359
  281. package/src/components/Footer/__tests__/Footer.integration.test.tsx +0 -353
  282. package/src/components/Footer/__tests__/Footer.performance.test.tsx +0 -309
  283. package/src/components/Footer/__tests__/Footer.unit.test.tsx +0 -309
  284. package/src/components/Footer/__tests__/Footer.visual.test.tsx +0 -335
  285. package/src/components/Form/__tests__/Form.accessibility.test.tsx +0 -820
  286. package/src/components/Form/__tests__/Form.unit.test.tsx +0 -305
  287. package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +0 -285
  288. package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +0 -241
  289. package/src/components/Header/__tests__/Header.accessibility.test.tsx +0 -382
  290. package/src/components/Header/__tests__/Header.comprehensive.test.tsx +0 -509
  291. package/src/components/Header/__tests__/Header.unit.test.tsx +0 -335
  292. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +0 -196
  293. package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +0 -224
  294. package/src/components/Input/__tests__/Input.accessibility.test.tsx +0 -632
  295. package/src/components/Input/__tests__/Input.unit.test.tsx +0 -1121
  296. package/src/components/Label/__tests__/Label.accessibility.test.tsx +0 -239
  297. package/src/components/Label/__tests__/Label.unit.test.tsx +0 -331
  298. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +0 -116
  299. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +0 -144
  300. package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +0 -201
  301. package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +0 -119
  302. package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +0 -378
  303. package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +0 -768
  304. package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +0 -576
  305. package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +0 -585
  306. package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +0 -783
  307. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +0 -810
  308. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +0 -494
  309. package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +0 -331
  310. package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +0 -347
  311. package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +0 -584
  312. package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +0 -664
  313. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -288
  314. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -893
  315. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +0 -629
  316. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -782
  317. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -904
  318. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +0 -463
  319. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +0 -586
  320. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +0 -533
  321. package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +0 -408
  322. package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +0 -561
  323. package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +0 -304
  324. package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +0 -20
  325. package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +0 -523
  326. package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +0 -29
  327. package/src/components/Print/__tests__/Print.comprehensive.test.tsx +0 -331
  328. package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +0 -429
  329. package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +0 -277
  330. package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +0 -264
  331. package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +0 -233
  332. package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +0 -284
  333. package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +0 -214
  334. package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +0 -264
  335. package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +0 -361
  336. package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +0 -314
  337. package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +0 -362
  338. package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +0 -500
  339. package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +0 -321
  340. package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +0 -335
  341. package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +0 -340
  342. package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +0 -340
  343. package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +0 -261
  344. package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +0 -338
  345. package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +0 -338
  346. package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +0 -309
  347. package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +0 -202
  348. package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +0 -238
  349. package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +0 -263
  350. package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +0 -239
  351. package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +0 -235
  352. package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +0 -385
  353. package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +0 -373
  354. package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +0 -390
  355. package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +0 -321
  356. package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +0 -334
  357. package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +0 -351
  358. package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +0 -240
  359. package/src/components/Progress/__tests__/Progress.unit.test.tsx +0 -242
  360. package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +0 -761
  361. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +0 -228
  362. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -228
  363. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -459
  364. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -362
  365. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -522
  366. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -599
  367. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -513
  368. package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +0 -683
  369. package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +0 -573
  370. package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +0 -467
  371. package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +0 -475
  372. package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +0 -569
  373. package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +0 -352
  374. package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +0 -128
  375. package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +0 -657
  376. package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +0 -437
  377. package/src/components/Select/__tests__/Select.accessibility.test.tsx +0 -1202
  378. package/src/components/Select/__tests__/Select.actual.test.tsx +0 -774
  379. package/src/components/Select/__tests__/Select.comprehensive.test.tsx +0 -837
  380. package/src/components/Select/__tests__/Select.enhanced.test.tsx +0 -1101
  381. package/src/components/Select/__tests__/Select.integration.test.tsx +0 -772
  382. package/src/components/Select/__tests__/Select.performance.test.tsx +0 -695
  383. package/src/components/Select/__tests__/Select.real-world.test.tsx +0 -1046
  384. package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +0 -968
  385. package/src/components/Select/__tests__/Select.unit.test.tsx +0 -647
  386. package/src/components/Select/__tests__/Select.utils.test.tsx +0 -890
  387. package/src/components/Table/__tests__/Table.accessibility.test.tsx +0 -233
  388. package/src/components/Table/__tests__/Table.unit.test.tsx +0 -235
  389. package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +0 -238
  390. package/src/components/Toast/__tests__/Toast.integration.test.tsx +0 -699
  391. package/src/components/Toast/__tests__/Toast.unit.test.tsx +0 -750
  392. package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +0 -121
  393. package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +0 -185
  394. package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +0 -139
  395. package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +0 -188
  396. package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +0 -458
  397. package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +0 -524
  398. package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +0 -455
  399. package/src/components/__tests__/SuperAdminGuard.test.tsx +0 -456
  400. package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +0 -456
  401. package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +0 -360
  402. package/src/hooks/__tests__/hooks.integration.test.tsx +0 -575
  403. package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -115
  404. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -133
  405. package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
  406. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -293
  407. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -385
  408. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -286
  409. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -838
  410. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -627
  411. package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -911
  412. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -537
  413. package/src/hooks/__tests__/useToast.unit.test.tsx +0 -62
  414. package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
  415. package/src/hooks/public/__tests__/usePublicEvent.test.tsx +0 -397
  416. package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +0 -690
  417. package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +0 -449
  418. package/src/providers/__tests__/EventProvider.unit.test.tsx +0 -768
  419. package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +0 -116
  420. package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +0 -1312
  421. package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +0 -601
  422. package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +0 -683
  423. package/src/providers/__tests__/index.unit.test.ts +0 -78
  424. package/src/rbac/__tests__/PagePermissionGuard.test.tsx +0 -673
  425. package/src/rbac/__tests__/README.md +0 -170
  426. package/src/rbac/__tests__/RoleBasedRouter.test.tsx +0 -709
  427. package/src/rbac/__tests__/TestContext.tsx +0 -72
  428. package/src/rbac/__tests__/__mocks__/cache.ts +0 -144
  429. package/src/rbac/__tests__/__mocks__/supabase.ts +0 -152
  430. package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +0 -782
  431. package/src/rbac/__tests__/adapters-hooks.test.tsx +0 -561
  432. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -963
  433. package/src/rbac/__tests__/adapters.test.tsx +0 -444
  434. package/src/rbac/__tests__/api.test.ts +0 -620
  435. package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +0 -792
  436. package/src/rbac/__tests__/audit-observability.test.ts +0 -549
  437. package/src/rbac/__tests__/audit.test.ts +0 -616
  438. package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +0 -230
  439. package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +0 -889
  440. package/src/rbac/__tests__/cache-invalidation.test.ts +0 -457
  441. package/src/rbac/__tests__/cache.test.ts +0 -458
  442. package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +0 -859
  443. package/src/rbac/__tests__/components-navigation-guard.test.tsx +0 -895
  444. package/src/rbac/__tests__/components-navigation-provider.test.tsx +0 -692
  445. package/src/rbac/__tests__/components-page-permission-guard.test.tsx +0 -673
  446. package/src/rbac/__tests__/components-page-permission-provider.test.tsx +0 -614
  447. package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +0 -836
  448. package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +0 -837
  449. package/src/rbac/__tests__/components-permission-enforcer.test.tsx +0 -825
  450. package/src/rbac/__tests__/components-role-based-router.test.tsx +0 -709
  451. package/src/rbac/__tests__/components-secure-data-provider.test.tsx +0 -607
  452. package/src/rbac/__tests__/config.test.ts +0 -583
  453. package/src/rbac/__tests__/core-logic-unit.test.ts +0 -190
  454. package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +0 -1467
  455. package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +0 -151
  456. package/src/rbac/__tests__/core-permission-logic-simple.test.ts +0 -968
  457. package/src/rbac/__tests__/core-permission-logic.test.ts +0 -966
  458. package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +0 -988
  459. package/src/rbac/__tests__/edge-cases.test.ts +0 -654
  460. package/src/rbac/__tests__/engine.test.ts +0 -361
  461. package/src/rbac/__tests__/engine.unit.test.ts +0 -361
  462. package/src/rbac/__tests__/hooks.enhanced.test.tsx +0 -979
  463. package/src/rbac/__tests__/hooks.fixed.test.tsx +0 -475
  464. package/src/rbac/__tests__/hooks.test.tsx +0 -385
  465. package/src/rbac/__tests__/index.test.ts +0 -269
  466. package/src/rbac/__tests__/integration.enhanced.test.tsx +0 -824
  467. package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +0 -261
  468. package/src/rbac/__tests__/performance.enhanced.test.tsx +0 -724
  469. package/src/rbac/__tests__/permissions.test.ts +0 -383
  470. package/src/rbac/__tests__/requires-event.test.ts +0 -330
  471. package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +0 -1349
  472. package/src/rbac/__tests__/scope-isolation.test.ts +0 -755
  473. package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +0 -592
  474. package/src/rbac/__tests__/secure-client-rls.test.ts +0 -377
  475. package/src/rbac/__tests__/security.test.ts +0 -296
  476. package/src/rbac/__tests__/setup.ts +0 -228
  477. package/src/rbac/__tests__/test-utils-enhanced.tsx +0 -400
  478. package/src/rbac/__tests__/types.test.ts +0 -685
  479. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -631
  480. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -667
  481. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -647
  482. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -496
  483. package/src/rbac/testing/__tests__/index.test.tsx +0 -342
  484. package/src/rbac/utils/__tests__/eventContext.test.ts +0 -428
  485. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -428
  486. package/src/styles/__tests__/styles.unit.test.ts +0 -164
  487. package/src/test-dom-cleanup.test.tsx +0 -38
  488. package/src/theming/__tests__/README.md +0 -335
  489. package/src/theming/__tests__/runtime.accessibility.test.ts +0 -474
  490. package/src/theming/__tests__/runtime.error.test.ts +0 -616
  491. package/src/theming/__tests__/runtime.integration.test.ts +0 -376
  492. package/src/theming/__tests__/runtime.performance.test.ts +0 -411
  493. package/src/theming/__tests__/runtime.unit.test.ts +0 -470
  494. package/src/types/__tests__/database.unit.test.ts +0 -489
  495. package/src/types/__tests__/guards.unit.test.ts +0 -146
  496. package/src/types/__tests__/index.unit.test.ts +0 -77
  497. package/src/types/__tests__/organisation.unit.test.ts +0 -713
  498. package/src/types/__tests__/rbac.unit.test.ts +0 -621
  499. package/src/types/__tests__/security.unit.test.ts +0 -347
  500. package/src/types/__tests__/supabase.unit.test.ts +0 -658
  501. package/src/types/__tests__/theme.unit.test.ts +0 -218
  502. package/src/types/__tests__/unified.unit.test.ts +0 -537
  503. package/src/types/__tests__/validation.unit.test.ts +0 -616
  504. package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
  505. package/src/utils/__tests__/appNameResolver.unit.test.ts +0 -137
  506. package/src/utils/__tests__/audit.unit.test.ts +0 -69
  507. package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
  508. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -317
  509. package/src/utils/__tests__/cn.unit.test.ts +0 -34
  510. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -480
  511. package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -322
  512. package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
  513. package/src/utils/__tests__/formatting.unit.test.ts +0 -66
  514. package/src/utils/__tests__/index.unit.test.ts +0 -251
  515. package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -304
  516. package/src/utils/__tests__/organisationContext.unit.test.ts +0 -192
  517. package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -259
  518. package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
  519. package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
  520. package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
  521. package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
  522. package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -334
  523. package/src/utils/__tests__/secureErrors.unit.test.ts +0 -377
  524. package/src/utils/__tests__/secureStorage.unit.test.ts +0 -293
  525. package/src/utils/__tests__/security.unit.test.ts +0 -127
  526. package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -280
  527. package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -370
  528. package/src/utils/__tests__/validation.unit.test.ts +0 -84
  529. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -571
  530. package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +0 -219
  531. package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +0 -353
  532. package/src/utils/storage/__tests__/config.unit.test.ts +0 -206
  533. package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -648
  534. package/src/utils/storage/__tests__/index.unit.test.ts +0 -167
  535. package/src/utils/storage/__tests__/types.unit.test.ts +0 -441
  536. package/src/validation/__tests__/common.unit.test.ts +0 -101
  537. package/src/validation/__tests__/csrf.unit.test.ts +0 -302
  538. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -98
  539. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -466
  540. /package/dist/{DataTable-EEUDXPE5.js.map → DataTable-GX3XERFJ.js.map} +0 -0
  541. /package/dist/{chunk-VYG4AXYW.js.map → chunk-5EL3KHOQ.js.map} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ useCan
3
+ } from "./chunk-AUE24LVR.js";
1
4
  import {
2
5
  useDataTablePerformance
3
6
  } from "./chunk-SS3E6QLB.js";
@@ -8,19 +11,21 @@ import {
8
11
  DialogDescription,
9
12
  DialogHeader,
10
13
  DialogTitle,
11
- init_Button
12
- } from "./chunk-ETEJVKYK.js";
14
+ init_Button,
15
+ init_UnifiedAuthProvider,
16
+ useUnifiedAuth
17
+ } from "./chunk-6CR3MRZN.js";
13
18
  import {
14
19
  cn,
15
20
  init_cn
16
- } from "./chunk-OHXGNT3K.js";
21
+ } from "./chunk-OYRY44Q2.js";
17
22
 
18
23
  // src/components/DataTable/DataTable.tsx
19
- import React10 from "react";
24
+ import React11 from "react";
20
25
 
21
26
  // src/components/DataTable/components/DataTableCore.tsx
22
27
  init_cn();
23
- import React9, { useMemo as useMemo6, useCallback as useCallback5, useEffect as useEffect5, useState as useState6, useRef as useRef4 } from "react";
28
+ import React10, { useMemo as useMemo6, useCallback as useCallback5, useEffect as useEffect5, useState as useState6, useRef as useRef4 } from "react";
24
29
  import {
25
30
  useReactTable,
26
31
  getCoreRowModel,
@@ -853,6 +858,8 @@ function ColumnVisibilityDropdown({
853
858
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
854
859
  function DataTableToolbar({
855
860
  features,
861
+ rbac,
862
+ permissions,
856
863
  globalFilter,
857
864
  onGlobalFilterChange,
858
865
  columns,
@@ -908,7 +915,7 @@ function DataTableToolbar({
908
915
  ]
909
916
  }
910
917
  ),
911
- features.creation && onCreateRow && /* @__PURE__ */ jsxs4(
918
+ features.creation && permissions.canCreate.can && onCreateRow && /* @__PURE__ */ jsxs4(
912
919
  Button,
913
920
  {
914
921
  variant: "outline",
@@ -919,7 +926,7 @@ function DataTableToolbar({
919
926
  ]
920
927
  }
921
928
  ),
922
- features.import && /* @__PURE__ */ jsxs4(
929
+ features.import && permissions.canImport.can && /* @__PURE__ */ jsxs4(
923
930
  Button,
924
931
  {
925
932
  variant: "outline",
@@ -930,7 +937,7 @@ function DataTableToolbar({
930
937
  ]
931
938
  }
932
939
  ),
933
- features.export && /* @__PURE__ */ jsxs4(
940
+ features.export && permissions.canExport.can && /* @__PURE__ */ jsxs4(
934
941
  Button,
935
942
  {
936
943
  variant: "outline",
@@ -941,7 +948,7 @@ function DataTableToolbar({
941
948
  ]
942
949
  }
943
950
  ),
944
- features.deleteSelected && features.deletion && features.selection && /* @__PURE__ */ jsxs4(
951
+ features.deleteSelected && features.deletion && features.selection && permissions.canDelete.can && /* @__PURE__ */ jsxs4(
945
952
  Button,
946
953
  {
947
954
  variant: "destructive",
@@ -1167,7 +1174,9 @@ function ActionButtons({
1167
1174
  actions = [],
1168
1175
  isEditing = false,
1169
1176
  isParent = false,
1170
- hierarchical = false
1177
+ hierarchical = false,
1178
+ rbac,
1179
+ permissions
1171
1180
  }) {
1172
1181
  if (actions.length === 0) {
1173
1182
  return null;
@@ -1175,6 +1184,10 @@ function ActionButtons({
1175
1184
  const allActions = actions;
1176
1185
  const visibleActions = allActions.filter((action) => {
1177
1186
  if (action.hidden) return false;
1187
+ if (permissions) {
1188
+ if (action.label === "Edit" && !permissions.canUpdate.can) return false;
1189
+ if (action.label === "Delete" && !permissions.canDelete.can) return false;
1190
+ }
1178
1191
  if (hierarchical) {
1179
1192
  if (action.showForParent && !isParent) return false;
1180
1193
  if (action.showForChild && isParent) return false;
@@ -1395,7 +1408,9 @@ var MemoizedRow = ({
1395
1408
  grouping,
1396
1409
  editingRowId,
1397
1410
  hierarchical,
1398
- actions
1411
+ actions,
1412
+ rbac,
1413
+ permissions
1399
1414
  }) => {
1400
1415
  const rowId = getRowId ? getRowId(row.original, row.index) : String(row.index);
1401
1416
  const hierarchicalRow = row.original;
@@ -1458,7 +1473,9 @@ var MemoizedRow = ({
1458
1473
  actions,
1459
1474
  isEditing,
1460
1475
  isParent,
1461
- hierarchical: !!hierarchical
1476
+ hierarchical: !!hierarchical,
1477
+ rbac,
1478
+ permissions
1462
1479
  }
1463
1480
  ) : flexRender(cell.column.columnDef.cell, {
1464
1481
  ...cell.getContext(),
@@ -1561,7 +1578,9 @@ var MemoizedRow = ({
1561
1578
  actions,
1562
1579
  isEditing,
1563
1580
  isParent,
1564
- hierarchical: !!hierarchical
1581
+ hierarchical: !!hierarchical,
1582
+ rbac,
1583
+ permissions
1565
1584
  }
1566
1585
  ) : flexRender(cell.column.columnDef.cell, {
1567
1586
  ...cell.getContext(),
@@ -1613,7 +1632,9 @@ function UnifiedTableBody({
1613
1632
  virtualHeight = 600,
1614
1633
  forceVirtualization = false,
1615
1634
  hierarchical,
1616
- actions = []
1635
+ actions = [],
1636
+ rbac,
1637
+ permissions
1617
1638
  }) {
1618
1639
  const headerRef = useRef2(null);
1619
1640
  const bodyRef = useRef2(null);
@@ -1671,6 +1692,8 @@ function UnifiedTableBody({
1671
1692
  editingRowId,
1672
1693
  hierarchical,
1673
1694
  actions,
1695
+ rbac,
1696
+ permissions,
1674
1697
  style: {
1675
1698
  position: "absolute",
1676
1699
  top: 0,
@@ -1700,7 +1723,9 @@ function UnifiedTableBody({
1700
1723
  grouping,
1701
1724
  editingRowId,
1702
1725
  hierarchical,
1703
- actions
1726
+ actions,
1727
+ rbac,
1728
+ permissions
1704
1729
  },
1705
1730
  row.id
1706
1731
  );
@@ -2991,11 +3016,223 @@ var ColumnFactory = class {
2991
3016
  }
2992
3017
  };
2993
3018
 
3019
+ // src/components/Card/Card.tsx
3020
+ init_cn();
3021
+ import * as React9 from "react";
3022
+ import { jsx as jsx18 } from "react/jsx-runtime";
3023
+ function getCardClasses(variant = "default", size = "default") {
3024
+ const baseClasses = "rounded-lg border bg-card text-card-foreground shadow-sm";
3025
+ const variantClasses = {
3026
+ default: "shadow-xl",
3027
+ outline: "border-2",
3028
+ ghost: "border-0 shadow-none"
3029
+ };
3030
+ const sizeClasses = {
3031
+ default: "",
3032
+ sm: "text-sm",
3033
+ lg: "text-lg"
3034
+ };
3035
+ return `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]}`;
3036
+ }
3037
+ var Card = React9.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx18(
3038
+ "article",
3039
+ {
3040
+ ref,
3041
+ className: cn(
3042
+ "grid grid-rows-[auto_1fr_auto] min-w-0 overflow-visible",
3043
+ getCardClasses(variant, size),
3044
+ className
3045
+ ),
3046
+ ...props
3047
+ }
3048
+ ));
3049
+ Card.displayName = "Card";
3050
+ var CardHeader = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3051
+ "header",
3052
+ {
3053
+ ref,
3054
+ className: cn("flex flex-col space-y-1.5 p-6 min-w-0 w-full", className),
3055
+ ...props
3056
+ }
3057
+ ));
3058
+ CardHeader.displayName = "CardHeader";
3059
+ var CardTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3060
+ "h3",
3061
+ {
3062
+ ref,
3063
+ className: cn(
3064
+ "text-2xl font-semibold leading-none tracking-tight",
3065
+ className
3066
+ ),
3067
+ ...props
3068
+ }
3069
+ ));
3070
+ CardTitle.displayName = "CardTitle";
3071
+ var CardDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3072
+ "p",
3073
+ {
3074
+ ref,
3075
+ className: cn(className),
3076
+ ...props
3077
+ }
3078
+ ));
3079
+ CardDescription.displayName = "CardDescription";
3080
+ var CardContent = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3081
+ "main",
3082
+ {
3083
+ ref,
3084
+ className: cn("p-6 pt-0 min-w-0 w-full", className),
3085
+ ...props
3086
+ }
3087
+ ));
3088
+ CardContent.displayName = "CardContent";
3089
+ var CardFooter = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3090
+ "footer",
3091
+ {
3092
+ ref,
3093
+ className: cn("flex items-center p-6 pt-0 min-w-0 w-full", className),
3094
+ ...props
3095
+ }
3096
+ ));
3097
+ CardFooter.displayName = "CardFooter";
3098
+ var CardActions = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3099
+ "nav",
3100
+ {
3101
+ ref,
3102
+ className: cn("flex gap-2", className),
3103
+ role: "group",
3104
+ "aria-label": "Card actions",
3105
+ ...props
3106
+ }
3107
+ ));
3108
+ CardActions.displayName = "CardActions";
3109
+ var HoverCard = React9.forwardRef(({ children, className, ...props }, ref) => {
3110
+ return /* @__PURE__ */ jsx18(
3111
+ "section",
3112
+ {
3113
+ ref,
3114
+ className: cn("relative inline-block", className),
3115
+ ...props,
3116
+ children
3117
+ }
3118
+ );
3119
+ });
3120
+ HoverCard.displayName = "HoverCard";
3121
+ var HoverCardTrigger = React9.forwardRef(({ className, asChild, children, ...props }, ref) => {
3122
+ if (asChild) {
3123
+ return /* @__PURE__ */ jsx18("span", { className: cn("cursor-pointer", className), children });
3124
+ }
3125
+ return /* @__PURE__ */ jsx18(
3126
+ "button",
3127
+ {
3128
+ ref,
3129
+ type: "button",
3130
+ className: cn(
3131
+ "cursor-pointer bg-transparent border-0 p-0 m-0 font-inherit color-inherit text-left",
3132
+ className
3133
+ ),
3134
+ ...props,
3135
+ children
3136
+ }
3137
+ );
3138
+ });
3139
+ HoverCardTrigger.displayName = "HoverCardTrigger";
3140
+ var HoverCardContent = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
3141
+ "aside",
3142
+ {
3143
+ ref,
3144
+ className: cn(
3145
+ "absolute z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-4 text-popover-foreground shadow-md",
3146
+ className
3147
+ ),
3148
+ role: "tooltip",
3149
+ ...props
3150
+ }
3151
+ ));
3152
+ HoverCardContent.displayName = "HoverCardContent";
3153
+
3154
+ // src/components/DataTable/components/AccessDeniedPage.tsx
3155
+ init_Button();
3156
+ import { ShieldX, ArrowLeft, RefreshCw } from "lucide-react";
3157
+ import { Fragment as Fragment6, jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
3158
+ function AccessDeniedPage({
3159
+ resource,
3160
+ operation = "access",
3161
+ message,
3162
+ onRetry,
3163
+ onBack,
3164
+ className
3165
+ }) {
3166
+ const defaultMessage = message || `You don't have permission to ${operation} ${resource} data`;
3167
+ const handleRetry = () => {
3168
+ if (onRetry) {
3169
+ onRetry();
3170
+ } else {
3171
+ window.location.reload();
3172
+ }
3173
+ };
3174
+ const handleBack = () => {
3175
+ if (onBack) {
3176
+ onBack();
3177
+ } else {
3178
+ window.history.back();
3179
+ }
3180
+ };
3181
+ return /* @__PURE__ */ jsx19("div", { className: `flex items-center justify-center min-h-[400px] p-8 ${className || ""}`, children: /* @__PURE__ */ jsx19(Card, { className: "max-w-md w-full text-center", children: /* @__PURE__ */ jsxs13("div", { className: "flex flex-col items-center space-y-6 p-8", children: [
3182
+ /* @__PURE__ */ jsx19("div", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-acc-100", children: /* @__PURE__ */ jsx19(ShieldX, { className: "w-8 h-8 text-acc-600" }) }),
3183
+ /* @__PURE__ */ jsxs13("div", { className: "space-y-2", children: [
3184
+ /* @__PURE__ */ jsx19("h2", { className: "text-xl font-semibold text-sec-900", children: "Access Denied" }),
3185
+ /* @__PURE__ */ jsx19("p", { className: "text-sec-600", children: defaultMessage })
3186
+ ] }),
3187
+ /* @__PURE__ */ jsxs13("div", { className: "text-sm text-sec-500 bg-sec-50 rounded-lg p-3 w-full", children: [
3188
+ /* @__PURE__ */ jsx19("strong", { children: "Resource:" }),
3189
+ " ",
3190
+ resource,
3191
+ operation && /* @__PURE__ */ jsxs13(Fragment6, { children: [
3192
+ /* @__PURE__ */ jsx19("br", {}),
3193
+ /* @__PURE__ */ jsx19("strong", { children: "Operation:" }),
3194
+ " ",
3195
+ operation
3196
+ ] })
3197
+ ] }),
3198
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-col sm:flex-row gap-3 w-full", children: [
3199
+ onRetry && /* @__PURE__ */ jsxs13(
3200
+ Button,
3201
+ {
3202
+ variant: "outline",
3203
+ onClick: handleRetry,
3204
+ className: "flex-1",
3205
+ children: [
3206
+ /* @__PURE__ */ jsx19(RefreshCw, { className: "w-4 h-4 mr-2" }),
3207
+ "Retry"
3208
+ ]
3209
+ }
3210
+ ),
3211
+ /* @__PURE__ */ jsxs13(
3212
+ Button,
3213
+ {
3214
+ variant: "outline",
3215
+ onClick: handleBack,
3216
+ className: "flex-1",
3217
+ children: [
3218
+ /* @__PURE__ */ jsx19(ArrowLeft, { className: "w-4 h-4 mr-2" }),
3219
+ "Go Back"
3220
+ ]
3221
+ }
3222
+ )
3223
+ ] }),
3224
+ /* @__PURE__ */ jsx19("div", { className: "text-xs text-sec-400", children: "If you believe this is an error, please contact your administrator." })
3225
+ ] }) }) });
3226
+ }
3227
+
2994
3228
  // src/components/DataTable/components/DataTableCore.tsx
2995
- import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
3229
+ init_UnifiedAuthProvider();
3230
+ import { Fragment as Fragment7, jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
2996
3231
  function DataTableInternal({
2997
3232
  data,
2998
3233
  columns,
3234
+ rbac,
3235
+ // MANDATORY RBAC
2999
3236
  title,
3000
3237
  description,
3001
3238
  variant = "default",
@@ -3016,6 +3253,7 @@ function DataTableInternal({
3016
3253
  onDeleteRow,
3017
3254
  onCreateRow,
3018
3255
  onImport,
3256
+ onExport,
3019
3257
  onRowSelectionChange,
3020
3258
  selection,
3021
3259
  onDeleteSelected,
@@ -3027,6 +3265,49 @@ function DataTableInternal({
3027
3265
  actions = [],
3028
3266
  columnOrder: externalColumnOrder
3029
3267
  }) {
3268
+ const authResult = useUnifiedAuth();
3269
+ const user = authResult.user;
3270
+ if (!user) {
3271
+ throw new Error("DataTable requires authenticated user for RBAC");
3272
+ }
3273
+ if (!rbac?.resource) {
3274
+ throw new Error("DataTable requires rbac.resource for permission checking");
3275
+ }
3276
+ const scope = {
3277
+ organisationId: user?.user_metadata?.organisationId || user?.app_metadata?.organisationId,
3278
+ eventId: user?.user_metadata?.eventId || user?.app_metadata?.eventId,
3279
+ appId: user?.user_metadata?.appId || user?.app_metadata?.appId
3280
+ };
3281
+ const permissions = {
3282
+ canRead: useCan(user.id, scope, `read:${rbac.resource}`, rbac.pageId),
3283
+ canCreate: useCan(user.id, scope, `create:${rbac.resource}`, rbac.pageId),
3284
+ canUpdate: useCan(user.id, scope, `update:${rbac.resource}`, rbac.pageId),
3285
+ canDelete: useCan(user.id, scope, `delete:${rbac.resource}`, rbac.pageId),
3286
+ canExport: useCan(user.id, scope, `manage:${rbac.resource}`, rbac.pageId),
3287
+ // Using manage for export/import
3288
+ canImport: useCan(user.id, scope, `manage:${rbac.resource}`, rbac.pageId)
3289
+ // Using manage for export/import
3290
+ };
3291
+ if (!permissions.canRead.can) {
3292
+ return /* @__PURE__ */ jsx20(AccessDeniedPage, { resource: rbac?.resource || "test-resource", operation: "read" });
3293
+ }
3294
+ const secureFeatures = {
3295
+ ...features,
3296
+ creation: features.creation && permissions.canCreate.can,
3297
+ editing: features.editing && permissions.canUpdate.can,
3298
+ deletion: features.deletion && permissions.canDelete.can,
3299
+ deleteSelected: features.deleteSelected && permissions.canDelete.can,
3300
+ export: features.export && permissions.canExport.can,
3301
+ import: features.import && permissions.canImport.can
3302
+ };
3303
+ const secureHandlers = {
3304
+ onEditRow: permissions.canUpdate.can ? onEditRow : void 0,
3305
+ onDeleteRow: permissions.canDelete.can ? onDeleteRow : void 0,
3306
+ onCreateRow: permissions.canCreate.can ? onCreateRow : void 0,
3307
+ onImport: permissions.canImport.can ? onImport : void 0,
3308
+ onExport: permissions.canExport.can ? onExport : void 0,
3309
+ onDeleteSelected: permissions.canDelete.can ? onDeleteSelected : void 0
3310
+ };
3030
3311
  const [sorting, setSorting] = useState6([]);
3031
3312
  const [columnFilters, setColumnFilters] = useState6([]);
3032
3313
  const [columnVisibility, setColumnVisibility] = useState6({});
@@ -3179,28 +3460,38 @@ function DataTableInternal({
3179
3460
  const finalDataCount = finalPaginationMode === "server" ? serverData?.totalCount || 0 : finalTableData?.length || 0;
3180
3461
  const effectiveActions = useMemo6(() => {
3181
3462
  const result = [...actions];
3182
- if (features.editing && onEditRow && !result.some((a) => a.label === "Edit")) {
3463
+ if (secureFeatures.editing && secureHandlers.onEditRow && !result.some((a) => a.label === "Edit")) {
3183
3464
  result.push({
3184
3465
  label: "Edit",
3185
3466
  onClick: (row) => {
3467
+ if (!permissions.canUpdate.can) {
3468
+ throw new Error("Insufficient permissions to edit this resource");
3469
+ }
3186
3470
  const rowId = getRowId ? getRowId(row, 0) : row.id || String(0);
3187
3471
  tableActions.setEditingRow(rowId, { ...row });
3188
3472
  },
3189
3473
  icon: Edit,
3190
- testId: "edit"
3474
+ testId: "edit",
3475
+ hidden: !permissions.canUpdate.can
3191
3476
  });
3192
3477
  }
3193
- if (features.deletion && onDeleteRow && !result.some((a) => a.label === "Delete")) {
3478
+ if (secureFeatures.deletion && secureHandlers.onDeleteRow && !result.some((a) => a.label === "Delete")) {
3194
3479
  result.push({
3195
3480
  label: "Delete",
3196
- onClick: onDeleteRow,
3481
+ onClick: (row) => {
3482
+ if (!permissions.canDelete.can) {
3483
+ throw new Error("Insufficient permissions to delete this resource");
3484
+ }
3485
+ secureHandlers.onDeleteRow(row);
3486
+ },
3197
3487
  icon: Trash,
3198
3488
  testId: "delete",
3199
- variant: "destructive"
3489
+ variant: "destructive",
3490
+ hidden: !permissions.canDelete.can
3200
3491
  });
3201
3492
  }
3202
3493
  return result;
3203
- }, [actions, features.editing, features.deletion, onEditRow, onDeleteRow, getRowId, tableActions]);
3494
+ }, [actions, secureFeatures, permissions, secureHandlers, getRowId, tableActions]);
3204
3495
  const enhancedColumns = useMemo6(() => {
3205
3496
  const baseColumns = [...columns].map((column) => ({
3206
3497
  ...column,
@@ -3213,7 +3504,7 @@ function DataTableInternal({
3213
3504
  header: ({ table: table2 }) => {
3214
3505
  const isAllSelected = table2.getIsAllPageRowsSelected();
3215
3506
  const isSomeSelected = table2.getIsSomePageRowsSelected();
3216
- return /* @__PURE__ */ jsx18(
3507
+ return /* @__PURE__ */ jsx20(
3217
3508
  Checkbox,
3218
3509
  {
3219
3510
  checked: isAllSelected ? true : isSomeSelected ? "indeterminate" : false,
@@ -3222,7 +3513,7 @@ function DataTableInternal({
3222
3513
  }
3223
3514
  );
3224
3515
  },
3225
- cell: ({ row }) => /* @__PURE__ */ jsx18(
3516
+ cell: ({ row }) => /* @__PURE__ */ jsx20(
3226
3517
  Checkbox,
3227
3518
  {
3228
3519
  checked: row.getIsSelected(),
@@ -3385,7 +3676,7 @@ function DataTableInternal({
3385
3676
  };
3386
3677
  }, [cleanup]);
3387
3678
  if (isLoading) {
3388
- return /* @__PURE__ */ jsx18(LoadingComponent, {});
3679
+ return /* @__PURE__ */ jsx20(LoadingComponent, {});
3389
3680
  }
3390
3681
  const PaginationComponent = enhancedPagination || finalPaginationMode !== "client" ? EnhancedPaginationControls : PaginationControls;
3391
3682
  const visibleColumns = table?.getVisibleFlatColumns() || [];
@@ -3394,8 +3685,8 @@ function DataTableInternal({
3394
3685
  ).length;
3395
3686
  const hasSelectColumn = visibleColumns.some((col) => col.id === "select");
3396
3687
  const hasActionsColumn = visibleColumns.some((col) => col.id === "actions");
3397
- return /* @__PURE__ */ jsxs13(Fragment6, { children: [
3398
- /* @__PURE__ */ jsxs13("table", { className: getTableClasses({
3688
+ return /* @__PURE__ */ jsxs14(Fragment7, { children: [
3689
+ /* @__PURE__ */ jsxs14("table", { className: getTableClasses({
3399
3690
  isFixed: true,
3400
3691
  variant,
3401
3692
  className: cn("border-collapse relative w-full", className)
@@ -3403,15 +3694,15 @@ function DataTableInternal({
3403
3694
  tableLayout: "fixed",
3404
3695
  width: "100%"
3405
3696
  }, children: [
3406
- /* @__PURE__ */ jsxs13("caption", { className: "text-left pb-2", children: [
3407
- (title || description) && /* @__PURE__ */ jsxs13(Fragment6, { children: [
3408
- title && /* @__PURE__ */ jsx18("h2", { children: title }),
3409
- description && /* @__PURE__ */ jsx18("p", { children: description })
3697
+ /* @__PURE__ */ jsxs14("caption", { className: "text-left pb-2", children: [
3698
+ (title || description) && /* @__PURE__ */ jsxs14(Fragment7, { children: [
3699
+ title && /* @__PURE__ */ jsx20("h2", { children: title }),
3700
+ description && /* @__PURE__ */ jsx20("p", { children: description })
3410
3701
  ] }),
3411
- /* @__PURE__ */ jsx18(Fragment6, { children: /* @__PURE__ */ jsx18(
3702
+ /* @__PURE__ */ jsx20(Fragment7, { children: /* @__PURE__ */ jsx20(
3412
3703
  DataTableToolbar,
3413
3704
  {
3414
- features,
3705
+ features: secureFeatures,
3415
3706
  globalFilter: searchQuery,
3416
3707
  onGlobalFilterChange: handleSearch,
3417
3708
  columns,
@@ -3423,32 +3714,34 @@ function DataTableInternal({
3423
3714
  onColumnVisibilityChange: (columnId, visible) => {
3424
3715
  setColumnVisibility((prev) => ({ ...prev, [columnId]: visible }));
3425
3716
  },
3426
- onCreateRow: features.creation && onCreateRow ? () => tableActions.setCreating(true) : void 0,
3717
+ onCreateRow: secureFeatures.creation && secureHandlers.onCreateRow ? () => tableActions.setCreating(true) : void 0,
3427
3718
  onImportClick: () => setShowImportModal(true),
3428
- onExport: () => {
3429
- },
3719
+ onExport: secureHandlers.onExport || (() => {
3720
+ }),
3430
3721
  rowSelection,
3431
- onDeleteSelected,
3722
+ onDeleteSelected: secureHandlers.onDeleteSelected,
3432
3723
  onToggleFilterRow: () => setShowFilterRow(!showFilterRow),
3433
- showFilterRow
3724
+ showFilterRow,
3725
+ rbac,
3726
+ permissions
3434
3727
  }
3435
3728
  ) })
3436
3729
  ] }),
3437
- /* @__PURE__ */ jsxs13("colgroup", { children: [
3438
- hasSelectColumn && /* @__PURE__ */ jsx18("col", { span: 1, "data-col-type": "select" }),
3439
- /* @__PURE__ */ jsx18("col", { span: dataColumns, "data-col-type": "data" }),
3440
- hasActionsColumn && /* @__PURE__ */ jsx18("col", { span: 1, "data-col-type": "actions" })
3730
+ /* @__PURE__ */ jsxs14("colgroup", { children: [
3731
+ hasSelectColumn && /* @__PURE__ */ jsx20("col", { span: 1, "data-col-type": "select" }),
3732
+ /* @__PURE__ */ jsx20("col", { span: dataColumns, "data-col-type": "data" }),
3733
+ hasActionsColumn && /* @__PURE__ */ jsx20("col", { span: 1, "data-col-type": "actions" })
3441
3734
  ] }),
3442
- /* @__PURE__ */ jsx18("thead", { children: table?.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx18("tr", { children: headerGroup.headers.filter((header) => {
3735
+ /* @__PURE__ */ jsx20("thead", { children: table?.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx20("tr", { children: headerGroup.headers.filter((header) => {
3443
3736
  return typeof header.column.getIsVisible === "function" ? header.column.getIsVisible() : true;
3444
3737
  }).map((header) => {
3445
3738
  const isSortable = header.column.getCanSort();
3446
3739
  const ariaSort = isSortable ? header.column.getIsSorted() === "asc" ? "ascending" : header.column.getIsSorted() === "desc" ? "descending" : "none" : void 0;
3447
- return /* @__PURE__ */ jsx18(
3740
+ return /* @__PURE__ */ jsx20(
3448
3741
  "th",
3449
3742
  {
3450
3743
  ...isSortable ? { "aria-sort": ariaSort } : {},
3451
- children: header.isPlaceholder ? null : isSortable ? /* @__PURE__ */ jsx18(
3744
+ children: header.isPlaceholder ? null : isSortable ? /* @__PURE__ */ jsx20(
3452
3745
  Button,
3453
3746
  {
3454
3747
  variant: "ghost",
@@ -3456,17 +3749,17 @@ function DataTableInternal({
3456
3749
  onClick: header.column.getToggleSortingHandler(),
3457
3750
  "aria-label": `Sort by ${typeof header.column.columnDef.header === "string" ? header.column.columnDef.header : "column"}`,
3458
3751
  tabIndex: 0,
3459
- children: /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
3752
+ children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-1", children: [
3460
3753
  typeof header.column.columnDef.header === "function" ? header.column.columnDef.header(header.getContext()) : header.column.columnDef.header,
3461
- header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx18(ChevronUp2, { className: "h-4 w-4" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx18(ChevronDown3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx18(ChevronsUpDown, { className: "h-4 w-4" })
3754
+ header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx20(ChevronUp2, { className: "h-4 w-4" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx20(ChevronDown3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx20(ChevronsUpDown, { className: "h-4 w-4" })
3462
3755
  ] })
3463
3756
  }
3464
- ) : /* @__PURE__ */ jsx18("div", { children: typeof header.column.columnDef.header === "function" ? header.column.columnDef.header(header.getContext()) : header.column.columnDef.header })
3757
+ ) : /* @__PURE__ */ jsx20("div", { children: typeof header.column.columnDef.header === "function" ? header.column.columnDef.header(header.getContext()) : header.column.columnDef.header })
3465
3758
  },
3466
3759
  header.id
3467
3760
  );
3468
3761
  }) }, headerGroup.id)) }),
3469
- /* @__PURE__ */ jsx18(
3762
+ /* @__PURE__ */ jsx20(
3470
3763
  UnifiedTableBody,
3471
3764
  {
3472
3765
  table,
@@ -3509,7 +3802,7 @@ function DataTableInternal({
3509
3802
  grouping,
3510
3803
  aggregates,
3511
3804
  getRowId,
3512
- emptyState: React9.isValidElement(emptyState) ? void 0 : emptyState,
3805
+ emptyState: React10.isValidElement(emptyState) ? void 0 : emptyState,
3513
3806
  isFiltered: searchQuery !== "" || columnFilters.length > 0,
3514
3807
  onClearFilters: () => {
3515
3808
  setSearchQuery("");
@@ -3535,10 +3828,12 @@ function DataTableInternal({
3535
3828
  isAllExpanded: hierarchicalState.getExpandedIds().length > 0 && hierarchicalState.getExpandedIds().length === finalTableData.filter((row) => row.isParent).length,
3536
3829
  hasAnyChildren: finalTableData.some((row) => row.isParent)
3537
3830
  } : void 0,
3538
- actions: effectiveActions
3831
+ actions: effectiveActions,
3832
+ rbac,
3833
+ permissions
3539
3834
  }
3540
3835
  ),
3541
- features.pagination && /* @__PURE__ */ jsx18("tfoot", { children: /* @__PURE__ */ jsx18("tr", { children: /* @__PURE__ */ jsx18("td", { colSpan: visibleColumns.length, children: /* @__PURE__ */ jsx18(
3836
+ features.pagination && /* @__PURE__ */ jsx20("tfoot", { children: /* @__PURE__ */ jsx20("tr", { children: /* @__PURE__ */ jsx20("td", { colSpan: visibleColumns.length, children: /* @__PURE__ */ jsx20(
3542
3837
  PaginationComponent,
3543
3838
  {
3544
3839
  table,
@@ -3549,7 +3844,7 @@ function DataTableInternal({
3549
3844
  }
3550
3845
  ) }) }) })
3551
3846
  ] }),
3552
- /* @__PURE__ */ jsx18(
3847
+ /* @__PURE__ */ jsx20(
3553
3848
  DataTableModals,
3554
3849
  {
3555
3850
  showImportModal,
@@ -3569,11 +3864,11 @@ function DataTableInternal({
3569
3864
  ] });
3570
3865
  }
3571
3866
  function DataTableCore(props) {
3572
- return /* @__PURE__ */ jsx18(DataTableErrorBoundary, { children: /* @__PURE__ */ jsx18(DataTableInternal, { ...props }) });
3867
+ return /* @__PURE__ */ jsx20(DataTableErrorBoundary, { children: /* @__PURE__ */ jsx20(DataTableInternal, { ...props }) });
3573
3868
  }
3574
3869
 
3575
3870
  // src/components/DataTable/DataTable.tsx
3576
- import { jsx as jsx19 } from "react/jsx-runtime";
3871
+ import { jsx as jsx21 } from "react/jsx-runtime";
3577
3872
  function DataTable(props) {
3578
3873
  if (!props.features) {
3579
3874
  throw new Error("DataTable: features configuration is required");
@@ -3581,9 +3876,9 @@ function DataTable(props) {
3581
3876
  if (props.features.deleteSelected && !props.features.deletion) {
3582
3877
  console.warn("DataTable: deleteSelected requires deletion to be enabled");
3583
3878
  }
3584
- return /* @__PURE__ */ jsx19(DataTableCore, { ...props });
3879
+ return /* @__PURE__ */ jsx21(DataTableCore, { ...props });
3585
3880
  }
3586
- var DataTableComponent = React10.memo(DataTable);
3881
+ var DataTableComponent = React11.memo(DataTable);
3587
3882
 
3588
3883
  // src/components/DataTable/core/DataManager.ts
3589
3884
  var DataManager = class {
@@ -4756,7 +5051,7 @@ var LocalDataAdapter = class {
4756
5051
 
4757
5052
  // src/components/DataTable/core/DataTableContext.tsx
4758
5053
  import { createContext as createContext3, useContext as useContext3, useMemo as useMemo7, useEffect as useEffect6 } from "react";
4759
- import { jsx as jsx20 } from "react/jsx-runtime";
5054
+ import { jsx as jsx22 } from "react/jsx-runtime";
4760
5055
  var DataTableContext = createContext3(null);
4761
5056
  function DataTableProvider({
4762
5057
  children,
@@ -4840,7 +5135,7 @@ function DataTableProvider({
4840
5135
  stateManager.updateActions(actions);
4841
5136
  }
4842
5137
  }, [actions, actionManager, stateManager]);
4843
- return /* @__PURE__ */ jsx20(DataTableContext.Provider, { value: contextValue, children });
5138
+ return /* @__PURE__ */ jsx22(DataTableContext.Provider, { value: contextValue, children });
4844
5139
  }
4845
5140
  function useDataTableContext() {
4846
5141
  const context = useContext3(DataTableContext);
@@ -4877,7 +5172,7 @@ import {
4877
5172
  Download as Download2,
4878
5173
  Trash as Trash3
4879
5174
  } from "lucide-react";
4880
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
5175
+ import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
4881
5176
  function BulkOperationsDropdown({
4882
5177
  operations,
4883
5178
  selectedRows = {},
@@ -4905,8 +5200,8 @@ function BulkOperationsDropdown({
4905
5200
  onOperation(operation, selectedData);
4906
5201
  }
4907
5202
  };
4908
- return /* @__PURE__ */ jsxs14(Select, { disabled: !hasSelection, children: [
4909
- /* @__PURE__ */ jsx21(SelectTrigger, { asChild: true, children: /* @__PURE__ */ jsxs14(
5203
+ return /* @__PURE__ */ jsxs15(Select, { disabled: !hasSelection, children: [
5204
+ /* @__PURE__ */ jsx23(SelectTrigger, { asChild: true, children: /* @__PURE__ */ jsxs15(
4910
5205
  Button,
4911
5206
  {
4912
5207
  variant: "outline",
@@ -4914,8 +5209,8 @@ function BulkOperationsDropdown({
4914
5209
  disabled: !hasSelection,
4915
5210
  className: `min-w-[140px] h-9 px-3 py-2 text-sm font-medium ${className || ""}`,
4916
5211
  children: [
4917
- /* @__PURE__ */ jsx21(MoreHorizontal2, { className: "h-4 w-4 mr-2 flex-shrink-0" }),
4918
- /* @__PURE__ */ jsxs14("span", { className: "truncate", children: [
5212
+ /* @__PURE__ */ jsx23(MoreHorizontal2, { className: "h-4 w-4 mr-2 flex-shrink-0" }),
5213
+ /* @__PURE__ */ jsxs15("span", { className: "truncate", children: [
4919
5214
  "Bulk Actions (",
4920
5215
  selectedCount,
4921
5216
  ")"
@@ -4923,11 +5218,11 @@ function BulkOperationsDropdown({
4923
5218
  ]
4924
5219
  }
4925
5220
  ) }),
4926
- /* @__PURE__ */ jsx21(SelectContent, { className: "w-48 !bg-main-50 border border-sec-200 shadow-lg z-[9999]", style: { backgroundColor: "white" }, children: operations.map((operation) => {
5221
+ /* @__PURE__ */ jsx23(SelectContent, { className: "w-48 !bg-main-50 border border-sec-200 shadow-lg z-[9999]", style: { backgroundColor: "white" }, children: operations.map((operation) => {
4927
5222
  const Icon = operationIcons[operation];
4928
5223
  const label = operationLabels[operation];
4929
5224
  const variant = operationVariants[operation];
4930
- return /* @__PURE__ */ jsxs14(
5225
+ return /* @__PURE__ */ jsxs15(
4931
5226
  SelectItem,
4932
5227
  {
4933
5228
  value: operation,
@@ -4935,8 +5230,8 @@ function BulkOperationsDropdown({
4935
5230
  disabled: !hasSelection,
4936
5231
  className: `flex items-center gap-2 ${variant === "destructive" ? "text-destructive focus:text-destructive" : ""}`,
4937
5232
  children: [
4938
- /* @__PURE__ */ jsx21(Icon, { className: "h-4 w-4" }),
4939
- /* @__PURE__ */ jsx21("span", { children: label })
5233
+ /* @__PURE__ */ jsx23(Icon, { className: "h-4 w-4" }),
5234
+ /* @__PURE__ */ jsx23("span", { children: label })
4940
5235
  ]
4941
5236
  },
4942
5237
  operation
@@ -4948,7 +5243,7 @@ function BulkOperationsDropdown({
4948
5243
  // src/components/DataTable/components/GroupHeader.tsx
4949
5244
  init_Button();
4950
5245
  import { ChevronDown as ChevronDown4, ChevronRight as ChevronRight3 } from "lucide-react";
4951
- import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
5246
+ import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
4952
5247
  function GroupHeader({
4953
5248
  row,
4954
5249
  groupByColumn,
@@ -4957,18 +5252,18 @@ function GroupHeader({
4957
5252
  subRowsCount
4958
5253
  }) {
4959
5254
  const groupValue = row.getValue(groupByColumn);
4960
- return /* @__PURE__ */ jsxs15("div", { className: "flex items-center py-2 px-4 bg-muted/50 border-b font-medium", children: [
4961
- /* @__PURE__ */ jsx22(
5255
+ return /* @__PURE__ */ jsxs16("div", { className: "flex items-center py-2 px-4 bg-muted/50 border-b font-medium", children: [
5256
+ /* @__PURE__ */ jsx24(
4962
5257
  Button,
4963
5258
  {
4964
5259
  variant: "ghost",
4965
5260
  size: "sm",
4966
5261
  onClick: onToggle,
4967
5262
  className: "p-0 h-auto mr-2",
4968
- children: isExpanded ? /* @__PURE__ */ jsx22(ChevronDown4, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx22(ChevronRight3, { className: "h-4 w-4" })
5263
+ children: isExpanded ? /* @__PURE__ */ jsx24(ChevronDown4, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx24(ChevronRight3, { className: "h-4 w-4" })
4969
5264
  }
4970
5265
  ),
4971
- /* @__PURE__ */ jsxs15("span", { className: "text-sm", children: [
5266
+ /* @__PURE__ */ jsxs16("span", { className: "text-sm", children: [
4972
5267
  String(groupValue),
4973
5268
  " (",
4974
5269
  subRowsCount,
@@ -4979,13 +5274,13 @@ function GroupHeader({
4979
5274
 
4980
5275
  // src/components/DataTable/components/EditableRow.tsx
4981
5276
  init_Button();
4982
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
5277
+ import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
4983
5278
  var renderEditField2 = (column, value, onChange, editingData = {}, placeholder) => {
4984
5279
  const columnDef = column.columnDef;
4985
5280
  if (columnDef.fieldType === "select" && columnDef.fieldOptions) {
4986
5281
  const editKey = columnDef.editAccessorKey || column.id;
4987
5282
  const editValue = editingData[editKey] || value;
4988
- return /* @__PURE__ */ jsxs16(
5283
+ return /* @__PURE__ */ jsxs17(
4989
5284
  Select,
4990
5285
  {
4991
5286
  value: String(editValue || ""),
@@ -4997,14 +5292,14 @@ var renderEditField2 = (column, value, onChange, editingData = {}, placeholder)
4997
5292
  }
4998
5293
  },
4999
5294
  children: [
5000
- /* @__PURE__ */ jsx23(SelectTrigger, { className: "w-full h-7", children: /* @__PURE__ */ jsx23(SelectValue, { placeholder: placeholder || `Select ${column.id}` }) }),
5001
- /* @__PURE__ */ jsx23(SelectContent, { children: columnDef.fieldOptions.map((option) => /* @__PURE__ */ jsx23(SelectItem, { value: String(option.value), children: option.label }, option.value)) })
5295
+ /* @__PURE__ */ jsx25(SelectTrigger, { className: "w-full h-7", children: /* @__PURE__ */ jsx25(SelectValue, { placeholder: placeholder || `Select ${column.id}` }) }),
5296
+ /* @__PURE__ */ jsx25(SelectContent, { children: columnDef.fieldOptions.map((option) => /* @__PURE__ */ jsx25(SelectItem, { value: String(option.value), children: option.label }, option.value)) })
5002
5297
  ]
5003
5298
  }
5004
5299
  );
5005
5300
  }
5006
5301
  if (columnDef.fieldType === "date") {
5007
- return /* @__PURE__ */ jsx23(
5302
+ return /* @__PURE__ */ jsx25(
5008
5303
  Input,
5009
5304
  {
5010
5305
  type: "date",
@@ -5014,7 +5309,7 @@ var renderEditField2 = (column, value, onChange, editingData = {}, placeholder)
5014
5309
  }
5015
5310
  );
5016
5311
  }
5017
- return /* @__PURE__ */ jsx23(
5312
+ return /* @__PURE__ */ jsx25(
5018
5313
  Input,
5019
5314
  {
5020
5315
  type: "text",
@@ -5046,15 +5341,15 @@ function EditableRow({
5046
5341
  testId: action.testId || `action-${action.label.toLowerCase().replace(/\s+/g, "-")}-${rowId}`,
5047
5342
  visible: true
5048
5343
  }));
5049
- return /* @__PURE__ */ jsxs16("tr", { children: [
5050
- row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx23("td", { children: cell.column.id !== "actions" ? renderEditField2(cell.column, editingData[cell.column.id], (value) => {
5344
+ return /* @__PURE__ */ jsxs17("tr", { children: [
5345
+ row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx25("td", { children: cell.column.id !== "actions" ? renderEditField2(cell.column, editingData[cell.column.id], (value) => {
5051
5346
  if (typeof value === "object" && value !== null) {
5052
5347
  onEditingDataChange({ ...editingData, ...value });
5053
5348
  } else {
5054
5349
  onEditingDataChange({ ...editingData, [cell.column.id]: value });
5055
5350
  }
5056
- }, editingData) : /* @__PURE__ */ jsxs16("div", { className: "flex gap-1", children: [
5057
- /* @__PURE__ */ jsx23(
5351
+ }, editingData) : /* @__PURE__ */ jsxs17("div", { className: "flex gap-1", children: [
5352
+ /* @__PURE__ */ jsx25(
5058
5353
  Button,
5059
5354
  {
5060
5355
  onClick: onSave,
@@ -5063,7 +5358,7 @@ function EditableRow({
5063
5358
  children: "Save"
5064
5359
  }
5065
5360
  ),
5066
- /* @__PURE__ */ jsx23(
5361
+ /* @__PURE__ */ jsx25(
5067
5362
  Button,
5068
5363
  {
5069
5364
  onClick: onCancel,
@@ -5073,7 +5368,7 @@ function EditableRow({
5073
5368
  }
5074
5369
  )
5075
5370
  ] }) }, cell.id)),
5076
- actions.length > 0 && /* @__PURE__ */ jsx23("td", { children: /* @__PURE__ */ jsx23(
5371
+ actions.length > 0 && /* @__PURE__ */ jsx25("td", { children: /* @__PURE__ */ jsx25(
5077
5372
  ActionButtons,
5078
5373
  {
5079
5374
  row: row.original,
@@ -5089,6 +5384,13 @@ function EditableRow({
5089
5384
  }
5090
5385
 
5091
5386
  export {
5387
+ Card,
5388
+ CardHeader,
5389
+ CardTitle,
5390
+ CardDescription,
5391
+ CardContent,
5392
+ CardFooter,
5393
+ CardActions,
5092
5394
  Input,
5093
5395
  Alert,
5094
5396
  AlertTitle,
@@ -5136,4 +5438,4 @@ export {
5136
5438
  GroupHeader,
5137
5439
  EditableRow
5138
5440
  };
5139
- //# sourceMappingURL=chunk-EWKPTNPO.js.map
5441
+ //# sourceMappingURL=chunk-GSNM5D6H.js.map