@jmruthers/pace-core 0.6.5 → 0.6.7

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 (473) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +5 -403
  3. package/audit-tool/00-dependencies.cjs +394 -0
  4. package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
  5. package/audit-tool/audits/02-project-structure.cjs +255 -0
  6. package/audit-tool/audits/03-architecture.cjs +196 -0
  7. package/audit-tool/audits/04-code-quality.cjs +149 -0
  8. package/audit-tool/audits/05-styling.cjs +224 -0
  9. package/audit-tool/audits/06-security-rbac.cjs +544 -0
  10. package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
  11. package/audit-tool/audits/08-testing-documentation.cjs +202 -0
  12. package/audit-tool/audits/09-operations.cjs +208 -0
  13. package/audit-tool/index.cjs +291 -0
  14. package/audit-tool/utils/code-utils.cjs +218 -0
  15. package/audit-tool/utils/file-utils.cjs +230 -0
  16. package/audit-tool/utils/report-utils.cjs +241 -0
  17. package/core-usage-manifest.json +93 -0
  18. package/cursor-rules/00-standards-overview.mdc +156 -0
  19. package/cursor-rules/01-pace-core-compliance.mdc +586 -0
  20. package/cursor-rules/02-project-structure.mdc +42 -4
  21. package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +126 -10
  22. package/cursor-rules/04-code-quality.mdc +419 -0
  23. package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +104 -34
  24. package/cursor-rules/06-security-rbac.mdc +518 -0
  25. package/cursor-rules/07-api-tech-stack.mdc +377 -0
  26. package/cursor-rules/08-testing-documentation.mdc +324 -0
  27. package/cursor-rules/09-operations.mdc +365 -0
  28. package/dist/{AuthService-Cb34EQs3.d.ts → AuthService-DmfO5rGS.d.ts} +10 -0
  29. package/dist/DataTable-7PMH7XN7.js +15 -0
  30. package/dist/{DataTable-BMRU8a1j.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
  31. package/dist/{PublicPageProvider-QTFVrL-Z.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +33 -72
  32. package/dist/UnifiedAuthProvider-ZT6TIGM7.js +7 -0
  33. package/dist/api-Y4MQWOFW.js +4 -0
  34. package/dist/audit-MYQXYZFU.js +3 -0
  35. package/dist/{chunk-DGUM43GV.js → chunk-3RG5ZIWI.js} +1 -4
  36. package/dist/{chunk-QXHPKYJV.js → chunk-4SXLQIZO.js} +1 -26
  37. package/dist/{chunk-UPPMRMYG.js → chunk-5X4QLXRG.js} +73 -151
  38. package/dist/chunk-6F3IILHI.js +62 -0
  39. package/dist/{chunk-E66EQZE6.js → chunk-6GLLNA6U.js} +3 -9
  40. package/dist/{chunk-ZSAAAMVR.js → chunk-6QYDGKQY.js} +1 -4
  41. package/dist/{chunk-FMUCXFII.js → chunk-7ILTDCL2.js} +9 -5
  42. package/dist/{chunk-M43Y4SSO.js → chunk-A3W6LW53.js} +15 -13
  43. package/dist/{chunk-63FOKYGO.js → chunk-AHU7G2R5.js} +2 -11
  44. package/dist/{chunk-HU2C6SSC.js → chunk-BM4CQ5P3.js} +606 -559
  45. package/dist/chunk-C7NSAPTL.js +1 -0
  46. package/dist/{chunk-J36DSWQK.js → chunk-FEJLJNWA.js} +7 -41
  47. package/dist/{chunk-IHB5DR3H.js → chunk-FTCRZOG2.js} +188 -387
  48. package/dist/{chunk-G37KK66H.js → chunk-FYHN4DD5.js} +60 -19
  49. package/dist/chunk-GHYHJTYV.js +994 -0
  50. package/dist/{chunk-VBXEHIUJ.js → chunk-HF6O3O37.js} +6 -88
  51. package/dist/{chunk-FFQEQTNW.js → chunk-IUBRCBSY.js} +134 -45
  52. package/dist/{chunk-6COVEUS7.js → chunk-JGWDVX64.js} +983 -1034
  53. package/dist/{chunk-RGAWHO7N.js → chunk-L4XMVJKY.js} +77 -222
  54. package/dist/chunk-MBADTM7L.js +64 -0
  55. package/dist/{chunk-M7MPQISP.js → chunk-OJ4SKRSV.js} +3 -16
  56. package/dist/{chunk-IVOFDYWT.js → chunk-Q7Q7V5NV.js} +2109 -1604
  57. package/dist/{chunk-JGRYX5UX.js → chunk-S7DKJPLT.js} +29 -58
  58. package/dist/{chunk-PWLANIRT.js → chunk-TTRFSOKR.js} +1 -7
  59. package/dist/{chunk-5DRSZLL2.js → chunk-UH3NTO3F.js} +1 -6
  60. package/dist/{chunk-NTM7ZSB6.js → chunk-VBCS3DUA.js} +261 -168
  61. package/dist/{chunk-EFN2EIMK.js → chunk-ZFYPMX46.js} +271 -87
  62. package/dist/{chunk-L4OXEN46.js → chunk-ZKAWKYT4.js} +10 -24
  63. package/dist/components.d.ts +7 -5
  64. package/dist/components.js +46 -257
  65. package/dist/{database.generated-CzIvgcPu.d.ts → database.generated-CcnC_DRc.d.ts} +4795 -3691
  66. package/dist/eslint-rules/index.cjs +35 -0
  67. package/{src/eslint-rules/pace-core-compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +234 -235
  68. package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
  69. package/dist/eslint-rules/rules/05-styling.cjs +61 -0
  70. package/dist/eslint-rules/rules/06-security-rbac.cjs +806 -0
  71. package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
  72. package/dist/eslint-rules/rules/08-testing.cjs +94 -0
  73. package/dist/eslint-rules/utils/helpers.cjs +42 -0
  74. package/dist/eslint-rules/utils/manifest-loader.cjs +75 -0
  75. package/dist/hooks.d.ts +6 -6
  76. package/dist/hooks.js +62 -172
  77. package/dist/icons/index.d.ts +1 -0
  78. package/dist/icons/index.js +1 -0
  79. package/dist/index.d.ts +12 -11
  80. package/dist/index.js +67 -660
  81. package/dist/providers.d.ts +2 -2
  82. package/dist/providers.js +8 -35
  83. package/dist/rbac/eslint-rules.d.ts +46 -44
  84. package/dist/rbac/eslint-rules.js +7 -4
  85. package/dist/rbac/index.d.ts +109 -586
  86. package/dist/rbac/index.js +14 -207
  87. package/dist/styles/index.js +2 -12
  88. package/dist/theming/runtime.d.ts +14 -1
  89. package/dist/theming/runtime.js +3 -19
  90. package/dist/{timezone-CHhWg6b4.d.ts → timezone-BZe_eUxx.d.ts} +175 -1
  91. package/dist/{types-CkbwOr4Y.d.ts → types-DXstZpNI.d.ts} +4 -17
  92. package/dist/types-t9H8qKRw.d.ts +55 -0
  93. package/dist/types.d.ts +1 -1
  94. package/dist/types.js +7 -94
  95. package/dist/{usePublicRouteParams-ClnV4tnv.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +20 -20
  96. package/dist/utils.d.ts +24 -117
  97. package/dist/utils.js +54 -392
  98. package/docs/README.md +17 -7
  99. package/docs/api/README.md +4 -402
  100. package/docs/api/modules.md +301 -871
  101. package/docs/api-reference/components.md +21 -21
  102. package/docs/api-reference/deprecated.md +31 -6
  103. package/docs/api-reference/hooks.md +80 -80
  104. package/docs/api-reference/rpc-functions.md +78 -3
  105. package/docs/api-reference/types.md +1 -1
  106. package/docs/api-reference/utilities.md +1 -1
  107. package/docs/architecture/README.md +1 -1
  108. package/docs/core-concepts/events.md +3 -3
  109. package/docs/core-concepts/organisations.md +6 -6
  110. package/docs/core-concepts/permissions.md +6 -6
  111. package/docs/documentation-index.md +12 -18
  112. package/docs/getting-started/cursor-rules.md +3 -23
  113. package/docs/getting-started/dependencies.md +650 -0
  114. package/docs/getting-started/documentation-index.md +1 -1
  115. package/docs/getting-started/examples/README.md +4 -4
  116. package/docs/getting-started/examples/full-featured-app.md +1 -1
  117. package/docs/getting-started/faq.md +2 -2
  118. package/docs/getting-started/installation-guide.md +20 -7
  119. package/docs/getting-started/quick-reference.md +4 -4
  120. package/docs/getting-started/quick-start.md +23 -12
  121. package/docs/implementation-guides/authentication.md +15 -15
  122. package/docs/implementation-guides/component-styling.md +1 -1
  123. package/docs/implementation-guides/data-tables.md +126 -33
  124. package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
  125. package/docs/implementation-guides/dynamic-colors.md +3 -3
  126. package/docs/implementation-guides/file-upload-storage.md +2 -2
  127. package/docs/implementation-guides/hierarchical-datatable.md +40 -60
  128. package/docs/implementation-guides/inactivity-tracking.md +3 -3
  129. package/docs/implementation-guides/large-datasets.md +3 -2
  130. package/docs/implementation-guides/organisation-security.md +2 -2
  131. package/docs/implementation-guides/performance.md +2 -2
  132. package/docs/implementation-guides/permission-enforcement.md +5 -1
  133. package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
  134. package/docs/migration/V0.4.0_rbac-migration.md +6 -6
  135. package/docs/rbac/MIGRATION_GUIDE.md +819 -0
  136. package/docs/rbac/RBAC_CONTRACT.md +724 -0
  137. package/docs/rbac/README.md +17 -8
  138. package/docs/rbac/advanced-patterns.md +6 -6
  139. package/docs/rbac/api-reference.md +20 -20
  140. package/docs/rbac/edge-functions-guide.md +376 -0
  141. package/docs/rbac/event-based-apps.md +3 -3
  142. package/docs/rbac/examples.md +41 -41
  143. package/docs/rbac/getting-started.md +37 -37
  144. package/docs/rbac/performance.md +1 -1
  145. package/docs/rbac/quick-start.md +52 -52
  146. package/docs/rbac/secure-client-protection.md +1 -35
  147. package/docs/rbac/troubleshooting.md +1 -1
  148. package/docs/security/README.md +5 -5
  149. package/docs/standards/0-standards-overview.md +220 -0
  150. package/docs/standards/1-pace-core-compliance-standards.md +986 -0
  151. package/docs/standards/2-project-structure-standards.md +949 -0
  152. package/docs/standards/3-architecture-standards.md +606 -0
  153. package/docs/standards/4-code-quality-standards.md +728 -0
  154. package/docs/standards/5-styling-standards.md +348 -0
  155. package/docs/standards/{07-rbac-and-rls-standard.md → 6-security-rbac-standards.md} +269 -66
  156. package/docs/standards/7-api-tech-stack-standards.md +662 -0
  157. package/docs/standards/8-testing-documentation-standards.md +401 -0
  158. package/docs/standards/9-operations-standards.md +1102 -0
  159. package/docs/standards/README.md +185 -57
  160. package/docs/troubleshooting/README.md +4 -4
  161. package/docs/troubleshooting/common-issues.md +2 -2
  162. package/docs/troubleshooting/debugging.md +9 -9
  163. package/docs/troubleshooting/migration.md +4 -4
  164. package/docs/troubleshooting/organisation-context-setup.md +42 -19
  165. package/eslint-config-pace-core.cjs +33 -6
  166. package/package.json +35 -23
  167. package/scripts/install-cursor-rules.cjs +25 -6
  168. package/scripts/install-eslint-config.cjs +284 -0
  169. package/src/__tests__/fixtures/supabase.ts +1 -1
  170. package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +3 -3
  171. package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +1 -1
  172. package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +1 -1
  173. package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
  174. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +13 -13
  175. package/src/__tests__/helpers/component-test-utils.tsx +1 -1
  176. package/src/__tests__/helpers/supabaseMock.ts +2 -2
  177. package/src/__tests__/integration/UserProfile.test.tsx +14 -14
  178. package/src/__tests__/public-recipe-view.test.ts +38 -9
  179. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
  180. package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
  181. package/src/__tests__/templates/component.test.template.tsx +18 -15
  182. package/src/components/Button/Button.tsx +5 -1
  183. package/src/components/Calendar/Calendar.tsx +201 -47
  184. package/src/components/ContextSelector/ContextSelector.tsx +106 -119
  185. package/src/components/DataTable/AUDIT_REPORT.md +293 -0
  186. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
  187. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
  188. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
  189. package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
  190. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
  191. package/src/components/DataTable/components/DataTableCore.tsx +186 -13
  192. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
  193. package/src/components/DataTable/components/DataTableLayout.tsx +35 -21
  194. package/src/components/DataTable/components/EditFields.tsx +23 -3
  195. package/src/components/DataTable/components/EditableRow.tsx +12 -9
  196. package/src/components/DataTable/components/EmptyState.tsx +10 -9
  197. package/src/components/DataTable/components/FilterRow.tsx +2 -4
  198. package/src/components/DataTable/components/ImportModal.tsx +124 -126
  199. package/src/components/DataTable/components/LoadingState.tsx +5 -6
  200. package/src/components/DataTable/components/RowComponent.tsx +12 -0
  201. package/src/components/DataTable/components/SortIndicator.tsx +50 -0
  202. package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
  203. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
  204. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
  205. package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
  206. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
  207. package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
  208. package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -4
  209. package/src/components/DataTable/components/index.ts +2 -1
  210. package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +51 -47
  211. package/src/components/DataTable/hooks/useDataTablePermissions.ts +24 -21
  212. package/src/components/DataTable/hooks/useDataTableState.ts +125 -9
  213. package/src/components/DataTable/hooks/useTableColumns.ts +40 -2
  214. package/src/components/DataTable/hooks/useTableHandlers.ts +11 -0
  215. package/src/components/DataTable/types.ts +5 -18
  216. package/src/components/DataTable/utils/a11yUtils.ts +17 -0
  217. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
  218. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
  219. package/src/components/DateTimeField/DateTimeField.tsx +10 -9
  220. package/src/components/Dialog/Dialog.test.tsx +128 -104
  221. package/src/components/Dialog/Dialog.tsx +742 -24
  222. package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
  223. package/src/components/FileDisplay/FileDisplay.test.tsx +4 -2
  224. package/src/components/FileDisplay/FileDisplay.tsx +23 -17
  225. package/src/components/FileUpload/FileUpload.test.tsx +52 -14
  226. package/src/components/FileUpload/FileUpload.tsx +112 -130
  227. package/src/components/Form/Form.test.tsx +6 -8
  228. package/src/components/Form/Form.tsx +365 -4
  229. package/src/components/NavigationMenu/NavigationMenu.test.tsx +14 -13
  230. package/src/components/NavigationMenu/useNavigationFiltering.ts +11 -21
  231. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +6 -4
  232. package/src/components/PaceAppLayout/PaceAppLayout.tsx +11 -15
  233. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +108 -61
  234. package/src/components/PaceLoginPage/PaceLoginPage.tsx +27 -3
  235. package/src/components/Progress/Progress.tsx +2 -4
  236. package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
  237. package/src/components/Select/Select.tsx +109 -98
  238. package/src/components/Select/types.ts +4 -1
  239. package/src/components/UserMenu/UserMenu.tsx +9 -6
  240. package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
  241. package/src/hooks/__tests__/hooks.integration.test.tsx +55 -57
  242. package/src/hooks/__tests__/useAppConfig.unit.test.ts +129 -67
  243. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
  244. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +149 -67
  245. package/src/hooks/__tests__/usePublicEvent.test.ts +149 -79
  246. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +158 -109
  247. package/src/hooks/__tests__/useSessionDraft.test.ts +163 -0
  248. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +10 -5
  249. package/src/hooks/public/usePublicEvent.ts +67 -195
  250. package/src/hooks/public/usePublicEventLogo.test.ts +70 -17
  251. package/src/hooks/public/usePublicEventLogo.ts +24 -14
  252. package/src/hooks/public/usePublicFileDisplay.ts +2 -2
  253. package/src/hooks/public/usePublicRouteParams.ts +5 -5
  254. package/src/hooks/useAppConfig.ts +28 -26
  255. package/src/hooks/useEventTheme.test.ts +217 -239
  256. package/src/hooks/useEventTheme.ts +16 -28
  257. package/src/hooks/useFileDisplay.ts +2 -2
  258. package/src/hooks/useOrganisationPermissions.ts +5 -7
  259. package/src/hooks/useQueryCache.ts +0 -1
  260. package/src/hooks/useSessionDraft.ts +380 -0
  261. package/src/hooks/useSessionRestoration.ts +3 -1
  262. package/src/icons/index.ts +27 -0
  263. package/src/index.ts +5 -0
  264. package/src/providers/OrganisationProvider.tsx +23 -14
  265. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
  266. package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
  267. package/src/providers/__tests__/EventProvider.test.tsx +61 -61
  268. package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
  269. package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
  270. package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
  271. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
  272. package/src/providers/services/EventServiceProvider.tsx +1 -24
  273. package/src/providers/services/UnifiedAuthProvider.tsx +5 -48
  274. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
  275. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +13 -10
  276. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +7 -457
  277. package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +33 -7
  278. package/src/rbac/adapters.tsx +7 -295
  279. package/src/rbac/api.test.ts +44 -56
  280. package/src/rbac/api.ts +10 -17
  281. package/src/rbac/cache-invalidation.ts +0 -1
  282. package/src/rbac/compliance/index.ts +10 -0
  283. package/src/rbac/compliance/pattern-detector.ts +553 -0
  284. package/src/rbac/compliance/runtime-compliance.ts +22 -0
  285. package/src/rbac/components/AccessDenied.tsx +150 -0
  286. package/src/rbac/components/NavigationGuard.tsx +12 -20
  287. package/src/rbac/components/PagePermissionGuard.tsx +4 -24
  288. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +21 -8
  289. package/src/rbac/components/index.ts +3 -41
  290. package/src/rbac/eslint-rules.js +1 -1
  291. package/src/rbac/hooks/index.ts +0 -3
  292. package/src/rbac/hooks/permissions/index.ts +0 -3
  293. package/src/rbac/hooks/permissions/useAccessLevel.ts +4 -8
  294. package/src/rbac/hooks/usePermissions.ts +0 -3
  295. package/src/rbac/hooks/useResolvedScope.test.ts +57 -47
  296. package/src/rbac/hooks/useResolvedScope.ts +58 -140
  297. package/src/rbac/hooks/useResourcePermissions.test.ts +124 -38
  298. package/src/rbac/hooks/useResourcePermissions.ts +139 -48
  299. package/src/rbac/hooks/useRoleManagement.test.ts +65 -22
  300. package/src/rbac/hooks/useRoleManagement.ts +147 -19
  301. package/src/rbac/hooks/useSecureSupabase.ts +4 -8
  302. package/src/rbac/index.ts +7 -9
  303. package/src/rbac/utils/contextValidator.ts +9 -7
  304. package/src/services/AuthService.ts +130 -18
  305. package/src/services/EventService.ts +4 -97
  306. package/src/services/InactivityService.ts +16 -0
  307. package/src/services/OrganisationService.ts +7 -44
  308. package/src/services/__tests__/OrganisationService.test.ts +26 -8
  309. package/src/services/base/BaseService.ts +0 -3
  310. package/src/styles/core.css +7 -0
  311. package/src/theming/__tests__/parseEventColours.test.ts +9 -3
  312. package/src/theming/parseEventColours.ts +22 -10
  313. package/src/types/database.generated.ts +4733 -3809
  314. package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
  315. package/src/utils/__tests__/organisationContext.unit.test.ts +9 -10
  316. package/src/utils/context/organisationContext.test.ts +13 -28
  317. package/src/utils/context/organisationContext.ts +21 -52
  318. package/src/utils/dynamic/dynamicUtils.ts +1 -1
  319. package/src/utils/file-reference/index.ts +39 -15
  320. package/src/utils/formatting/formatDateTime.test.ts +3 -2
  321. package/src/utils/google-places/loadGoogleMapsScript.ts +29 -4
  322. package/src/utils/index.ts +4 -1
  323. package/src/utils/persistence/__tests__/keyDerivation.test.ts +135 -0
  324. package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +123 -0
  325. package/src/utils/persistence/keyDerivation.ts +304 -0
  326. package/src/utils/persistence/sensitiveFieldDetection.ts +212 -0
  327. package/src/utils/security/secureStorage.ts +5 -5
  328. package/src/utils/storage/README.md +1 -1
  329. package/src/utils/storage/helpers.ts +3 -3
  330. package/src/utils/supabase/createBaseClient.ts +147 -0
  331. package/src/utils/timezone/timezone.test.ts +1 -2
  332. package/src/utils/timezone/timezone.ts +1 -1
  333. package/src/utils/validation/csrf.ts +4 -4
  334. package/cursor-rules/00-pace-core-compliance.mdc +0 -331
  335. package/cursor-rules/01-standards-compliance.mdc +0 -244
  336. package/cursor-rules/04-testing-standards.mdc +0 -268
  337. package/cursor-rules/05-bug-reports-and-features.mdc +0 -246
  338. package/cursor-rules/06-code-quality.mdc +0 -309
  339. package/cursor-rules/07-tech-stack-compliance.mdc +0 -214
  340. package/cursor-rules/CHANGELOG.md +0 -119
  341. package/cursor-rules/README.md +0 -192
  342. package/dist/DataTable-AOVNCPTX.js +0 -175
  343. package/dist/DataTable-AOVNCPTX.js.map +0 -1
  344. package/dist/UnifiedAuthProvider-4SBX4LU5.js +0 -18
  345. package/dist/UnifiedAuthProvider-4SBX4LU5.js.map +0 -1
  346. package/dist/api-O6HTBX5Y.js +0 -52
  347. package/dist/api-O6HTBX5Y.js.map +0 -1
  348. package/dist/audit-V53FV5AG.js +0 -17
  349. package/dist/audit-V53FV5AG.js.map +0 -1
  350. package/dist/chunk-5DRSZLL2.js.map +0 -1
  351. package/dist/chunk-63FOKYGO.js.map +0 -1
  352. package/dist/chunk-6COVEUS7.js.map +0 -1
  353. package/dist/chunk-AFVQODI2.js +0 -263
  354. package/dist/chunk-AFVQODI2.js.map +0 -1
  355. package/dist/chunk-DGUM43GV.js.map +0 -1
  356. package/dist/chunk-E66EQZE6.js.map +0 -1
  357. package/dist/chunk-EFN2EIMK.js.map +0 -1
  358. package/dist/chunk-FFQEQTNW.js.map +0 -1
  359. package/dist/chunk-FMUCXFII.js.map +0 -1
  360. package/dist/chunk-G37KK66H.js.map +0 -1
  361. package/dist/chunk-G7QEZTYQ.js +0 -2053
  362. package/dist/chunk-G7QEZTYQ.js.map +0 -1
  363. package/dist/chunk-HU2C6SSC.js.map +0 -1
  364. package/dist/chunk-IHB5DR3H.js.map +0 -1
  365. package/dist/chunk-IVOFDYWT.js.map +0 -1
  366. package/dist/chunk-J36DSWQK.js.map +0 -1
  367. package/dist/chunk-JGRYX5UX.js.map +0 -1
  368. package/dist/chunk-KQCRWDSA.js +0 -1
  369. package/dist/chunk-KQCRWDSA.js.map +0 -1
  370. package/dist/chunk-L4OXEN46.js.map +0 -1
  371. package/dist/chunk-LMC26NLJ.js +0 -84
  372. package/dist/chunk-LMC26NLJ.js.map +0 -1
  373. package/dist/chunk-M43Y4SSO.js.map +0 -1
  374. package/dist/chunk-M7MPQISP.js.map +0 -1
  375. package/dist/chunk-NTM7ZSB6.js.map +0 -1
  376. package/dist/chunk-PWLANIRT.js.map +0 -1
  377. package/dist/chunk-QXHPKYJV.js.map +0 -1
  378. package/dist/chunk-RGAWHO7N.js.map +0 -1
  379. package/dist/chunk-UPPMRMYG.js.map +0 -1
  380. package/dist/chunk-VBXEHIUJ.js.map +0 -1
  381. package/dist/chunk-ZSAAAMVR.js.map +0 -1
  382. package/dist/components.js.map +0 -1
  383. package/dist/contextValidator-5OGXSPKS.js +0 -9
  384. package/dist/contextValidator-5OGXSPKS.js.map +0 -1
  385. package/dist/eslint-rules/pace-core-compliance.cjs +0 -510
  386. package/dist/hooks.js.map +0 -1
  387. package/dist/index.js.map +0 -1
  388. package/dist/providers.js.map +0 -1
  389. package/dist/rbac/eslint-rules.js.map +0 -1
  390. package/dist/rbac/index.js.map +0 -1
  391. package/dist/styles/index.js.map +0 -1
  392. package/dist/theming/runtime.js.map +0 -1
  393. package/dist/types.js.map +0 -1
  394. package/dist/utils.js.map +0 -1
  395. package/docs/best-practices/README.md +0 -472
  396. package/docs/best-practices/accessibility.md +0 -601
  397. package/docs/best-practices/common-patterns.md +0 -516
  398. package/docs/best-practices/deployment.md +0 -1103
  399. package/docs/best-practices/performance.md +0 -1328
  400. package/docs/best-practices/security.md +0 -940
  401. package/docs/best-practices/testing.md +0 -1034
  402. package/docs/rbac/compliance/compliance-guide.md +0 -544
  403. package/docs/standards/01-architecture-standard.md +0 -44
  404. package/docs/standards/02-api-and-rpc-standard.md +0 -39
  405. package/docs/standards/03-component-standard.md +0 -32
  406. package/docs/standards/04-code-style-standard.md +0 -32
  407. package/docs/standards/05-security-standard.md +0 -44
  408. package/docs/standards/06-testing-and-docs-standard.md +0 -29
  409. package/docs/standards/pace-core-compliance.md +0 -432
  410. package/scripts/audit/core/checks/accessibility.cjs +0 -197
  411. package/scripts/audit/core/checks/api-usage.cjs +0 -191
  412. package/scripts/audit/core/checks/bundle.cjs +0 -142
  413. package/scripts/audit/core/checks/compliance.cjs +0 -2706
  414. package/scripts/audit/core/checks/config.cjs +0 -54
  415. package/scripts/audit/core/checks/coverage.cjs +0 -84
  416. package/scripts/audit/core/checks/dependencies.cjs +0 -994
  417. package/scripts/audit/core/checks/documentation.cjs +0 -268
  418. package/scripts/audit/core/checks/environment.cjs +0 -116
  419. package/scripts/audit/core/checks/error-handling.cjs +0 -340
  420. package/scripts/audit/core/checks/forms.cjs +0 -172
  421. package/scripts/audit/core/checks/heuristics.cjs +0 -68
  422. package/scripts/audit/core/checks/hooks.cjs +0 -334
  423. package/scripts/audit/core/checks/imports.cjs +0 -244
  424. package/scripts/audit/core/checks/performance.cjs +0 -325
  425. package/scripts/audit/core/checks/routes.cjs +0 -117
  426. package/scripts/audit/core/checks/state.cjs +0 -130
  427. package/scripts/audit/core/checks/structure.cjs +0 -65
  428. package/scripts/audit/core/checks/style.cjs +0 -584
  429. package/scripts/audit/core/checks/testing.cjs +0 -122
  430. package/scripts/audit/core/checks/typescript.cjs +0 -61
  431. package/scripts/audit/core/scanner.cjs +0 -199
  432. package/scripts/audit/core/utils.cjs +0 -137
  433. package/scripts/audit/index.cjs +0 -223
  434. package/scripts/audit/reporters/console.cjs +0 -151
  435. package/scripts/audit/reporters/json.cjs +0 -54
  436. package/scripts/audit/reporters/markdown.cjs +0 -124
  437. package/scripts/audit-consuming-app.cjs +0 -86
  438. package/src/components/DataTable/components/DataTableBody.tsx +0 -454
  439. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
  440. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  441. package/src/components/DataTable/components/GroupHeader.tsx +0 -54
  442. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  443. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
  444. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
  445. package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
  446. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
  447. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
  448. package/src/components/DataTable/core/DataTableContext.tsx +0 -216
  449. package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
  450. package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
  451. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
  452. package/src/components/DataTable/utils/debugTools.ts +0 -514
  453. package/src/eslint-rules/pace-core-compliance.js +0 -638
  454. package/src/rbac/components/EnhancedNavigationMenu.test.tsx +0 -555
  455. package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -293
  456. package/src/rbac/components/NavigationProvider.test.tsx +0 -481
  457. package/src/rbac/components/NavigationProvider.tsx +0 -345
  458. package/src/rbac/components/PagePermissionProvider.test.tsx +0 -476
  459. package/src/rbac/components/PagePermissionProvider.tsx +0 -279
  460. package/src/rbac/components/PermissionEnforcer.tsx +0 -312
  461. package/src/rbac/components/RoleBasedRouter.tsx +0 -440
  462. package/src/rbac/components/SecureDataProvider.test.tsx +0 -543
  463. package/src/rbac/components/SecureDataProvider.tsx +0 -339
  464. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -620
  465. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -726
  466. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -661
  467. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +0 -881
  468. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +0 -783
  469. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +0 -645
  470. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -659
  471. package/src/rbac/hooks/permissions/useCachedPermissions.ts +0 -79
  472. package/src/rbac/hooks/permissions/useHasAllPermissions.ts +0 -90
  473. package/src/rbac/hooks/permissions/useHasAnyPermission.ts +0 -90
@@ -0,0 +1,650 @@
1
+ ---
2
+ lastUpdated: 2025-01-28T00:00:00+00:00
3
+ version: 0.6.5
4
+ reviewedBy: dependency-clarity-audit
5
+ ---
6
+
7
+ # PACE Core Dependencies Guide
8
+
9
+ > **📚 Complete Dependency Reference** | [← Back to Documentation](../README.md) | [Installation Guide](./installation-guide.md) | [🔍 Dependency Audit Guide](./dependency-audit-guide.md)
10
+
11
+ **This guide clearly explains which dependencies you need to install and which are already included in pace-core.**
12
+
13
+ > **🎯 New to auditing?** Start with the [Dependency Audit Guide](./dependency-audit-guide.md) for a quick overview and step-by-step instructions.
14
+
15
+ ## 🎯 Quick Start: Audit Your Dependencies
16
+
17
+ **This document is the single source of truth for pace-core dependencies.** Use it to audit your consuming app's dependencies.
18
+
19
+ > **🎯 New to auditing?** Start with the [Dependency Audit Guide](./dependency-audit-guide.md) for a quick overview and step-by-step instructions.
20
+
21
+ **Quick Audit Checklist:**
22
+ 1. ✅ Verify pace-core version (`^0.6.5` or later)
23
+ 2. ❌ Remove included dependencies (see [Included Dependencies](#-already-included-do-not-install) below)
24
+ 3. ✅ Install required core dependencies (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) below)
25
+ 4. ⚠️ Install optional dependencies only if you use those features
26
+ 5. 🔄 Update code to use pace-core exports instead of direct imports
27
+
28
+ **For detailed guidance:**
29
+ - [Dependency Audit Guide](./dependency-audit-guide.md) - Quick overview and 5-step process
30
+ - [Consuming Apps Audit Checklist](../../audit/consuming-apps-audit-checklist.md) - Step-by-step checklist with commands
31
+
32
+ ---
33
+
34
+ ## ⚠️ CRITICAL: pace-core Version Requirement
35
+
36
+ **You MUST use `@jmruthers/pace-core@^0.6.5` or later.** Older versions may have incompatible dependencies or missing features.
37
+
38
+ ```bash
39
+ # ✅ Ensure you're using the latest version
40
+ npm install @jmruthers/pace-core@latest
41
+
42
+ # Verify your installed version
43
+ npm ls @jmruthers/pace-core
44
+ ```
45
+
46
+ **Why this matters:**
47
+ - Dependency structure may change between versions
48
+ - Security patches and bug fixes are included in newer versions
49
+ - New features require specific dependency versions
50
+ - This guide is accurate for pace-core v0.6.5+
51
+
52
+ ## Quick Reference
53
+
54
+ ### ✅ Already Included (DO NOT Install)
55
+
56
+ These packages are included as dependencies in `@jmruthers/pace-core` and **should NOT** be installed in your consuming app:
57
+
58
+ ```bash
59
+ # ❌ DO NOT install these - they're already included
60
+ # @supabase/supabase-js (use createBaseClient from pace-core instead)
61
+ # @radix-ui/react-checkbox (use pace-core components instead)
62
+ # @radix-ui/react-label (use pace-core components instead)
63
+ # @radix-ui/react-slot (use pace-core components instead)
64
+ # @radix-ui/react-switch (use pace-core components instead)
65
+ # @radix-ui/react-tabs (use pace-core components instead)
66
+ # @radix-ui/react-toast (use pace-core components instead)
67
+ # @radix-ui/react-tooltip (use pace-core components instead)
68
+ # lucide-react (use @jmruthers/pace-core/icons instead)
69
+ # @tanstack/react-virtual
70
+ # @hookform/resolvers
71
+ # lodash.debounce
72
+ # lodash.throttle
73
+ # papaparse
74
+ # react-is
75
+ ```
76
+
77
+ > **Note**:
78
+ > - `@supabase/supabase-js` is **included** - Use `createBaseClient()` from `@jmruthers/pace-core` instead of importing `createClient` directly (security enforcement).
79
+ > - `@radix-ui/*` packages are **included** - Use pace-core components instead of importing Radix UI primitives directly (consistency enforcement).
80
+ > - `lucide-react` is **included** - Use `@jmruthers/pace-core/icons` instead of importing icons directly (consistency enforcement).
81
+ > - `@tanstack/react-query` is a **peer dependency** (see below) because consuming apps need direct access to `QueryClient`, `QueryClientProvider`, and React Query hooks.
82
+ > - `date-fns` and `date-fns-tz` are **peer dependencies** (see below) because consuming apps may need direct access to date-fns functions that pace-core doesn't export.
83
+
84
+ ### ⚠️ Required Peer Dependencies (MUST Install)
85
+
86
+ These packages are **required** for pace-core to function. You **MUST** install them in your consuming app:
87
+
88
+ **Minimum Versions (Required):**
89
+ ```bash
90
+ # ✅ REQUIRED - Minimum versions (^ allows compatible updates)
91
+ npm install react@^19.0.0 react-dom@^19.0.0
92
+ npm install @tanstack/react-query@^5.90.0
93
+ npm install @tanstack/react-table@^8.0.0
94
+ npm install date-fns@^3.0.0 date-fns-tz@^3.0.0
95
+ npm install @radix-ui/react-checkbox@^1.0.0
96
+ npm install @radix-ui/react-label@^2.0.0
97
+ npm install @radix-ui/react-slot@^1.0.0
98
+ npm install @radix-ui/react-switch@^1.1.0
99
+ npm install @radix-ui/react-tabs@^1.0.0
100
+ npm install @radix-ui/react-toast@^1.0.0
101
+ npm install @radix-ui/react-tooltip@^1.0.0
102
+ npm install clsx@^2.0.0
103
+ npm install lucide-react@^0.400.0
104
+ npm install react-day-picker@^9.0.0
105
+ npm install react-hook-form@^7.0.0
106
+ npm install react-router-dom@^6.0.0
107
+ npm install tailwind-merge@^2.0.0
108
+ npm install tailwindcss@^4.0.0
109
+ npm install zod@^3.20.0
110
+ ```
111
+
112
+ **Recommended Specific Versions (For Maximum Compatibility):**
113
+ ```bash
114
+ # ✅ RECOMMENDED - Specific tested versions
115
+ npm install react@19.2.3 react-dom@19.2.3
116
+ npm install @tanstack/react-query@^5.90.16
117
+ npm install @tanstack/react-table@^8.20.0
118
+ npm install date-fns@^3.0.0 date-fns-tz@^3.0.0
119
+ npm install @radix-ui/react-checkbox@^1.1.2
120
+ npm install @radix-ui/react-label@^2.1.1
121
+ npm install @radix-ui/react-slot@^1.1.0
122
+ npm install @radix-ui/react-switch@^1.1.1
123
+ npm install @radix-ui/react-tabs@^1.1.1
124
+ npm install @radix-ui/react-toast@^1.2.2
125
+ npm install @radix-ui/react-tooltip@^1.1.3
126
+ npm install clsx@^2.1.1
127
+ npm install lucide-react@^0.468.0
128
+ npm install react-day-picker@^9.4.3
129
+ npm install react-hook-form@^7.54.2
130
+ npm install react-router-dom@^6.28.0
131
+ npm install tailwind-merge@^2.5.5
132
+ npm install tailwindcss@^4.0.0
133
+ npm install zod@^3.24.1
134
+ ```
135
+
136
+ > **💡 Version Strategy**: Use `^` (caret) ranges for flexibility, or pin specific versions for maximum stability. React 19.2.3+ is recommended to avoid security vulnerabilities in earlier 19.x versions.
137
+
138
+ ### 📦 One-Line Install (All Required Peers)
139
+
140
+ ```bash
141
+ npm install react react-dom @tanstack/react-query @tanstack/react-table clsx date-fns date-fns-tz react-day-picker react-hook-form react-router-dom tailwind-merge tailwindcss zod
142
+ ```
143
+
144
+ > **Note**: Only install peer dependencies that your app actually uses. For example:
145
+ > - If you don't use DataTable, you may not need `@tanstack/react-table`
146
+ > - If you don't use forms, you may not need `react-hook-form`
147
+ > - If you don't use date pickers, you may not need `react-day-picker`
148
+ > - If you don't use date formatting, you may not need `date-fns`/`date-fns-tz`
149
+
150
+ ---
151
+
152
+ ## Detailed Breakdown
153
+
154
+ ### Included Dependencies
155
+
156
+ These are bundled with pace-core. Installing them separately will create duplicate dependencies and potential version conflicts.
157
+
158
+ | Package | Version | Used For |
159
+ |---------|---------|----------|
160
+ | `@supabase/supabase-js` | ^2.89.0 | Supabase client (use `createBaseClient()` from pace-core) |
161
+ | `@radix-ui/react-checkbox` | ^1.0.0 | Checkbox primitive (use pace-core `Checkbox` component) |
162
+ | `@radix-ui/react-label` | ^2.0.0 | Label primitive (use pace-core `Label` component) |
163
+ | `@radix-ui/react-slot` | ^1.0.0 | Slot primitive (used by pace-core components) |
164
+ | `@radix-ui/react-switch` | ^1.1.0 | Switch primitive (use pace-core `Switch` component) |
165
+ | `@radix-ui/react-tabs` | ^1.0.0 | Tabs primitive (use pace-core `Tabs` component) |
166
+ | `@radix-ui/react-toast` | ^1.0.0 | Toast primitive (use pace-core `Toast` component) |
167
+ | `@radix-ui/react-tooltip` | ^1.0.0 | Tooltip primitive (use pace-core `Tooltip` component) |
168
+ | `lucide-react` | ^0.400.0 | Icon library (use `@jmruthers/pace-core/icons`) |
169
+ | `@tanstack/react-virtual` | ^3.13.16 | Virtual scrolling for DataTable performance |
170
+ | `@hookform/resolvers` | ^3.9.0 | Form validation with Zod |
171
+ | `lodash.debounce` | ^4.0.8 | Input debouncing |
172
+ | `lodash.throttle` | ^4.1.1 | Event throttling |
173
+ | `papaparse` | ^5.5.3 | CSV parsing (DataTable export) |
174
+ | `react-is` | ^19.2.3 | React element type checking |
175
+
176
+ **Why these are included:**
177
+ - They're core to pace-core's functionality
178
+ - Ensures version compatibility
179
+ - Prevents duplicate installations
180
+ - Simplifies consuming app setup
181
+
182
+ ### Required Peer Dependencies
183
+
184
+ These must be installed by consuming apps because:
185
+
186
+ 1. **React & React DOM** - Core framework (peer dependency to allow React 19+)
187
+ 2. **@tanstack/react-query** - Data fetching, caching, state management (peer to allow app-level QueryClient configuration)
188
+ 3. **date-fns & date-fns-tz** - Date formatting and timezone utilities (peer to allow apps to use date-fns functions directly)
189
+ 4. **@tanstack/react-table** - DataTable component functionality
190
+ 5. **react-router-dom** - Navigation and routing (peer to allow app-level routing)
191
+ 6. **tailwindcss** - Styling system (peer to allow app-level Tailwind config)
192
+ 7. **Other utilities** - Used throughout pace-core components
193
+
194
+ **Note**: `@supabase/supabase-js`, `@radix-ui/*` packages, and `lucide-react` are now **included dependencies** to enforce security and consistency. Use pace-core's exports instead:
195
+ - `createBaseClient()` from `@jmruthers/pace-core` (instead of `createClient` from `@supabase/supabase-js`)
196
+ - pace-core components (instead of `@radix-ui/*` primitives)
197
+ - `@jmruthers/pace-core/icons` (instead of `lucide-react`)
198
+
199
+ | Package | Minimum Version | Recommended Version | Used For | Required? |
200
+ |---------|-----------------|---------------------|----------|----------|
201
+ | `react` | ^19.0.0 | **19.2.3+** (security fixes) | React framework | ✅ Always |
202
+ | `react-dom` | ^19.0.0 | **19.2.3+** (security fixes) | React DOM rendering | ✅ Always |
203
+ | `react-router-dom` | ^6.0.0 | ^6.28.0 | Routing and navigation | ✅ Always |
204
+ | `tailwindcss` | ^4.0.0 | ^4.0.0 | CSS framework | ✅ Always |
205
+ | `@tanstack/react-query` | ^5.90.0 | ^5.90.16 | Data fetching, caching, QueryClient configuration | ⚠️ If using data fetching |
206
+ | `@tanstack/react-table` | ^8.0.0 | ^8.20.0 | DataTable component | ⚠️ If using DataTable |
207
+ | `date-fns` | ^3.0.0 | ^3.0.0 | Date formatting and manipulation | ⚠️ If using date formatting |
208
+ | `date-fns-tz` | ^3.0.0 | ^3.0.0 | Timezone-aware date operations | ⚠️ If using timezone features |
209
+ | `react-hook-form` | ^7.0.0 | ^7.54.2 | Form handling | ⚠️ If using forms |
210
+ | `react-day-picker` | ^9.0.0 | ^9.4.3 | Calendar/date picker | ⚠️ If using date pickers |
211
+ | `zod` | ^3.20.0 | ^3.24.1 | Schema validation | ⚠️ If using validation |
212
+ | `clsx` | ^2.0.0 | ^2.1.1 | Conditional className utility | ⚠️ If using className utilities |
213
+ | `tailwind-merge` | ^2.0.0 | ^2.5.5 | Tailwind class merging utility | ⚠️ If using class merging |
214
+
215
+ > **⚠️ React Version Security**: React 19.0.0 through 19.2.0 had security vulnerabilities (CVE-2025-55182). **You MUST use React 19.2.3 or later** to avoid these issues.
216
+
217
+ **Why these are peer dependencies:**
218
+ - Allows consuming apps to control versions
219
+ - Prevents duplicate installations
220
+ - Enables app-level configuration (e.g., Tailwind config)
221
+ - Ensures single instance of React/React Router
222
+
223
+ ---
224
+
225
+ ## Installation Checklist
226
+
227
+ Use this checklist to verify your installation:
228
+
229
+ ### ✅ Step 1: Install pace-core (Latest Version)
230
+
231
+ ```bash
232
+ # Install latest version
233
+ npm install @jmruthers/pace-core@latest
234
+
235
+ # Or install specific minimum version
236
+ npm install @jmruthers/pace-core@^0.6.5
237
+
238
+ # Verify installed version
239
+ npm ls @jmruthers/pace-core
240
+ ```
241
+
242
+ **Expected output:** Should show `@jmruthers/pace-core@0.6.5` or higher.
243
+
244
+ ### ✅ Step 2: Install Required Peer Dependencies
245
+
246
+ **Install core dependencies (always required):**
247
+ ```bash
248
+ npm install react react-dom react-router-dom tailwindcss
249
+ ```
250
+
251
+ **Install optional dependencies (only if you use these features):**
252
+ ```bash
253
+ # If using data fetching
254
+ npm install @tanstack/react-query
255
+
256
+ # If using DataTable
257
+ npm install @tanstack/react-table
258
+
259
+ # If using date formatting
260
+ npm install date-fns date-fns-tz
261
+
262
+ # If using forms
263
+ npm install react-hook-form
264
+
265
+ # If using date pickers
266
+ npm install react-day-picker
267
+
268
+ # If using validation
269
+ npm install zod
270
+
271
+ # If using className utilities
272
+ npm install clsx tailwind-merge
273
+ ```
274
+
275
+ ### ✅ Step 3: Install Tailwind v4 (Dev Dependency)
276
+
277
+ ```bash
278
+ npm install -D @tailwindcss/vite tailwindcss@^4.0.0
279
+ ```
280
+
281
+ ### ❌ Step 4: Verify You Did NOT Install Included Dependencies
282
+
283
+ Check your `package.json` - you should **NOT** have these as dependencies:
284
+
285
+ - ❌ `@supabase/supabase-js` (already in pace-core - use `createBaseClient()` from pace-core)
286
+ - ❌ `@radix-ui/react-checkbox` (already in pace-core - use pace-core `Checkbox` component)
287
+ - ❌ `@radix-ui/react-label` (already in pace-core - use pace-core `Label` component)
288
+ - ❌ `@radix-ui/react-slot` (already in pace-core - used by pace-core components)
289
+ - ❌ `@radix-ui/react-switch` (already in pace-core - use pace-core `Switch` component)
290
+ - ❌ `@radix-ui/react-tabs` (already in pace-core - use pace-core `Tabs` component)
291
+ - ❌ `@radix-ui/react-toast` (already in pace-core - use pace-core `Toast` component)
292
+ - ❌ `@radix-ui/react-tooltip` (already in pace-core - use pace-core `Tooltip` component)
293
+ - ❌ `lucide-react` (already in pace-core - use `@jmruthers/pace-core/icons`)
294
+ - ❌ `@tanstack/react-virtual` (already in pace-core)
295
+ - ❌ `@hookform/resolvers` (already in pace-core)
296
+ - ❌ `lodash.debounce` (already in pace-core)
297
+ - ❌ `lodash.throttle` (already in pace-core)
298
+ - ❌ `papaparse` (already in pace-core)
299
+ - ❌ `react-is` (already in pace-core)
300
+ - ❌ `@hookform/resolvers` (already in pace-core)
301
+ - ❌ `date-fns` (already in pace-core)
302
+ - ❌ `date-fns-tz` (already in pace-core)
303
+ - ❌ `lodash.debounce` (already in pace-core)
304
+ - ❌ `lodash.throttle` (already in pace-core)
305
+ - ❌ `papaparse` (already in pace-core)
306
+ - ❌ `react-is` (already in pace-core)
307
+
308
+ If you find any of these in your `package.json`, remove them:
309
+
310
+ ```bash
311
+ npm uninstall @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
312
+ ```
313
+
314
+ > **Note**:
315
+ > - `@supabase/supabase-js` is **included** - Use `createBaseClient()` from `@jmruthers/pace-core` instead.
316
+ > - `@radix-ui/*` packages are **included** - Use pace-core components instead.
317
+ > - `lucide-react` is **included** - Use `@jmruthers/pace-core/icons` instead.
318
+ > - `@tanstack/react-query` is a **peer dependency** and should be installed (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above).
319
+ > - `date-fns` and `date-fns-tz` are **peer dependencies** and should be installed (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above).
320
+
321
+ ---
322
+
323
+ ## Common Mistakes
324
+
325
+ ### ❌ Mistake 1: Installing Included Dependencies
326
+
327
+ **Problem:** Installing packages that are already included in pace-core
328
+
329
+ ```bash
330
+ # ❌ WRONG - Don't do this
331
+ npm install @supabase/supabase-js @radix-ui/react-checkbox lucide-react @tanstack/react-virtual
332
+ ```
333
+
334
+ **Why it's wrong:**
335
+ - Creates duplicate dependencies
336
+ - Can cause version conflicts
337
+ - Increases bundle size unnecessarily
338
+ - May cause runtime errors
339
+ - **Security risk**: Allows bypassing pace-core security rules
340
+ - **Consistency risk**: Allows bypassing pace-core components/icons
341
+
342
+ **Solution:** Remove them from your `package.json` and use pace-core exports instead:
343
+
344
+ ```bash
345
+ npm uninstall @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
346
+ ```
347
+
348
+ **Use pace-core exports instead:**
349
+ ```tsx
350
+ // ✅ CORRECT: Use pace-core exports
351
+ import { createBaseClient } from '@jmruthers/pace-core';
352
+ import { Button, Checkbox, Label } from '@jmruthers/pace-core';
353
+ import { ChevronDown, Edit } from '@jmruthers/pace-core/icons';
354
+
355
+ // ❌ WRONG: Direct imports (will fail - packages are included, not peer)
356
+ import { createClient } from '@supabase/supabase-js';
357
+ import { Checkbox } from '@radix-ui/react-checkbox';
358
+ import { ChevronDown } from 'lucide-react';
359
+ ```
360
+
361
+ > **Note**:
362
+ > - `@tanstack/react-query` is a **peer dependency** and should be installed. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
363
+ > - `date-fns` and `date-fns-tz` are **peer dependencies** and should be installed. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
364
+
365
+ ### ❌ Mistake 2: Missing Required Peer Dependencies
366
+
367
+ **Problem:** Not installing required peer dependencies
368
+
369
+ **Symptoms:**
370
+ - Runtime errors: "Cannot find module '@radix-ui/react-checkbox'"
371
+ - TypeScript errors: "Module not found"
372
+ - Components don't render correctly
373
+
374
+ **Solution:** Install all required peer dependencies (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above)
375
+
376
+ ### ❌ Mistake 3: Wrong Versions
377
+
378
+ **Problem:** Installing incompatible versions of peer dependencies
379
+
380
+ **Example:**
381
+ ```bash
382
+ # ❌ WRONG - React 18 when pace-core requires React 19
383
+ npm install react@^18.0.0
384
+
385
+ # ❌ WRONG - React 19.0.0-19.2.0 have security vulnerabilities
386
+ npm install react@19.0.0
387
+ ```
388
+
389
+ **Solution:** Use compatible versions specified in peer dependencies:
390
+
391
+ ```bash
392
+ # ✅ CORRECT - Minimum version
393
+ npm install react@^19.0.0 react-dom@^19.0.0
394
+
395
+ # ✅ BETTER - Recommended secure version
396
+ npm install react@19.2.3 react-dom@19.2.3
397
+ ```
398
+
399
+ ### ❌ Mistake 4: Installing Optional Dependencies
400
+
401
+ **Problem:** Installing packages that aren't needed
402
+
403
+ **Note:** Currently, all peer dependencies are required. There are no optional peer dependencies.
404
+
405
+ ---
406
+
407
+ ## Verification
408
+
409
+ ### Check Your Installation
410
+
411
+ Run this command to verify core peer dependencies are installed:
412
+
413
+ ```bash
414
+ # Check core dependencies (always required)
415
+ npm ls react react-dom react-router-dom tailwindcss
416
+
417
+ # Check optional dependencies (only if you use these features)
418
+ npm ls @tanstack/react-query @tanstack/react-table date-fns date-fns-tz react-day-picker react-hook-form zod clsx tailwind-merge
419
+ ```
420
+
421
+ ### Check for Duplicates
422
+
423
+ Verify you don't have duplicate dependencies:
424
+
425
+ ```bash
426
+ # Check for included dependencies that shouldn't be installed
427
+ npm ls @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
428
+ ```
429
+
430
+ If these show up as direct dependencies (not under `@jmruthers/pace-core`), remove them and use pace-core exports instead.
431
+
432
+ > **Note**:
433
+ > - `@tanstack/react-query` should be a direct dependency (it's a peer dependency).
434
+ > - `date-fns` and `date-fns-tz` should be direct dependencies (they're peer dependencies).
435
+ > - `@supabase/supabase-js`, `@radix-ui/*`, and `lucide-react` should NOT be direct dependencies (they're included - use pace-core exports).
436
+
437
+ ### Verify pace-core Version
438
+
439
+ Check that you're using a compatible version of pace-core:
440
+
441
+ ```bash
442
+ # Check installed version
443
+ npm ls @jmruthers/pace-core
444
+
445
+ # Check latest available version
446
+ npm view @jmruthers/pace-core version
447
+
448
+ # Compare versions
449
+ npm outdated @jmruthers/pace-core
450
+ ```
451
+
452
+ **Required:** You must be using `@jmruthers/pace-core@^0.6.5` or later.
453
+
454
+ ### Verify Version Compatibility
455
+
456
+ Check that your peer dependency versions match pace-core requirements:
457
+
458
+ ```bash
459
+ # Check key dependencies
460
+ npm ls react react-dom @tanstack/react-query date-fns date-fns-tz tailwindcss @jmruthers/pace-core
461
+
462
+ # Check all peer dependencies
463
+ npm ls react react-dom @tanstack/react-query @tanstack/react-table clsx date-fns date-fns-tz react-day-picker react-hook-form react-router-dom tailwind-merge tailwindcss zod
464
+ ```
465
+
466
+ All should show versions compatible with pace-core's peer dependency requirements.
467
+
468
+ **Critical Check:** Ensure React is 19.2.3 or later:
469
+ ```bash
470
+ npm ls react
471
+ # Should show: react@19.2.3 or higher
472
+ ```
473
+
474
+ ---
475
+
476
+ ## Troubleshooting
477
+
478
+ ### Issue: "Cannot find module '@radix-ui/react-checkbox'" or similar Radix UI errors
479
+
480
+ **Cause:** `@radix-ui/*` packages are now **included dependencies** in pace-core. You should NOT import them directly.
481
+
482
+ **Solution:**
483
+ 1. **DO NOT** install `@radix-ui/*` packages - they're included in pace-core
484
+ 2. **Use** pace-core components instead:
485
+
486
+ ```tsx
487
+ // ✅ CORRECT: Use pace-core components
488
+ import { Checkbox, Label, Switch, Tabs, Toast, Tooltip } from '@jmruthers/pace-core';
489
+
490
+ // ❌ WRONG: Direct Radix UI import (will fail - packages are included, not peer)
491
+ import { Checkbox } from '@radix-ui/react-checkbox';
492
+ ```
493
+
494
+ **Note**: `@radix-ui/*` packages are included dependencies to enforce consistency. Use pace-core components instead.
495
+
496
+ ### Issue: "Module not found: '@supabase/supabase-js'" or "Rollup failed to resolve import '@supabase/supabase-js'"
497
+
498
+ **Cause:** `@supabase/supabase-js` is now an **included dependency** in pace-core. You should NOT import it directly.
499
+
500
+ **Solution:**
501
+ 1. **Remove** `@supabase/supabase-js` from your `package.json` if you have it installed
502
+ 2. **Use** `createBaseClient()` from pace-core instead:
503
+
504
+ ```tsx
505
+ // ✅ CORRECT: Use pace-core's createBaseClient
506
+ import { createBaseClient } from '@jmruthers/pace-core';
507
+
508
+ const supabase = createBaseClient(
509
+ import.meta.env.VITE_SUPABASE_URL,
510
+ import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
511
+ );
512
+
513
+ // ❌ WRONG: Direct import (will fail - package is included, not peer)
514
+ import { createClient } from '@supabase/supabase-js';
515
+ ```
516
+
517
+ **Why:**
518
+ - `@supabase/supabase-js` is included to enforce security rules
519
+ - Use `createBaseClient()` which enforces the allowed exception pattern
520
+ - **Do NOT** add it to Vite `optimizeDeps` - that won't work and violates security rules
521
+
522
+ **Files to check:**
523
+ - `src/lib/supabase.ts`
524
+ - `src/main.tsx`
525
+ - Any file importing `createClient` from `@supabase/supabase-js`
526
+
527
+ ### Issue: Build-Time Resolution Errors
528
+
529
+ **Cause:** Some bundlers (Vite/Rollup) require packages to be in direct dependencies for build-time module resolution.
530
+
531
+ **Symptoms:**
532
+ - Build errors: "Failed to resolve import '@tanstack/react-query'"
533
+ - Build errors: "Failed to resolve import 'date-fns'"
534
+ - Build errors: `[vite]: Rollup failed to resolve import "@tanstack/react-query"`
535
+
536
+ **Solution:**
537
+ - `@tanstack/react-query`, `date-fns`, and `date-fns-tz` are **peer dependencies** and **MUST be installed** as direct dependencies in your `package.json`. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
538
+ - **Do NOT** externalize them in Vite config - install them as dependencies instead.
539
+ - **Do NOT** add them to `optimizeDeps.include` - that won't fix the build error.
540
+ - `@supabase/supabase-js`, `@radix-ui/*`, and `lucide-react` are included dependencies - use pace-core exports instead of importing directly.
541
+
542
+ **Common Mistake:**
543
+ If you removed `@tanstack/react-query` during cleanup thinking it was included, you need to reinstall it:
544
+
545
+ ```bash
546
+ # ✅ CORRECT: Install as peer dependency
547
+ npm install @tanstack/react-query@^5.90.0
548
+
549
+ # ❌ WRONG: Don't externalize in vite.config.ts
550
+ # build: { rollupOptions: { external: ['@tanstack/react-query'] } }
551
+
552
+ # ❌ WRONG: Don't add to optimizeDeps
553
+ # optimizeDeps: { include: ['@tanstack/react-query'] }
554
+ ```
555
+
556
+ **Why:**
557
+ - Peer dependencies must be explicitly installed in your `package.json`
558
+ - Peer dependencies are **NOT** transitive dependencies - they won't be available unless you install them
559
+ - Externalizing or adding to `optimizeDeps` are workarounds that won't work - the dependency must be in `package.json`
560
+ - This is the standard approach for peer dependencies
561
+
562
+ ### Issue: Version conflicts
563
+
564
+ **Cause:** Incompatible versions of peer dependencies
565
+
566
+ **Solution:**
567
+ 1. Check required versions in pace-core's `package.json`
568
+ 2. Update your dependencies to match:
569
+ ```bash
570
+ npm install react@^19.0.0 react-dom@^19.0.0
571
+ ```
572
+
573
+ ### Issue: Duplicate React instances
574
+
575
+ **Cause:** Multiple React installations
576
+
577
+ **Solution:**
578
+ 1. Check for duplicates: `npm ls react`
579
+ 2. Remove duplicate installations
580
+ 3. Ensure Vite config deduplicates React (see [Installation Guide](./installation-guide.md))
581
+
582
+ ---
583
+
584
+ ## Reference
585
+
586
+ ### View Current Dependencies
587
+
588
+ To see pace-core's current dependencies and peer dependencies:
589
+
590
+ ```bash
591
+ # View pace-core package.json
592
+ npm view @jmruthers/pace-core peerDependencies
593
+ npm view @jmruthers/pace-core dependencies
594
+ ```
595
+
596
+ Or check the source:
597
+ - **Peer Dependencies:** `packages/core/package.json` → `peerDependencies`
598
+ - **Included Dependencies:** `packages/core/package.json` → `dependencies`
599
+
600
+ ### Package.json Structure
601
+
602
+ ```json
603
+ {
604
+ "peerDependencies": {
605
+ // ⚠️ REQUIRED - Install these in your app
606
+ "react": "^19.0.0",
607
+ "react-dom": "^19.0.0",
608
+ "@tanstack/react-query": "^5.90.0",
609
+ "date-fns": "^3.0.0",
610
+ "date-fns-tz": "^3.0.0",
611
+ // ... other required peers
612
+ },
613
+ "dependencies": {
614
+ // ✅ INCLUDED - Already in pace-core, don't install
615
+ // Use pace-core exports instead:
616
+ // - @supabase/supabase-js → use createBaseClient() from pace-core
617
+ // - @radix-ui/* → use pace-core components
618
+ // - lucide-react → use @jmruthers/pace-core/icons
619
+ "@supabase/supabase-js": "^2.89.0",
620
+ "@radix-ui/react-checkbox": "^1.0.0",
621
+ // ... other included deps
622
+ }
623
+ }
624
+ ```
625
+
626
+
627
+ ---
628
+
629
+ ## Summary
630
+
631
+ | Category | Action | Packages |
632
+ |----------|--------|----------|
633
+ | **pace-core** | ✅ **MUST** use latest | `@jmruthers/pace-core@^0.6.5` (use `@latest` to get current version) |
634
+ | **Included** | ❌ **DO NOT** install | `@supabase/supabase-js` (use `createBaseClient()`), `@radix-ui/*` (use pace-core components), `lucide-react` (use `@jmruthers/pace-core/icons`), `@tanstack/react-virtual`, `@hookform/resolvers`, `lodash.debounce`, `lodash.throttle`, `papaparse`, `react-is` |
635
+ | **Required Peers (Always)** | ✅ **MUST** install | `react@19.2.3+`, `react-dom@19.2.3+`, `react-router-dom@^6.0.0`, `tailwindcss@^4.0.0` |
636
+ | **Optional Peers (If Used)** | ⚠️ **Install if needed** | `@tanstack/react-query@^5.90.0` (data fetching), `@tanstack/react-table@^8.0.0` (DataTable), `date-fns@^3.0.0` (date formatting), `date-fns-tz@^3.0.0` (timezone), `react-hook-form@^7.0.0` (forms), `react-day-picker@^9.0.0` (date pickers), `zod@^3.20.0` (validation), `clsx@^2.0.0` (className utility), `tailwind-merge@^2.0.0` (class merging) |
637
+ | **Dev Dependency** | ✅ **MUST** install | `@tailwindcss/vite`, `tailwindcss@^4.0.0` |
638
+
639
+ ---
640
+
641
+ **Last Updated:** 2025-01-28 | **Version:** v0.6.5
642
+
643
+ **Next Steps:**
644
+ - [Consuming Apps Audit Checklist](../../audit/consuming-apps-audit-checklist.md) - **Use this checklist to audit your dependencies**
645
+ - [Installation Guide](./installation-guide.md) - Complete setup instructions
646
+ - [Quick Start](./quick-start.md) - Build your first app
647
+ - [Troubleshooting](../troubleshooting/README.md) - Fix common issues
648
+
649
+ **This document is the single source of truth for pace-core dependencies.**
650
+
@@ -30,7 +30,7 @@ Follow this checklist after installing `@jmruthers/pace-core`. Each step points
30
30
 
31
31
  - ✅ Apply the design system tokens → [Styling usage](../styles/usage.md)
32
32
  - ✅ Run the test playbook → [Testing overview](../testing/README.md)
33
- - ✅ Prepare for production → [Deployment best practices](../best-practices/deployment.md)
33
+ - ✅ Prepare for production → [Operations Standards](../standards/9-operations-standards.md#cicd-integration) (deployment)
34
34
  - ✅ Review security posture → [Security checklist](../security/checklist.md)
35
35
 
36
36
  ## Need help?
@@ -677,8 +677,8 @@ export function MealsPage() {
677
677
  }
678
678
  };
679
679
 
680
- if (loading) return <div>Loading meals...</div>;
681
- if (error) return <div>Error: {error}</div>;
680
+ if (loading) return <p>Loading meals...</p>;
681
+ if (error) return <p>Error: {error}</p>;
682
682
 
683
683
  return (
684
684
  <div className="p-6">
@@ -919,7 +919,7 @@ All examples are designed to be easily customizable:
919
919
  3. **Examples** → Choose an example above
920
920
  4. **Core Concepts** → [Understand the Fundamentals](../core-concepts/)
921
921
  5. **Implementation** → [Advanced Patterns](../implementation-guides/)
922
- 6. **Production** → [Best Practices](../best-practices/)
922
+ 6. **Production** → [Standards](../standards/) - Development standards and best practices
923
923
 
924
924
  ## 🆘 Need Help?
925
925
 
@@ -932,4 +932,4 @@ All examples are designed to be easily customizable:
932
932
  - [Authentication Implementation Guide](../implementation-guides/authentication.md) - Complete authentication setup
933
933
  - [Data Tables Guide](../implementation-guides/data-tables.md) - Advanced data management
934
934
  - [API Reference](../api-reference/) - Complete component documentation
935
- - [Best Practices](../best-practices/) - Production guidelines
935
+ - [Standards](../standards/) - Development standards and production guidelines
@@ -615,4 +615,4 @@ REACT_APP_SUPABASE_ANON_KEY=your-anon-key-here
615
615
  - **[Core Concepts](../core-concepts/)** - Understand authentication and RBAC
616
616
  - **[Implementation Guides](../implementation-guides/)** - Advanced patterns
617
617
  - **[API Reference](../api-reference/)** - All components and hooks
618
- - **[Best Practices](../best-practices/)** - Production deployment
618
+ - **[Standards](../standards/)** - Development standards and production deployment