@tantainnovative/ndpr-toolkit 3.10.2 → 3.10.3

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 (3) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +10 -10
  3. package/package.json +33 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [3.10.3](https://github.com/mr-tanta/ndpr-toolkit/compare/v3.10.2...v3.10.3) (2026-05-25)
6
+
7
+ ### Bug fix: 4 missing subpath exports
8
+
9
+ The published `exports` map in the root `package.json` was missing four subpaths whose dist files were always being built and shipped in the tarball but were never wired into the import resolver. Affected paths:
10
+
11
+ - `./headless` — added in 3.10.0 (alias of `/hooks`)
12
+ - `./lawful-basis/lite` — added in 3.8.0
13
+ - `./cross-border/lite` — added in 3.8.0
14
+ - `./ropa/lite` — added in 3.8.0
15
+
16
+ Consumers running `import { … } from '@tantainnovative/ndpr-toolkit/headless'` (or any of the three `/lite` paths) on 3.8.0 through 3.10.2 got a Node resolution error despite the dist files being present in their `node_modules`. The bug was that the inner `packages/ndpr-toolkit/package.json` had the exports right, but only the root `package.json` is consumed by the publish workflow — and the root never got them.
17
+
18
+ 3.10.3 adds all four entries to both the `exports` map and the `typesVersions["*"]` block in the root `package.json`. Verified by inspecting the published 3.10.3 tarball's `package.json` to confirm `npm view @tantainnovative/ndpr-toolkit@3.10.3 exports` lists all 23 paths.
19
+
20
+ ### Docs
21
+
22
+ - New **`/docs/guides/upgrading-3-7-to-3-10`** guide — concise upgrade path for the common case of consumers stuck on 3.7.0 (the last version that reached npm before the publish-pipeline regression). Covers what's new, what didn't change, the post-bump verify checklist, and the reason 3.10.3 is the right target rather than any intermediate.
23
+ - README — compacted the "What's new" notice. The 700-word historical narrative is now a brief 3.10.x summary with links to the new upgrade guide and the full CHANGELOG. Reverted the StackBlitz / CodeSandbox "Open in" links from `examples/ecommerce-starter` back to `examples/nextjs-app` (the comprehensive all-in-one demo — the ecommerce-starter is great as a deeper example but `examples/nextjs-app` is the better headline first-look).
24
+
25
+ ### Verification
26
+
27
+ - All 23 exports keys present in both `exports` and `typesVersions["*"]` (was 19 in 3.10.2)
28
+ - Build outputs verified locally — every claimed import path resolves to an existing `dist/<name>.{js,mjs,d.ts}`
29
+ - Tests: 1192 / 1192 passing (no runtime changes)
30
+ - `tsc --noEmit` clean for the docs site
31
+
5
32
  ## [3.10.2](https://github.com/mr-tanta/ndpr-toolkit/compare/v3.10.1...v3.10.2) (2026-05-25)
6
33
 
7
34
  README-only patch — runtime is byte-identical to 3.10.1. Fixes the npm-rendered README so it reflects the current state of the toolkit.
package/README.md CHANGED
@@ -11,17 +11,17 @@
11
11
 
12
12
  v3 ships **zero-config presets**, **pluggable storage adapters**, **compound components**, and a **compliance score engine** — eight production-ready modules covering consent, data subject rights, DPIA, breach notification, privacy policies, lawful basis, cross-border transfers, and ROPA.
13
13
 
14
- **[Documentation](https://ndprtoolkit.com.ng)** | **[Live Demos](https://ndprtoolkit.com.ng/ndpr-demos)** | **[npm](https://www.npmjs.com/package/@tantainnovative/ndpr-toolkit)** | **[Blog](https://ndprtoolkit.com.ng/blog)** | **[v3.10.1 Release](https://github.com/mr-tanta/ndpr-toolkit/releases/tag/v3.10.1)**
14
+ **[Documentation](https://ndprtoolkit.com.ng)** | **[Live Demos](https://ndprtoolkit.com.ng/ndpr-demos)** | **[npm](https://www.npmjs.com/package/@tantainnovative/ndpr-toolkit)** | **[Blog](https://ndprtoolkit.com.ng/blog)** | **[v3.10.3 Release](https://github.com/mr-tanta/ndpr-toolkit/releases/tag/v3.10.3)**
15
15
 
16
- [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/mr-tanta/ndpr-toolkit/tree/main/examples/ecommerce-starter)
17
- [![Open in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/github/mr-tanta/ndpr-toolkit/main/examples/ecommerce-starter)
16
+ [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/mr-tanta/ndpr-toolkit/tree/main/examples/nextjs-app)
17
+ [![Open in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/p/github/mr-tanta/ndpr-toolkit/main/examples/nextjs-app)
18
18
 
19
- > **What's new in 3.10.x:** `NDPRThemeProvider` a typed React Context that turns a JavaScript theme object into the `--ndpr-*` CSS variables the stylesheet already consumes. `/headless` subpath ships every hook with zero UI in the import graph (an alias of `/hooks` under a more discoverable name). A new production-grade DSR backend reference at `examples/dsr-backend-prod/` wires `NDPRSubjectRights` to Prisma persistence + Resend email confirmation behind dual-mode shims (no infra required to run). Three new docs guides: [theming](https://ndprtoolkit.com.ng/docs/guides/theming), [headless](https://ndprtoolkit.com.ng/docs/guides/headless), [production-dsr-backend](https://ndprtoolkit.com.ng/docs/guides/production-dsr-backend).
19
+ > **What's new in 3.10.x:** Typed theming via `<NDPRThemeProvider>`, a `/headless` subpath alias of `/hooks` for headless-UI consumers, and a production-grade DSR backend reference at `examples/dsr-backend-prod/` (Prisma + Resend behind no-infra shims). New docs guides: [theming](https://ndprtoolkit.com.ng/docs/guides/theming), [headless](https://ndprtoolkit.com.ng/docs/guides/headless), [production-dsr-backend](https://ndprtoolkit.com.ng/docs/guides/production-dsr-backend).
20
20
  >
21
- > **3.9.0** shipped runnable example apps — `examples/ecommerce-starter` (Nigerian multi-page storefront) and SSR-safe cookie-bridge templates for Next.js App Router, Remix, and Astro under `examples/ssr/*`. Plus Bun + Vite and Bun + Next.js quickstarts in this README. **3.8.1** added a typed `onSubmitSuccess` callback to `NDPRSubjectRights`, a documented DSR submission payload contract, accessibility notes, and a 3.5 → 3.8 migration guide. **3.8.0** shipped Lite (read-only) variants of the heavy Manager components (`/lawful-basis/lite`, `/cross-border/lite`, `/ropa/lite`). **3.6.0** added a typed `onSubmitError({ error, response })` callback. **3.5.x** added focus management (`useFocusTrap`), escape-to-dismiss, and `prefers-reduced-motion` support. Full notes on the [release page](https://github.com/mr-tanta/ndpr-toolkit/releases/tag/v3.10.1).
21
+ > **Upgrading from 3.7.x?** See the [3.7 → 3.10 upgrade guide](https://ndprtoolkit.com.ng/docs/guides/upgrading-3-7-to-3-10) fully additive, no API breaks. Full changelog on [GitHub](https://github.com/mr-tanta/ndpr-toolkit/blob/main/CHANGELOG.md).
22
22
 
23
23
  <p align="center">
24
- <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.1/public/screenshots/hero.png" alt="NDPA Toolkit — NDPA Compliance Made Beautiful" width="800" />
24
+ <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.3/public/screenshots/hero.png" alt="NDPA Toolkit — NDPA Compliance Made Beautiful" width="800" />
25
25
  </p>
26
26
 
27
27
  ---
@@ -70,7 +70,7 @@ import { apiAdapter } from '@tantainnovative/ndpr-toolkit/adapters';
70
70
  That's it. NDPA-compliant consent with server-side persistence in under 20 lines.
71
71
 
72
72
  <p align="center">
73
- <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.1/public/screenshots/consent-demo.png" alt="Consent Management Demo — interactive consent banner with state inspector" width="800" />
73
+ <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.3/public/screenshots/consent-demo.png" alt="Consent Management Demo — interactive consent banner with state inspector" width="800" />
74
74
  <br />
75
75
  <em>Interactive consent demo with configurable position, theme, storage, and real-time state inspector</em>
76
76
  </p>
@@ -434,13 +434,13 @@ Every module has an interactive demo. No signup, no setup — try them instantly
434
434
 
435
435
  <p align="center">
436
436
  <a href="https://ndprtoolkit.com.ng/ndpr-demos">
437
- <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.1/public/screenshots/demos-overview.png" alt="8 interactive live demos — zero setup required" width="800" />
437
+ <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.3/public/screenshots/demos-overview.png" alt="8 interactive live demos — zero setup required" width="800" />
438
438
  </a>
439
439
  </p>
440
440
 
441
441
  <p align="center">
442
- <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.1/public/screenshots/dsr-demo.png" alt="Data Subject Rights — 8 rights with request tracking" width="400" />
443
- <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.1/public/screenshots/breach-demo.png" alt="Breach Notification — 72-hour countdown with step-by-step workflow" width="400" />
442
+ <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.3/public/screenshots/dsr-demo.png" alt="Data Subject Rights — 8 rights with request tracking" width="400" />
443
+ <img src="https://raw.githubusercontent.com/mr-tanta/ndpr-toolkit/v3.10.3/public/screenshots/breach-demo.png" alt="Breach Notification — 72-hour countdown with step-by-step workflow" width="400" />
444
444
  </p>
445
445
 
446
446
  <p align="center">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tantainnovative/ndpr-toolkit",
3
- "version": "3.10.2",
3
+ "version": "3.10.3",
4
4
  "private": false,
5
5
  "description": "Nigeria Data Protection Toolkit — enterprise-grade compliance components for the Nigeria Data Protection Act (NDPA) 2023",
6
6
  "pnpm": {
@@ -112,6 +112,11 @@
112
112
  "import": "./dist/hooks.mjs",
113
113
  "require": "./dist/hooks.js"
114
114
  },
115
+ "./headless": {
116
+ "types": "./dist/headless.d.ts",
117
+ "import": "./dist/headless.mjs",
118
+ "require": "./dist/headless.js"
119
+ },
115
120
  "./consent": {
116
121
  "types": "./dist/consent.d.ts",
117
122
  "import": "./dist/consent.mjs",
@@ -142,16 +147,31 @@
142
147
  "import": "./dist/lawful-basis.mjs",
143
148
  "require": "./dist/lawful-basis.js"
144
149
  },
150
+ "./lawful-basis/lite": {
151
+ "types": "./dist/lawful-basis-lite.d.ts",
152
+ "import": "./dist/lawful-basis-lite.mjs",
153
+ "require": "./dist/lawful-basis-lite.js"
154
+ },
145
155
  "./cross-border": {
146
156
  "types": "./dist/cross-border.d.ts",
147
157
  "import": "./dist/cross-border.mjs",
148
158
  "require": "./dist/cross-border.js"
149
159
  },
160
+ "./cross-border/lite": {
161
+ "types": "./dist/cross-border-lite.d.ts",
162
+ "import": "./dist/cross-border-lite.mjs",
163
+ "require": "./dist/cross-border-lite.js"
164
+ },
150
165
  "./ropa": {
151
166
  "types": "./dist/ropa.d.ts",
152
167
  "import": "./dist/ropa.mjs",
153
168
  "require": "./dist/ropa.js"
154
169
  },
170
+ "./ropa/lite": {
171
+ "types": "./dist/ropa-lite.d.ts",
172
+ "import": "./dist/ropa-lite.mjs",
173
+ "require": "./dist/ropa-lite.js"
174
+ },
155
175
  "./adapters": {
156
176
  "types": "./dist/adapters.d.ts",
157
177
  "import": "./dist/adapters.mjs",
@@ -202,6 +222,9 @@
202
222
  "hooks": [
203
223
  "./dist/hooks.d.ts"
204
224
  ],
225
+ "headless": [
226
+ "./dist/headless.d.ts"
227
+ ],
205
228
  "consent": [
206
229
  "./dist/consent.d.ts"
207
230
  ],
@@ -220,12 +243,21 @@
220
243
  "lawful-basis": [
221
244
  "./dist/lawful-basis.d.ts"
222
245
  ],
246
+ "lawful-basis/lite": [
247
+ "./dist/lawful-basis-lite.d.ts"
248
+ ],
223
249
  "cross-border": [
224
250
  "./dist/cross-border.d.ts"
225
251
  ],
252
+ "cross-border/lite": [
253
+ "./dist/cross-border-lite.d.ts"
254
+ ],
226
255
  "ropa": [
227
256
  "./dist/ropa.d.ts"
228
257
  ],
258
+ "ropa/lite": [
259
+ "./dist/ropa-lite.d.ts"
260
+ ],
229
261
  "adapters": [
230
262
  "./dist/adapters.d.ts"
231
263
  ],