@jmruthers/pace-core 0.6.4 → 0.6.6

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 (387) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +5 -403
  3. package/core-usage-manifest.json +93 -0
  4. package/cursor-rules/00-pace-core-compliance.mdc +128 -26
  5. package/cursor-rules/01-standards-compliance.mdc +49 -8
  6. package/cursor-rules/02-project-structure.mdc +6 -0
  7. package/cursor-rules/03-solid-principles.mdc +2 -0
  8. package/cursor-rules/04-testing-standards.mdc +2 -0
  9. package/cursor-rules/05-bug-reports-and-features.mdc +2 -0
  10. package/cursor-rules/06-code-quality.mdc +2 -0
  11. package/cursor-rules/07-tech-stack-compliance.mdc +2 -0
  12. package/cursor-rules/08-markup-quality.mdc +52 -27
  13. package/cursor-rules/09-rbac-compliance.mdc +462 -0
  14. package/cursor-rules/10-error-handling-patterns.mdc +179 -0
  15. package/cursor-rules/11-performance-optimization.mdc +169 -0
  16. package/cursor-rules/12-ci-cd-integration.mdc +150 -0
  17. package/dist/{AuthService-Cb34EQs3.d.ts → AuthService-DmfO5rGS.d.ts} +10 -0
  18. package/dist/{DataTable-BMRU8a1j.d.ts → DataTable-2N_tqbfq.d.ts} +1 -1
  19. package/dist/DataTable-LRJL4IRV.js +15 -0
  20. package/dist/{PublicPageProvider-DEMpysFR.d.ts → PublicPageProvider-BBH6Vqg7.d.ts} +72 -139
  21. package/dist/UnifiedAuthProvider-ZT6TIGM7.js +7 -0
  22. package/dist/api-Y4MQWOFW.js +4 -0
  23. package/dist/audit-MYQXYZFU.js +3 -0
  24. package/dist/{chunk-J36DSWQK.js → chunk-2HGJFNAH.js} +8 -28
  25. package/dist/{chunk-OEWDTMG7.js → chunk-3O3WHILE.js} +38 -121
  26. package/dist/{chunk-M43Y4SSO.js → chunk-3QC3KRHK.js} +1 -14
  27. package/dist/{chunk-DGUM43GV.js → chunk-3RG5ZIWI.js} +1 -4
  28. package/dist/{chunk-QXHPKYJV.js → chunk-4SXLQIZO.js} +1 -26
  29. package/dist/chunk-4T7OBVTU.js +62 -0
  30. package/dist/{chunk-E66EQZE6.js → chunk-6GLLNA6U.js} +3 -9
  31. package/dist/{chunk-ZSAAAMVR.js → chunk-6QYDGKQY.js} +1 -4
  32. package/dist/{chunk-NN6WWZ5U.js → chunk-7TYHROIV.js} +579 -563
  33. package/dist/{chunk-M7MPQISP.js → chunk-A55DK444.js} +9 -16
  34. package/dist/{chunk-63FOKYGO.js → chunk-AHU7G2R5.js} +2 -11
  35. package/dist/{chunk-L4OXEN46.js → chunk-BVP2BCJF.js} +2 -16
  36. package/dist/chunk-C7NSAPTL.js +1 -0
  37. package/dist/{chunk-YKRAFF5K.js → chunk-FENMYN2U.js} +73 -149
  38. package/dist/{chunk-AVMLPIM7.js → chunk-FTCRZOG2.js} +284 -432
  39. package/dist/{chunk-G37KK66H.js → chunk-FYHN4DD5.js} +60 -19
  40. package/dist/{chunk-VBXEHIUJ.js → chunk-HF6O3O37.js} +6 -88
  41. package/dist/{chunk-I6DAQMWX.js → chunk-LAZMKTTF.js} +930 -891
  42. package/dist/{chunk-5EC5MEWX.js → chunk-MAGBIDNS.js} +77 -222
  43. package/dist/chunk-MBADTM7L.js +64 -0
  44. package/dist/chunk-OHIK3MIO.js +994 -0
  45. package/dist/{chunk-6SOIHG6Z.js → chunk-S7DKJPLT.js} +115 -44
  46. package/dist/{chunk-FMUCXFII.js → chunk-SD6WQY43.js} +1 -5
  47. package/dist/{chunk-PWLANIRT.js → chunk-TTRFSOKR.js} +1 -7
  48. package/dist/{chunk-5DRSZLL2.js → chunk-UH3NTO3F.js} +1 -6
  49. package/dist/{chunk-FFQEQTNW.js → chunk-UIYSCEV7.js} +134 -45
  50. package/dist/{chunk-3LPHPB62.js → chunk-ZFYPMX46.js} +271 -87
  51. package/dist/{chunk-7JPAB3T5.js → chunk-ZS5VO5JB.js} +1989 -1283
  52. package/dist/components.d.ts +6 -6
  53. package/dist/components.js +57 -267
  54. package/dist/{database.generated-CzIvgcPu.d.ts → database.generated-CcnC_DRc.d.ts} +4795 -3691
  55. package/dist/eslint-rules/index.cjs +22 -0
  56. package/dist/eslint-rules/rules/compliance.cjs +348 -0
  57. package/dist/eslint-rules/rules/components.cjs +113 -0
  58. package/dist/eslint-rules/rules/imports.cjs +102 -0
  59. package/dist/eslint-rules/rules/rbac.cjs +790 -0
  60. package/dist/eslint-rules/utils/helpers.cjs +42 -0
  61. package/dist/eslint-rules/utils/manifest-loader.cjs +75 -0
  62. package/dist/hooks.d.ts +5 -5
  63. package/dist/hooks.js +62 -270
  64. package/dist/icons/index.d.ts +1 -0
  65. package/dist/icons/index.js +1 -0
  66. package/dist/index.d.ts +36 -26
  67. package/dist/index.js +87 -690
  68. package/dist/providers.d.ts +2 -2
  69. package/dist/providers.js +8 -35
  70. package/dist/rbac/eslint-rules.d.ts +46 -44
  71. package/dist/rbac/eslint-rules.js +7 -4
  72. package/dist/rbac/index.d.ts +124 -594
  73. package/dist/rbac/index.js +14 -207
  74. package/dist/styles/index.js +2 -12
  75. package/dist/theming/runtime.js +3 -19
  76. package/dist/{timezone-CHhWg6b4.d.ts → timezone-BZe_eUxx.d.ts} +175 -1
  77. package/dist/{types-CkbwOr4Y.d.ts → types-B-K_5VnO.d.ts} +4 -0
  78. package/dist/types-t9H8qKRw.d.ts +55 -0
  79. package/dist/types.d.ts +1 -1
  80. package/dist/types.js +7 -94
  81. package/dist/{usePublicRouteParams-i3qtoBgg.d.ts → usePublicRouteParams-COZ28Mvq.d.ts} +9 -9
  82. package/dist/utils.d.ts +24 -117
  83. package/dist/utils.js +54 -392
  84. package/docs/README.md +16 -6
  85. package/docs/api/README.md +4 -402
  86. package/docs/api/modules.md +454 -930
  87. package/docs/api-reference/components.md +3 -1
  88. package/docs/api-reference/deprecated.md +31 -6
  89. package/docs/api-reference/rpc-functions.md +78 -3
  90. package/docs/best-practices/accessibility.md +6 -3
  91. package/docs/getting-started/cursor-rules.md +3 -23
  92. package/docs/getting-started/dependencies.md +650 -0
  93. package/docs/getting-started/installation-guide.md +20 -7
  94. package/docs/getting-started/quick-start.md +23 -12
  95. package/docs/implementation-guides/permission-enforcement.md +4 -0
  96. package/docs/rbac/MIGRATION_GUIDE.md +819 -0
  97. package/docs/rbac/RBAC_CONTRACT.md +724 -0
  98. package/docs/rbac/README.md +12 -3
  99. package/docs/rbac/edge-functions-guide.md +376 -0
  100. package/docs/rbac/secure-client-protection.md +0 -34
  101. package/docs/standards/00-pace-core-compliance.md +967 -0
  102. package/docs/standards/01-standards-compliance.md +188 -0
  103. package/docs/standards/02-project-structure.md +985 -0
  104. package/docs/standards/03-solid-principles.md +39 -0
  105. package/docs/standards/04-testing-standards.md +36 -0
  106. package/docs/standards/05-bug-reports-and-features.md +27 -0
  107. package/docs/standards/{04-code-style-standard.md → 06-code-quality.md} +2 -0
  108. package/docs/standards/07-tech-stack-compliance.md +30 -0
  109. package/docs/standards/08-markup-quality.md +345 -0
  110. package/docs/standards/{07-rbac-and-rls-standard.md → 09-rbac-compliance.md} +149 -54
  111. package/docs/standards/10-error-handling-patterns.md +401 -0
  112. package/docs/standards/11-performance-optimization.md +348 -0
  113. package/docs/standards/12-ci-cd-integration.md +370 -0
  114. package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +192 -0
  115. package/docs/standards/README.md +62 -33
  116. package/docs/troubleshooting/organisation-context-setup.md +42 -19
  117. package/eslint-config-pace-core.cjs +20 -4
  118. package/package.json +31 -21
  119. package/scripts/audit/audit-compliance.cjs +1295 -0
  120. package/scripts/audit/audit-components.cjs +260 -0
  121. package/scripts/audit/audit-dependencies.cjs +395 -0
  122. package/scripts/audit/audit-rbac.cjs +954 -0
  123. package/scripts/audit/audit-standards.cjs +1268 -0
  124. package/scripts/audit/index.cjs +1898 -194
  125. package/scripts/install-cursor-rules.cjs +259 -8
  126. package/scripts/validate-master.js +1 -1
  127. package/src/__tests__/fixtures/supabase.ts +1 -1
  128. package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +1 -1
  129. package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +1 -1
  130. package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +1 -1
  131. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +3 -3
  132. package/src/__tests__/helpers/component-test-utils.tsx +1 -1
  133. package/src/__tests__/helpers/supabaseMock.ts +2 -2
  134. package/src/__tests__/public-recipe-view.test.ts +38 -9
  135. package/src/components/Button/Button.tsx +5 -1
  136. package/src/components/ContextSelector/ContextSelector.tsx +42 -39
  137. package/src/components/DataTable/__tests__/keyboard.test.tsx +15 -2
  138. package/src/components/DataTable/components/DataTableBody.tsx +55 -31
  139. package/src/components/DataTable/components/DataTableCore.tsx +186 -13
  140. package/src/components/DataTable/components/DataTableLayout.tsx +30 -5
  141. package/src/components/DataTable/components/EditFields.tsx +23 -3
  142. package/src/components/DataTable/components/EditableRow.tsx +7 -2
  143. package/src/components/DataTable/components/ImportModal.tsx +4 -6
  144. package/src/components/DataTable/components/RowComponent.tsx +12 -0
  145. package/src/components/DataTable/components/ViewRowModal.tsx +4 -4
  146. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +455 -96
  147. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +122 -58
  148. package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -4
  149. package/src/components/DataTable/core/DataTableContext.tsx +1 -1
  150. package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +51 -47
  151. package/src/components/DataTable/hooks/useDataTablePermissions.ts +24 -21
  152. package/src/components/DataTable/hooks/useDataTableState.ts +125 -9
  153. package/src/components/DataTable/hooks/useTableColumns.ts +40 -2
  154. package/src/components/DataTable/hooks/useTableHandlers.ts +11 -0
  155. package/src/components/DataTable/types.ts +5 -0
  156. package/src/components/DateTimeField/DateTimeField.tsx +20 -20
  157. package/src/components/DateTimeField/README.md +5 -2
  158. package/src/components/Dialog/Dialog.test.tsx +361 -318
  159. package/src/components/Dialog/Dialog.tsx +1154 -323
  160. package/src/components/Dialog/index.ts +3 -3
  161. package/src/components/FileDisplay/FileDisplay.test.tsx +45 -2
  162. package/src/components/FileDisplay/FileDisplay.tsx +28 -22
  163. package/src/components/Form/Form.test.tsx +9 -10
  164. package/src/components/Form/Form.tsx +369 -9
  165. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +28 -28
  166. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +40 -54
  167. package/src/components/LoginForm/LoginForm.tsx +2 -2
  168. package/src/components/NavigationMenu/NavigationMenu.test.tsx +14 -13
  169. package/src/components/NavigationMenu/NavigationMenu.tsx +2 -2
  170. package/src/components/NavigationMenu/useNavigationFiltering.ts +11 -21
  171. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +6 -4
  172. package/src/components/PaceAppLayout/PaceAppLayout.tsx +30 -41
  173. package/src/components/PaceAppLayout/README.md +10 -9
  174. package/src/components/PaceAppLayout/test-setup.tsx +40 -31
  175. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +108 -61
  176. package/src/components/PaceLoginPage/PaceLoginPage.tsx +27 -3
  177. package/src/components/PasswordChange/PasswordChangeForm.test.tsx +61 -0
  178. package/src/components/PasswordChange/PasswordChangeForm.tsx +20 -13
  179. package/src/components/PublicLayout/PublicLayout.test.tsx +7 -3
  180. package/src/components/PublicLayout/PublicPageLayout.tsx +5 -8
  181. package/src/components/Select/Select.tsx +23 -21
  182. package/src/components/Select/types.ts +1 -1
  183. package/src/components/UserMenu/UserMenu.test.tsx +38 -6
  184. package/src/components/UserMenu/UserMenu.tsx +39 -34
  185. package/src/components/index.ts +3 -4
  186. package/src/eslint-rules/index.cjs +22 -0
  187. package/src/eslint-rules/rules/compliance.cjs +348 -0
  188. package/src/eslint-rules/rules/components.cjs +113 -0
  189. package/src/eslint-rules/rules/imports.cjs +102 -0
  190. package/src/eslint-rules/rules/rbac.cjs +790 -0
  191. package/src/eslint-rules/utils/helpers.cjs +42 -0
  192. package/src/eslint-rules/utils/manifest-loader.cjs +75 -0
  193. package/src/hooks/__tests__/hooks.integration.test.tsx +6 -8
  194. package/src/hooks/__tests__/useAppConfig.unit.test.ts +129 -67
  195. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +149 -67
  196. package/src/hooks/__tests__/usePublicEvent.test.ts +149 -79
  197. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +158 -109
  198. package/src/hooks/__tests__/useSessionDraft.test.ts +163 -0
  199. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +10 -5
  200. package/src/hooks/public/usePublicEvent.ts +62 -190
  201. package/src/hooks/public/usePublicEventLogo.test.ts +70 -17
  202. package/src/hooks/public/usePublicEventLogo.ts +19 -9
  203. package/src/hooks/useAppConfig.ts +26 -24
  204. package/src/hooks/useEventTheme.test.ts +211 -233
  205. package/src/hooks/useEventTheme.ts +19 -28
  206. package/src/hooks/useEvents.ts +11 -7
  207. package/src/hooks/useKeyboardShortcuts.ts +1 -1
  208. package/src/hooks/useOrganisationPermissions.ts +9 -11
  209. package/src/hooks/useOrganisations.ts +13 -7
  210. package/src/hooks/useQueryCache.ts +0 -1
  211. package/src/hooks/useSessionDraft.ts +380 -0
  212. package/src/hooks/useSessionRestoration.ts +3 -1
  213. package/src/icons/index.ts +27 -0
  214. package/src/index.ts +16 -1
  215. package/src/providers/OrganisationProvider.tsx +23 -14
  216. package/src/providers/services/EventServiceProvider.tsx +1 -24
  217. package/src/providers/services/UnifiedAuthProvider.tsx +5 -48
  218. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +3 -0
  219. package/src/rbac/README.md +20 -20
  220. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +7 -457
  221. package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +33 -7
  222. package/src/rbac/adapters.tsx +7 -295
  223. package/src/rbac/api.test.ts +44 -56
  224. package/src/rbac/api.ts +10 -17
  225. package/src/rbac/cache-invalidation.ts +0 -1
  226. package/src/rbac/compliance/index.ts +10 -0
  227. package/src/rbac/compliance/pattern-detector.ts +553 -0
  228. package/src/rbac/compliance/runtime-compliance.ts +22 -0
  229. package/src/rbac/components/AccessDenied.tsx +150 -0
  230. package/src/rbac/components/NavigationGuard.tsx +12 -20
  231. package/src/rbac/components/PagePermissionGuard.tsx +4 -24
  232. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +21 -8
  233. package/src/rbac/components/index.ts +3 -41
  234. package/src/rbac/eslint-rules.js +1 -1
  235. package/src/rbac/hooks/index.ts +0 -3
  236. package/src/rbac/hooks/permissions/index.ts +0 -3
  237. package/src/rbac/hooks/permissions/useAccessLevel.ts +4 -8
  238. package/src/rbac/hooks/usePermissions.ts +0 -3
  239. package/src/rbac/hooks/useRBAC.test.ts +21 -3
  240. package/src/rbac/hooks/useRBAC.ts +4 -3
  241. package/src/rbac/hooks/useResolvedScope.test.ts +57 -47
  242. package/src/rbac/hooks/useResolvedScope.ts +58 -140
  243. package/src/rbac/hooks/useResourcePermissions.test.ts +241 -60
  244. package/src/rbac/hooks/useResourcePermissions.ts +182 -63
  245. package/src/rbac/hooks/useRoleManagement.test.ts +65 -22
  246. package/src/rbac/hooks/useRoleManagement.ts +147 -19
  247. package/src/rbac/hooks/useSecureSupabase.ts +4 -8
  248. package/src/rbac/index.ts +7 -9
  249. package/src/rbac/permissions.ts +17 -17
  250. package/src/rbac/utils/contextValidator.ts +45 -7
  251. package/src/services/AuthService.ts +132 -23
  252. package/src/services/EventService.ts +4 -97
  253. package/src/services/InactivityService.ts +155 -58
  254. package/src/services/OrganisationService.ts +7 -44
  255. package/src/services/__tests__/OrganisationService.test.ts +26 -8
  256. package/src/services/base/BaseService.ts +0 -3
  257. package/src/styles/core.css +4 -0
  258. package/src/types/database.generated.ts +4733 -3809
  259. package/src/utils/__tests__/organisationContext.unit.test.ts +9 -10
  260. package/src/utils/context/organisationContext.test.ts +13 -28
  261. package/src/utils/context/organisationContext.ts +21 -52
  262. package/src/utils/dynamic/dynamicUtils.ts +1 -1
  263. package/src/utils/file-reference/index.ts +39 -15
  264. package/src/utils/formatting/formatDateTime.test.ts +3 -2
  265. package/src/utils/formatting/formatTime.test.ts +3 -2
  266. package/src/utils/google-places/loadGoogleMapsScript.ts +29 -4
  267. package/src/utils/index.ts +4 -1
  268. package/src/utils/persistence/__tests__/keyDerivation.test.ts +135 -0
  269. package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +123 -0
  270. package/src/utils/persistence/keyDerivation.ts +304 -0
  271. package/src/utils/persistence/sensitiveFieldDetection.ts +212 -0
  272. package/src/utils/security/secureStorage.ts +5 -5
  273. package/src/utils/storage/helpers.ts +3 -3
  274. package/src/utils/supabase/createBaseClient.ts +147 -0
  275. package/src/utils/timezone/timezone.test.ts +1 -2
  276. package/src/utils/timezone/timezone.ts +1 -1
  277. package/src/utils/validation/csrf.ts +4 -4
  278. package/cursor-rules/CHANGELOG.md +0 -119
  279. package/cursor-rules/README.md +0 -192
  280. package/dist/DataTable-E7YQZD7D.js +0 -175
  281. package/dist/DataTable-E7YQZD7D.js.map +0 -1
  282. package/dist/UnifiedAuthProvider-QPXO24B4.js +0 -18
  283. package/dist/UnifiedAuthProvider-QPXO24B4.js.map +0 -1
  284. package/dist/api-6LVZTHDS.js +0 -52
  285. package/dist/api-6LVZTHDS.js.map +0 -1
  286. package/dist/audit-V53FV5AG.js +0 -17
  287. package/dist/audit-V53FV5AG.js.map +0 -1
  288. package/dist/chunk-36LVWXB2.js +0 -227
  289. package/dist/chunk-36LVWXB2.js.map +0 -1
  290. package/dist/chunk-3LPHPB62.js.map +0 -1
  291. package/dist/chunk-5DRSZLL2.js.map +0 -1
  292. package/dist/chunk-5EC5MEWX.js.map +0 -1
  293. package/dist/chunk-63FOKYGO.js.map +0 -1
  294. package/dist/chunk-6SOIHG6Z.js.map +0 -1
  295. package/dist/chunk-7JPAB3T5.js.map +0 -1
  296. package/dist/chunk-ATKZM7RX.js +0 -2053
  297. package/dist/chunk-ATKZM7RX.js.map +0 -1
  298. package/dist/chunk-AVMLPIM7.js.map +0 -1
  299. package/dist/chunk-DGUM43GV.js.map +0 -1
  300. package/dist/chunk-E66EQZE6.js.map +0 -1
  301. package/dist/chunk-FFQEQTNW.js.map +0 -1
  302. package/dist/chunk-FMUCXFII.js.map +0 -1
  303. package/dist/chunk-G37KK66H.js.map +0 -1
  304. package/dist/chunk-I6DAQMWX.js.map +0 -1
  305. package/dist/chunk-J36DSWQK.js.map +0 -1
  306. package/dist/chunk-KQCRWDSA.js +0 -1
  307. package/dist/chunk-KQCRWDSA.js.map +0 -1
  308. package/dist/chunk-L4OXEN46.js.map +0 -1
  309. package/dist/chunk-LMC26NLJ.js +0 -84
  310. package/dist/chunk-LMC26NLJ.js.map +0 -1
  311. package/dist/chunk-M43Y4SSO.js.map +0 -1
  312. package/dist/chunk-M7MPQISP.js.map +0 -1
  313. package/dist/chunk-NN6WWZ5U.js.map +0 -1
  314. package/dist/chunk-OEWDTMG7.js.map +0 -1
  315. package/dist/chunk-PWLANIRT.js.map +0 -1
  316. package/dist/chunk-QXHPKYJV.js.map +0 -1
  317. package/dist/chunk-VBXEHIUJ.js.map +0 -1
  318. package/dist/chunk-YKRAFF5K.js.map +0 -1
  319. package/dist/chunk-ZSAAAMVR.js.map +0 -1
  320. package/dist/components.js.map +0 -1
  321. package/dist/contextValidator-OOPCLPZW.js +0 -9
  322. package/dist/contextValidator-OOPCLPZW.js.map +0 -1
  323. package/dist/eslint-rules/pace-core-compliance.cjs +0 -510
  324. package/dist/hooks.js.map +0 -1
  325. package/dist/index.js.map +0 -1
  326. package/dist/providers.js.map +0 -1
  327. package/dist/rbac/eslint-rules.js.map +0 -1
  328. package/dist/rbac/index.js.map +0 -1
  329. package/dist/styles/index.js.map +0 -1
  330. package/dist/theming/runtime.js.map +0 -1
  331. package/dist/types.js.map +0 -1
  332. package/dist/utils.js.map +0 -1
  333. package/docs/standards/01-architecture-standard.md +0 -44
  334. package/docs/standards/02-api-and-rpc-standard.md +0 -39
  335. package/docs/standards/03-component-standard.md +0 -32
  336. package/docs/standards/05-security-standard.md +0 -44
  337. package/docs/standards/06-testing-and-docs-standard.md +0 -29
  338. package/docs/standards/pace-core-compliance.md +0 -432
  339. package/scripts/audit/core/checks/accessibility.cjs +0 -197
  340. package/scripts/audit/core/checks/api-usage.cjs +0 -191
  341. package/scripts/audit/core/checks/bundle.cjs +0 -142
  342. package/scripts/audit/core/checks/compliance.cjs +0 -2706
  343. package/scripts/audit/core/checks/config.cjs +0 -54
  344. package/scripts/audit/core/checks/coverage.cjs +0 -84
  345. package/scripts/audit/core/checks/dependencies.cjs +0 -994
  346. package/scripts/audit/core/checks/documentation.cjs +0 -268
  347. package/scripts/audit/core/checks/environment.cjs +0 -116
  348. package/scripts/audit/core/checks/error-handling.cjs +0 -340
  349. package/scripts/audit/core/checks/forms.cjs +0 -172
  350. package/scripts/audit/core/checks/heuristics.cjs +0 -68
  351. package/scripts/audit/core/checks/hooks.cjs +0 -334
  352. package/scripts/audit/core/checks/imports.cjs +0 -244
  353. package/scripts/audit/core/checks/performance.cjs +0 -325
  354. package/scripts/audit/core/checks/routes.cjs +0 -117
  355. package/scripts/audit/core/checks/state.cjs +0 -130
  356. package/scripts/audit/core/checks/structure.cjs +0 -65
  357. package/scripts/audit/core/checks/style.cjs +0 -584
  358. package/scripts/audit/core/checks/testing.cjs +0 -122
  359. package/scripts/audit/core/checks/typescript.cjs +0 -61
  360. package/scripts/audit/core/scanner.cjs +0 -199
  361. package/scripts/audit/core/utils.cjs +0 -137
  362. package/scripts/audit/reporters/console.cjs +0 -151
  363. package/scripts/audit/reporters/json.cjs +0 -54
  364. package/scripts/audit/reporters/markdown.cjs +0 -124
  365. package/scripts/audit-consuming-app.cjs +0 -86
  366. package/src/eslint-rules/pace-core-compliance.cjs +0 -510
  367. package/src/eslint-rules/pace-core-compliance.js +0 -638
  368. package/src/rbac/components/EnhancedNavigationMenu.test.tsx +0 -555
  369. package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -293
  370. package/src/rbac/components/NavigationProvider.test.tsx +0 -481
  371. package/src/rbac/components/NavigationProvider.tsx +0 -345
  372. package/src/rbac/components/PagePermissionProvider.test.tsx +0 -476
  373. package/src/rbac/components/PagePermissionProvider.tsx +0 -279
  374. package/src/rbac/components/PermissionEnforcer.tsx +0 -312
  375. package/src/rbac/components/RoleBasedRouter.tsx +0 -440
  376. package/src/rbac/components/SecureDataProvider.test.tsx +0 -543
  377. package/src/rbac/components/SecureDataProvider.tsx +0 -339
  378. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -620
  379. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -726
  380. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -661
  381. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +0 -881
  382. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +0 -783
  383. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +0 -645
  384. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -659
  385. package/src/rbac/hooks/permissions/useCachedPermissions.ts +0 -79
  386. package/src/rbac/hooks/permissions/useHasAllPermissions.ts +0 -90
  387. package/src/rbac/hooks/permissions/useHasAnyPermission.ts +0 -90
