@jmruthers/pace-core 0.6.6 → 0.6.8

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 (292) hide show
  1. package/{scripts/audit/audit-dependencies.cjs → audit-tool/00-dependencies.cjs} +227 -22
  2. package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
  3. package/audit-tool/audits/02-project-structure.cjs +240 -0
  4. package/audit-tool/audits/03-architecture.cjs +224 -0
  5. package/audit-tool/audits/04-code-quality.cjs +149 -0
  6. package/audit-tool/audits/05-styling.cjs +224 -0
  7. package/audit-tool/audits/06-security-rbac.cjs +554 -0
  8. package/audit-tool/audits/07-api-tech-stack.cjs +355 -0
  9. package/audit-tool/audits/08-testing-documentation.cjs +202 -0
  10. package/audit-tool/audits/09-operations.cjs +208 -0
  11. package/audit-tool/index.cjs +295 -0
  12. package/audit-tool/utils/code-utils.cjs +218 -0
  13. package/audit-tool/utils/file-utils.cjs +230 -0
  14. package/audit-tool/utils/report-utils.cjs +380 -0
  15. package/cursor-rules/00-standards-overview.mdc +156 -0
  16. package/cursor-rules/{00-pace-core-compliance.mdc → 01-pace-core-compliance.mdc} +187 -34
  17. package/cursor-rules/02-project-structure.mdc +37 -5
  18. package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +125 -11
  19. package/cursor-rules/04-code-quality.mdc +419 -0
  20. package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +55 -10
  21. package/cursor-rules/{09-rbac-compliance.mdc → 06-security-rbac.mdc} +62 -6
  22. package/cursor-rules/07-api-tech-stack.mdc +377 -0
  23. package/cursor-rules/08-testing-documentation.mdc +324 -0
  24. package/cursor-rules/09-operations.mdc +365 -0
  25. package/dist/DataTable-6RMSCQJ6.js +15 -0
  26. package/dist/{DataTable-2N_tqbfq.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
  27. package/dist/{PublicPageProvider-BBH6Vqg7.d.ts → PublicPageProvider-CIGSujI2.d.ts} +40 -24
  28. package/dist/{UnifiedAuthProvider-ZT6TIGM7.js → UnifiedAuthProvider-7SNDOWYD.js} +2 -2
  29. package/dist/{api-Y4MQWOFW.js → api-7P7DI652.js} +1 -1
  30. package/dist/{chunk-MAGBIDNS.js → chunk-4DDCYDQ3.js} +8 -7
  31. package/dist/{chunk-BVP2BCJF.js → chunk-5W2A3DRC.js} +10 -9
  32. package/dist/{chunk-SD6WQY43.js → chunk-7ILTDCL2.js} +9 -1
  33. package/dist/{chunk-3QC3KRHK.js → chunk-A3W6LW53.js} +16 -1
  34. package/dist/{chunk-3O3WHILE.js → chunk-EF2UGZWY.js} +239 -63
  35. package/dist/{chunk-LAZMKTTF.js → chunk-EURB7QFZ.js} +341 -337
  36. package/dist/{chunk-2HGJFNAH.js → chunk-FEJLJNWA.js} +1 -15
  37. package/dist/{chunk-7TYHROIV.js → chunk-GS5672WG.js} +55 -13
  38. package/dist/{chunk-UIYSCEV7.js → chunk-IUBRCBSY.js} +1 -1
  39. package/dist/{chunk-ZFYPMX46.js → chunk-LX6U42O3.js} +1 -1
  40. package/dist/{chunk-FENMYN2U.js → chunk-MPBLMWVR.js} +3 -3
  41. package/dist/{chunk-ZS5VO5JB.js → chunk-NKHKXPI4.js} +408 -453
  42. package/dist/{chunk-A55DK444.js → chunk-OJ4SKRSV.js} +1 -7
  43. package/dist/{chunk-4T7OBVTU.js → chunk-S6ZQKDY6.js} +1 -1
  44. package/dist/{chunk-FTCRZOG2.js → chunk-T5CVK4R3.js} +5 -5
  45. package/dist/{chunk-OHIK3MIO.js → chunk-Z2FNRKF3.js} +13 -13
  46. package/dist/components.d.ts +5 -4
  47. package/dist/components.js +29 -34
  48. package/dist/eslint-rules/index.cjs +22 -9
  49. package/{src/eslint-rules/rules/compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +184 -23
  50. package/dist/eslint-rules/rules/04-code-quality.cjs +346 -0
  51. package/dist/eslint-rules/rules/05-styling.cjs +61 -0
  52. package/dist/eslint-rules/rules/{rbac.cjs → 06-security-rbac.cjs} +34 -13
  53. package/dist/eslint-rules/rules/07-api-tech-stack.cjs +385 -0
  54. package/dist/eslint-rules/rules/08-testing.cjs +94 -0
  55. package/dist/{functions-DHebl8-F.d.ts → functions-lBy5L2ry.d.ts} +1 -1
  56. package/dist/hooks.d.ts +5 -5
  57. package/dist/hooks.js +8 -8
  58. package/dist/index.d.ts +7 -7
  59. package/dist/index.js +21 -20
  60. package/dist/providers.js +2 -2
  61. package/dist/rbac/index.d.ts +1 -1
  62. package/dist/rbac/index.js +8 -8
  63. package/dist/theming/runtime.d.ts +61 -1
  64. package/dist/theming/runtime.js +1 -1
  65. package/dist/{types-B-K_5VnO.d.ts → types-DXstZpNI.d.ts} +0 -17
  66. package/dist/types.d.ts +2 -2
  67. package/dist/{usePublicRouteParams-COZ28Mvq.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +19 -19
  68. package/dist/utils.d.ts +2 -2
  69. package/dist/utils.js +8 -8
  70. package/docs/README.md +1 -1
  71. package/docs/api/modules.md +106 -41
  72. package/docs/api-reference/components.md +18 -20
  73. package/docs/api-reference/hooks.md +80 -80
  74. package/docs/api-reference/types.md +1 -1
  75. package/docs/api-reference/utilities.md +1 -1
  76. package/docs/architecture/README.md +1 -1
  77. package/docs/core-concepts/events.md +3 -3
  78. package/docs/core-concepts/organisations.md +6 -6
  79. package/docs/core-concepts/permissions.md +6 -6
  80. package/docs/documentation-index.md +12 -18
  81. package/docs/getting-started/dependencies.md +23 -0
  82. package/docs/getting-started/documentation-index.md +1 -1
  83. package/docs/getting-started/examples/README.md +4 -4
  84. package/docs/getting-started/examples/full-featured-app.md +1 -1
  85. package/docs/getting-started/faq.md +2 -2
  86. package/docs/getting-started/quick-reference.md +4 -4
  87. package/docs/implementation-guides/app-layout.md +1 -1
  88. package/docs/implementation-guides/authentication.md +15 -15
  89. package/docs/implementation-guides/component-styling.md +1 -1
  90. package/docs/implementation-guides/data-tables.md +127 -34
  91. package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
  92. package/docs/implementation-guides/dynamic-colors.md +3 -3
  93. package/docs/implementation-guides/file-upload-storage.md +2 -2
  94. package/docs/implementation-guides/hierarchical-datatable.md +40 -60
  95. package/docs/implementation-guides/inactivity-tracking.md +3 -3
  96. package/docs/implementation-guides/large-datasets.md +3 -2
  97. package/docs/implementation-guides/organisation-security.md +2 -2
  98. package/docs/implementation-guides/performance.md +2 -2
  99. package/docs/implementation-guides/permission-enforcement.md +1 -1
  100. package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
  101. package/docs/migration/V0.4.0_rbac-migration.md +6 -6
  102. package/docs/rbac/README.md +5 -5
  103. package/docs/rbac/advanced-patterns.md +6 -6
  104. package/docs/rbac/api-reference.md +20 -20
  105. package/docs/rbac/event-based-apps.md +3 -3
  106. package/docs/rbac/examples.md +41 -41
  107. package/docs/rbac/getting-started.md +37 -37
  108. package/docs/rbac/performance.md +1 -1
  109. package/docs/rbac/quick-start.md +52 -52
  110. package/docs/rbac/secure-client-protection.md +1 -1
  111. package/docs/rbac/troubleshooting.md +1 -1
  112. package/docs/security/README.md +5 -5
  113. package/docs/standards/0-standards-overview.md +220 -0
  114. package/docs/standards/{00-pace-core-compliance.md → 1-pace-core-compliance-standards.md} +241 -185
  115. package/docs/standards/{02-project-structure.md → 2-project-structure-standards.md} +11 -47
  116. package/docs/standards/3-architecture-standards.md +606 -0
  117. package/docs/standards/4-code-quality-standards.md +728 -0
  118. package/docs/standards/{08-markup-quality.md → 5-styling-standards.md} +12 -9
  119. package/docs/standards/{09-rbac-compliance.md → 6-security-rbac-standards.md} +126 -18
  120. package/docs/standards/7-api-tech-stack-standards.md +662 -0
  121. package/docs/standards/8-testing-documentation-standards.md +401 -0
  122. package/docs/standards/9-operations-standards.md +1102 -0
  123. package/docs/standards/README.md +203 -104
  124. package/docs/troubleshooting/README.md +4 -4
  125. package/docs/troubleshooting/common-issues.md +2 -2
  126. package/docs/troubleshooting/debugging.md +9 -9
  127. package/docs/troubleshooting/migration.md +4 -4
  128. package/eslint-config-pace-core.cjs +50 -20
  129. package/package.json +50 -19
  130. package/scripts/eslint-audit.cjs +123 -0
  131. package/scripts/install-cursor-rules.cjs +11 -243
  132. package/scripts/install-eslint-config.cjs +349 -0
  133. package/scripts/validate-dependencies.cjs +248 -0
  134. package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +2 -2
  135. package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
  136. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +30 -18
  137. package/src/__tests__/integration/UserProfile.test.tsx +14 -14
  138. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
  139. package/src/__tests__/templates/accessibility.test.template.tsx +10 -9
  140. package/src/__tests__/templates/component.test.template.tsx +18 -15
  141. package/src/components/AddressField/AddressField.tsx +26 -1
  142. package/src/components/Alert/Alert.test.tsx +86 -22
  143. package/src/components/Alert/Alert.tsx +19 -11
  144. package/src/components/Badge/Badge.tsx +1 -1
  145. package/src/components/Calendar/Calendar.tsx +201 -47
  146. package/src/components/Checkbox/Checkbox.test.tsx +2 -1
  147. package/src/components/ContextSelector/ContextSelector.tsx +108 -126
  148. package/src/components/DataTable/AUDIT_REPORT.md +293 -0
  149. package/src/components/DataTable/DataTable.tsx +1 -19
  150. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +6 -2
  151. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +21 -6
  152. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +3 -2
  153. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
  154. package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
  155. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
  156. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
  157. package/src/components/DataTable/components/DataTableLayout.tsx +5 -16
  158. package/src/components/DataTable/components/EditableRow.tsx +5 -7
  159. package/src/components/DataTable/components/EmptyState.tsx +11 -10
  160. package/src/components/DataTable/components/FilterRow.tsx +2 -4
  161. package/src/components/DataTable/components/ImportModal.tsx +124 -126
  162. package/src/components/DataTable/components/LoadingState.tsx +5 -6
  163. package/src/components/DataTable/components/SortIndicator.tsx +50 -0
  164. package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
  165. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
  166. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
  167. package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
  168. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
  169. package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +45 -27
  170. package/src/components/DataTable/components/index.ts +2 -1
  171. package/src/components/DataTable/types.ts +0 -18
  172. package/src/components/DataTable/utils/a11yUtils.ts +17 -0
  173. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +1 -1
  174. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
  175. package/src/components/DateTimeField/DateTimeField.tsx +7 -8
  176. package/src/components/Dialog/Dialog.test.tsx +1 -0
  177. package/src/components/Dialog/Dialog.tsx +25 -8
  178. package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
  179. package/src/components/FileUpload/FileUpload.test.tsx +45 -16
  180. package/src/components/FileUpload/FileUpload.tsx +141 -130
  181. package/src/components/NavigationMenu/NavigationMenu.test.tsx +48 -12
  182. package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +9 -9
  183. package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +30 -30
  184. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +4 -4
  185. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +7 -1
  186. package/src/components/Progress/Progress.tsx +2 -4
  187. package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
  188. package/src/components/Select/Select.tsx +86 -77
  189. package/src/components/Select/types.ts +3 -0
  190. package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
  191. package/src/hooks/__tests__/hooks.integration.test.tsx +49 -49
  192. package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +8 -5
  193. package/src/hooks/__tests__/useFileUrl.unit.test.ts +4 -0
  194. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +99 -99
  195. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +45 -8
  196. package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +22 -2
  197. package/src/hooks/public/usePublicEvent.ts +5 -5
  198. package/src/hooks/public/usePublicEventLogo.ts +5 -5
  199. package/src/hooks/public/usePublicFileDisplay.ts +2 -2
  200. package/src/hooks/public/usePublicRouteParams.ts +13 -9
  201. package/src/hooks/useAddressAutocomplete.test.ts +18 -18
  202. package/src/hooks/useAppConfig.ts +2 -2
  203. package/src/hooks/useEventTheme.test.ts +7 -7
  204. package/src/hooks/useEventTheme.ts +2 -1
  205. package/src/hooks/useFileDisplay.ts +2 -2
  206. package/src/hooks/useFileUrl.ts +52 -8
  207. package/src/hooks/useOrganisationSecurity.test.ts +2 -1
  208. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
  209. package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
  210. package/src/providers/__tests__/EventProvider.test.tsx +61 -61
  211. package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
  212. package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
  213. package/src/providers/__tests__/ProviderLifecycle.test.tsx +38 -38
  214. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
  215. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
  216. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +10 -10
  217. package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +15 -6
  218. package/src/rbac/__tests__/rbac-functions.test.ts +3 -3
  219. package/src/rbac/api.test.ts +104 -0
  220. package/src/rbac/engine.ts +1 -1
  221. package/src/rbac/hooks/useCan.test.ts +2 -2
  222. package/src/rbac/secureClient.ts +1 -1
  223. package/src/rbac/types/functions.ts +1 -1
  224. package/src/styles/core.css +7 -0
  225. package/src/theming/__tests__/parseEventColours.test.ts +118 -3
  226. package/src/theming/parseEventColours.ts +77 -11
  227. package/src/types/supabase.ts +2 -3
  228. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +9 -9
  229. package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
  230. package/src/utils/file-reference/__tests__/file-reference.test.ts +4 -0
  231. package/src/utils/formatting/formatDate.test.ts +3 -2
  232. package/src/utils/formatting/formatDateTime.test.ts +2 -2
  233. package/src/utils/google-places/googlePlacesUtils.test.ts +36 -24
  234. package/src/utils/storage/README.md +1 -1
  235. package/src/utils/storage/__tests__/helpers.unit.test.ts +19 -12
  236. package/src/utils/storage/helpers.test.ts +69 -3
  237. package/cursor-rules/01-standards-compliance.mdc +0 -285
  238. package/cursor-rules/04-testing-standards.mdc +0 -270
  239. package/cursor-rules/05-bug-reports-and-features.mdc +0 -248
  240. package/cursor-rules/06-code-quality.mdc +0 -311
  241. package/cursor-rules/07-tech-stack-compliance.mdc +0 -216
  242. package/cursor-rules/10-error-handling-patterns.mdc +0 -179
  243. package/cursor-rules/11-performance-optimization.mdc +0 -169
  244. package/cursor-rules/12-ci-cd-integration.mdc +0 -150
  245. package/dist/DataTable-LRJL4IRV.js +0 -15
  246. package/dist/eslint-rules/rules/compliance.cjs +0 -348
  247. package/dist/eslint-rules/rules/components.cjs +0 -113
  248. package/dist/eslint-rules/rules/imports.cjs +0 -102
  249. package/docs/best-practices/README.md +0 -472
  250. package/docs/best-practices/accessibility.md +0 -604
  251. package/docs/best-practices/common-patterns.md +0 -516
  252. package/docs/best-practices/deployment.md +0 -1103
  253. package/docs/best-practices/performance.md +0 -1328
  254. package/docs/best-practices/security.md +0 -940
  255. package/docs/best-practices/testing.md +0 -1034
  256. package/docs/rbac/compliance/compliance-guide.md +0 -544
  257. package/docs/standards/01-standards-compliance.md +0 -188
  258. package/docs/standards/03-solid-principles.md +0 -39
  259. package/docs/standards/04-testing-standards.md +0 -36
  260. package/docs/standards/05-bug-reports-and-features.md +0 -27
  261. package/docs/standards/06-code-quality.md +0 -34
  262. package/docs/standards/07-tech-stack-compliance.md +0 -30
  263. package/docs/standards/10-error-handling-patterns.md +0 -401
  264. package/docs/standards/11-performance-optimization.md +0 -348
  265. package/docs/standards/12-ci-cd-integration.md +0 -370
  266. package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +0 -192
  267. package/scripts/audit/audit-compliance.cjs +0 -1295
  268. package/scripts/audit/audit-components.cjs +0 -260
  269. package/scripts/audit/audit-rbac.cjs +0 -954
  270. package/scripts/audit/audit-standards.cjs +0 -1268
  271. package/scripts/audit/index.cjs +0 -1927
  272. package/src/components/DataTable/components/DataTableBody.tsx +0 -478
  273. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
  274. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  275. package/src/components/DataTable/components/GroupHeader.tsx +0 -54
  276. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  277. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
  278. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
  279. package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
  280. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
  281. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
  282. package/src/components/DataTable/core/DataTableContext.tsx +0 -216
  283. package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
  284. package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
  285. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
  286. package/src/components/DataTable/utils/debugTools.ts +0 -514
  287. package/src/eslint-rules/index.cjs +0 -22
  288. package/src/eslint-rules/rules/components.cjs +0 -113
  289. package/src/eslint-rules/rules/imports.cjs +0 -102
  290. package/src/eslint-rules/rules/rbac.cjs +0 -790
  291. package/src/eslint-rules/utils/helpers.cjs +0 -42
  292. package/src/eslint-rules/utils/manifest-loader.cjs +0 -75
@@ -222,7 +222,7 @@ function MyComponent() {
222
222
  }
223
223
  }, [hasPermission, organisationId]);
224
224
 
225
- if (isLoading) return <div>Loading...</div>;
225
+ if (isLoading) return <p>Loading...</p>;
226
226
 
227
227
  return <DataTable data={data} />;
228
228
  }
