feat(core-consent): add ConsentProvider + useConsent() React subpath

Adds the ./react subpath to @repo/core-consent following the same
pattern as @repo/core-analytics/react:

- ConsentProvider wraps IConsent in React context
- useConsent() returns the injected IConsent or throws ConsentContextError
- RTL tests cover context propagation, grant/withdraw delegation,
  isGranted state reflection, getCategories, and missing-provider error
- package.json: ./react export + React optional peerDep + RTL devDeps
- tsconfig: extend react-library.json, include .tsx
- vitest.config: jsdom environment for .test.tsx + jsdom setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 19:19:47 +00:00
parent 33e3c093ad
commit 9b6deac954
8 changed files with 188 additions and 32 deletions

View File

@@ -5,7 +5,8 @@
"type": "module",
"exports": {
".": "./src/index.ts",
"./di": "./src/di/bind-production.ts"
"./di": "./src/di/bind-production.ts",
"./react": "./src/react/index.ts"
},
"scripts": {
"build": "tsc --noEmit",
@@ -19,19 +20,27 @@
"zod": "^3.24.0"
},
"peerDependencies": {
"payload": "^3.0.0"
"payload": "^3.0.0",
"react": "^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"payload": {
"optional": true
},
"react": {
"optional": true
}
},
"devDependencies": {
"@repo/core-eslint": "workspace:*",
"@repo/core-testing": "workspace:*",
"@repo/core-typescript": "workspace:*",
"@testing-library/react": "^16.0.0",
"@types/react": "^19.0.0",
"@vitest/coverage-v8": "^3.0.0",
"jsdom": "^25.0.0",
"payload": "^3.14.0",
"react": "^19.0.0",
"typescript": "^5.8.0",
"vitest": "^3.0.0"
}