@@ -0,0 +1,192 @@
1
+ # Standards and Cursor Rules Alignment Review Summary
2
+
3
+ **Date**: 2025-01-28
4
+ **Reviewer**: AI Assistant
5
+ **Status**: ✅ Complete
6
+
7
+ ## Overview
8
+
9
+ This document summarizes the comprehensive review and alignment of standards documentation (`packages/core/docs/standards/`) and cursor rules (`packages/core/cursor-rules/`). The review ensured:
10
+
11
+ 1. ✅ Structure and naming alignment for traceability
12
+ 2. ✅ No contradictions between standards and rules
13
+ 3. ✅ No missing content in either standards or rules
14
+ 4. ✅ Cursor rules optimized for AI agents
15
+ 5. ✅ Consistent cross-references between standards and rules
16
+
17
+ ## Changes Made
18
+
19
+ ### 1. Fixed Broken References
20
+
21
+ **Issue**: Standards README and 01-standards-compliance referenced non-existent files.
22
+
23
+ **Fixed**:
24
+ - Updated `packages/core/docs/standards/README.md` to remove references to non-existent consuming app standards
25
+ - Updated `packages/core/docs/standards/01-standards-compliance.md` to reference actual standards files
26
+ - Updated `packages/core/docs/standards/02-project-structure.md` to fix related documentation links
27
+
28
+ ### 2. Standardized Cross-References
29
+
30
+ **Issue**: Inconsistent paths to cursor rules from standards files.
31
+
32
+ **Fixed**:
33
+ - Standardized all cursor rule references in standards to use `../../cursor-rules/` path
34
+ - Added reverse links from all cursor rules to their corresponding standards
35
+ - Used consistent format: `**📚 Human-Readable Standard**: See [XX-standard.md]...`
36
+
37
+ ### 3. Enhanced Cursor Rules for AI Optimization
38
+
39
+ **Improvements**:
40
+ - Added "Human-Readable Standard" links at the top of each cursor rule
41
+ - Enhanced 08-markup-quality.mdc with critical CSS configuration warning
42
+ - Added decision trees where appropriate (error handling, performance, CI/CD)
43
+ - Improved AI agent instructions in rule headers
44
+
45
+ ### 4. Improved Traceability
46
+
47
+ **Added**:
48
+ - Consistent bidirectional links between standards and rules
49
+ - Clear numbering alignment (00-12)
50
+ - Reference sections in standards pointing to related standards
51
+ - Reference sections in rules pointing to standards
52
+
53
+ ## Alignment Verification
54
+
55
+ ### Standards → Rules Mapping
56
+
57
+ | Standard | Rule | Status | Notes |
58
+ |----------|------|--------|-------|
59
+ | 00-pace-core-compliance.md | 00-pace-core-compliance.mdc | ✅ Aligned | Both cover pace-core usage patterns |
60
+ | 01-standards-compliance.md | 01-standards-compliance.mdc | ✅ Aligned | Meta-standard for precedence |
61
+ | 02-project-structure.md | 02-project-structure.mdc | ✅ Aligned | Structure and organization |
62
+ | 03-solid-principles.md | 03-solid-principles.mdc | ✅ Aligned | SOLID principles |
63
+ | 04-testing-standards.md | 04-testing-standards.mdc | ✅ Aligned | Testing framework consistency |
64
+ | 05-bug-reports-and-features.md | 05-bug-reports-and-features.mdc | ✅ Aligned | Issue reporting templates |
65
+ | 06-code-quality.md | 06-code-quality.mdc | ✅ Aligned | Code quality standards |
66
+ | 07-tech-stack-compliance.md | 07-tech-stack-compliance.mdc | ✅ Aligned | Tech stack requirements |
67
+ | 08-markup-quality.md | 08-markup-quality.mdc | ✅ Aligned | Markup and CSS configuration |
68
+ | 09-rbac-compliance.md | 09-rbac-compliance.mdc | ✅ Aligned | RBAC contract and RLS patterns |
69
+ | 10-error-handling-patterns.md | 10-error-handling-patterns.mdc | ✅ Aligned | Error handling patterns |
70
+ | 11-performance-optimization.md | 11-performance-optimization.mdc | ✅ Aligned | Performance best practices |
71
+ | 12-ci-cd-integration.md | 12-ci-cd-integration.mdc | ✅ Aligned | CI/CD patterns |
72
+
73
+ ### Rules → Standards Mapping
74
+
75
+ All 13 cursor rules (00-12) have corresponding standards. ✅ Complete
76
+
77
+ ## Contradictions Found and Resolved
78
+
79
+ ### None Found ✅
80
+
81
+ After thorough review, no contradictions were found between standards and rules. The standards provide human-readable documentation, while the rules provide AI-optimized directives that align with the standards.
82
+
83
+ ## Gaps Identified
84
+
85
+ ### 1. CSS Configuration Emphasis
86
+
87
+ **Issue**: The 08-markup-quality standard has extensive CSS configuration details, but the rule didn't emphasize this enough.
88
+
89
+ **Resolution**: Added critical CSS configuration warning section at the top of 08-markup-quality.mdc rule with checklist and reference to standard.
90
+
91
+ ### 2. Missing Reverse Links
92
+
93
+ **Issue**: Cursor rules didn't consistently link back to standards.
94
+
95
+ **Resolution**: Added "Human-Readable Standard" links to all cursor rules.
96
+
97
+ ### 3. Broken References
98
+
99
+ **Issue**: Some standards referenced non-existent files.
100
+
101
+ **Resolution**: Fixed all broken references to point to actual standards files.
102
+
103
+ ## Recommendations for Future Enhancements
104
+
105
+ ### Potential New Standards/Rules
106
+
107
+ While the current set is comprehensive, consider adding:
108
+
109
+ 1. **Security Patterns** (beyond RBAC/RLS)
110
+ - Input sanitization patterns
111
+ - XSS prevention
112
+ - CSRF protection
113
+ - Secure authentication flows
114
+
115
+ 2. **Database Migration Patterns**
116
+ - Migration naming conventions
117
+ - Rollback strategies
118
+ - Data migration best practices
119
+ - Migration testing patterns
120
+
121
+ 3. **API Design Patterns** (beyond RPC naming)
122
+ - API versioning strategies
123
+ - Rate limiting patterns
124
+ - Caching strategies for APIs
125
+ - API documentation standards
126
+
127
+ 4. **State Management Patterns**
128
+ - When to use TanStack Query vs local state
129
+ - State synchronization patterns
130
+ - Optimistic updates
131
+
132
+ 5. **Monitoring and Logging**
133
+ - Structured logging patterns
134
+ - Error tracking integration
135
+ - Performance monitoring
136
+ - User analytics patterns
137
+
138
+ 6. **Internationalization (i18n)**
139
+ - Translation key naming
140
+ - Locale handling
141
+ - Date/time formatting by locale
142
+
143
+ ### Enhancement Opportunities
144
+
145
+ 1. **Decision Trees**: Add more decision trees to cursor rules for common scenarios
146
+ 2. **Code Examples**: Expand code examples in both standards and rules
147
+ 3. **Migration Guides**: Add migration guides for breaking changes
148
+ 4. **Quick Reference**: Create a quick reference card for common patterns
149
+ 5. **Visual Diagrams**: Add architecture diagrams to standards where helpful
150
+
151
+ ## Verification Checklist
152
+
153
+ - [x] All standards have corresponding cursor rules
154
+ - [x] All cursor rules have corresponding standards
155
+ - [x] All cross-references are correct and working
156
+ - [x] No contradictions between standards and rules
157
+ - [x] Cursor rules are optimized for AI agents
158
+ - [x] Standards are human-readable and comprehensive
159
+ - [x] Naming is consistent (00-12)
160
+ - [x] Traceability is clear and bidirectional
161
+
162
+ ## Conclusion
163
+
164
+ The standards and cursor rules are now fully aligned with:
165
+
166
+ ✅ **Complete traceability** - Every standard has a corresponding rule and vice versa
167
+ ✅ **No contradictions** - Standards and rules are consistent
168
+ ✅ **No gaps** - All content is present in both formats
169
+ ✅ **AI optimization** - Rules are optimized for Cursor with decision trees and clear directives
170
+ ✅ **Human readability** - Standards provide comprehensive documentation
171
+
172
+ The alignment ensures that:
173
+ - Developers can read comprehensive standards documentation
174
+ - AI agents can follow optimized rules for code generation
175
+ - Both sources of truth are kept in sync
176
+ - Traceability is clear and bidirectional
177
+
178
+ ## Maintenance
179
+
180
+ To keep standards and rules aligned:
181
+
182
+ 1. **When updating a standard**: Update the corresponding rule
183
+ 2. **When updating a rule**: Update the corresponding standard
184
+ 3. **When adding a new standard**: Create a corresponding rule with the same number
185
+ 4. **When adding a new rule**: Create a corresponding standard with the same number
186
+ 5. **Regular reviews**: Review alignment quarterly or after major changes
187
+
188
+ ---
189
+
190
+ **Last Updated**: 2025-01-28
191
+ **Next Review**: 2025-04-28
192
+
@@ -3,21 +3,50 @@
3
3
  ## Purpose
