@jmruthers/pace-core 0.5.76 → 0.5.77

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 (446) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{RBACService-C4udt_Zp.d.ts → AuthService-SBHZQtCH.d.ts} +5 -118
  3. package/dist/{DataTable-ntgmhO2W.d.ts → DataTable-BE0OXZKQ.d.ts} +9 -2
  4. package/dist/{DataTable-4GAVPIEG.js → DataTable-QCNCV6IK.js} +50 -13
  5. package/dist/{PublicLoadingSpinner-BiNER8F5.d.ts → PublicLoadingSpinner-CnUaz0vG.d.ts} +5 -2
  6. package/dist/{UnifiedAuthProvider-Bj6YCf7c.d.ts → UnifiedAuthProvider-B391Aqum.d.ts} +42 -45
  7. package/dist/{UnifiedAuthProvider-3NKDOSOK.js → UnifiedAuthProvider-Z2FWNW7O.js} +4 -5
  8. package/dist/{api-DDMUKIUD.js → api-KG4A2X7P.js} +9 -3
  9. package/dist/{audit-6TOCAMKO.js → audit-65VNHEV2.js} +2 -2
  10. package/dist/{chunk-K34IM5CT.js → chunk-7PX43UYN.js} +196 -626
  11. package/dist/chunk-7PX43UYN.js.map +1 -0
  12. package/dist/{chunk-Y6TXWPJO.js → chunk-C4RQ3GQA.js} +105 -31
  13. package/dist/chunk-C4RQ3GQA.js.map +1 -0
  14. package/dist/{chunk-LW7MMEAQ.js → chunk-CRKP3HXI.js} +2 -2
  15. package/dist/{chunk-XLZ7U46Z.js → chunk-CVMVPYAL.js} +9 -60
  16. package/dist/chunk-CVMVPYAL.js.map +1 -0
  17. package/dist/{chunk-M5IWZRBT.js → chunk-DDPG7FCX.js} +2187 -981
  18. package/dist/chunk-DDPG7FCX.js.map +1 -0
  19. package/dist/{chunk-URUTVZ7N.js → chunk-DVHZ5L55.js} +2 -2
  20. package/dist/{chunk-5BSLGBYI.js → chunk-JCQZ6LA7.js} +2 -8
  21. package/dist/{chunk-5BSLGBYI.js.map → chunk-JCQZ6LA7.js.map} +1 -1
  22. package/dist/{chunk-WN6XJWOS.js → chunk-JDQ7T3QB.js} +256 -743
  23. package/dist/chunk-JDQ7T3QB.js.map +1 -0
  24. package/dist/{chunk-KK73ZB4E.js → chunk-LMYTEMUH.js} +153 -132
  25. package/dist/chunk-LMYTEMUH.js.map +1 -0
  26. package/dist/{chunk-AFGTSUAD.js → chunk-NKT2DLZI.js} +4 -4
  27. package/dist/{chunk-KHJS6VIA.js → chunk-PUKTJMRT.js} +157 -112
  28. package/dist/chunk-PUKTJMRT.js.map +1 -0
  29. package/dist/{chunk-B2WTCLCV.js → chunk-Q7APDV6H.js} +18 -8
  30. package/dist/chunk-Q7APDV6H.js.map +1 -0
  31. package/dist/{chunk-FGMFQSHX.js → chunk-S63MFSY6.js} +500 -551
  32. package/dist/chunk-S63MFSY6.js.map +1 -0
  33. package/dist/{chunk-NTNILOBC.js → chunk-TLD5BEU6.js} +4 -4
  34. package/dist/chunk-WUXCWRL6.js +20 -0
  35. package/dist/chunk-WUXCWRL6.js.map +1 -0
  36. package/dist/{chunk-A4FUBC7B.js → chunk-Z3T6RK3K.js} +2 -4
  37. package/dist/{chunk-A4FUBC7B.js.map → chunk-Z3T6RK3K.js.map} +1 -1
  38. package/dist/components.d.ts +6 -6
  39. package/dist/components.js +14 -18
  40. package/dist/components.js.map +1 -1
  41. package/dist/{database-C3Szpi5J.d.ts → database-BXAfr2Y_.d.ts} +18 -0
  42. package/dist/hooks.d.ts +5 -5
  43. package/dist/hooks.js +8 -9
  44. package/dist/hooks.js.map +1 -1
  45. package/dist/index.d.ts +19 -27
  46. package/dist/index.js +21 -29
  47. package/dist/index.js.map +1 -1
  48. package/dist/{organisation-BtshODVF.d.ts → organisation-D6qRDtbF.d.ts} +1 -1
  49. package/dist/providers.d.ts +7 -21
  50. package/dist/providers.js +3 -10
  51. package/dist/rbac/index.d.ts +71 -221
  52. package/dist/rbac/index.js +15 -16
  53. package/dist/{types-CGX9Vyf5.d.ts → types-BDg1mAGG.d.ts} +36 -6
  54. package/dist/types.d.ts +3 -3
  55. package/dist/types.js +61 -18
  56. package/dist/types.js.map +1 -1
  57. package/dist/{unified-CM7T0aTK.d.ts → unified-DQ4VcT7H.d.ts} +1 -1
  58. package/dist/{usePublicRouteParams-B-CumWRc.d.ts → usePublicRouteParams-BlgwXweB.d.ts} +3 -3
  59. package/dist/utils.d.ts +2 -2
  60. package/dist/utils.js +52 -9
  61. package/dist/utils.js.map +1 -1
  62. package/docs/CONTENT_AUDIT_REPORT.md +253 -0
  63. package/docs/DOCUMENTATION_AUDIT.md +172 -0
  64. package/docs/README.md +142 -147
  65. package/docs/STYLE_GUIDE.md +37 -0
  66. package/docs/api/classes/ColumnFactory.md +17 -17
  67. package/docs/api/classes/ErrorBoundary.md +1 -1
  68. package/docs/api/classes/InvalidScopeError.md +4 -4
  69. package/docs/api/classes/MissingUserContextError.md +4 -4
  70. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  71. package/docs/api/classes/PermissionDeniedError.md +5 -5
  72. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  73. package/docs/api/classes/RBACAuditManager.md +8 -8
  74. package/docs/api/classes/RBACCache.md +35 -5
  75. package/docs/api/classes/RBACEngine.md +49 -20
  76. package/docs/api/classes/RBACError.md +4 -4
  77. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  78. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  79. package/docs/api/classes/StorageUtils.md +1 -1
  80. package/docs/api/enums/FileCategory.md +1 -1
  81. package/docs/api/interfaces/AggregateConfig.md +4 -4
  82. package/docs/api/interfaces/ButtonProps.md +1 -1
  83. package/docs/api/interfaces/CardProps.md +1 -1
  84. package/docs/api/interfaces/ColorPalette.md +1 -1
  85. package/docs/api/interfaces/ColorShade.md +1 -1
  86. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  87. package/docs/api/interfaces/DataRecord.md +11 -0
  88. package/docs/api/interfaces/DataTableAction.md +65 -29
  89. package/docs/api/interfaces/DataTableColumn.md +36 -23
  90. package/docs/api/interfaces/DataTableProps.md +80 -38
  91. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  92. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  93. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  94. package/docs/api/interfaces/EventLogoProps.md +1 -1
  95. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  96. package/docs/api/interfaces/FileMetadata.md +1 -1
  97. package/docs/api/interfaces/FileReference.md +1 -1
  98. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  99. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  100. package/docs/api/interfaces/FileUploadProps.md +1 -1
  101. package/docs/api/interfaces/FooterProps.md +1 -1
  102. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  103. package/docs/api/interfaces/InputProps.md +1 -1
  104. package/docs/api/interfaces/LabelProps.md +1 -1
  105. package/docs/api/interfaces/LoginFormProps.md +1 -1
  106. package/docs/api/interfaces/NavigationAccessRecord.md +11 -11
  107. package/docs/api/interfaces/NavigationContextType.md +9 -9
  108. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  109. package/docs/api/interfaces/NavigationItem.md +1 -1
  110. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  111. package/docs/api/interfaces/NavigationProviderProps.md +7 -7
  112. package/docs/api/interfaces/Organisation.md +1 -1
  113. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  114. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  115. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  116. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  117. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  118. package/docs/api/interfaces/PaceLoginPageProps.md +16 -3
  119. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  120. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  121. package/docs/api/interfaces/PagePermissionGuardProps.md +2 -2
  122. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  123. package/docs/api/interfaces/PaletteData.md +1 -1
  124. package/docs/api/interfaces/PermissionEnforcerProps.md +4 -4
  125. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  126. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  127. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  128. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  129. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  130. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  131. package/docs/api/interfaces/RBACConfig.md +1 -1
  132. package/docs/api/interfaces/RBACLogger.md +1 -1
  133. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  134. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  135. package/docs/api/interfaces/RouteAccessRecord.md +2 -2
  136. package/docs/api/interfaces/RouteConfig.md +2 -2
  137. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  138. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  139. package/docs/api/interfaces/StorageConfig.md +1 -1
  140. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  141. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  142. package/docs/api/interfaces/StorageListOptions.md +1 -1
  143. package/docs/api/interfaces/StorageListResult.md +1 -1
  144. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  145. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  146. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  147. package/docs/api/interfaces/StyleImport.md +1 -1
  148. package/docs/api/interfaces/SwitchProps.md +1 -1
  149. package/docs/api/interfaces/ToastActionElement.md +1 -1
  150. package/docs/api/interfaces/ToastProps.md +1 -1
  151. package/docs/api/interfaces/UnifiedAuthContextType.md +94 -521
  152. package/docs/api/interfaces/UnifiedAuthProviderProps.md +16 -16
  153. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  154. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  155. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  156. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  157. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  158. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  159. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  160. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  161. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  162. package/docs/api/interfaces/UserEventAccess.md +11 -11
  163. package/docs/api/interfaces/UserMenuProps.md +1 -1
  164. package/docs/api/interfaces/UserProfile.md +1 -1
  165. package/docs/api/modules.md +251 -269
  166. package/docs/api-reference/components.md +193 -0
  167. package/docs/api-reference/hooks.md +265 -0
  168. package/docs/api-reference/providers.md +6 -0
  169. package/docs/api-reference/types.md +6 -0
  170. package/docs/api-reference/utilities.md +207 -0
  171. package/docs/architecture/README.md +6 -0
  172. package/docs/{database-schema-requirements.md → architecture/database-schema-requirements.md} +6 -0
  173. package/docs/architecture/rbac-security-architecture.md +258 -0
  174. package/docs/architecture/services.md +9 -1
  175. package/docs/best-practices/README.md +6 -0
  176. package/docs/best-practices/accessibility.md +6 -0
  177. package/docs/{common-patterns.md → best-practices/common-patterns.md} +6 -0
  178. package/docs/best-practices/deployment.md +6 -0
  179. package/docs/best-practices/performance.md +475 -2
  180. package/docs/best-practices/security.md +6 -0
  181. package/docs/best-practices/testing.md +6 -0
  182. package/docs/core-concepts/authentication.md +6 -0
  183. package/docs/core-concepts/events.md +6 -0
  184. package/docs/core-concepts/organisations.md +6 -0
  185. package/docs/core-concepts/permissions.md +6 -0
  186. package/docs/core-concepts/rbac-system.md +6 -0
  187. package/docs/documentation-index.md +121 -182
  188. package/docs/{consuming-app-vite-config.md → getting-started/consuming-app-vite-config.md} +6 -0
  189. package/docs/getting-started/documentation-index.md +40 -0
  190. package/docs/getting-started/examples/README.md +878 -35
  191. package/docs/{faq.md → getting-started/faq.md} +7 -1
  192. package/docs/getting-started/installation-guide.md +6 -0
  193. package/docs/{quick-reference.md → getting-started/quick-reference.md} +6 -0
  194. package/docs/implementation-guides/app-layout.md +6 -0
  195. package/docs/implementation-guides/authentication.md +1021 -0
  196. package/docs/implementation-guides/component-styling.md +6 -0
  197. package/docs/implementation-guides/data-tables.md +1264 -2076
  198. package/docs/implementation-guides/dynamic-colors.md +6 -0
  199. package/docs/implementation-guides/event-theming-summary.md +6 -0
  200. package/docs/{file-reference-system.md → implementation-guides/file-reference-system.md} +6 -0
  201. package/docs/implementation-guides/file-upload-storage.md +6 -0
  202. package/docs/implementation-guides/forms.md +6 -0
  203. package/docs/implementation-guides/inactivity-tracking.md +6 -0
  204. package/docs/implementation-guides/navigation.md +6 -0
  205. package/docs/implementation-guides/organisation-security.md +6 -0
  206. package/docs/implementation-guides/permission-enforcement.md +6 -0
  207. package/docs/implementation-guides/public-pages-advanced.md +6 -0
  208. package/docs/implementation-guides/public-pages.md +6 -0
  209. package/docs/migration/MIGRATION_GUIDE.md +827 -351
  210. package/docs/migration/README.md +7 -1
  211. package/docs/migration/organisation-context-timing-fix.md +6 -0
  212. package/docs/migration/rbac-migration.md +44 -1
  213. package/docs/migration/service-architecture.md +6 -0
  214. package/docs/migration/v0.4.15-tailwind-scanning.md +6 -0
  215. package/docs/migration/v0.4.16-css-first-approach.md +6 -0
  216. package/docs/migration/v0.4.17-source-path-fix.md +6 -0
  217. package/docs/rbac/README-rbac-rls-integration.md +6 -0
  218. package/docs/rbac/README.md +6 -0
  219. package/docs/rbac/advanced-patterns.md +6 -0
  220. package/docs/rbac/api-reference.md +7 -1
  221. package/docs/rbac/breaking-changes-v3.md +222 -0
  222. package/docs/rbac/examples/rbac-rls-integration-example.md +6 -0
  223. package/docs/rbac/examples.md +6 -0
  224. package/docs/rbac/getting-started.md +6 -0
  225. package/docs/rbac/migration-guide.md +260 -0
  226. package/docs/rbac/quick-start.md +6 -0
  227. package/docs/rbac/rbac-rls-integration.md +6 -0
  228. package/docs/rbac/super-admin-guide.md +6 -0
  229. package/docs/rbac/troubleshooting.md +6 -0
  230. package/docs/security/README.md +6 -0
  231. package/docs/security/checklist.md +6 -0
  232. package/docs/styles/README.md +7 -1
  233. package/docs/{usage.md → styles/usage.md} +6 -0
  234. package/docs/testing/README.md +6 -0
  235. package/docs/{visual-testing.md → testing/visual-testing.md} +6 -0
  236. package/docs/troubleshooting/README.md +387 -5
  237. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +6 -0
  238. package/docs/troubleshooting/common-issues.md +6 -0
  239. package/docs/troubleshooting/database-view-compatibility.md +6 -0
  240. package/docs/troubleshooting/organisation-context-setup.md +6 -0
  241. package/docs/troubleshooting/react-hooks-issue-analysis.md +6 -0
  242. package/docs/troubleshooting/styling-issues.md +6 -0
  243. package/docs/troubleshooting/tailwind-content-scanning.md +6 -0
  244. package/package.json +1 -1
  245. package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -1
  246. package/src/__tests__/helpers/test-providers.tsx +3 -53
  247. package/src/components/DataTable/DataTable.test.tsx +319 -0
  248. package/src/components/DataTable/DataTable.tsx +32 -11
  249. package/src/components/DataTable/__tests__/{DataTable.comprehensive.test.tsx → DataTable.comprehensive.test.tsx.skip} +6 -4
  250. package/src/components/DataTable/__tests__/{DataTable.test.tsx → DataTable.test.tsx.skip} +6 -4
  251. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +31 -9
  252. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +601 -0
  253. package/src/components/DataTable/__tests__/keyboard.test.tsx +615 -0
  254. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +639 -0
  255. package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx.skip +330 -0
  256. package/src/components/DataTable/components/AccessDeniedPage.tsx +2 -2
  257. package/src/components/DataTable/components/ActionButtons.tsx +88 -104
  258. package/src/components/DataTable/components/DataTableCore.tsx +309 -337
  259. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +4 -2
  260. package/src/components/DataTable/components/DataTableModals.tsx +22 -1
  261. package/src/components/DataTable/components/EditableRow.tsx +69 -84
  262. package/src/components/DataTable/components/EmptyState.tsx +5 -1
  263. package/src/components/DataTable/components/ImportModal.tsx +65 -36
  264. package/src/components/DataTable/components/PaginationControls.tsx +40 -100
  265. package/src/components/DataTable/components/UnifiedTableBody.tsx +125 -148
  266. package/src/components/DataTable/context/DataTableContext.tsx +1 -1
  267. package/src/components/DataTable/core/ColumnFactory.ts +5 -0
  268. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +12 -10
  269. package/src/components/DataTable/examples/HierarchicalExample.tsx +1 -1
  270. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +1 -0
  271. package/src/components/DataTable/examples/PerformanceExample.tsx +1 -0
  272. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +1 -5
  273. package/src/components/DataTable/hooks/__tests__/useColumnVisibilityPersistence.test.ts +167 -0
  274. package/src/components/DataTable/hooks/index.ts +7 -0
  275. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +32 -15
  276. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +102 -0
  277. package/src/components/DataTable/hooks/useDataTableConfiguration.ts +89 -0
  278. package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +117 -0
  279. package/src/components/DataTable/hooks/useDataTablePermissions.ts +71 -27
  280. package/src/components/DataTable/hooks/useDataTableState.ts +39 -11
  281. package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +33 -0
  282. package/src/components/DataTable/hooks/useHierarchicalState.ts +15 -1
  283. package/src/components/DataTable/hooks/useKeyboardNavigation.ts +447 -0
  284. package/src/components/DataTable/hooks/useServerSideDataEffect.ts +94 -0
  285. package/src/components/DataTable/hooks/useTableColumns.ts +10 -7
  286. package/src/components/DataTable/hooks/useTableHandlers.ts +174 -0
  287. package/src/components/DataTable/index.ts +12 -3
  288. package/src/components/DataTable/types.ts +129 -9
  289. package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +159 -22
  290. package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +111 -0
  291. package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +15 -29
  292. package/src/components/DataTable/utils/a11yUtils.ts +244 -0
  293. package/src/components/DataTable/utils/debugTools.ts +609 -0
  294. package/src/components/DataTable/utils/exportUtils.ts +114 -16
  295. package/src/components/DataTable/utils/flexibleImport.ts +202 -32
  296. package/src/components/DataTable/utils/hierarchicalUtils.ts +1 -1
  297. package/src/components/DataTable/utils/index.ts +2 -0
  298. package/src/components/DataTable/utils/paginationUtils.ts +350 -0
  299. package/src/components/DataTable/utils/rowUtils.ts +6 -5
  300. package/src/components/NavigationMenu/NavigationMenu.test.tsx +19 -24
  301. package/src/components/NavigationMenu/NavigationMenu.tsx +19 -8
  302. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +1 -23
  303. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +56 -6
  304. package/src/components/PaceLoginPage/PaceLoginPage.tsx +137 -13
  305. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +1 -1
  306. package/src/components/Select/Select.tsx +1 -0
  307. package/src/components/examples/PermissionExample.tsx +173 -0
  308. package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
  309. package/src/examples/PublicEventPage.tsx +274 -0
  310. package/src/examples/PublicPageApp.tsx +308 -0
  311. package/src/examples/PublicPageUsageExample.tsx +216 -0
  312. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +12 -1
  313. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +129 -17
  314. package/src/hooks/__tests__/useRBAC.unit.test.ts +151 -846
  315. package/src/hooks/useOrganisationPermissions.test.ts +42 -18
  316. package/src/hooks/useOrganisationPermissions.ts +12 -6
  317. package/src/hooks/useOrganisationSecurity.test.ts +138 -85
  318. package/src/hooks/useOrganisationSecurity.ts +41 -10
  319. package/src/index.ts +0 -1
  320. package/src/providers/AuthProvider.simplified.tsx +880 -0
  321. package/src/providers/UnifiedAuthProvider.test.simple.tsx +8 -8
  322. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +29 -19
  323. package/src/providers/index.ts +0 -1
  324. package/src/providers/services/EventServiceProvider.tsx +19 -15
  325. package/src/providers/services/InactivityServiceProvider.tsx +19 -15
  326. package/src/providers/services/OrganisationServiceProvider.tsx +19 -15
  327. package/src/providers/services/UnifiedAuthProvider.tsx +156 -127
  328. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +1 -1
  329. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +3 -3
  330. package/src/rbac/README.md +1 -1
  331. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +25 -27
  332. package/src/rbac/__tests__/auth-rbac-security.integration.test.tsx +313 -0
  333. package/src/rbac/__tests__/engine.comprehensive.test.ts +114 -348
  334. package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +28 -110
  335. package/src/rbac/__tests__/rbac-engine-simplified.test.ts +33 -85
  336. package/src/rbac/__tests__/scenarios.user-role.test.tsx +2 -2
  337. package/src/rbac/adapters.tsx +26 -69
  338. package/src/rbac/api.test.ts +90 -27
  339. package/src/rbac/api.ts +61 -10
  340. package/src/rbac/audit.test.ts +33 -38
  341. package/src/rbac/audit.ts +21 -6
  342. package/src/rbac/cache.ts +33 -1
  343. package/src/rbac/components/NavigationGuard.tsx +11 -11
  344. package/src/rbac/components/NavigationProvider.test.tsx +11 -5
  345. package/src/rbac/components/NavigationProvider.tsx +37 -13
  346. package/src/rbac/components/PagePermissionGuard.tsx +111 -50
  347. package/src/rbac/components/PagePermissionProvider.tsx +5 -5
  348. package/src/rbac/components/PermissionEnforcer.tsx +11 -11
  349. package/src/rbac/components/RoleBasedRouter.tsx +5 -5
  350. package/src/rbac/components/SecureDataProvider.tsx +5 -5
  351. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +8 -8
  352. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +14 -14
  353. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +12 -12
  354. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +6 -6
  355. package/src/rbac/engine.test.simple.ts +19 -13
  356. package/src/rbac/engine.test.ts +1 -0
  357. package/src/rbac/engine.ts +330 -766
  358. package/src/rbac/errors.ts +156 -0
  359. package/src/rbac/hooks/usePermissions.ts +32 -10
  360. package/src/rbac/hooks/useRBAC.test.ts +126 -512
  361. package/src/rbac/hooks/useRBAC.ts +147 -193
  362. package/src/rbac/hooks/useResolvedScope.ts +12 -0
  363. package/src/rbac/index.ts +7 -4
  364. package/src/rbac/security.ts +109 -18
  365. package/src/rbac/types.ts +12 -1
  366. package/src/services/AuthService.ts +2 -15
  367. package/src/services/EventService.ts +26 -46
  368. package/src/services/OrganisationService.ts +51 -31
  369. package/src/services/__tests__/AuthService.test.ts +1 -1
  370. package/src/services/__tests__/EventService.test.ts +1 -1
  371. package/src/services/__tests__/OrganisationService.test.ts +1 -1
  372. package/src/styles/base.css +208 -0
  373. package/src/styles/semantic.css +24 -0
  374. package/src/types/database.generated.ts +7347 -0
  375. package/src/types/database.ts +20 -0
  376. package/src/utils/logger.ts +179 -0
  377. package/src/utils/organisationContext.ts +11 -4
  378. package/src/utils/storage/__tests__/helpers.unit.test.ts +6 -2
  379. package/dist/appNameResolver-UURKN7NF.js +0 -22
  380. package/dist/audit-6TOCAMKO.js.map +0 -1
  381. package/dist/chunk-B2WTCLCV.js.map +0 -1
  382. package/dist/chunk-FGMFQSHX.js.map +0 -1
  383. package/dist/chunk-K34IM5CT.js.map +0 -1
  384. package/dist/chunk-KHJS6VIA.js.map +0 -1
  385. package/dist/chunk-KK73ZB4E.js.map +0 -1
  386. package/dist/chunk-M5IWZRBT.js.map +0 -1
  387. package/dist/chunk-ULBI5JGB.js +0 -109
  388. package/dist/chunk-ULBI5JGB.js.map +0 -1
  389. package/dist/chunk-WN6XJWOS.js.map +0 -1
  390. package/dist/chunk-XLZ7U46Z.js.map +0 -1
  391. package/dist/chunk-Y6TXWPJO.js.map +0 -1
  392. package/docs/DOCUMENTATION_CHECKLIST.md +0 -281
  393. package/docs/TERMINOLOGY.md +0 -231
  394. package/docs/api/interfaces/RBACContextType.md +0 -468
  395. package/docs/api/interfaces/RBACProviderProps.md +0 -107
  396. package/docs/best-practices/performance-expansion.md +0 -473
  397. package/docs/breaking-changes.md +0 -179
  398. package/docs/consuming-app-example.md +0 -290
  399. package/docs/documentation-templates.md +0 -539
  400. package/docs/examples/navigation-menu-auth-fix.md +0 -344
  401. package/docs/getting-started/examples/basic-auth-app.md +0 -520
  402. package/docs/getting-started/examples/full-featured-app.md +0 -616
  403. package/docs/getting-started/quick-start.md +0 -376
  404. package/docs/implementation-guides/datatable-filtering.md +0 -313
  405. package/docs/implementation-guides/datatable-rbac-usage.md +0 -317
  406. package/docs/implementation-guides/hierarchical-datatable.md +0 -850
  407. package/docs/implementation-guides/large-datasets.md +0 -281
  408. package/docs/implementation-guides/performance.md +0 -403
  409. package/docs/migration/quick-migration-guide.md +0 -320
  410. package/docs/migration-guide.md +0 -193
  411. package/docs/migration-guides/unified-auth-provider-mandatory-timeouts.md +0 -226
  412. package/docs/performance/README.md +0 -551
  413. package/docs/style-guide.md +0 -964
  414. package/docs/troubleshooting/authentication-issues.md +0 -334
  415. package/docs/troubleshooting/debugging.md +0 -1117
  416. package/docs/troubleshooting/migration.md +0 -918
  417. package/src/__tests__/hooks/usePermissions.test.ts +0 -261
  418. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.rbac.test.tsx +0 -574
  419. package/src/hooks/__tests__/ServiceHooks.test.tsx +0 -613
  420. package/src/hooks/services/__tests__/useServiceHooks.test.tsx +0 -137
  421. package/src/hooks/services/usePermissions.ts +0 -70
  422. package/src/hooks/services/useRBACService.ts +0 -30
  423. package/src/hooks/usePermissionCheck.ts +0 -150
  424. package/src/providers/__tests__/ServiceProviders.test.tsx +0 -477
  425. package/src/providers/services/RBACServiceProvider.tsx +0 -79
  426. package/src/rbac/__tests__/integration.authflow.test.tsx +0 -119
  427. package/src/rbac/__tests__/integration.navigation.test.tsx +0 -69
  428. package/src/rbac/__tests__/integration.securedata.test.tsx +0 -92
  429. package/src/rbac/__tests__/integration.smoke.test.tsx +0 -73
  430. package/src/rbac/providers/RBACProvider.tsx +0 -645
  431. package/src/rbac/providers/__tests__/RBACProvider.integration.test.tsx +0 -688
  432. package/src/rbac/providers/__tests__/RBACProvider.test.tsx +0 -1186
  433. package/src/rbac/providers/index.ts +0 -11
  434. package/src/services/RBACService.ts +0 -522
  435. package/src/services/__tests__/RBACService.test.ts +0 -492
  436. package/src/services/interfaces/IRBACService.ts +0 -62
  437. package/src/utils/appNameResolver.test 2.ts +0 -494
  438. /package/dist/{DataTable-4GAVPIEG.js.map → DataTable-QCNCV6IK.js.map} +0 -0
  439. /package/dist/{UnifiedAuthProvider-3NKDOSOK.js.map → UnifiedAuthProvider-Z2FWNW7O.js.map} +0 -0
  440. /package/dist/{api-DDMUKIUD.js.map → api-KG4A2X7P.js.map} +0 -0
  441. /package/dist/{appNameResolver-UURKN7NF.js.map → audit-65VNHEV2.js.map} +0 -0
  442. /package/dist/{chunk-LW7MMEAQ.js.map → chunk-CRKP3HXI.js.map} +0 -0
  443. /package/dist/{chunk-URUTVZ7N.js.map → chunk-DVHZ5L55.js.map} +0 -0
  444. /package/dist/{chunk-AFGTSUAD.js.map → chunk-NKT2DLZI.js.map} +0 -0
  445. /package/dist/{chunk-NTNILOBC.js.map → chunk-TLD5BEU6.js.map} +0 -0
  446. /package/docs/{app.css.example → styles/app.css.example} +0 -0