@@ -281,7 +281,7 @@ See [Public Pages Guide](./implementation-guides/public-pages.md).
281
281
  3. Use React.memo for expensive components
282
282
  4. Optimize data table rendering
283
283
 
284
- See [Performance Guide](./best-practices/performance.md).
284
+ See [Performance Optimization](../standards/9-operations-standards.md#performance-optimization).
285
285
 
286
286
  ## Still Have Questions?
287
287
 
@@ -92,7 +92,7 @@ import { useUnifiedAuth } from '@jmruthers/pace-core';
92
92
  function MyComponent() {
93
93
  const { user, loading, signIn, signOut } = useUnifiedAuth();
94
94
 
95
- if (loading) return <div>Loading...</div>;
95
+ if (loading) return <p>Loading...</p>;
96
96
  if (!user) return <button onClick={signIn}>Sign In</button>;
97
97
 
98
98
  return (
@@ -184,7 +184,7 @@ function SuperAdminPanel() {
184
184
 
185
185
  if (!isSuperAdmin) return null;
186
186
 
187
- return <div>Super admin panel</div>;
187
+ return <section>Super admin panel</section>;
188
188
  }
189
189
  ```
190
190
 
@@ -510,7 +510,7 @@ function MyComponent() {
510
510
  const { user, loading, error } = useUnifiedAuth();
511
511
 
512
512
  if (error) {
513
- return <div>Error: {error.message}</div>;
513
+ return <p>Error: {error.message}</p>;
514
514
  }
515
515
 
516
516
  // ... rest of component
@@ -611,4 +611,4 @@ function AdminPanel() {
611
611
  - **Common Issues**: [Troubleshooting Guide](./troubleshooting/common-issues.md)
612
612
  - **Debugging**: [Debugging Guide](./troubleshooting/debugging.md)
613
613
  - **Migration**: [Migration Guide](./migration/)
614
- - **Security**: [Security Best Practices](./best-practices/security.md)
614
+ - **Security**: [Security & RBAC Standards](../standards/6-security-rbac-standards.md)
@@ -963,7 +963,7 @@ test('renders mobile layout correctly', () => {
963
963
  ### 1. Layout Structure
964
964
 
965
965
  - Use semantic HTML elements (header, nav, main, aside, footer)
966
- - Implement proper heading hierarchy
966
+ - Implement proper heading hierarchy (heading levels can skip when semantically appropriate)
967
967
  - Provide clear navigation structure
968
968
  - Use consistent spacing and typography
969
969
 
@@ -326,9 +326,9 @@ function UserDashboard() {
326
326
  hasEventAccess, // Check event access
327
327
  } = useUnifiedAuth();
328
328
 
329
- if (loading) return <div>Loading...</div>;
330
- if (error) return <div>Error: {error.message}</div>;
331
- if (!user) return <div>Please log in</div>;
329
+ if (loading) return <p>Loading...</p>;
330
+ if (error) return <p>Error: {error.message}</p>;
331
+ if (!user) return <p>Please log in</p>;
332
332
 
333
333
  return (
334
334
  <div>
@@ -441,14 +441,14 @@ function EventContent() {
441
441
  const { selectedEvent, hasEventAccess } = useUnifiedAuth();
442
442
 
443
443
  if (!selectedEvent) {
444
- return <div>Please select an event</div>;
444
+ return <p>Please select an event</p>;
445
445
  }
446
446
 
447
447
  if (!hasEventAccess(selectedEvent.id)) {
448
- return <div>You don't have access to this event</div>;
448
+ return <p>You don't have access to this event</p>;
449
449
  }
450
450
 
451
- return <div>Event content for {selectedEvent.name}</div>;
451
+ return <section>Event content for {selectedEvent.name}</section>;
452
452
  }
453
453
  ```
454
454
 
@@ -703,14 +703,14 @@ function ConditionalContent() {
703
703
  const { user, loading } = useUnifiedAuth();
704
704
 
705
705
  if (loading) {
706
- return <div>Loading...</div>;
706
+ return <p>Loading...</p>;
707
707
  }
708
708
 
709
709
  if (!user) {
710
- return <div>Please log in to continue</div>;
710
+ return <p>Please log in to continue</p>;
711
711
  }
712
712
 
713
- return <div>Welcome, {user.email}!</div>;
713
+ return <p>Welcome, {user.email}!</p>;
714
714
  }
715
715
  ```
716
716
 
@@ -850,11 +850,11 @@ function App() {
850
850
  function AuthTest() {
851
851
  const { user, loading, error } = useUnifiedAuth();
852
852
 
853
- if (loading) return <div>Loading...</div>;
854
- if (error) return <div>Error: {error.message}</div>;
855
- if (!user) return <div>Not logged in</div>;
856
-
857
- return <div>Welcome {user.email}</div>;
853
+ if (loading) return <p>Loading...</p>;
854
+ if (error) return <p>Error: {error.message}</p>;
855
+ if (!user) return <p>Not logged in</p>;
856
+
857
+ return <p>Welcome {user.email}</p>;
858
858
  }
859
859
  ```
860
860
 
@@ -1105,7 +1105,7 @@ See the [Authentication Implementation Guide](./authentication.md) for a complet
1105
1105
 
1106
1106
  ### Advanced Patterns
1107
1107
 
1108
- See the [Common Patterns Guide](./best-practices/common-patterns.md) for advanced authentication patterns.
1108
+ See the [Authentication Implementation Guide](./authentication.md) for advanced authentication patterns and the [Standards Overview](../standards/0-standards-overview.md) for compliance requirements.
1109
1109
 
1110
1110
  ## Related Documentation
1111
1111
 
@@ -408,7 +408,7 @@ function DashboardCard({ title, children }) {
408
408
  ## Related Documentation
409
409
 
410
410
  - [Styling Overview](../styles/README.md) - Complete styling system
411
- - [Performance Guide](../best-practices/performance.md) - Performance optimization
411
+ - [Performance Optimization](../standards/9-operations-standards.md#performance-optimization) - Performance optimization
412
412
  - [Component API Reference](../api-reference/components.md) - Component props
413
413
 
414
414
  ---
@@ -408,11 +408,11 @@ const columns: DataTableColumn<Dish>[] = [
408
408
  const indentLevel = isParent ? 0 : 1;
409
409
 
410
410
  return (
411
- <div className={`flex items-center ${isParent ? 'font-semibold' : ''}`}>
412
- <div style={{ marginLeft: `${indentLevel * 20}px` }}>
411
+ <section className={`flex items-center ${isParent ? 'font-semibold' : ''}`}>
412
+ <section style={{ marginLeft: `${indentLevel * 20}px` }}>
413
413
  {isParent ? '🍽️' : '🥬'} {row.original.name}
414
- </div>
415
- </div>
414
+ </section>
415
+ </section>
416
416
  );
417
417
  }
418
418
  },
@@ -478,26 +478,26 @@ const columns: DataTableColumn<Dish>[] = [
478
478
  if (isParent) {
479
479
  // Parent row actions
480
480
  return (
481
- <div className="flex gap-2">
481
+ <section className="flex gap-2">
482
482
  <Button size="sm" variant="outline">
483
483
  Edit Dish
484
484
  </Button>
485
485
  <Button size="sm" variant="outline">
486
486
  Add Ingredient
487
487
  </Button>
488
- </div>
488
+ </section>
489
489
  );
490
490
  } else {
491
491
  // Child row actions
492
492
  return (
493
- <div className="flex gap-2">
493
+ <section className="flex gap-2">
494
494
  <Button size="sm" variant="ghost">
495
495
  Edit Ingredient
496
496
  </Button>
497
497
  <Button size="sm" variant="ghost">
498
498
  Remove
499
499
  </Button>
500
- </div>
500
+ </section>
501
501
  );
502
502
  }
503
503
  }
@@ -1197,7 +1197,7 @@ import { DataTable } from '@jmruthers/pace-core';
1197
1197
 
1198
1198
  **✅ Column Alignment in Virtualized Tables**
1199
1199
  - **Problem**: Header and body columns were misaligned in virtualized mode due to separate table layouts.
1200
- - **Solution**: Enhanced `VirtualizedDataTable` component with synchronized column sizing between header and body tables, `table-fixed` layout for consistent column widths, dynamic column width calculation and synchronization, proper `useLayoutEffect` for measuring actual column widths.
1200
+ - **Solution**: `UnifiedTableBody` component handles virtualization automatically with synchronized column sizing between header and body tables, `table-fixed` layout for consistent column widths, dynamic column width calculation and synchronization, proper virtualization handling for large datasets.
1201
1201
 
1202
1202
  **✅ Pagination State Synchronization**
1203
1203
  - **Problem**: Page size dropdown showed 50 but displayed 20 rows due to hardcoded values and virtualization conflicts.
@@ -2167,7 +2167,7 @@ function UserForm({ user, onSubmit, onCancel }) {
2167
2167
 
2168
2168
  return (
2169
2169
  <form onSubmit={handleSubmit(onSubmit)} className="space-y-4">
2170
- <div>
2170
+ <section>
2171
2171
  <label htmlFor="name">Name</label>
2172
2172
  <input
2173
2173
  id="name"
@@ -2177,9 +2177,9 @@ function UserForm({ user, onSubmit, onCancel }) {
2177
2177
  {errors.name && (
2178
2178
  <p className="text-acc-600 text-sm">{errors.name.message}</p>
2179
2179
  )}
2180
- </div>
2180
+ </section>
2181
2181
 
2182
- <div>
2182
+ <section>
2183
2183
  <label htmlFor="email">Email</label>
2184
2184
  <input
2185
2185
  id="email"
@@ -2190,9 +2190,9 @@ function UserForm({ user, onSubmit, onCancel }) {
2190
2190
  {errors.email && (
2191
2191
  <p className="text-acc-600 text-sm">{errors.email.message}</p>
2192
2192
  )}
2193
- </div>
2193
+ </section>
2194
2194
 
2195
- <div>
2195
+ <section>
2196
2196
  <label htmlFor="role">Role</label>
2197
2197
  <select
2198
2198
  id="role"
@@ -2206,9 +2206,9 @@ function UserForm({ user, onSubmit, onCancel }) {
2206
2206
  {errors.role && (
2207
2207
  <p className="text-acc-600 text-sm">{errors.role.message}</p>
2208
2208
  )}
2209
- </div>
2209
+ </section>
2210
2210
 
2211
- <div className="flex gap-2">
2211
+ <section className="flex gap-2">
2212
2212
  <button
2213
2213
  type="submit"
2214
2214
  disabled={isSubmitting}
@@ -2223,7 +2223,7 @@ function UserForm({ user, onSubmit, onCancel }) {
2223
2223
  >
2224
2224
  Cancel
2225
2225
  </button>
2226
- </div>
2226
+ </section>
2227
2227
  </form>
2228
2228
  );
2229
2229
  }
@@ -2496,25 +2496,118 @@ If you're upgrading from a previous version:
2496
2496
 
2497
2497
  ### Component Structure
2498
2498
 
2499
+ The DataTable component is built with a modular architecture that separates concerns and provides clear component boundaries. The structure is organized into main components, sub-components, hooks, utilities, and core architecture classes.
2500
+
2499
2501
  ```
2500
- DataTable
2501
- ├── useDataTablePerformance (hook)
2502
- ├── DataChunkManager
2503
- │ ├── SearchIndex
2504
- │ ├── PerformanceMonitor
2505
- └── VisibilityTracker
2506
- ├── VirtualizedDataTable (when enabled)
2507
- ├── MemoizedRow
2508
- └── MemoizedCell
2509
- ├── HierarchicalDataTable (when enabled)
2510
- │ ├── ExpandCollapseControls
2511
- │ └── HierarchicalRow
2512
- └── EnhancedPaginationControls
2513
- ├── Performance metrics display
2514
- ├── Jump to page functionality
2515
- └── Memory usage tracking
2502
+ DataTable (Main Entry Point)
2503
+
2504
+ ├── DataTableCore (Internal Orchestrator)
2505
+ │ ├── DataTableErrorBoundary
2506
+ │ ├── LoadingState
2507
+ ├── AccessDeniedPage
2508
+ │ └── DataTableLayout
2509
+
2510
+ ├── DataTableToolbar
2511
+ │ │ ├── GroupingDropdown
2512
+ ├── ColumnVisibilityDropdown
2513
+ └── BulkOperationsDropdown
2514
+ │ │
2515
+ ├── UnifiedTableBody
2516
+ │ │ ├── FilterRow
2517
+ │ │ │ └── ColumnFilter
2518
+ │ │ ├── MemoizedRow (RowComponent)
2519
+ │ │ │ ├── EditableRow
2520
+ │ │ │ │ └── EditFields
2521
+ │ │ │ ├── ActionButtons
2522
+ │ │ │ └── RowComponent (handles grouped rows inline and hierarchical expand/collapse)
2523
+ │ │ └── EmptyState
2524
+ │ │
2525
+ │ ├── PaginationControls
2526
+ │ │ └── EnhancedPaginationControls (when enabled)
2527
+ │ │
2528
+ │ └── DataTableModals
2529
+ │ └── ImportModal
2530
+
2531
+ ├── Hooks (State & Logic Management)
2532
+ │ ├── useDataTableState
2533
+ │ ├── useDataTableDataPipeline
2534
+ │ ├── useDataTableConfiguration
2535
+ │ ├── useDataTablePermissions
2536
+ │ ├── useTableColumns
2537
+ │ ├── useTableHandlers
2538
+ │ ├── useColumnOrderPersistence
2539
+ │ ├── useColumnVisibilityPersistence
2540
+ │ ├── useEffectiveColumnOrder
2541
+ │ ├── useHierarchicalState
2542
+ │ ├── useServerSideDataEffect
2543
+ │ ├── useKeyboardNavigation
2544
+ │ └── useDataTablePerformance (from core hooks)
2545
+ │ ├── DataChunkManager
2546
+ │ ├── SearchIndex
2547
+ │ ├── PerformanceMonitor
2548
+ │ └── VisibilityTracker
2549
+
2550
+ ├── Core Architecture Classes
2551
+ │ ├── ColumnFactory
2552
+ │ ├── ColumnManager
2553
+ │ ├── DataManager
2554
+ │ ├── StateManager
2555
+ │ ├── ActionManager
2556
+ │ ├── LocalDataAdapter
2557
+ │ └── PluginRegistry
2558
+
2559
+ └── Utilities
2560
+ ├── aggregationUtils (sum, average, count, min, max)
2561
+ ├── columnUtils
2562
+ ├── exportUtils
2563
+ ├── hierarchicalUtils
2564
+ ├── hierarchicalSorting
2565
+ ├── paginationUtils
2566
+ ├── performanceUtils
2567
+ ├── rowUtils
2568
+ ├── a11yUtils
2569
+ ├── errorHandling
2570
+ └── flexibleImport
2516
2571
  ```
2517
2572
 
2573
+ #### Component Descriptions
2574
+
2575
+ **Main Components:**
2576
+ - **`DataTable`**: Public API component that wraps `DataTableCore` with feature normalization
2577
+ - **`DataTableCore`**: Internal orchestrator that manages all hooks, state, and sub-components
2578
+ - **`DataTableLayout`**: Main layout component that arranges toolbar, body, pagination, and modals
2579
+
2580
+ **Toolbar Components:**
2581
+ - **`DataTableToolbar`**: Top toolbar with search, grouping, column visibility, and action buttons
2582
+ - **`GroupingDropdown`**: Dropdown for selecting columns to group by
2583
+ - **`ColumnVisibilityDropdown`**: Dropdown for showing/hiding columns
2584
+ - **`BulkOperationsDropdown`**: Menu for bulk operations (delete selected, etc.)
2585
+
2586
+ **Table Body Components:**
2587
+ - **`UnifiedTableBody`**: Unified component that handles both standard and virtualized rendering
2588
+ - **`FilterRow`**: Row of filter inputs below column headers
2589
+ - **`ColumnFilter`**: Individual column filter component
2590
+ - **`MemoizedRow`** (RowComponent): Individual table row with memoization
2591
+ - **`EditableRow`**: Inline editable row with form fields
2592
+ - **`EditFields`**: Field renderers for editable columns (text, select, date, number, boolean)
2593
+ - **`ActionButtons`**: Row action buttons (edit, delete, custom actions)
2594
+ - **Hierarchical expand/collapse**: Handled inline by `RowComponent` for hierarchical rows
2595
+ - **Grouped rows**: Handled inline by `RowComponent` when `row.getIsGrouped()` returns true
2596
+ - **`EmptyState`**: Component displayed when table has no data
2597
+
2598
+ **Pagination Components:**
2599
+ - **`PaginationControls`**: Standard pagination controls
2600
+ - **`EnhancedPaginationControls`**: Enhanced version with performance metrics and jump-to-page
2601
+
2602
+ **Modal Components:**
2603
+ - **`DataTableModals`**: Container for all modal dialogs
2604
+ - **`ImportModal`**: CSV import modal with column mapping
2605
+
2606
+ **Supporting Components:**
2607
+ - **`DataTableErrorBoundary`**: Error boundary for graceful error handling
2608
+ - **`LoadingState`**: Loading indicator component
2609
+ - **`AccessDeniedPage`**: Component shown when user lacks permissions
2610
+
2518
2611
  ### Performance Utilities
2519
2612
 
2520
2613
  - **`determinePaginationMode`**: Automatically selects optimal pagination strategy
@@ -2565,7 +2658,7 @@ The DataTable component is designed with accessibility in mind and meets WCAG 2.
2565
2658
  2. **Provide alt text for images** - Any images in cells should have alt text
2566
2659
  3. **Test with screen readers** - Verify table is navigable with screen readers
2567
2660
  4. **Maintain focus visibility** - Ensure focus indicators are visible
2568
- 5. **Use proper heading hierarchy** - Use appropriate heading levels for table context
2661
+ 5. **Use proper heading hierarchy** - Use appropriate heading levels for table context (heading levels can skip when semantically appropriate, e.g., h2 → h5)
2569
2662
 
2570
2663
  ## ⚠️ Edge Cases
2571
2664
 
@@ -271,7 +271,7 @@ function DishesPage() {
271
271
  console.log('Deleting dish:', row);
272
272
  };
273
273
 
274
- if (loading) return <div>Loading dishes...</div>;
274
+ if (loading) return <p>Loading dishes...</p>;
275
275
 
276
276
  return (
277
277
  <div>
@@ -93,7 +93,7 @@ function MyApp() {
93
93
  // Automatically applies event colors when an event is selected
94
94
  useEventTheme();
95
95
 
96
- return <div>Your app content</div>;
96
+ return <main>Your app content</main>;
97
97
  }
98
98
  ```
99
99
 
@@ -268,7 +268,7 @@ import { useEventTheme } from '@jmruthers/pace-core';
268
268
  function MyApp() {
269
269
  useEventTheme(); // Automatically applies event colors
270
270
 
271
- return <div>Your app content</div>;
271
+ return <main>Your app content</main>;
272
272
  }
273
273
  ```
274
274
 
@@ -319,7 +319,7 @@ function App() {
319
319
  function App() {
320
320
  useEventTheme(); // Replaces the above useEffect
321
321
 
322
- return <div>Your app</div>;
322
+ return <main>Your app</main>;
323
323
  }
324
324
  ```
325
325
 
@@ -388,7 +388,7 @@ function FileManager() {
388
388
  <div>
389
389
  {/* Upload UI */}
390
390
  {isLoading && <div>Uploading...</div>}
391
- {error && <div>Error: {error.message}</div>}
391
+ {error && <p>Error: {error.message}</p>}
392
392
  </div>
393
393
  );
394
394
  }
@@ -941,6 +941,6 @@ When network is interrupted during upload:
941
941
  ## Next Steps
942
942
 
943
943
  - **[Storage Utilities](../api-reference/utilities.md#storage)** - Additional storage utilities
944
- - **[Security Best Practices](../best-practices/security.md)** - Security guidelines
944
+ - **[Security & RBAC Standards](../standards/6-security-rbac-standards.md)** - Security guidelines
945
945
  - **[RBAC Integration](./permission-enforcement.md)** - Permission-based file access
946
946
  - **[Performance Optimization](./performance.md)** - Large file handling