4
4
  This document is the single source of truth for all engineering standards for pace-core and consuming apps.
5
5
 
6
- ## pace-core Standards
7
- - 01-architecture-standard.md
8
- - 02-api-and-rpc-standard.md
9
- - 03-component-standard.md
10
- - 04-code-style-standard.md
11
- - 05-security-standard.md
12
- - 06-testing-and-docs-standard.md
6
+ ## pace-core Standards (aligned with Cursor rule filenames)
7
+
8
+ Each standard document has a corresponding Cursor rule file (`.mdc`) that enforces the standard automatically. The numbering ensures traceability. Standards 00-09 are core standards, while 10-12 are enhanced standards covering additional best practices.
9
+
10
+ | Standard | Cursor Rule | Purpose |
11
+ |----------|------------|---------|
12
+ | **00-pace-core-compliance.md** | `00-pace-core-compliance.mdc` | Enforce pace-core usage patterns and prevent custom solutions |
13
+ | **01-standards-compliance.md** | `01-standards-compliance.mdc` | Enforce all pace-core standards across architecture, API, components, code style, security, testing, and RBAC/RLS |
14
+ | **02-project-structure.md** | `02-project-structure.mdc` | Define standard folder structure and file organization |
15
+ | **03-solid-principles.md** | `03-solid-principles.mdc` | Enforce SOLID architecture principles |
16
+ | **04-testing-standards.md** | `04-testing-standards.mdc` | Enforce testing framework consistency and standards |
17
+ | **05-bug-reports-and-features.md** | `05-bug-reports-and-features.mdc` | Standardized templates for bug reports and feature requests |
18
+ | **06-code-quality.md** | `06-code-quality.mdc` | Enforce code quality standards including TypeScript, ESLint, formatting, performance, and accessibility |
19
+ | **07-tech-stack-compliance.md** | `07-tech-stack-compliance.mdc` | Enforce tech stack compliance including Tailwind v4, React 19+, Supabase, and other required technologies |
20
+ | **08-markup-quality.md** | `08-markup-quality.mdc` | Enforce clean markup standards, semantic HTML usage, and pace-core component patterns |
21
+ | **09-rbac-compliance.md** | `09-rbac-compliance.mdc` | Enforce RBAC contract compliance - strict rules for permission checking, page protection, and RBAC usage patterns |
22
+ | **10-error-handling-patterns.md** | `10-error-handling-patterns.mdc` | Enforce consistent error handling patterns including type-safe errors, user-friendly messages, and proper logging |
23
+ | **11-performance-optimization.md** | `11-performance-optimization.mdc` | Enforce performance optimization patterns including React memoization, database query optimization, and caching strategies |
24
+ | **12-ci-cd-integration.md** | `12-ci-cd-integration.mdc` | Enforce CI/CD integration patterns including automated quality checks, deployment processes, and security scanning |
25
+
26
+ **Note**: Standards are human-readable documentation. Rules are AI-optimized directives for Cursor. Both should be kept in sync. Standards 00-09 are core standards, while 10-12 are enhanced standards covering additional best practices.
13
27
 