@@ -1,290 +0,0 @@
1
- # Consuming App Example
2
-
3
- This example shows how to properly use PACE Core DataTable in a consuming application with CSS-first Tailwind v4 configuration.
4
-
5
- ## Project Setup
6
-
7
- ### 1. Create a new React app
8
-
9
- ```bash
10
- npx create-react-app my-app --template typescript
11
- cd my-app
12
- ```
13
-
14
- ### 2. Install PACE Core
15
-
16
- ```bash
17
- npm install @jmruthers/pace-core
18
- ```
19
-
20
- ### 3. Install required peer dependencies
21
-
22
- ```bash
23
- npm install @tanstack/react-table @radix-ui/react-checkbox @radix-ui/react-dialog @radix-ui/react-dropdown-menu @radix-ui/react-label @radix-ui/react-slot lucide-react class-variance-authority clsx tailwind-merge
24
- ```
25
-
26
- ### 4. Install Tailwind CSS v4
27
-
28
- ```bash
29
- npm install -D @tailwindcss/vite tailwindcss@^4.0.0
30
- ```
31
-
32
- ## Implementation
33
-
34
- ### 1. Import PACE Core styles
35
-
36
- ```tsx
37
- // src/index.tsx
38
- // Import the core CSS file - includes everything you need
39
- import '@jmruthers/pace-core/src/styles/core.css';
40
- import React from 'react';
41
- import ReactDOM from 'react-dom/client';
42
- import App from './App';
43
-
44
- const root = ReactDOM.createRoot(
45
- document.getElementById('root') as HTMLElement
46
- );
47
- root.render(
48
- <React.StrictMode>
49
- <App />
50
- </React.StrictMode>
51
- );
52
- ```
53
-
54
- **That's it!** The core.css file includes:
55
- - Complete color palettes (main, secondary, accent)
56
- - All fonts (Georama, Open Sans, Reddit Mono)
57
- - Base element styles and resets
58
- - Tailwind v4 utility classes
59
- - Component styling
60
-
61
- ### 2. Create your DataTable component
62
-
63
- ```tsx
64
- // src/App.tsx
65
- import React, { useMemo } from 'react';
66
- import { DataTable } from '@jmruthers/pace-core';
67
- import type { DataTableFeatureConfig } from '@jmruthers/pace-core';
68
-
69
- interface User {
70
- id: string;
71
- name: string;
72
- email: string;
73
- role: string;
74
- status: 'active' | 'inactive' | 'pending';
75
- priority: 'low' | 'medium' | 'high';
76
- }
77
-
78
- const App: React.FC = () => {
79
- const data: User[] = [
80
- { id: '1', name: 'John Doe', email: 'john@example.com', role: 'Admin', status: 'active', priority: 'high' },
81
- { id: '2', name: 'Jane Smith', email: 'jane@example.com', role: 'User', status: 'active', priority: 'medium' },
82
- { id: '3', name: 'Bob Johnson', email: 'bob@example.com', role: 'User', status: 'pending', priority: 'low' },
83
- { id: '4', name: 'Alice Brown', email: 'alice@example.com', role: 'Manager', status: 'inactive', priority: 'high' },
84
- ];
85
-
86
- const columns = useMemo(() => [
87
- {
88
- accessorKey: 'name',
89
- header: 'Name',
90
- enableSorting: true,
91
- enableGrouping: true,
92
- enableColumnFilter: true,
93
- },
94
- {
95
- accessorKey: 'email',
96
- header: 'Email',
97
- enableSorting: true,
98
- enableGrouping: true,
99
- enableColumnFilter: true,
100
- },
101
- {
102
- accessorKey: 'role',
103
- header: 'Role',
104
- enableSorting: true,
105
- enableGrouping: true,
106
- enableColumnFilter: true,
107
- cell: ({ row }: { row: { original: User } }) => (
108
- <span className="inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold bg-primary text-primary-foreground">
109
- {row.original.role}
110
- </span>
111
- ),
112
- },
113
- {
114
- accessorKey: 'status',
115
- header: 'Status',
116
- enableSorting: true,
117
- enableGrouping: true,
118
- enableColumnFilter: true,
119
- cell: ({ row }: { row: { original: User } }) => {
120
- const status = row.original.status;
121
- const badgeClass = status === 'active' ? 'bg-success text-success-foreground' :
122
- status === 'pending' ? 'bg-warning text-warning-foreground' :
123
- 'bg-error text-error-foreground';
124
- return (
125
- <span className={`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold ${badgeClass}`}>
126
- {status}
127
- </span>
128
- );
129
- },
130
- },
131
- {
132
- accessorKey: 'priority',
133
- header: 'Priority',
134
- enableSorting: true,
135
- enableGrouping: true,
136
- enableColumnFilter: true,
137
- cell: ({ row }: { row: { original: User } }) => {
138
- const priority = row.original.priority;
139
- const badgeClass = priority === 'high' ? 'bg-error text-error-foreground' :
140
- priority === 'medium' ? 'bg-warning text-warning-foreground' :
141
- 'bg-success text-success-foreground';
142
- return (
143
- <span className={`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold ${badgeClass}`}>
144
- {priority}
145
- </span>
146
- );
147
- },
148
- },
149
- ], []);
150
-
151
- const features: DataTableFeatureConfig = {
152
- search: true,
153
- pagination: true,
154
- sorting: true,
155
- filtering: true,
156
- import: false,
157
- export: true,
158
- selection: true,
159
- creation: true,
160
- editing: true,
161
- deletion: true,
162
- deleteSelected: true,
163
- grouping: true,
164
- columnVisibility: true,
165
- columnReordering: true,
166
- virtualization: false,
167
- performanceMetrics: false,
168
- bulkOperations: true,
169
- rowActions: true,
170
- };
171
-
172
- return (
173
- <div className="min-h-screen bg-sec-50 p-8">
174
- <div className="max-w-7xl mx-auto">
175
- <h1 className="text-3xl font-bold text-sec-900 mb-8">
176
- My Application with PACE Core DataTable
177
- </h1>
178
-
179
- <div className="bg-main-50 rounded-lg shadow">
180
- <DataTable
181
- data={data}
182
- columns={columns}
183
- title="Users"
184
- description="Manage your application users"
185
- features={features}
186
- onEditRow={(row, data) => {
187
- console.log('Edit row:', row, data);
188
- }}
189
- onDeleteRow={(row) => {
190
- console.log('Delete row:', row);
191
- }}
192
- onCreateRow={(data) => {
193
- console.log('Create row:', data);
194
- }}
195
- onImport={(data) => {
196
- console.log('Import data:', data);
197
- }}
198
- />
199
- </div>
200
- </div>
201
- </div>
202
- );
203
- };
204
-
205
- export default App;
206
- ```
207
-
208
- ### 3. Configure Vite with Tailwind CSS v4
209
-
210
- ```js
211
- // vite.config.js
212
- import { defineConfig } from 'vite'
213
- import react from '@vitejs/plugin-react'
214
- import tailwindcss from '@tailwindcss/vite'
215
-
216
- export default defineConfig({
217
- plugins: [
218
- react(),
219
- tailwindcss()
220
- ],
221
- })
222
- ```
223
-
224
- ### 4. Alternative: Use PACE Core Vite Plugin
225
-
226
- For easier setup, you can use the provided PACE Core Vite plugin:
227
-
228
- ```js
229
- // vite.config.js
230
- import { createPaceCoreViteConfig } from '@jmruthers/pace-core/vite-plugin-tailwind-v4'
231
-
232
- export default createPaceCoreViteConfig({
233
- // Your custom Vite options here
234
- })
235
- ```
236
-
237
- ## Key Points
238
-
239
- 1. **Import styles**: The CSS file provides all styling out of the box:
240
- ```tsx
241
- import '@jmruthers/pace-core/src/styles/core.css';
242
- ```
243
- 2. **Use native utilities**: Use standard Tailwind utilities like `bg-main-600`, `text-sec-700`, `border-acc-500`, etc.
244
- 3. **Configure features**: Set up the `features` object to enable/disable DataTable functionality
245
- 4. **Component styling**: Components handle their own internal styling - no need for component-specific utility classes
246
-
247
- ## Expected Result
248
-
249
- With this setup, your DataTable should render with:
250
- - ✅ Proper toolbar with search and action buttons
251
- - ✅ Styled table headers and rows
252
- - ✅ Colored badges for status and priority
253
- - ✅ Hover effects and transitions
254
- - ✅ Consistent PACE Core design system
255
- - ✅ All functionality working correctly
256
-
257
- ## Troubleshooting
258
-
259
- If the DataTable doesn't look styled:
260
-
261
- 1. **Check imports**: Ensure the CSS file is imported at the top of your main file:
262
- ```tsx
263
- import '@jmruthers/pace-core/src/styles/core.css';
264
- ```
265
- 2. **Check dependencies**: Make sure all peer dependencies are installed
266
- 3. **Check Tailwind**: Ensure Tailwind CSS v4 is properly configured
267
- 4. **Check console**: Look for any build or runtime errors
268
-
269
- ## How It Works
270
-
271
- Tailwind v4 automatically scans for utility classes through your build tool configuration:
272
-
273
- **Your vite.config.ts handles the scanning:**
274
- ```ts
275
- // vite.config.ts
276
- export default defineConfig({
277
- plugins: [
278
- react(),
279
- tailwindcss() // Automatically scans all source files
280
- ],
281
- })
282
- ```
283
-
284
- **The core.css file provides:**
285
- - Complete color palettes and theme definitions
286
- - Base styles and typography
287
- - Font definitions
288
- - Component styling foundation
289
-
290
- This means Tailwind automatically detects and includes all utility classes used in your source files, ensuring complete styling coverage without any manual configuration.