14
28
  ## Consuming App Standards
15
- - 01-app-architecture.md
16
- - 02-pace-core-integration.md
17
- - 03-domain-model.md
18
- - 04-app-security-and-rbac.md
19
- - 05-testing-strategy.md
20
- - 06-ai-collaboration.md
29
+
30
+ All standards in this directory apply to consuming apps. The standards are organized by topic:
31
+
32
+ ### Core Standards (00-09)
33
+ These are fundamental standards that all consuming apps must follow:
34
+ - **00-pace-core-compliance.md** - Use pace-core components, hooks, and utilities
35
+ - **01-standards-compliance.md** - Meta-standard for precedence and traceability
36
+ - **02-project-structure.md** - Standard folder structure and file organization
37
+ - **03-solid-principles.md** - SOLID architecture principles
38
+ - **04-testing-standards.md** - Testing framework consistency
39
+ - **05-bug-reports-and-features.md** - Issue reporting templates
40
+ - **06-code-quality.md** - TypeScript, ESLint, formatting, accessibility
41
+ - **07-tech-stack-compliance.md** - Required technology versions
42
+ - **08-markup-quality.md** - Clean markup, semantic HTML, CSS configuration
43
+ - **09-rbac-compliance.md** - RBAC contract and RLS policy patterns
44
+
45
+ ### Enhanced Standards (10-12)
46
+ These are best practice standards for advanced patterns:
47
+ - **10-error-handling-patterns.md** - Consistent error handling
48
+ - **11-performance-optimization.md** - Performance best practices
49
+ - **12-ci-cd-integration.md** - CI/CD pipeline patterns
21
50
 
22
51
  ## Precedence
23
52
  1. Security
@@ -48,26 +77,26 @@ node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs
48
77
 
49
78
  ### Rule Files
50
79
 
51
- The cursor rules cover:
52
- - **00-pace-core-compliance** - Enforce pace-core usage patterns
53
- - **01-standards-compliance** - Enforce all standards (this document)
54
- - **02-project-structure** - Define standard folder structure
55
- - **03-solid-principles** - Enforce SOLID architecture
56
- - **04-testing-standards** - Enforce testing consistency
57
- - **05-bug-reports-and-features** - Templates for issue reporting
58
- - **06-code-quality** - Enforce code quality standards
59
- - **07-tech-stack-compliance** - Enforce tech stack versions
60
- - **08-markup-quality** - Enforce clean markup standards, semantic HTML usage, and pace-core component patterns
61
-
62
- ### Audit Tool
63
-
64
- Run comprehensive audits to check compliance:
65
-
66
- ```bash
67
- node node_modules/@jmruthers/pace-core/scripts/audit-consuming-app.cjs
68
- ```
69
-
70
- This generates timestamped markdown reports in `audit/` directory.
80
+ The cursor rules automatically enforce the corresponding standards. Each rule file (`.mdc`) is optimized for AI agents with:
81
+ - Clear MUST/SHOULD/MAY directives
82
+ - Decision trees for common scenarios
83
+ - ✅/❌ code examples
84
+ - Actionable checklists
85
+
86
+ **Rule Standard Mapping:**
87
+ - **00-pace-core-compliance.mdc** → `00-pace-core-compliance.md`
88
+ - **01-standards-compliance.mdc** → `01-standards-compliance.md`
89
+ - **02-project-structure.mdc** `02-project-structure.md`
90
+ - **03-solid-principles.mdc** → `03-solid-principles.md`
91
+ - **04-testing-standards.mdc** → `04-testing-standards.md`
92
+ - **05-bug-reports-and-features.mdc** → `05-bug-reports-and-features.md`
93
+ - **06-code-quality.mdc** `06-code-quality.md`
94
+ - **07-tech-stack-compliance.mdc** → `07-tech-stack-compliance.md`
95
+ - **08-markup-quality.mdc** → `08-markup-quality.md`
96
+ - **09-rbac-compliance.mdc** → `09-rbac-compliance.md`
97
+ - **10-error-handling-patterns.mdc** → `10-error-handling-patterns.md`
98
+ - **11-performance-optimization.mdc** → `11-performance-optimization.md`
99
+ - **12-ci-cd-integration.mdc** `12-ci-cd-integration.md`
71
100
 
72
101
  ### Documentation
73
102
 
@@ -1,37 +1,51 @@
1
1
  ---
2
- lastUpdated: 2025-11-18T15:00:00+11:00
3
- version: 0.5.181
2
+ lastUpdated: 2026-01-06T15:00:00+11:00
3
+ version: 0.6.x
4
4
  reviewedBy: documentation-standards-audit
5
5
  ---
6
6
 
7
7
  # Organisation Context Setup Troubleshooting
8
8
 
9
- This guide helps you resolve the `unrecognized configuration parameter "app.organisation_id"` error that occurs when using PACE Core with Supabase.
9
+ > **⚠️ IMPORTANT UPDATE (v0.6.x)**: The `set_organisation_context` and `get_organisation_context` functions have been **removed** in pace-core v0.6.x. Organisation context is now handled automatically via secure Supabase client headers.
10
10
 
11
- ## 🚨 The Error
11
+ ## Current Implementation (v0.6.x+)
12
+
13
+ Organisation context is now handled automatically:
14
+
15
+ 1. **Secure Supabase Client**: The `useSecureSupabase()` hook automatically injects organisation context headers
16
+ 2. **Explicit Parameters**: RPC functions receive `p_organisation_id` as explicit parameters
17
+ 3. **RLS Policies**: Row Level Security policies use `auth.uid()` and `organisation_id` columns directly
18
+
19
+ **No manual context setting is required.** The secure client handles this automatically.
20
+
21
+ ## 🚨 Legacy Error (v0.5.x and earlier)
22
+
23
+ If you're seeing this error, you may be using an older version of pace-core:
12
24
 
13
25
  ```
14
26
  Error loading units: unrecognized configuration parameter "app.organisation_id"
15
27
  ```
16
28
 
17
- **Console Error:**
18
- ```
19
- Supabase error fetching units: Object {
20
- code: "42704",
21
- details: null,
22
- hint: null,
23
- message: 'unrecognized configuration parameter "app.organisation_id"'
24
- }
25
- ```
29
+ **This error should not occur in v0.6.x+** as the functions have been removed.
26
30
 
27
- ## 🔍 Root Cause
31
+ ## 🔍 If You Still See Errors
28
32
 
29
- This error occurs when:
30
- 1. The Supabase database doesn't have the `set_organisation_context` function
31
- 2. The `app.organisation_id` configuration parameter isn't available
32
- 3. The organisation context isn't being set before making database queries
33
+ If you're using pace-core v0.6.x+ and still seeing context-related errors:
33
34
 
34
- ## Solution: Database Setup
35
+ 1. **Verify you're using `useSecureSupabase()`**: Always use the secure client from the hook, not the base client
36
+ 2. **Check RPC parameters**: Ensure RPC functions receive `p_organisation_id` as explicit parameters
37
+ 3. **Verify RLS policies**: RLS policies should use `auth.uid()` and `organisation_id` columns, not session variables
38
+
39
+ ## 📚 Legacy Documentation (v0.5.x)
40
+
41
+ The following information is for reference only (v0.5.x and earlier):
42
+
43
+ ### Legacy Solution: Database Setup
44
+
45
+ **Note**: These functions are no longer needed in v0.6.x+. This section is for historical reference only.
46
+
47
+ <details>
48
+ <summary>Click to view legacy setup (v0.5.x)</summary>
35
49
 
36
50
  ### Step 1: Create the Organisation Context Functions
37
51
 
@@ -282,6 +296,15 @@ If you're still experiencing problems:
282
296
 
283
297
  The key is making sure the database has the organisation context functions and your RLS policies use them correctly.
284
298
 
299
+ </details>
300
+
301
+ ## ✅ Current Best Practices (v0.6.x+)
302
+
303
+ 1. **Always use `useSecureSupabase()`**: This hook automatically handles organisation context
304
+ 2. **Pass explicit parameters**: RPC functions should receive `p_organisation_id` as explicit parameters
305
+ 3. **Use RLS policies correctly**: Policies should use `auth.uid()` and `organisation_id` columns directly
306
+ 4. **No manual context setting**: The secure client handles everything automatically
307
+
285
308
  ## ♿ Accessibility
286
309
 
287
310
  Organisation context setup doesn't directly impact accessibility, but ensure:
@@ -35,17 +35,17 @@ try {
35
35
  let paceCoreRules = {};
36
36
  try {
37
37
  // Try source path first (for development)
38
- const sourceRulesPath = path.resolve(__dirname, 'src/eslint-rules/pace-core-compliance.cjs');
38
+ const sourceRulesPath = path.resolve(__dirname, 'src/eslint-rules/index.cjs');
39
39
  if (fs.existsSync(sourceRulesPath)) {
40
40
  paceCoreRules = require(sourceRulesPath).rules;
41
41
  } else {
42
42
  // Try dist path (for published package)
43
- const distRulesPath = path.resolve(__dirname, 'dist/eslint-rules/pace-core-compliance.cjs');
43
+ const distRulesPath = path.resolve(__dirname, 'dist/eslint-rules/index.cjs');
44
44
  if (fs.existsSync(distRulesPath)) {
45
45
  paceCoreRules = require(distRulesPath).rules;
46
46
  } else {
47
47
  // Try relative to current working directory (for consuming apps)
48
- const cwdRulesPath = path.resolve(process.cwd(), 'node_modules/@jmruthers/pace-core/dist/eslint-rules/pace-core-compliance.cjs');
48
+ const cwdRulesPath = path.resolve(process.cwd(), 'node_modules/@jmruthers/pace-core/dist/eslint-rules/index.cjs');
49
49
  if (fs.existsSync(cwdRulesPath)) {
50
50
  paceCoreRules = require(cwdRulesPath).rules;
51
51
  }
@@ -77,12 +77,28 @@ module.exports = [
77
77
  }
78
78
  },
79
79
  rules: {
80
- // Use pace-core compliance rules
80
+ // Import rules
81
81
  'pace-core-compliance/no-restricted-imports': 'error',
82
+
83
+ // Compliance rules
82
84
  'pace-core-compliance/prefer-pace-core-components': 'warn',
83
85
  'pace-core-compliance/prefer-pace-core-hooks': 'warn',
84
86
  'pace-core-compliance/prefer-pace-core-utils': 'warn',
85
87
  'pace-core-compliance/no-local-component-duplication': 'error',
88
+ 'pace-core-compliance/no-inline-styles': 'error',
89
+
90
+ // Component rules
91
+ 'pace-core-compliance/prefer-pace-core-form': 'error',
92
+
93
+ // RBAC rules
94
+ 'pace-core-compliance/no-direct-supabase-client': 'error',
95
+ 'pace-core-compliance/rbac-permission-loading': 'error',
96
+ 'pace-core-compliance/no-direct-rbac-rpc': 'error',
97
+ 'pace-core-compliance/no-direct-rbac-table': 'error',
98
+ 'pace-core-compliance/no-hardcoded-role-checks': 'error',
99
+ 'pace-core-compliance/rbac-use-resource-names-constants': 'error',
100
+ 'pace-core-compliance/no-rbac-wrapper-components': 'error',
101
+ 'pace-core-compliance/no-rbac-wrapper-functions': 'error',
86
102
 
87
103
  // Also use standard no-restricted-imports (ESLint 9 flat config format)
88
104
  // Note: ESLint 9 uses a simpler array format
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jmruthers/pace-core",
3
- "version": "0.6.4",
4
- "description": "Clean, modern React component library with Tailwind v4 styling and native utilities",
3
+ "version": "0.6.6",
4
+ "description": "React component library with Tailwind v4",
5
5
  "private": false,
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -42,6 +42,11 @@
42
42
  "import": "./dist/utils.js",
43
43
  "default": "./dist/utils.js"
44
44
  },
45
+ "./icons": {
46
+ "types": "./dist/icons/index.d.ts",
47
+ "import": "./dist/icons/index.js",
48
+ "default": "./dist/icons/index.js"
49
+ },
45
50
  "./rbac": {
46
51
  "types": "./dist/rbac/index.d.ts",
47
52
  "import": "./dist/rbac/index.js",
@@ -53,9 +58,9 @@
53
58
  "default": "./dist/rbac/eslint-rules.js"
54
59
  },
55
60
  "./eslint-rules": {
56
- "require": "./dist/eslint-rules/pace-core-compliance.cjs",
57
- "import": "./dist/eslint-rules/pace-core-compliance.cjs",
58
- "default": "./dist/eslint-rules/pace-core-compliance.cjs"
61
+ "require": "./dist/eslint-rules/index.cjs",
62
+ "import": "./dist/eslint-rules/index.cjs",
63
+ "default": "./dist/eslint-rules/index.cjs"
59
64
  },
60
65
  "./eslint-config": "./eslint-config-pace-core.cjs",
61
66
  "./styles/core.css": "./src/styles/core.css",
@@ -69,12 +74,13 @@
69
74
  "default": "./vite-plugin-tailwind-v4.js"
70
75
  },
71
76
  "./docs": "./docs/README.md",
77
+ "./docs/dependencies": "./docs/getting-started/dependencies.md",
72
78
  "./package.json": "./package.json",
73
79
  "./core-usage-manifest.json": "./core-usage-manifest.json",
74
80
  "./cursor-rules": "./cursor-rules",
75
81
  "./scripts/install-cursor-rules": "./scripts/install-cursor-rules.cjs",
82
+ "./scripts/audit-dependencies": "./scripts/audit/audit-dependencies.cjs",
76
83
  "./scripts/audit": "./scripts/audit/index.cjs",
77
- "./scripts/audit-consuming-app": "./scripts/audit-consuming-app.cjs",
78
84
  "./source": {
79
85
  "import": "./src/index.ts",
80
86
  "default": "./src/index.ts"
@@ -95,6 +101,10 @@
95
101
  "import": "./src/utils/index.ts",
96
102
  "default": "./src/utils/index.ts"
97
103
  },
104
+ "./source/icons": {
105
+ "import": "./src/icons/index.ts",
106
+ "default": "./src/icons/index.ts"
107
+ },
98
108
  "./source/types": {
99
109
  "import": "./src/types/index.ts",
100
110
  "default": "./src/types/index.ts"
@@ -148,6 +158,7 @@
148
158
  "scripts": {
149
159
  "_comment_build": "Build package and documentation",
150
160
  "build": "tsup && node scripts/build-css.js",
161
+ "build:fast": "SKIP_CLEAN=true NODE_ENV=development tsup && node scripts/build-css.js",
151
162
  "build:watch": "tsup --watch",
152
163
  "build:docs": "node scripts/build-docs-incremental.js",
153
164
  "build:docs:force": "node scripts/build-docs-incremental.js --force",
@@ -201,17 +212,11 @@
201
212
  "author": "PACE Team",
202
213
  "license": "MIT",
203
214
  "peerDependencies": {
204
- "@radix-ui/react-checkbox": "^1.0.0",
205
- "@radix-ui/react-dialog": "^1.0.0",
206
- "@radix-ui/react-label": "^2.0.0",
207
- "@radix-ui/react-slot": "^1.0.0",
208
- "@radix-ui/react-switch": "^1.1.0",
209
- "@radix-ui/react-tabs": "^1.0.0",
210
- "@radix-ui/react-toast": "^1.0.0",
211
- "@radix-ui/react-tooltip": "^1.0.0",
215
+ "@tanstack/react-query": "^5.90.0",
212
216
  "@tanstack/react-table": "^8.0.0",
213
217
  "clsx": "^2.0.0",
214
- "lucide-react": "^0.400.0",
218
+ "date-fns": "^3.0.0",
219
+ "date-fns-tz": "^3.0.0",
215
220
  "react": "^19.0.0",
216
221
  "react-day-picker": "^9.0.0",
217
222
  "react-dom": "^19.0.0",
@@ -247,14 +252,19 @@
247
252
  },
248
253
  "dependencies": {
249
254
  "@hookform/resolvers": "^3.9.0",
250
- "@supabase/supabase-js": "^2.49.10",
251
- "@tanstack/react-query": "^5.56.2",
252
- "@tanstack/react-virtual": "^3.13.12",
253
- "date-fns": "^3.0.0",
254
- "date-fns-tz": "^3.0.0",
255
+ "@radix-ui/react-checkbox": "^1.0.0",
256
+ "@radix-ui/react-label": "^2.0.0",
257
+ "@radix-ui/react-slot": "^1.0.0",
258
+ "@radix-ui/react-switch": "^1.1.0",
259
+ "@radix-ui/react-tabs": "^1.0.0",
260
+ "@radix-ui/react-toast": "^1.0.0",
261
+ "@radix-ui/react-tooltip": "^1.0.0",
262
+ "@supabase/supabase-js": "^2.89.0",
263
+ "@tanstack/react-virtual": "^3.13.16",
255
264
  "lodash.debounce": "^4.0.8",
256
265
  "lodash.throttle": "^4.1.1",
266
+ "lucide-react": "^0.400.0",
257
267
  "papaparse": "^5.5.3",
258
- "react-is": "^19.2.0"
268
+ "react-is": "^19.2.3"
259
269
  }
260
270
  }