{"_id":"@daanvandenbergh/scribekit","_rev":"56-0b830ed4a593b2b021be36619ce52eb4","name":"@daanvandenbergh/scribekit","dist-tags":{"latest":"2.9.0"},"versions":{"1.0.0":{"name":"@daanvandenbergh/scribekit","version":"1.0.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.0.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"dcf7308881c53f789f0af75c93e5db94450b4aad","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.0.0.tgz","fileCount":192,"integrity":"sha512-6OCue8rgh/Cpyp8m+A1rgtEb1CovJnvVvncVqeNVdQaeBB2VtnGGYIfKyMbAPl0xhk3Lsu25/GmiLp2HbAZNew==","signatures":[{"sig":"MEYCIQC4KYOuczmfReNMJFZAj6JE5TWw1iCnWXJWFlpJkXQkBAIhAIIo0YjbibhtckxfVlOOLW+FJhP0tX9BuBnOu27pCaYR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1850549},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"84e18d5eba77489df6a102a3e411e8dce5bdd0ca","scripts":{"demo":"npm run build && npm --prefix demo run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog for Next.js App Router: server components for the post grid and pages, plus an AI skill that researches and writes the posts.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claude-code-utils":"^1.0.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.0.0_1783672078423_0.8975544700275209","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@daanvandenbergh/scribekit","version":"1.0.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.0.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"1709add03da399984cd221f2db37c8e6bbffb0a9","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.0.1.tgz","fileCount":192,"integrity":"sha512-vRsnyGUBESiQAHnf+hYWb1jCRmTC17fF+U2C6PTUcKxR/DT2uuLL29mFV2oRBM5sOLuoRPgGGWWh8twpKVJ8Zw==","signatures":[{"sig":"MEQCIGwtJtVkseWDA5Rm0oYJYXx+ohiN48IjzeY4O8BYab7zAiAk3IntFsB96x9PrssHYedMS65KDjfVbR6pRRS4QAuBPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1850596},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"42ce720024f6fbaefeca6548d8c1a4d0eba471a7","scripts":{"demo":"npm run build && npm --prefix demo run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.0.1_1783771764239_0.8367759673173223","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@daanvandenbergh/scribekit","version":"1.0.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.0.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"b378f795902842c4b00be95695425115a4acc299","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.0.2.tgz","fileCount":194,"integrity":"sha512-dJ0oCamFZsRKsgjcFQRkHk2OfuO8b9y+TFsq0e54a5wCdJI/Guz486SoU8jMVVemJr0TfpYcrY6pQ7KyDji0tA==","signatures":[{"sig":"MEUCIQCaw6S0hHdCV+RI36Qjfaf6ahBMioqf5X975suKhnZlpwIgEzTHn3PPVkHF3Kmn5pLx2AlsyihnifbEd7Eokzb+DFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1857341},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"683724f88f7c11c94a447fe3fc8bd7b8da805629","scripts":{"demo":"npm run build && npm --prefix demo run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.0.2_1783774033528_0.8230705963915861","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@daanvandenbergh/scribekit","version":"1.1.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"784dd06a7a307fd9e72df71dacadca5ea0d9d564","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.0.tgz","fileCount":195,"integrity":"sha512-ZeDwKyXaAGdlf/QvBt0EJ+8LIeTR7oWewiUOlzura2B50Mp10t2Ba1f+jh01BvU5nQNG0UDgS1uGwEjBHQGObg==","signatures":[{"sig":"MEUCIDukDMETIEUQ7sazR81FZfbeTdTybTNU82mne6ksxl6yAiEA/o7EtzlrNe3cmarEWpX4YTDS81mbIg9DWxhFYov2ZAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1887365},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"e8bb9ae0c65b542fca58a257b237b460cb884960","scripts":{"demo":"npm run build && npm --prefix demo run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.0_1783792457867_0.08093878101721153","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@daanvandenbergh/scribekit","version":"1.1.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"6931c54f3d37da3d6e472526a99ad1df2b753c8f","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.1.tgz","fileCount":196,"integrity":"sha512-AM0hn2YeMx2X9b9LjZXNsdfsWkYcfyH+bgL+m6/5KqDaImbga6h05Y5FsU8A+jsyVYvGDZTz3zpJZvn5Vwt8QA==","signatures":[{"sig":"MEQCIBTLc6w9fasaxDmVV08pWtprwOE5Zw3n1qThyDT2rR6EAiAnNjlpwAReALSZifK7EPO6V80DtEZyZsJqxACkCZ1BEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1931276},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"0456a44a939c5dde97a3834d4119c2b6c31f759d","scripts":{"demo":"npm run build && npm --prefix demo run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.2"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.1_1783804916749_0.7346851398516356","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@daanvandenbergh/scribekit","version":"1.1.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"e1321aabb3ce9157e8d630b5e134105178be0933","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.2.tgz","fileCount":208,"integrity":"sha512-k2gWi/Ft9ZxzJKnw/HhIMA7vbv5IgmnsNusGt0EFB++sZfzM5jwrqKYpxFPOHeBxtS+ccBJLgx2aUM3LJ2p3mg==","signatures":[{"sig":"MEYCIQCTxOhiblxbcgbtK+iYsG7wFIY7Z2cnPZoiY7nJ+6c8tAIhAMq/1bWF1IacIN9vLHZilcLehiTu5fcXtKWnNkvYkJKw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1973330},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"8787dbd83f8360e9ca766fa28ae2daca1d519a2d","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.2"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.2_1784271664876_0.05307408221493226","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@daanvandenbergh/scribekit","version":"1.1.3","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.3","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"18014a3f3c19bcd7ff8f36c592287c4ff89067cf","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.3.tgz","fileCount":214,"integrity":"sha512-6sBPCa+MyLJMLH93vUY0HtQ/v/83vcdwXKL6UyuVGoc9KfCtlsan9COcH7ZKqiTq6wFj0fPP9Fx/IuJSJNxzcg==","signatures":[{"sig":"MEUCIQCJKUhCRPjjvtTsim4tlQpMo8h/F5o7PTTJzwlgQX4YUQIgDo+UzEmI7eMGGYiNvDPr2sgZfbR8zg0gOTrcIPsfV2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1996638},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"0461bfcedea4e988405122112b00fc751edd6df1","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.2"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.3_1784292087535_0.9858746680479646","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@daanvandenbergh/scribekit","version":"1.1.4","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.4","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"a7beba56d79ee260de694e0bb560acda062be376","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.4.tgz","fileCount":214,"integrity":"sha512-xg5Jkz4njor9N3kuiRUDEwhYT6wQnoDar1udyp2+7KE6qLRkuxkdEZxfI0Xl0xkuiiuuQ6IzLlwxVuQMPOEwCA==","signatures":[{"sig":"MEYCIQD4MWes8VyEErtWwf9KJEYt3CuD00O5muD4RNbxYzdTDgIhAPBocm19fBlmD46jYBG7WBjbTNRCkfVRqHfIw/h7HsCM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1996851},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"3e26bab6fe19c3a589f2e2fa9a0293f7f6ab133a","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.4_1784390404704_0.887281075335417","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@daanvandenbergh/scribekit","version":"1.1.5","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.1.5","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"419a5e50fdd8b4d7afdc24d2545822cccf0063fe","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.1.5.tgz","fileCount":214,"integrity":"sha512-qavLKQ69hNZ1NrGSQ9E9++/P7MS4Ed0L/18RK9VPCQMZMBqynyVuk4iSglt6WayHiMvVx3BWs1jVhXJJy2Inpg==","signatures":[{"sig":"MEUCIHE7UFRfQ/mi4gn1/Fn2t2w2LDpy62kYR60l+lrE+FXqAiEAh11FkIFj15qprVsZ36TluA8rX4hF2n9F/q3NeOYJc9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2008168},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"e17c0bd4cc360e2d29e011e05f10c31f11418465","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.1.5_1785072030953_0.8139139905287436","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@daanvandenbergh/scribekit","version":"1.2.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"7fe4334e106a4b991569c1c0caaf7a5bdfb67501","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.0.tgz","fileCount":216,"integrity":"sha512-COHDUq/OrMqKsaHYblmqMIsRdGuPceYlJac+9vYGzCG5+iAvqhqexuPUOQb9A+76A8jsIVu+BzAyVZJJI9MOVg==","signatures":[{"sig":"MEYCIQCrQ2R6I1hSwHSXQq0iUZbuB6xoAkp5Iiu+72MgaqrItgIhANhnNhhGCeevcf7Qxkme4WXg7mZruu6qnJzpUD30PfdI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2018032},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"58c28395a0f533a944e024db3d7180dc55811468","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.0_1785313958215_0.5254801823754356","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@daanvandenbergh/scribekit","version":"1.2.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"825bf4b38c9b834b39a2e6fbb1a1180dd8e114f0","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.1.tgz","fileCount":216,"integrity":"sha512-aj0ygu4ddcznduCwe0g8kMRd3ysorjQDpFDpEv4vxg5gjV0Iial00+z2TJDXbTorA5GOJb5chjztcxDEPAGVOg==","signatures":[{"sig":"MEYCIQD42qAh0S/bh9swGGexC41cuQDXQxulkPCODinwbxQHjwIhAMEBBtAgTp7RtpYDXWbC9nVt0HUcKyc0Stk8yPHb0j6P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2018730},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"1f1ac5ab2e9b46ed4694387ca7992ab1ff20e38a","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.1_1785321914353_0.5071852934884356","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@daanvandenbergh/scribekit","version":"1.2.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"534f5f55eb1209b1a69f0bb2b016d178297bed94","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.2.tgz","fileCount":216,"integrity":"sha512-92Y3SbV0dEt2GzV3yfEmUhWvJSUQRSjzp8EBTc/TAz0JMx3GwZVR1emDR/8AGVpXU0sOs28J72DnX9GQILs2tA==","signatures":[{"sig":"MEUCIDiOxPgK0HAZbCAmrn2Q9dBO9x9DBA2nB9Z2y2ejKnUqAiEAjwxvh3VOIcsGz+xSETMaiiJbnp5aYWjTDcEi47spAY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2020775},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"171c6a6a11c332921f5e02fccbd3a567dae4d7ea","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.2_1785617552368_0.9982022090718705","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@daanvandenbergh/scribekit","version":"1.2.3","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.3","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"467648711fb4d262d3552642e4edbff754c75c29","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.3.tgz","fileCount":216,"integrity":"sha512-d7Qb03SBAC9Vzyd4vhCzL11bmB3CtISMpKWKmvTma191dDHX7pa56qn59gnXuwMy6GWz6XIU7Q6vfV7kcV32WA==","signatures":[{"sig":"MEUCIQCYWk6Y89DC1tYqD2nJo3ooExnhOlV9PT9WTqqKP/Zr7QIgCM76v44Vsc5pVpJMgYp+BWItgE6g2+58MR9fpZ4h/Nw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2021597},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"f91561bb94ac8a08ce49a38696dc1b75b37547c7","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.3_1785656945984_0.6341233324644584","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@daanvandenbergh/scribekit","version":"1.2.4","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.4","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"3e630b76904d8d0f9c4916f617e8824643815254","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.4.tgz","fileCount":218,"integrity":"sha512-6wEvGs+VIUYLPxTONMy0Glw4sCiXa/PvdKnxfDRwOL3YwfAAh5gToPRorG2tYyY+QXrpP913sV0quOd+EtZZ3Q==","signatures":[{"sig":"MEYCIQCC5OTpZ0Loq7zPpWB8bwjyfn6o2XU0reOXEcHwgIYTkQIhAMrkxok6hV9aiuSATCQXCe1T+HFv8ECGBWJ7bMt8C2bL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2041358},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"cb31356e1ea07940c74a3ee7b8196429ee8ba157","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.4_1785660288211_0.6051497893150444","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@daanvandenbergh/scribekit","version":"1.2.5","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.5","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"e859d9b813e6155e3cd94454efa528cac35db9b0","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.5.tgz","fileCount":218,"integrity":"sha512-7yATnanj7FHf3MukQQYJNyQijKMFxP/res4lapw5oUdjc79Jp0lQEMMT2VuUwWv2k59wKNbll1jrshFdS9n/Tg==","signatures":[{"sig":"MEUCIQDcKaDPo7AzU0aYe5YSy7gVYbzt3bEbKv059SrcJJBT2gIgVu41yY94y2bkxolfO86MLy7chcrNznEWu0C7LVbhvXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2042516},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"765bfa1d7afa902be880afe7193e46498bc71ebb","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.5_1785660681592_0.9515786718365831","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@daanvandenbergh/scribekit","version":"1.2.6","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.6","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"75774a608d5e69b8d84a7afb6b21a2ffa03291f1","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.6.tgz","fileCount":218,"integrity":"sha512-/diTVwWvnmPpiaf7bLQef/w+uqqSsIXoEOuV5A2QnHki7sM0w78C1asu7e/M/dcqxsemSY8jzs5IYmfumAWaHA==","signatures":[{"sig":"MEQCIEDFoqpHS3gXZ/NN0+Scn4sY7uPGy55ClWXff0Zdy3YBAiBPfWMocpxJyhJ9ctaJBPOIkYH53/Klzngt9U1+SzaPLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2045217},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"bb382bf92bfa72e9da889bd6aa20c2a5248e7346","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.6_1785662438026_0.5952906421502988","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@daanvandenbergh/scribekit","version":"1.2.7","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.7","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"9e50bdea7cd22fbecf45059bdb73c65dcd26df3d","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.7.tgz","fileCount":218,"integrity":"sha512-wRP7PPnGT++4LRhBLFmVlvEk8ph1/pY2dqVtIFBYUevV51WC+kGyxoTVTUwdDcVjJ990VkyZYqBkl5H8iEuSvg==","signatures":[{"sig":"MEQCIE/r/LFHFa3NxYxBaufb1iT9uOFcFpvz9KBkNZ2kulV6AiAb99I/x2rL5SaeneMdT+Ljiould0T+IPPfPLEAIJCtzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2045414},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"9f8acb3d857e023e1eb659b6a02eda9c2aaaad73","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.7_1785663952835_0.5809171017323669","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@daanvandenbergh/scribekit","version":"1.2.8","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.8","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"01142c62f55edd2c26b18cf64ea7e38e7fa4b552","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.8.tgz","fileCount":218,"integrity":"sha512-aE8fFyWcjhByaaT545pozyNo3PM2xHRl84A9DrkAR+AmDo1YSVSQV8EObbq9iszUUlpbH/c4L5ylgGAMU/XA6Q==","signatures":[{"sig":"MEUCIBFJMmkr25pvM73wKDrOSGd8+tCABNy0ovGso1dVqdn2AiEAsyJZ0Qsa9F42qWOydC0pBWA/WNisN3cWSjRM7WeDo3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2054243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"87c6f9741bc981b009bd8706d0c9bbf06225fbff","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.8_1785665586996_0.5271241941907292","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@daanvandenbergh/scribekit","version":"1.2.9","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.9","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"d2b8daee403674599725448c19061aedf469666a","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.9.tgz","fileCount":218,"integrity":"sha512-3/SkVHGlTzja+WEd8Ah8lKkqbmWM8+eCsbU4ydJ204cQz+aEl5KIoWxmwYRwgsuqzTeSPRF2gZy56XzxBxx3sg==","signatures":[{"sig":"MEUCIQC27D6E7NPtmGhHIVmcPV3y2Au14IqjFdzAyvOLrVx97QIgRF1vw/Xza4zLmRDD0Qd6AQq2/u83CZRPh4jEVgyUlH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2055345},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"c100d7a5a40bdca057e65de0e87aa395b077e35b","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.9_1785666123207_0.9976679113283418","host":"s3://npm-registry-packages-npm-production"}},"1.2.10":{"name":"@daanvandenbergh/scribekit","version":"1.2.10","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.10","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"cf32a409ea0f686284a5231ae69be828402c74ad","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.10.tgz","fileCount":218,"integrity":"sha512-Z7p1zVlOofy9Ao9yTb8i1rD6wxrNn9/7fXj7Ey40RdEQQQiBiTuXBnmGpcjP3NtSskwm9j6vml0h6dOQK2pR5w==","signatures":[{"sig":"MEQCIB/aRCYxdSCnpBlK9ij4Q34ECEhuY0vtOrn4gUOuyjp/AiA6Bnvwlu/fLXVmI3g1LatQgLsGgiOJbmu0EVj+ddloAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2055889},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"e3f5dd8bdd8015361812e2dfc2526fcf9c074296","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.10_1785666432559_0.4714064071341022","host":"s3://npm-registry-packages-npm-production"}},"1.2.11":{"name":"@daanvandenbergh/scribekit","version":"1.2.11","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.11","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"edcefbb3a6fd08d533a273c919567491c4744b06","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.11.tgz","fileCount":218,"integrity":"sha512-jp2GfGAbZRVkBfVzegQyGIr8rg8ZKRTc8Xht2xCRDP3lHl3Gq68CcQa4Vc4I+D1ED+LETd1fI+ouDS+mbPTvrw==","signatures":[{"sig":"MEYCIQDegJeFLhvv1r2pGDwZ613kKg7S3Qm5K4+f6cOBUk4+XQIhAICgIXSTnJ5OZmsJm1Q1r3awPmTzvdy05L74KGc2p5tB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2058916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"d81803c40aa0aa311f607400dee79aaa89e0fd06","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.11_1785669319837_0.06962415936444932","host":"s3://npm-registry-packages-npm-production"}},"1.2.12":{"name":"@daanvandenbergh/scribekit","version":"1.2.12","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.2.12","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"82cfecf70fe9cde712ae5cf2cdd425e9f8a03de8","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.2.12.tgz","fileCount":218,"integrity":"sha512-lTXEtiIMrDM5kkfCPZ7Nxwy4ZWuW9outEG70zt99Ri9MEHUv0BbnX0qjZPx0KYaq/zyL5pDUbGnmWSvsj2oxQA==","signatures":[{"sig":"MEUCIGEyR5kxvoE8toJ0X828QIVUqFbr947ny+/WmuhaYT+9AiEApm1GN5gkSIjCj7zMgU08+hGZ3FO9aNeDlYYgbUsnVMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2061500},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4acb734addfd1c42a68b57656136eeb6995cf956","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.2.12_1785674695321_0.4396750565626819","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@daanvandenbergh/scribekit","version":"1.3.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.3.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"022fc6aaee9b6aa05eece0c2edbb2e1d77857de1","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.3.0.tgz","fileCount":226,"integrity":"sha512-Xj/cQ+UzZRfKnTZoBq4P5tdeaO4wN4Zr+WtYrRqgioT/e1GnMEawC2q+/Uy5mHrpChTgDcJTjquoFOeBJwbA+w==","signatures":[{"sig":"MEUCIH06bA2zAXPKDA/5kzjBUJmq2uyouRsPIynuHty8axu6AiEAxX4IdtvERogCtYlXKtumI6yEKEbYifymo8XvwGwOXBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2128860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"c70ffd188ea634fa41758bcb1f9d2e435aad4ec1","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.3.0_1785689621004_0.754031045412048","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@daanvandenbergh/scribekit","version":"1.3.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.3.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"3148c186e92b25cd7944cc930857aa1a2164b534","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.3.1.tgz","fileCount":226,"integrity":"sha512-IHOmzZAqwMjXF6nOoCk2Km+9Pao69o61IaRFNtVuojEF/7PFgNH+BGfuNb78SwLvoJUEStGhc4oBohg280TBiA==","signatures":[{"sig":"MEUCIBY50TqAezmpas70nJTU1pq7WC+K2+s17Su0XSjdmjN+AiEA6jfhLLanknzzXpUJLjT9h+VCwSr9H2K0BncBZnSCtrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2129692},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"708ab3f3e832833660a61e47d6074a9b1a5da60c","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.3.1_1785690044051_0.35708824502097114","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@daanvandenbergh/scribekit","version":"1.4.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.4.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"850d4131a5ab81960bd1dfae756bc068303ef9fd","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.4.0.tgz","fileCount":226,"integrity":"sha512-2KPRbHoqWpRaKSEUM/lnwt/ceM7nGiwRY2aQME6UHX1WVpSJRCGP10zuCaSFyOmxaDcZ7gH8rCh7RAyIcul6PA==","signatures":[{"sig":"MEUCIQD7z9vfHclvbsnDtBFmGchhgWJlPg2X6AduleJZ9nKrYwIgH7u4pVBH927fwVtElzQ3BIK9+QDPnNdYd7SzpFQoXYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2135995},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"06433ff57324b06f858685d4fd0174ef3315fdbb","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.4.0_1785690534295_0.5535990075441475","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@daanvandenbergh/scribekit","version":"1.4.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.4.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"734d5b59c6cf3c40eca799507c27ca00517f6a14","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.4.1.tgz","fileCount":226,"integrity":"sha512-GEJ0ezOiCbUzrfrgGWK7nvbqyz6UL1bq+lB8i9359tsMAE+WG4ZPySJ39QI/HfxLvAdrdlkDBwR0GfOhdrPL+A==","signatures":[{"sig":"MEUCIQCImgykJ/5QlHDSzIHAcfcT6rlBxbdBrKM8bbVpe2A2hQIgR88jM2HGfpE2tLfJKciezZoWxYXxRiyKC5V64YSemWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2136862},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"1015ba1612f98b180a835e6b68e3040c0efd7d5d","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.4.1_1785690882792_0.013769161561062448","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@daanvandenbergh/scribekit","version":"1.4.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.4.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"b3831d33841376cbbc9df08451a9b4dbdcbdb717","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.4.2.tgz","fileCount":226,"integrity":"sha512-+6xmSy0AsWD/Ukhw963l0KNZ+D7enFrNwevRL0B/dCIMm9gLpt3VEgUWLEzNfId/XorMSE/xwTWhemizvK6Kdg==","signatures":[{"sig":"MEYCIQD7E2RlFBxu0Fcw7Ae/N8wvGYldIJG0MeP/EUO+ODWqNgIhAPCL26trgLa9SEZ3nk4YxBsF/YaNYpnal8kJw1BlvKvB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2137739},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"8a4c77cb855000821bc4ba235befe2f0f209aead","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.4.2_1785694243414_0.4085677921173445","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@daanvandenbergh/scribekit","version":"1.5.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.5.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"e6df1626364486e6f7bcc4233171158affb503b8","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.5.0.tgz","fileCount":226,"integrity":"sha512-eI/G5il+33I/kC4g/xER1cgrpmnHS3dUBXIKwP2GSCNmIA37WylYFLNRiR0CtvS+Da5Q9ij6PHzj2DDSScdq+A==","signatures":[{"sig":"MEUCIQDPey2fOjnuT1/HUoFt1gv9Fb2M5vb9CsFA0ge1Y3d+swIgGWIXP4EmMcRD4dgWgTDUJPGQxxIZk3Tp3QQh4QZ8FmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2140291},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"fcb57d05583b29cee3fe48597f4ed803eb10a320","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.5.0_1785694947431_0.1917830258598172","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@daanvandenbergh/scribekit","version":"1.6.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.6.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"f2a8694b6eebe7ff76e6d8575f876a0d3d59debf","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.6.0.tgz","fileCount":226,"integrity":"sha512-OHUS3GQduMFOvFCpgBtdVzjaBa5zyXhyAFE9Cl+m4DT3QiGeWWipRleIum+Q1w1VwIoNeXjp5WoWSY6eqfm3bA==","signatures":[{"sig":"MEUCIQCvxM+LhoEHo0tvKJK3n8/kqPiQmtkWIguS92h2VUHJGwIgK4+oZTltPeoKRnBbPS6cBM6OThB92yLkjrcYVnnZZOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2141507},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"fcb57d05583b29cee3fe48597f4ed803eb10a320","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.6.0_1786260127033_0.4890782761656369","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@daanvandenbergh/scribekit","version":"1.7.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.7.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"f417976e6649e7da96e334367b19825c8713881e","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.7.0.tgz","fileCount":226,"integrity":"sha512-sbxEOGyyd87WbJuEelkoIxg4mitSpJmmWAs+fYJJFrM0w4Xv3pYoNFlydjAogbYSo9nCTIVfdcpk1iRMWsMUrg==","signatures":[{"sig":"MEUCIBGHYv90J4I0ZYfm8+N/zd3VxzieEnJavf+/RrVNTZGUAiEAn5aWV3BNHv1MfNrR5rCXjcSdKj1i+c9PUi/gdKPRd5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2150717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"b835e82a26c2a0d2cd6e36e77a5c9a8d963ad4ea","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.7.0_1786293602758_0.1955104631715825","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@daanvandenbergh/scribekit","version":"1.7.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.7.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"35e2e3cccb34a09a84cead9b8ade31b6a6398ec5","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.7.1.tgz","fileCount":226,"integrity":"sha512-D9fnrUnl1Odku6b8A+yGr84OLFhDpyAQHU6A8ywyIO6SA/XvuYKQEpyQrlLqo6ER1Lt9Q5fA390pcCwpSv/euw==","signatures":[{"sig":"MEQCIDJLgDCqsGIef3XoqkaqoD/yluR54g8yDwi3/fIxqjMdAiBL/8EX0tJOK0/G6oiY31RBBqwfv2SHQ41L1CX6LLK0qA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2151264},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"7b1e6567d752a6703f7bf79775cf3c18c6709957","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix site run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix site run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.7.1_1786294829837_0.41279593516366364","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@daanvandenbergh/scribekit","version":"1.7.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.7.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"4b69385e16d91fde685b505010c6c307c60a226b","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.7.2.tgz","fileCount":226,"integrity":"sha512-ap5Xd7leYx6kOoIVNsROZLUBTKP8pOudZrgBBXbKDYgTFa9lH0Mgf1UdSK1HJywU2EOidHHcJLWXKPlS/aDfWw==","signatures":[{"sig":"MEQCIFiQHX1a+pzU66LSjbAOG5MTx2T0NBWNORlIeMYPvL6DAiAWY/tmq9GzLlzF0HpMWD68AN/7kcGRDPFRD/GlpI7VGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2152024},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"3f7dc16e2fdeaec598b3a5d90977b0f7974a929c","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.7.2_1786439676788_0.2585038012484613","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@daanvandenbergh/scribekit","version":"1.7.3","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.7.3","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"b4176773da0c7abd9c72dd4215c81631f3a4981b","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.7.3.tgz","fileCount":226,"integrity":"sha512-MzugRdxaCHA0ZXeu1ogF0NHQt/0QbRH8sPIzELNI+1GFen5AA7OgxVUMC1OnNzGMiLbpFavn1fJqUFe2597ylA==","signatures":[{"sig":"MEYCIQDWQMqGuN1g+THDXA/aU2VS427U8DWC4euBZYKe7I/MigIhAKQDbGswRVWNnIGTJiADHz5oKAv4xYuPSrzDMXbuW7Fn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2153449},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"f42c8ece34ef175d9bc7c1e3e6e2407b63311581","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.0.6"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.7.3_1786441666414_0.5122387006368696","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@daanvandenbergh/scribekit","version":"1.8.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.8.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"6d3d16b69bff8bdbdccc7db52b5a7d3616f52bc8","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.8.0.tgz","fileCount":226,"integrity":"sha512-LcNoGj3h73qaocJsKIx17OpHjjM7ouFZNemh3IbsaVf6WCpocdxNW5k1pwt+A/t0r9sZOluuh0LX/Zlw06LB/Q==","signatures":[{"sig":"MEUCIGK5w3ENvPm26p5H2WoUdiMV2jf1rOeUpnZj/13bFlIpAiEAtUY3ppNpwkFtReR9KlWaQnBZLIlxsUeGPCFm9Z9h4CY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2153449},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"8eb337636fb328f9c3e4875d016c03e8ad277a78","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.2.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.8.0_1786461436933_0.012867819690444149","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@daanvandenbergh/scribekit","version":"1.9.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.9.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"7c815f17286147021046e05dd6b632600663c3b9","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.9.0.tgz","fileCount":226,"integrity":"sha512-cdjWTGZsei8cZZNV/nNmsGJcTE7sypBnRwTazQ+olK6TUgzq9hEew7eVOFQzQ8BWY2opYTuG+CfmSHnSp2tOwA==","signatures":[{"sig":"MEUCIBuXEi/XiAn93C2cn6/GNz34pjjdlfJ8FbRd/0QwKr5sAiEA2IxK4Tk5CTewMOmsz15tiX1WRWy41Lxh2F6EPFoZIls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2153549},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"7be60816c676349501fc1947a43039d77a4617b3","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.9.0_1786466582146_0.2115830620455763","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@daanvandenbergh/scribekit","version":"1.9.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.9.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"908b7145ee228ddf56d0a3038970f21edf7d9e7e","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.9.1.tgz","fileCount":227,"integrity":"sha512-dgjvctGXI4fnDlCTFaWAnajcxvr77YIR1Ydxn9eRKme3GcKVG/L88uGeenlPcJiCe/LK5xVix2YW3wCGTMqZpg==","signatures":[{"sig":"MEYCIQCsHu1bVg6zdqlT7h/Jg2Xv+/jjI8I2+WHBU0e5XYvpLQIhAJysaxmcy9WZnwG+yo8CVhbPzVfO2kJL4M3Yu6DxWWEL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2155228},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"f76b6eaa2669014f63e36ba369e8ca7ce8f817d8","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","server-only":"^0.0.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.9.1_1786468286064_0.7834084631500691","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@daanvandenbergh/scribekit","version":"1.9.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@1.9.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"671dcbd817526cbd4b811afcdae97aec0124b1d7","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-1.9.2.tgz","fileCount":227,"integrity":"sha512-xQmuqFdvCSJR/CLH4kdVd80NTP6LyqQImWOL1zBd6TzES8Bo4O7fk3hkR/nMqHfhF5yjcGuXRWlpmfy1Oa69yg==","signatures":[{"sig":"MEUCIQC9v2J+IUYGZDuy+aqIpDUJEE0Y5ZQd7GZGWUeOtEJSdAIgZnpsM1U7ABsOv+6FPg2/g9Fz5Cr6mCZ5xgCDktyQ7NM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2156673},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"80cb04ecadd00bec0517cd6230460087feb22035","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_1.9.2_1786478974861_0.16634665435378504","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@daanvandenbergh/scribekit","version":"2.0.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.0.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"0f0f9e32efd19d1c9d0f99ac26f83c4269f7dfef","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.0.0.tgz","fileCount":227,"integrity":"sha512-x1DFVvR5Uc4MOgmvcaQ3+SaVi+yP4BzZx7790Vt4qUec4Z8KzhKSVsvDvlh7d6amoBEJrOSUxeQtgY3mxNunlg==","signatures":[{"sig":"MEYCIQDAUWcEOLei0UTwBAMZ4WkuIfs/BdIkXf+azkmdfA47KAIhANPCxUDK0vyAHCP977WeIhHKcy00CBNDPDFaQq7qcBLY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2164990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"360302aab0203a8e7600929aea81f05d7b8cc7a9","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.0.0_1786524215801_0.9712539756746699","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@daanvandenbergh/scribekit","version":"2.0.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.0.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"a28a1394f88d1daf975db01e342134bb4c64078d","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.0.1.tgz","fileCount":227,"integrity":"sha512-tXcaZpEcWsSUTmhmSz80XziRVm8kq1RO4UEBaRU73GV9ZioOjx3woIUixHVTyn4tvUEk52jCKJePsKDcs+fjQw==","signatures":[{"sig":"MEUCIQDMHlZbdSlN45BEENu4Bo3TQKiLEXcalLkuch1jxZMjSgIgIADkXx9VryCy5FqO4FCnUlGijlIjeSeedkXUESRyiB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2168079},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"35ff3412787ed915e4e33c47f553ead41c0675d6","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.0.1_1786531560882_0.9828590512180824","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@daanvandenbergh/scribekit","version":"2.0.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.0.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"98a9f3d84d4236e811dde7ca1216bcbe20d51b54","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.0.2.tgz","fileCount":227,"integrity":"sha512-wMIXdPb7L9OQM+s2cZtk3UHNk9Sv7MFFBfxBMqrdyeMUDD+JDQcLho8aJS3BswA0OJ2r4lbwjhtwUW8AKnxQ0A==","signatures":[{"sig":"MEQCIFYuz+i1gh1LJvfFqCQM9PBaTtkoKqhxGLpI7qPYfMt8AiBk65rLP1rEAHEZF7n10OTqURDBqdsqwnd1HI2ZLiCPlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2168042},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4ba9d6364efa19b2efa8faf412e6b851407042dc","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.3.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.0.2_1786896852081_0.3538846395800024","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@daanvandenbergh/scribekit","version":"2.1.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.1.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"19e2151dabe598e5268fe2e5e6ceeb3e11fb15f0","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.1.0.tgz","fileCount":227,"integrity":"sha512-7oieaZcmheGTMZOtxssaIUykEjlKSTaEvVQP06GgIHl90HGM9elKzpTuD3K86QtfhIJgWnge4cTc+JGnX6ssQQ==","signatures":[{"sig":"MEYCIQCWfwKtXnp+ARlOy0iI8T+PTcB5KGfcGl5hBUw+UBevXAIhALAEzA02zTf1ajH/WKZ169jwzghalcz9xNjAxXO5SOqQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2173015},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4ba9d6364efa19b2efa8faf412e6b851407042dc","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.1.0_1787573429537_0.36808819094164136","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@daanvandenbergh/scribekit","version":"2.2.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.2.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"673b4b1521193aef29d316e3829ae35886903f9c","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.2.0.tgz","fileCount":227,"integrity":"sha512-O1ZCOv226+rCkj8O87RMc2DVO6ZzKDiybzRLm8uix+RsbJ3SNjVPfRdBrj0WwfhDkyPVKYM00x8aZLN+U43WqA==","signatures":[{"sig":"MEQCIHAp8xtwt0FeiaQjGAYQgM/BzipH9qyI+rGPZnP3L5WZAiAQFvtVFUOlJuJED1DTk12dgxCP0EoGANykx0slrzAZIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2180212},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4ba9d6364efa19b2efa8faf412e6b851407042dc","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.2.0_1787692378912_0.20767082689406857","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@daanvandenbergh/scribekit","version":"2.3.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.3.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"14dd5bcb0fff2bb58589d832b7cc050502bffb11","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.3.0.tgz","fileCount":227,"integrity":"sha512-CrD2PNLq2nbGqmv14AU6BNF06kTJckC7nOQQ9RUHGPxHkporrqe9CRla3c3EQN2jf12GKqBtopiH6NxPP/zsJg==","signatures":[{"sig":"MEYCIQDUwHawJQpMaC9gkX2OLZTjf8c2C1f2qub1NlHooWYK6AIhALEo54YyynCUo/M9sfWjPMeVcXZX9uRsO1ReI+qcwyuu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2181421},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4ba9d6364efa19b2efa8faf412e6b851407042dc","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.0"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.3.0_1787905738866_0.3626713011778675","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@daanvandenbergh/scribekit","version":"2.4.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.4.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"2f94e7491e8fbf60131f9a3bd64e27608bbdae91","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.4.0.tgz","fileCount":234,"integrity":"sha512-THBp6C8Hs/ZvZT9w79XS3ck+o1rZ2aK4qnN3+zrqiiBU/wvnD9qDkxGP9lx0miOswvP/Kxvi2bX992nYzwCgRg==","signatures":[{"sig":"MEQCIG6jmAS2yY/WirX51rK9QntN0snM6ELPCr4QM8T0fLQOAiAOigcWExgWztnnUvGmTrNc3vwwxRw5jkEhOM2U6adMyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICbqlzHnPT7AIpJYYY0AlXBNrX6b8KNN6L6RZkrktfieAiEAqzB78zkyMAq4XwQ/k2nsJng5jWAs6/xTfk8sQoOl7dQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2319195},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"1aaecae5eb100d0fdaa6dc4ed6bfe42b01c44c30","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.4.0_1789134426374_0.46050603040943194","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"@daanvandenbergh/scribekit","version":"2.4.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.4.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"238949ccee5e2573477a03a239b04ef4b1ad1be8","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.4.1.tgz","fileCount":234,"integrity":"sha512-DBw9aziqEioQUZ3pcOOmqLmok6oDtoKc71id1dDzDqxbz5Yij+VuY88kxyAzCUQLiXNjNzy0QNS/6BIy88yFnQ==","signatures":[{"sig":"MEUCICA7aIWpx/PembqrNIICE2EH8lDsUgm6iHwglVXlqkoDAiEA6o0PQUYOUBLpFy0wfkT4Ak1UY6lPRREDu60pVCim7+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFr1WT6nKmuA0xwTxRCzrk76+x2Sw0WaXa2cEwxY2S7xAiEAuOT6EFE2oIbPwHRIJFr1rXWA4pphVUukweSsBjRlM6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2320587},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"426c8478af276f269b92a284129436b8ef63fd94","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.4.1_1789160897102_0.49597844195437846","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@daanvandenbergh/scribekit","version":"2.4.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.4.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"ddd89004ab9f1546fc200dbd2e6aee71dea0365c","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.4.2.tgz","fileCount":234,"integrity":"sha512-qLW730st94R2CBg+2rLRwUgQ82CdaQUgEgLn3gXeMSYv3PagfzcSwHT43AOrhFnE0ixgPn7VlSlnDWQp21Gg0Q==","signatures":[{"sig":"MEYCIQDq00F4upTDFQ/V4vMG+qsAVOwYNnmVRMBPb9F/Azi7vgIhAJosGI7oPWAcja6mi8s3jboJtK6FTL3QNPcqWdfrHpEn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+7EfklxIoEnSrV7YCNikKilzhbZ5zVY06JNTalRAmYQIhAMswN96a1Ed3cZCjhxc5eQpCcwylmOzIM3VoAP/wCk9e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2322949},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"0ee1bc5a05be71bc9e9f2be973ee98d2773dcaef","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.4.2_1789319688845_0.11168939444646564","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@daanvandenbergh/scribekit","version":"2.5.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.5.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"28777edfd9d17d7828773c8310ce2fd9c2a51d2b","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.5.0.tgz","fileCount":234,"integrity":"sha512-mJmPzooTGtYA/mTOxhgokY7tZ+JFOIHtg+vZz6xbU/NOsdIOo/bjXZ3oryDkwwnXMfli+1BUS2K+srcqseKxNQ==","signatures":[{"sig":"MEYCIQDmVDI9UecBo5X0xLLkgrKOVOQHRFHWAPPNQGx3yCwBpwIhAKlALQObv7URuTRKxkOd0PJbB49o96ibVCOAW1ItYi8d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBzjHK68QqUw/ZtkAd+nE7lpQ/JXp3mo94fPhEfQKtOQAiBlg/uCT68gBhKpbVH1CnMTZFCjKstIC5gRweAuVD1c6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2324899},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"449abc2743813f28807b1b4fafb4a35da03c416f","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.5.0_1789325636198_0.7436416164268658","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@daanvandenbergh/scribekit","version":"2.6.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.6.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"ffa5a659f7db58a4aac2e985687baa861732bbf1","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.6.0.tgz","fileCount":234,"integrity":"sha512-itOg/mDCV2xWPAeNPE2RC0JOXpGf62zRCGZSBRKp3xAFGPsoNiUwKhC0XIGpsxYQyyKPHVU/7+9yUJ7zH9g5Cg==","signatures":[{"sig":"MEQCIBJUm7bABhidanVS2UGvOrhcXmDnqOGFGz3avCMC9eQ7AiAAlCJEdZttXwxP0ea1rLUpEv62LLfmY11WQwIiGSeF/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAwhMVAs3KZiWWJl4C+GmnwvAiJMy/y6+9p4WA5MUGksAiEAphnkhmnpYosbXhZwOoZ12Ix81wzePa4asA8NxYYvPAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2337147},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"7b331fee275855308243d409ea52713a4a87fc5a","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.6.0_1790335184588_0.8133456849829213","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@daanvandenbergh/scribekit","version":"2.7.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.7.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"4503cddc2790fd8f913bba6c313e4e2dc214ba98","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.7.0.tgz","fileCount":234,"integrity":"sha512-IZ1L73aGNTCV2LqoaqqKAT4agNkEKMITvVitrIBgaGW/fGF2Cx+s8gxYpZEDH2XwXf+EgJgxfdfmb93vePZtPA==","signatures":[{"sig":"MEYCIQDamBrVZ/3XrkS6seO5r/xnFV0k4m0wfITkIrOa94R9uwIhAIXC1QhAUPPw/F5t3uQsbD1NmpvTr/trJ3j6Q5cKBHD7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCn6WDJNCxa52GC26ZUMSAK2QUX1sT3FdHCJDDWF2ZLOgIgCK187ssX6Zxty+Da93op8maI7dqcWwWeuwg2M3qNGv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2337396},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"23f90059a26454aeefb609e59f6e9c352b976804","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.7.0_1790345265476_0.32388453538650275","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@daanvandenbergh/scribekit","version":"2.8.0","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.0","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"ca53660224386f592ce7d05f6d2400ee92fcb12f","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.0.tgz","fileCount":234,"integrity":"sha512-xDTeUFoSLbeYAM4SGGCESSl+IwN5WWEsCakXPIipMcj6FhHTw3NGJT9Pj4oxa67nz5+yQZZLrxOz1NtNrbuBbA==","signatures":[{"sig":"MEYCIQDwgZXGf9J9b/zGPSwxq4TBaP9pqFjEXY8SJySrT+aVOAIhAOcNamy1HQzbaBIZoIQL3EZM0yo5w0/VzGLvRr6Mgf6w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCLqtymqnZEkVLWRc2Ftz6QQJQzDBQ56ekhHAo/XMBi9wIgYohOsGjZTXzuOj5dyoXtE38mEeaGiM54pCo6MYpyI+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2339933},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"9c520489e9bf4873a437073ae672bc8a8c07862d","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.0_1790618397677_0.4847981687325311","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"@daanvandenbergh/scribekit","version":"2.8.1","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.1","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"f8e7f2d5098cdc727d2a7b8df11840aa96898e96","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.1.tgz","fileCount":234,"integrity":"sha512-Jem8VHkB5oSVnllhKf4R6mS7KkcxlblG9aKlRSB2aDK3XtcQt9ZglLLD1OhRpSHe7ONJvEWA/TW5Nr/dMRU9yA==","signatures":[{"sig":"MEYCIQCtrWkq0h5Et3r2MiPwi2JvFh9P8Dt8YzKmB59TPboCHQIhAMujPdvQJF4zMLjLhiyC0M5s5oPpPvhnoXtufHwbUiER","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDgZkuPJX8yfSHVfKB1eCiDFYODGsvd96jcXmy/heg4GAiEAlpnsnFNIrQy8gittWuPAxhC+F97XtVaS49EfJtny5RQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2342105},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"4a453f9d19af481a135b5782b02fdfa9cf037732","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.1_1790760057031_0.8397474831138514","host":"s3://npm-registry-packages-npm-production"}},"2.8.2":{"name":"@daanvandenbergh/scribekit","version":"2.8.2","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.2","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"871abb12c4960a84aa19e65ab9cc5f0e339489b6","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.2.tgz","fileCount":234,"integrity":"sha512-aBUTj+YuV/HX6RviQVfUPdwMxw0OqIq3WU1Wxn+46WSbYx7rna0ocudUm6J0gU2eYxi3Ra6csclILtaDT1PZ+w==","signatures":[{"sig":"MEUCIQC7wmZ9c5eTGQVoUEwQZq3CpcXp/Hw7dygit/TryErQ3gIgBGFSGocBzLK928p/rcr5Lp0vOyiHUr8S9GHhJn5ibQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAbZ6wh5hh8QKCVsFP0u/hO67DMazgJwig00lUyy2nE3AiBVKkk6gJ4qEZDLZCLQd94LPoWXLNLd4batlmuBstK+RQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2342306},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"ed106ac961b72973a53f436d333cc048c12135d2","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.2_1790777544094_0.19533754005410264","host":"s3://npm-registry-packages-npm-production"}},"2.8.3":{"name":"@daanvandenbergh/scribekit","version":"2.8.3","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.3","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"064a8bf70dda4ffebf0a3db06ac58d85e615bb6c","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.3.tgz","fileCount":234,"integrity":"sha512-7yuwhtWRsmnjC6EJu93FDFtFEmwdtPJA8hNwJ5n8kTbHFKo3bSBQbQ2/NB2AcNRHtDCPFEl1f8W0s/rQJ3RARg==","signatures":[{"sig":"MEUCIQCnzTRMfiNMEJMOQb1Z/Ge1rosPGktc0dVoGekv3OmWJQIgZDXd5EFyDvD39rWyh6nfRqZFb2k6GV0g2/RkwpoCTGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDGG8S/BFZydt7StV17svXcyt4UVEEcEtTz/uZWiH24KAIgb+8pG1l6UKVfx6QvoHu7h0tc2cjvb8z9Y5yDZ8jHd7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2344120},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"a213afe74f5dea4effdb91681b5a2e193362122a","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.3_1790777805233_0.11399740030526129","host":"s3://npm-registry-packages-npm-production"}},"2.8.4":{"name":"@daanvandenbergh/scribekit","version":"2.8.4","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.4","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"a7efbb3715b4dc057549fb1dd293af76986f6f5f","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.4.tgz","fileCount":234,"integrity":"sha512-b3E6AHGTQ8wvYzHF9CffgLCnVYtUAusrL8lXKIx0D97GL3c2oXyNFqa8hbsp+9YCBKAVs9tMWXU1Pf4Jl9p/fw==","signatures":[{"sig":"MEUCIGQlbxQxGyKVM0P9/8qI6zNBM6VTIzMfmKo2sod0q4dVAiEAoXyrWblp3hPqYSJFAp8dCb9I2Axz5dbmSop2EJVuIJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBlZ9ndD+sz5tiWoT1/s/CM7tsVaQY0BPuP7WGr8NQ3rAiBzsebWR5rnJ5wo5+IQRurRGZ3T2Puoc/GtM47GRE/Jjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2344218},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"367b79d89ef2550d6c6d6580d50cb88929ee81d3","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.4_1790778096418_0.18974867392671446","host":"s3://npm-registry-packages-npm-production"}},"2.8.5":{"name":"@daanvandenbergh/scribekit","version":"2.8.5","license":"UNLICENSED","_id":"@daanvandenbergh/scribekit@2.8.5","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"dist":{"shasum":"270391fa4774c535a76cf9729e0ece4588e00f8e","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.8.5.tgz","fileCount":234,"integrity":"sha512-8eS7gplyNThQLVHktgTtsrpY6++QcoJ61TuSuEp8+MpH7yoSK4djiIQ3qXJlRdDiZGYp8iRs29SkHlGV4jFX2w==","signatures":[{"sig":"MEUCIG+xuaPE+yZdPclODvsbGjRdd1lX+zJ5v2YGRa0oBCVHAiEAzp8d5pFGK+LVPb3xsSWURE5v6kJuEydNeYr2BuwNG3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAq1J24wOFxGdStllqFqhjbX1qN092sO7dl++y27OXg/AiEA7Ul4WKyOry4TnI6ZnKALbOG4zWBG7OcVMyM7IVL0W3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2345550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"5b5d17d9008fe0d71f4b3c2bb5924716f2bb995a","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/scribekit_2.8.5_1790792946342_0.4708419118313829","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"_id":"@daanvandenbergh/scribekit@2.9.0","dist":{"shasum":"730585a7b836b921b471a17a95384219f042a49e","tarball":"https://registry.npmjs.org/@daanvandenbergh/scribekit/-/scribekit-2.9.0.tgz","fileCount":234,"integrity":"sha512-cvFX8izh/593RrERUOoBYmX4dHK1reN6KyiD9poYg1KzaDIv+nfaUmXo5Lf8rj3eOCi/XyMx2lpLczrZwaQrvA==","signatures":[{"sig":"MEQCIFGqMoV1jlFOYwpZR3fFBlxvWVHcYInoFc14RUkU2ByiAiA14QFZK7jqyRi58UXzwF8fn4gyH949XiFVBYdYWlKorA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC3IS1rtYUq6VcsSm6DVBpSah+yRYOjLKWkBvsLXAa+LwIhAPiq2gOvIwxhaY2t2EMBC4/rlkT6+ok1hNU3T9kiY0Vl"}],"unpackedSize":2349938},"main":"./dist/index.js","name":"@daanvandenbergh/scribekit","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./styles.css":"./dist/react/styles.css","./package.json":"./package.json"},"gitHead":"61fdcf3659ab1d84a974bc1643eb72aad4147ce9","license":"UNLICENSED","scripts":{"demo":"npm run build && npm --prefix demo run dev","docs":"npm run build && npm --prefix docs run dev","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json && cp src/react/shared/styles.css dist/react/styles.css","typecheck":"tsc --noEmit","docs:build":"npm run build && npm --prefix docs run build","test:watch":"vitest","prepublishOnly":"npm run build","push-and-publish":"git add -A && git commit -m 'Updates' && npm version patch && npm publish && git push -u origin main"},"version":"2.9.0","_npmUser":{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"},"overrides":{"postcss":"^8.5.10"},"_npmVersion":"11.12.1","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","directories":{},"maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"fuse.js":"^7.4.2","remark-gfm":"^4.0.1","gray-matter":"^4.0.3","server-only":"^0.0.1","@daanvandenbergh/i18nkit":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"next":"^16.2.10","react":"^19","vitest":"^3.0.0","react-dom":"^19","typescript":"^5.6.0","@types/node":"^22.20.1","@types/react":"^19","next-mdx-remote":"^6","@types/react-dom":"^19","@daanvandenbergh/claudekit":"^1.4.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18","next-mdx-remote":"^5 || ^6"},"peerDependenciesMeta":{"next":{"optional":true},"react-dom":{"optional":true},"next-mdx-remote":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scribekit_2.9.0_1790840928710_0.25299040869650113"}}},"time":{"created":"2026-07-10T08:27:58.250Z","modified":"2026-10-01T07:48:49.142Z","1.0.0":"2026-07-10T08:27:58.637Z","1.0.1":"2026-07-11T12:09:24.402Z","1.0.2":"2026-07-11T12:47:13.705Z","1.1.0":"2026-07-11T17:54:18.038Z","1.1.1":"2026-07-11T21:21:56.929Z","1.1.2":"2026-07-17T07:01:05.127Z","1.1.3":"2026-07-17T12:41:27.710Z","1.1.4":"2026-07-18T16:00:04.937Z","1.1.5":"2026-07-26T13:20:31.152Z","1.2.0":"2026-07-29T08:32:38.365Z","1.2.1":"2026-07-29T10:45:14.528Z","1.2.2":"2026-08-01T20:52:32.538Z","1.2.3":"2026-08-02T07:49:06.158Z","1.2.4":"2026-08-02T08:44:48.396Z","1.2.5":"2026-08-02T08:51:21.763Z","1.2.6":"2026-08-02T09:20:38.257Z","1.2.7":"2026-08-02T09:45:53.002Z","1.2.8":"2026-08-02T10:13:07.189Z","1.2.9":"2026-08-02T10:22:03.386Z","1.2.10":"2026-08-02T10:27:12.731Z","1.2.11":"2026-08-02T11:15:20.002Z","1.2.12":"2026-08-02T12:44:55.486Z","1.3.0":"2026-08-02T16:53:41.185Z","1.3.1":"2026-08-02T17:00:44.238Z","1.4.0":"2026-08-02T17:08:54.533Z","1.4.1":"2026-08-02T17:14:42.978Z","1.4.2":"2026-08-02T18:10:43.695Z","1.5.0":"2026-08-02T18:22:27.594Z","1.6.0":"2026-08-09T07:22:07.270Z","1.7.0":"2026-08-09T16:40:03.003Z","1.7.1":"2026-08-09T17:00:30.040Z","1.7.2":"2026-08-11T09:14:37.003Z","1.7.3":"2026-08-11T09:47:46.662Z","1.8.0":"2026-08-11T15:17:17.134Z","1.9.0":"2026-08-11T16:43:02.326Z","1.9.1":"2026-08-11T17:11:26.249Z","1.9.2":"2026-08-11T20:09:35.056Z","2.0.0":"2026-08-12T08:43:35.984Z","2.0.1":"2026-08-12T10:46:01.053Z","2.0.2":"2026-08-16T16:14:12.274Z","2.1.0":"2026-08-24T12:10:29.725Z","2.2.0":"2026-08-25T21:12:59.086Z","2.3.0":"2026-08-28T08:28:59.079Z","2.4.0":"2026-09-11T13:47:06.511Z","2.4.1":"2026-09-11T21:08:17.234Z","2.4.2":"2026-09-13T17:14:48.967Z","2.5.0":"2026-09-13T18:53:56.347Z","2.6.0":"2026-09-25T11:19:44.705Z","2.7.0":"2026-09-25T14:07:45.609Z","2.8.0":"2026-09-28T17:59:57.799Z","2.8.1":"2026-09-30T09:20:57.173Z","2.8.2":"2026-09-30T14:12:24.230Z","2.8.3":"2026-09-30T14:16:45.410Z","2.8.4":"2026-09-30T14:21:36.754Z","2.8.5":"2026-09-30T18:29:06.660Z","2.9.0":"2026-10-01T07:48:48.950Z"},"license":"UNLICENSED","description":"Drop-in, SEO-ready MDX blog and docs for Next.js App Router: server components for the post grid, articles, and a tabbed docs site, plus Claude Code skills that research and write them.","maintainers":[{"name":"daanvandenbergh","email":"d.vandenbergh2@gmail.com"}],"readme":"# @daanvandenbergh/scribekit\n\n![scribekit - a drop-in MDX blog and docs site for Next.js](.agentstore/scribekit-hero/readme/hero.png)\n\nDrop a fast, SEO-ready **blog** and **docs site** into any **Next.js** app - and write both with **Claude Code**.\n\nBuilt specifically for the **App Router** (React Server Components). One package, two surfaces:\n\n- **Blog** - the `Blog` class reads `.mdx` posts from a folder and builds their SEO metadata + JSON-LD. `<BlogOverview>` renders the `/blog` grid (fuzzy search, category filters, infinite scroll); `<BlogPage>` renders a post with a heading minimap, reading time, and similar posts.\n- **Docs** - the `Docs` class turns a folder of `.mdx` pages into a tabbed, grouped nav assembled from front-matter (no config file). `<DocsNavbar>` / `<DocsTabs>` / `<DocsSidebar>` / `<DocsPage>` / `<DocsToc>` / `<DocsIndex>` render a full-width docs app with a ⌘K command palette, breadcrumbs, prev/next, and a scroll-spy \"On this page\" minimap.\n- **Claude Code skills** - research, write, and rewrite posts and docs pages in your project's house style, and generate on-brand hero images.\n\nYou build the page chrome (navbar, footer, hero); scribekit renders the blog and docs body. Both surfaces share the same [theming tokens](#theming), [locales](#multiple-locales), and [MDX pipeline](#mdx-plugins).\n\n**Contents:** [Install](#install) · [Claude Code skills](#the-claude-code-skills) · [Demo](#demo) · [Blog](#blog) · [Docs](#docs) · [Multiple locales](#multiple-locales) · [Theming](#theming) · [MDX plugins](#mdx-plugins) · [API reference](#api-reference) · [Notes](#notes)\n\n---\n\n## Install\n\n```bash\nnpm install @daanvandenbergh/scribekit\n```\n\nPeer dependencies (you almost certainly already have the first three): `next`, `react`, `react-dom`, and `next-mdx-remote` (used to render MDX).\n\n```bash\nnpm install next-mdx-remote\n```\n\nImport the stylesheet once (e.g. in your root `app/layout.tsx`):\n\n```tsx\nimport \"@daanvandenbergh/scribekit/styles.css\";\n```\n\n---\n\n## The Claude Code skills\n\nThe package ships four Claude Code skills. Symlink them into your project's `.claude/skills` so Claude Code picks them up:\n\n```bash\nmkdir -p .claude/skills\nln -s ../../node_modules/@daanvandenbergh/scribekit/skills/scribekit-blog .claude/skills/scribekit-blog\nln -s ../../node_modules/@daanvandenbergh/scribekit/skills/scribekit-docs .claude/skills/scribekit-docs\nln -s ../../node_modules/@daanvandenbergh/scribekit/skills/scribekit-hero .claude/skills/scribekit-hero\nln -s ../../node_modules/@daanvandenbergh/scribekit/skills/scribekit-docs-github-pages .claude/skills/scribekit-docs-github-pages\n```\n\n- **`scribekit-blog`** - writes and rewrites blog posts following its research protocol, house style, and SEO checklist. Ask Claude Code to write or rewrite a post (`rewrite --scan` reports only). Each post's hero is generated by `scribekit-hero`, which the `write` flow calls automatically.\n- **`scribekit-docs`** - writes, rewrites, and **reorganizes** documentation pages, sourced from your own code so every option, default, and code sample is true. Ask it to write a page (it auto-proposes the highest-value gap), rewrite one against the current code, or `reorganize` the whole corpus - it redesigns the tab/group/order structure, fixes the front-matter that silently breaks the nav, and reports badly-named slugs without renaming any (so no URL ever changes). `--scan` reports only. It reuses `scribekit-blog`'s house style and research protocol, so **install `scribekit-blog` alongside it**.\n- **`scribekit-hero`** - all hero-image generation, rendered on-brand from HTML/CSS (never an AI image generator): blog/docs page heroes, regenerate-all after a design change, gradient tuning, and a README banner in the same family. Self-contained - you can install it with or without the others.\n- **`scribekit-docs-github-pages`** - publishes your docs site (the whole Next.js app) to **GitHub Pages** as a static export. It learns the project, adds `output: 'export'` to your Next config, writes the deploy workflow, points `siteUrl` at the Pages origin, and handles what static export changes in the routing layer (middleware clean-URLs and renamed-slug redirects). See [Deploy to GitHub Pages](#deploy-to-github-pages).\n\n### The CLAUDE.md rule\n\nThe package also ships one CLAUDE.md rule snippet. Claude Code inlines any `@path` reference in `CLAUDE.md` at load time, so point it straight at the file in `node_modules` and it auto-updates with the package:\n\n```md\n@node_modules/@daanvandenbergh/scribekit/rules/docs_parity.md\n```\n\n- **`rules/docs_parity.md`** - docs and `README.md` are updated in the same change as the code, never deferred. Keeps your docs site true to the code between `scribekit-docs` runs.\n\n---\n\n## Demo\n\nA complete, runnable reference app lives in [`demo/`](./demo) - a minimal Next.js App Router site with a bilingual `Blog` at `/blog` and a tabbed `Docs` site at `/docs` (one `Blog` + one `Docs` instance, their route trees, and folders of MDX). Copy its layout into your own site, or run it from the repo root: `npm install && npm run demo` (builds the package, then serves the demo at http://localhost:3000).\n\n---\n\n## Blog\n\n### Quick start (3 files)\n\n**1. Configure one `Blog` instance.** Pass this one instance to the components - they derive the posts, the date locale, and the SEO JSON-LD from it (`blog.site` is public too).\n\n```ts\n// app/blog/_blog.ts\nimport { Blog } from \"@daanvandenbergh/scribekit\";\n\nexport const blog = new Blog({\n    contentDir: \"./blog\", // where your <slug>/en.mdx post folders live (repo root ./blog)\n    siteUrl: \"https://example.com\",\n    brandName: \"Example\",\n});\n```\n\n**2. The `/blog` overview page.**\n\n```tsx\n// app/blog/page.tsx\nimport { BlogOverview } from \"@daanvandenbergh/scribekit/react\";\nimport { blog } from \"./_blog\";\n\nexport function generateMetadata() {\n    return blog.overviewMetadata();\n}\n\nexport default function BlogIndexPage() {\n    return <BlogOverview blog={blog} />;\n}\n```\n\n**3. The `/blog/[slug]` post page.** `BlogPage` loads the post from the slug, so the page stays a one-liner. With `dynamicParams = false`, unknown slugs 404 at the router before it renders.\n\n```tsx\n// app/blog/[slug]/page.tsx\nimport { BlogPage } from \"@daanvandenbergh/scribekit/react\";\nimport { blog } from \"../_blog\";\n\nexport const dynamicParams = false; // unknown slugs 404 instead of rendering on demand\n\nexport function generateStaticParams() {\n    return blog.getPostSlugs().map((slug) => ({ slug }));\n}\n\nexport async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {\n    const { slug } = await params;\n    try {\n        return blog.postMetadata(blog.getPost(slug));\n    } catch {\n        return { title: \"Post not found\" };\n    }\n}\n\nexport default async function BlogPostPage({ params }: { params: Promise<{ slug: string }> }) {\n    const { slug } = await params;\n    return <BlogPage blog={blog} slug={slug} />;\n}\n```\n\nWrap the components in your own navbar/footer; pass a heading to `<BlogOverview header={...} />` if you want one above the grid.\n\n> **Tip:** set `metadataBase` (or a `title`) in your root `layout.tsx` metadata so relative URLs resolve app-wide. The helpers also set `metadataBase` from `site.siteUrl` on each page.\n\n### Writing posts\n\nEach post is a folder in your `contentDir` (default: a top-level `blog/`) holding a body named by its locale - `en.mdx` (the language-neutral `post.mdx` also works). **The slug is the folder name** - `blog/how-i-work/en.mdx` becomes `/blog/how-i-work`. The front-matter contract:\n\n```mdx\n---\ntitle: \"Short, specific, front-loads the primary keyword\"\ndescription: \"Benefit-led summary. Used for the card, meta description, and OG/Twitter.\"\ndate: \"2026-07-07\"            # ISO YYYY-MM-DD - ALWAYS quote it\nkeywords:                     # optional\n    - primary keyword\n    - secondary keyword\ncategories:                   # optional; usually one, from a small reused taxonomy; always a list\n    - Guides\nauthor: \"Jane Doe\"            # optional; defaults to site.defaultAuthor, then brandName\nauthor-image: \"/assets/blog/authors/jane-doe.jpg\"   # optional; avatar for the author, see below\nauthor-url: \"/about\"          # optional; makes the author name a link, see below\nimage: \"/assets/blog/how-i-work/hero.en.jpg\"   # optional; see below\nupdated: \"2026-07-08\"         # optional\n---\n\n## Start the body at H2\n\nThe `title` above is your H1 - don't repeat it here.\n```\n\n- **Quote the date.** An unquoted YAML date parses as a `Date`, not a string, and is dropped.\n- **Categories** power the overview's filter buttons - reuse a small taxonomy; the bar hides when every post shares one category. Reading time is computed from the body (no front-matter needed).\n- **Hero images** live in `public/` and are referenced by `image` as a served path, one per language (`hero.en.jpg`, `hero.fr.jpg`). The `scribekit-hero` skill generates them and fills this field.\n- **Authors**: setting `author` shows the name in the meta row and a \"Written by\" bio closing the article; `author-image` is the avatar (a served path); `author-url` makes the name in both spots a link (through your `linkComponent`), e.g. to `/about`. Leave them unset and both spots render as plain text without a picture.\n\n### Post sidebar\n\n`BlogPage` renders a right-side sidebar: a **heading minimap** (a TOC from the body's `##`/`###` headings with jump links and a scroll-tracking active highlight), the estimated **reading time**, and **similar posts**. It collapses into a tap-to-expand bar on narrow viewports.\n\n- Similar posts are ranked by weighted-term cosine similarity over each post's `keywords`, `title`, and `description`; add `keywords` for better matches.\n- The minimap needs anchor `id`s on `##`/`###` headings (injected for you). If you override `h2`/`h3` via `components`, add your own `id`s with the exported `slugify`.\n- Turn it off with `showSidebar={false}`; customise via `tocTitle`, `similarTitle`, `similarCount` (default 3), and `readingLabel`.\n\nA post whose `updated` front-matter is later than its `date` also carries an \"Updated <date>\" item in the meta row, in the post's own language; override the wording with `updatedLabel`.\n\n```tsx\n<BlogPage blog={blog} slug={slug} similarCount={4} tocTitle=\"Contents\" />\n```\n\n`BlogSidebar` is a **client component** (scroll-spy + mobile collapse need the browser); `BlogPage` stays a server component and passes it already-computed data. It's exported from `/react` if you want to place it yourself.\n\n### Overview: search, filters & pagination\n\nAbove the grid, `BlogOverview` adds:\n\n- **Fuzzy search** - filters as you type, matching (typo-tolerantly, via [Fuse.js](https://www.fusejs.io/)) on `title`, `description`, `keywords`, and `categories`.\n- **Category filters** - one button per distinct category, plus \"All\"; **hidden when every post shares a single category**.\n- **Infinite scroll** - reveals posts in `pageSize` batches (default 9) with a \"Load more\" fallback.\n\nAll optional - tune with props:\n\n```tsx\n<BlogOverview\n    blog={blog}\n    linkComponent={Link}\n    pageSize={12}\n    searchPlaceholder=\"Search the blog…\"\n    loadMoreLabel=\"Show more\"\n    allCategoriesLabel=\"All posts\"\n/>\n```\n\nThe interactive parts live in `BlogOverviewGrid`, a **client component** rendered by (and exported alongside) `BlogOverview`; the `Blog` instance and SEO JSON-LD stay on the server.\n\n---\n\n## Docs\n\nThe `Docs` class turns a folder of `.mdx` pages into a tabbed, grouped navigation - assembled from each page's front-matter, **not** a separate config file. The components render the app: a top bar (`DocsNavbar`), a tab bar (`DocsTabs`), a left nav (`DocsSidebar`), a page with breadcrumb / meta / prev-next (`DocsPage`), a right-hand scroll-spy minimap (`DocsToc`, rendered by `DocsPage`), and a landing page (`DocsIndex`, composing `DocsHero` + `DocsTopicGrid` + `DocsRecentlyUpdated`, each exported separately). One `DocsSearchProvider` owns the ⌘K palette the navbar button and keyboard shortcut share. Like the blog, `DocsNavbar` is optional and you own the rest of the chrome.\n\n### 1. Configure one `Docs` instance\n\n```ts\n// app/docs/_docs.ts\nimport { Docs } from \"@daanvandenbergh/scribekit\";\n\nexport const docs = new Docs({\n    contentDir: \"./docs\", // where your <slug>/en.mdx page folders live\n    siteUrl: \"https://example.com\",\n    brandName: \"Example\",\n    // optional: pin the display order of the top tabs and the sidebar groups\n    tabs: [\"Documentation\", \"Guides\", \"API reference\"],\n    groups: [\"Get started\", \"Configuration\", \"Reference\"],\n});\n```\n\n### 2. The docs shell + `/docs` landing page\n\nThe chrome (navbar + tab bar + left nav) is persistent, so render it in a **layout** around the routed page. The pieces are client components (⌘K search, sliding indicator, active-page highlight) that need the current path, so a thin `\"use client\"` wrapper reads `usePathname()` and lays them out inside a `DocsSearchProvider`. The shell classes (`.scribekit-docs`, `.scribekit-docs-body`, `.scribekit-docs-main`) come from the stylesheet:\n\n```tsx\n// app/docs/_docs-chrome.tsx\n\"use client\";\nimport type { ReactNode } from \"react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { DocsNavbar, DocsNavbarButton, DocsSearchProvider, DocsTabs, DocsSidebar } from \"@daanvandenbergh/scribekit/react\";\nimport type { NavTree } from \"@daanvandenbergh/scribekit\";\n\nexport function DocsChrome({ nav, children }: { nav: NavTree; children: ReactNode }) {\n    const activePath = usePathname();\n    return (\n        <DocsSearchProvider nav={nav} linkComponent={Link}>\n            <div className=\"scribekit-docs\">\n                <DocsNavbar\n                    logo={<MyLogo />}\n                    logoSize={22}\n                    brandName=\"Example\"\n                    docsText=\"Docs\"\n                    linkComponent={Link}\n                    // The right-hand actions - the part you'll most often edit. A list of buttons,\n                    // styled to match the design (link / primary / secondary variants).\n                    actions={[\n                        <DocsNavbarButton key=\"support\" href=\"/support\" linkComponent={Link}>Support</DocsNavbarButton>,\n                        <DocsNavbarButton key=\"dash\" href=\"/dashboard\" linkComponent={Link} variant=\"primary\">Dashboard</DocsNavbarButton>,\n                    ]}\n                />\n                <DocsTabs nav={nav} activePath={activePath} linkComponent={Link} />\n                <div className=\"scribekit-docs-body\">\n                    <DocsSidebar nav={nav} activePath={activePath} linkComponent={Link} />\n                    <main className=\"scribekit-docs-main\">{children}</main>\n                </div>\n            </div>\n        </DocsSearchProvider>\n    );\n}\n```\n\n```tsx\n// app/docs/layout.tsx\nimport type { ReactNode } from \"react\";\nimport { docs } from \"./_docs\";\nimport { DocsChrome } from \"./_docs-chrome\";\n\nexport default function DocsLayout({ children }: { children: ReactNode }) {\n    return <DocsChrome nav={docs.getNavTree()}>{children}</DocsChrome>;\n}\n```\n\n```tsx\n// app/docs/page.tsx\nimport { DocsIndex } from \"@daanvandenbergh/scribekit/react\";\nimport { docs } from \"./_docs\";\n\nexport function generateMetadata() {\n    return docs.indexMetadata();\n}\n\nexport default function DocsIndexPage() {\n    return <DocsIndex docs={docs} />;\n}\n```\n\n### 3. The `/docs/[slug]` page\n\n```tsx\n// app/docs/[slug]/page.tsx\nimport { DocsPage } from \"@daanvandenbergh/scribekit/react\";\nimport { docs } from \"../_docs\";\n\nexport const dynamicParams = false; // unknown slugs 404 instead of rendering on demand\n\nexport function generateStaticParams() {\n    return docs.getDocSlugs().map((slug) => ({ slug }));\n}\n\nexport async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {\n    const { slug } = await params;\n    try {\n        return docs.docMetadata(docs.getDoc(slug));\n    } catch {\n        return { title: \"Page not found\" };\n    }\n}\n\nexport default async function DocPage({ params }: { params: Promise<{ slug: string }> }) {\n    const { slug } = await params;\n    return <DocsPage docs={docs} slug={slug} />;\n}\n```\n\n`DocsPage` renders the breadcrumb, title, lead, reading time, MDX body, a \"Was this page helpful?\" widget, prev/next cards, and the `DocsToc` minimap - all from `docs`. Every docs component takes a `lang` for [multi-locale](#multiple-locales) docs. Docs render **full-width** (they're an app, not a centered article), so mount them outside any `max-width` container - or set `--scribekit-docs-max-width` to cap and centre the shell.\n\n### Writing docs pages\n\nEach page is a folder in `contentDir` holding a body named by its locale (`en.mdx`; `post.mdx` also works). **The slug is the folder name** - `docs/greeting/en.mdx` becomes `/docs/greeting`. The front-matter contract:\n\n```mdx\n---\ntitle: \"Greeting & voice\"        # the H1 and default sidebar label\ndescription: \"Shape the first thing every caller hears.\"   # the lead + meta description\ntab: \"Documentation\"             # optional; top-level section (the tab switcher)\ngroup: \"Configuration\"           # optional; sidebar group heading\norder: 2                         # optional; sort within the group (ascending)\nicon: \"voice\"                    # optional; a glyph name from the built-in set\nlabel: \"Greeting\"                # optional; sidebar label override (defaults to title)\nupdated: \"2026-07-09\"            # optional; shown in the meta row - quote it\nimage: \"/assets/docs/greeting/hero.jpg\"   # optional; OG image\nkeywords: [\"greeting\", \"voice\"]  # optional\nhidden: false                    # optional; true = routable via direct link, but out of the nav, sitemap & noindex\n---\n\n## Start the body at H2\n\nThe `title` above is your H1 - don't repeat it here.\n```\n\n### Navigation: tabs, groups & order\n\nThe sidebar is assembled from the pages themselves - **there is no separate nav config file**:\n\n- **`tab`** places a page under a top-level section. More than one distinct tab shows the top tab bar; a single tab hides it. Order/label with the `tabs` config.\n- **`group`** lists pages under an uppercase heading. Order/label with the `groups` config.\n- **`order`** sorts pages within their group (ascending); unordered pages sort after, then by title.\n- **`hidden: true`** keeps a page routable via direct link but out of the sidebar, prev/next, index, sitemap, and served `robots: noindex` (so a draft isn't crawled).\n\n`docs.getNavTree(lang)` returns the resolved tree (`tabs → groups → ordered pages`) and drives `getBreadcrumb`, `getAdjacent` (prev/next), and `DocsIndex`'s topic cards.\n\n### Renaming a page: `redirects`\n\nThe slug is the folder name, so renaming the folder changes the page's public URL. List the old slug in `redirects` and scribekit keeps it alive as a permanent **308**:\n\n```ts\nexport const docs = new Docs({\n    contentDir: \"./docs\",\n    redirects: { \"getting-started\": \"quickstart\" },   // old slug -> new slug\n});\n```\n\nThen serve it from the `[slug]` page. **Both lines are needed**: with `dynamicParams = false` an unrendered slug 404s *at the router*, so an old slug must be prerendered for the component to run at all.\n\n```tsx\nimport { notFound, permanentRedirect } from \"next/navigation\";\n\nexport function generateStaticParams() {\n    return [...docs.getDocSlugs(), ...docs.getRedirectRefs().map((ref) => ref.slug)].map((slug) => ({ slug }));\n}\n\nexport default async function DocPage({ params }: { params: Promise<{ slug: string }> }) {\n    const { slug } = await params;\n    try {\n        docs.getDoc(slug);\n    } catch {\n        const renamedTo = docs.getRedirect(slug); // already locale-prefixed and basePath-rooted\n        if (renamedTo) {\n            permanentRedirect(renamedTo);\n        }\n        notFound();\n    }\n    return <DocsPage docs={docs} slug={slug} />;\n}\n```\n\n`getRedirect` returns the destination URL for the requested language, so a [multi-locale](#multiple-locales) site needs no extra wiring - pass `lang` and `/fr/docs/getting-started` lands on `/fr/docs/quickstart`. A **real page always wins** over a redirect entry with the same slug (a stale entry is inert), chains resolve to their final destination in one hop, and a cycle 404s rather than looping.\n\n### Icons\n\n`icon` names a glyph from the built-in set (`book`, `rocket`, `workflow`, `gear`, `globe`, `clock`, `phone`, `voice`, `calendar`, `mail`, `link`, `grid`, `list`, `code`, `shield`, `document`, …). Unknown names fall back to a neutral document glyph. Pass your own set with the `renderIcon` prop on `DocsSidebar` / `DocsIndex`: `renderIcon={(name) => <MyIcon name={name} />}`.\n\n### Command palette, minimap & prev/next\n\n- **⌘K / Ctrl-K** (or the navbar's search button) opens the `DocsSearchProvider` command palette - a fuzzy search ([Fuse.js](https://www.fusejs.io/)) over every page's title, label, group, and tab, with ↑/↓ + Enter. It's a proper modal (traps Tab, returns focus on close).\n- **`DocsPage`** injects anchor `id`s into `##`/`###` headings (via `slugify`) so the `DocsToc` minimap and its scroll-spy resolve. If you override `h2`/`h3` via `components`, add your own `id`s.\n- **Prev/next** cards come from the sidebar reading order (`getAdjacent`); the \"Was this page helpful?\" widget is self-contained (pass `onFeedback` to `DocsPage` to record the vote).\n\n---\n\n## Deploy to GitHub Pages\n\nA scribekit docs site is already static-export-ready - the `Docs` class reads the filesystem at build time, pages render as server components, search is client-side, and every route ships `generateStaticParams` - so `next build` with `output: 'export'` prerenders the whole site to static HTML with no library code changes.\n\nThe easiest path is the **`scribekit-docs-github-pages`** skill: run it in Claude Code and it sets everything up for you - merges `output: 'export'` (and `images: { unoptimized: true }`) into your `next.config`, adds `public/.nojekyll`, writes `.github/workflows/deploy.yml`, points `siteUrl` at your Pages origin, and handles the static-export blockers below. If your `docs/` is just a folder of MDX with **no app rendering it yet**, the skill also **scaffolds the host app** (the flat single-locale layout below) from the corpus first. Then just **push** - the workflow's `configure-pages` step sets `enablement: true`, so it turns Pages on itself on the first run (if an org policy blocks that, enable it once by hand: repo Settings -> Pages -> Source: \"GitHub Actions\").\n\nNot using Claude Code? The workflow is shipped ready to copy at `node_modules/@daanvandenbergh/scribekit/skills/scribekit-docs-github-pages/assets/deploy.yml` - drop it in `.github/workflows/`, add the `next.config` lines, set `siteUrl`, push. It enables Pages (`enablement: true`) and derives your Pages base path from `actions/configure-pages@v6`, passing it to the build as `NEXT_PUBLIC_BASE_PATH` so `next.config` and the hero `<img>` resolve the correct `/<repo>` prefix automatically.\n\n**Keep `trailingSlash` matched on both sides.** The skill's `next.config` sets `trailingSlash: true`, which is also scribekit's own default: the export then writes `docs/<slug>/index.html`, so Pages serves `/docs/<slug>/` and redirects the bare `/docs/<slug>` to it. Turn it off in `next.config` and the export writes `docs/<slug>.html` instead (only the bare form resolves) - so set `trailingSlash: false` on your `Docs`/`Blog` instance too. A mismatch never throws; it just aims every canonical, hreflang, sitemap entry and nav link at the form your host doesn't serve.\n\n**Static export changes two routing behaviours** (both are conveniences, not the docs themselves):\n\n- **Middleware clean-URLs *break*.** The [multi-locale](#multiple-locales) trick that serves the default language at a bare `/docs/...` (a `proxy.ts`/`middleware.ts` rewrite) can't run on a static host. Set `prefixDefaultLocale: true` so every locale is a real static path (`/en/docs/...`, `/fr/docs/...`) and drop the middleware. A single-locale site has no middleware and exports as-is.\n- **Renamed-slug `redirects` *degrade*.** The build still succeeds and renamed slugs still redirect - Next turns the request-time 308 into a **client-side** redirect (the old URL is a near-empty `200` whose JS navigates on). The only loss is SEO / no-JS: to a crawler the old URL is a blank `200` with no true 308 or canonical. Leave it if those URLs aren't SEO-critical, or have the skill emit a static `<meta refresh>` + canonical stub instead.\n\n**Hosting: a project site works, a root site is that bit cleaner.** On a **project site** (`<owner>.github.io/<repo>/`) three raw paths a corpus carries would otherwise 404 under the `/<repo>` subpath - in-body prose links, hero images, and absolute SEO URLs. The skill's scaffold handles the first two automatically: it routes the MDX `a` through `next/link` and renders the hero through a base-path-aware `<img>`, and the workflow feeds the base path in from `configure-pages`. So heroes, links, and assets all resolve on a plain project site - **no custom domain required.** The one residue is scribekit's absolute SEO URLs (canonical/sitemap/OG omit `/<repo>`); if that matters, a **custom domain** (add a `public/CNAME`) or a **user/org `<owner>.github.io` site** serves at the root with an empty base path, where even those are correct.\n\n---\n\n## Multiple locales\n\nApplies to **both blog and docs** (the examples below use `/blog`; docs is identical with `/docs`). Optionally publish the same content in several languages, each at its own SEO-friendly URL with correct `hreflang` / `og:locale` / `inLanguage` (the locale's `dateLocale` when it declares one, e.g. `en-GB`). Fully opt-in: with no `locales` configured, everything here is inert and behaves as a single-language site.\n\n**File layout - one file per language in the folder.** Each language is a `<lang>.<ext>` file in the **same** `<slug>/` folder, sharing the base slug - the default included, named by its own code (`en.mdx`; `post.<ext>` also resolves as a fallback):\n\n```\nblog/getting-started/en.mdx     ->  /blog/getting-started        (default, e.g. en)\nblog/getting-started/fr.mdx     ->  /fr/blog/getting-started     (fr translation, same slug)\n```\n\nA file's language comes from its name (never front-matter, so it can't drift). The default is served at the clean, unprefixed `/blog/<slug>`; every other language is prefixed (`/<lang>/blog/<slug>`). There is **no silent fallback** - only files that exist get a route and a hreflang entry.\n\n**Configure the locales** on the one `Blog` (or `Docs`) instance:\n\n```ts\n// app/[lang]/blog/_blog.ts  (colocated with the routes; the leading _ keeps Next from routing it)\nexport const blog = new Blog({\n    contentDir: \"./blog\",\n    siteUrl: \"https://example.com\",\n    brandName: \"Example\",\n    locales: [\n        { code: \"en\", label: \"English\" },\n        { code: \"fr\", label: \"Français\", dateLocale: \"fr-FR\" }, // label + dateLocale are optional\n        // `dateLocale` is the locale's full BCP 47 tag: it formats that language's dates AND is the\n        // tag `og:locale` is derived from, so an `en` locale declaring `en-GB` publishes `en_GB`\n        // rather than the `en_US` the bare subtag would maximize to.\n    ],\n    defaultLocale: \"en\",\n});\n```\n\n**Route it as one `[lang]/blog` subtree** - two files, overview + posts. `generateStaticParams` emits every locale (including the default), so `/en/blog/...` is prerendered as the render target for the unprefixed `/blog/...`:\n\n```tsx\n// app/[lang]/blog/page.tsx  - overview at /<lang>/blog\nimport { BlogOverview } from \"@daanvandenbergh/scribekit/react\";\nimport { blog } from \"./_blog\";\n\nexport const dynamicParams = false;\nexport function generateStaticParams() {\n    return blog.locales.map((l) => ({ lang: l.code }));\n}\nexport async function generateMetadata({ params }: { params: Promise<{ lang: string }> }) {\n    return blog.overviewMetadata((await params).lang);\n}\nexport default async function BlogIndex({ params }: { params: Promise<{ lang: string }> }) {\n    return <BlogOverview blog={blog} lang={(await params).lang} />;\n}\n```\n\n```tsx\n// app/[lang]/blog/[slug]/page.tsx  - post at /<lang>/blog/<slug>\nimport { BlogPage } from \"@daanvandenbergh/scribekit/react\";\nimport { PostNotFoundError } from \"@daanvandenbergh/scribekit\";\nimport { notFound } from \"next/navigation\";\nimport { blog } from \"../_blog\";\n\nexport const dynamicParams = false;\nexport function generateStaticParams() {\n    return blog.getPostRefs().map((ref) => ({ lang: ref.lang, slug: ref.slug }));\n}\nexport async function generateMetadata({ params }: { params: Promise<{ lang: string; slug: string }> }) {\n    const { lang, slug } = await params;\n    try { return blog.postMetadata(blog.getPost(slug, lang)); } catch { return { title: \"Post not found\" }; }\n}\nexport default async function BlogPostPage({ params }: { params: Promise<{ lang: string; slug: string }> }) {\n    const { lang, slug } = await params;\n    try { blog.getPost(slug, lang); } catch (err) { if (err instanceof PostNotFoundError) notFound(); throw err; }\n    return <BlogPage blog={blog} slug={slug} lang={lang} />;\n}\n```\n\n**Serve the default language at the clean `/blog` with a `proxy.ts`** (project root; on Next <= 15 name it `middleware.ts` and export `middleware`). It rewrites `/blog/...` onto `/en/blog/...` (URL bar stays `/blog/...`) and redirects `/en/blog/...` back to `/blog/...`, so the default locale has one canonical, unprefixed URL:\n\n```ts\n// proxy.ts\nimport { NextResponse, type NextRequest } from \"next/server\";\n\nconst DEFAULT_LOCALE = \"en\"; // hard-coded: the proxy runs on the edge; the Blog class is server-only\n\nexport function proxy(request: NextRequest) {\n    const { pathname } = request.nextUrl;\n    const prefix = `/${DEFAULT_LOCALE}`;\n    if (pathname === `${prefix}/blog` || pathname.startsWith(`${prefix}/blog/`)) {\n        const url = request.nextUrl.clone();\n        url.pathname = pathname.slice(prefix.length);      // /en/blog/x -> /blog/x  (redirect)\n        return NextResponse.redirect(url, 308);\n    }\n    if (pathname === \"/blog\" || pathname.startsWith(\"/blog/\")) {\n        const url = request.nextUrl.clone();\n        url.pathname = `${prefix}${pathname}`;             // /blog/x -> /en/blog/x  (rewrite)\n        return NextResponse.rewrite(url);\n    }\n}\n\nexport const config = { matcher: [\"/blog\", \"/blog/:path*\", \"/en/blog\", \"/en/blog/:path*\"] };\n```\n\nBecause the default is reached via a rewrite (rendered on demand), guard the post page's `getPost` with `notFound()` as shown above rather than relying only on `dynamicParams = false`.\n\n> **Prefer no proxy?** Set `prefixDefaultLocale: true`. Every locale is then prefixed, including the default (`/en/blog/...`), so the same `[lang]/blog` tree serves everything with no rewrite - at the cost of `/en/` in the default language's URLs. Add a `next.config.mjs` redirect from bare `/blog` to `/en/blog` if you like.\n\n#### One domain per locale\n\nA site that serves each language on its own domain (`https://example.nl/blog/x`, `https://example.de/blog/x`) passes `localeOrigins` - one origin per configured locale. Then no locale is URL-prefixed (every post lives at `<basePath>/<slug>` on its locale's own domain), and every absolute URL is built on the page locale's origin: the canonical, `og:url`, the hreflang alternates (absolute, so they can cross domains), the JSON-LD `url`/`@id`s and breadcrumbs, `sitemapEntries()` and `rssFeed()`. An origin may carry a sub-path for a locale mounted on another's domain (`en: \"https://example.nl/en\"`): its pages live under `/en`, while its hero images - `og:image`, `twitter:image`, the JSON-LD `image` - resolve from the host root (`https://example.nl/assets/...`), where public files are served, and so does its `metadataBase` (a relative default `og:image` your layout merges in lands there too, not under `/en`). `siteUrl` defaults to the default locale's origin. With an [i18nkit](https://www.npmjs.com/package/@daanvandenbergh/i18nkit) `strategy: \"domain\"` instance, pass its `domains`:\n\n```ts\nexport const blog = new Blog({\n    contentDir: \"./blog\",\n    brandName: \"Example\",\n    locales: i18n.list.map((l) => ({ code: l.code, label: l.label, dateLocale: l.locale })),\n    defaultLocale: i18n.default,\n    localeOrigins: i18n.domains, // { nl: \"https://example.nl\", de: \"https://example.de\", ... }\n});\n```\n\nThe app keeps one internal `app/[lang]/blog` tree and its middleware rewrites each domain's bare `/blog/...` into it (i18nkit's docs show that middleware). Every locale needs an origin; the constructor throws on a missing or unknown locale, a non-`http(s)` value, or `localeOrigins` combined with `prefixDefaultLocale`. On localhost, where the other domains are unreachable, bare links would all land on the default locale - to browse every language in dev, leave `localeOrigins` unset there (e.g. `localeOrigins: process.env.NODE_ENV === \"development\" ? undefined : i18n.domains`, with `siteUrl` set) so the blog falls back to `/<code>/blog/...` prefixes. A language switcher on a domain-per-locale site links to absolute URLs (i18nkit's `i18n.localeUrl(path, code)`). `localeOrigins` is blog-only: `new Docs` rejects it.\n\n`BlogOverview`, `BlogPage`, and the docs components take a `lang` prop, build links via the shared `localePath` (so they can't drift from the canonical/hreflang metadata), and format dates in each language's `dateLocale`.\n\n**Built-in UI copy** (search placeholder, \"load more\", \"min read\", \"on this page\", …) auto-translates to the `lang`, covering the EU's 24 official languages and falling back to English - so a `/fr/blog` page reads in French with no extra wiring. Every label prop still overrides its translation. The copy is powered by [`@daanvandenbergh/i18nkit`](https://www.npmjs.com/package/@daanvandenbergh/i18nkit), whose type-safe catalog guarantees every string is translated at compile time. The resolvers and catalog are exported from `/react` (`blogLabels`, `docsLabels`, `CATALOG`, and the `ui` i18nkit instance) if you want to read a label or add a language.\n\n**The components do not render a language picker** (blog) - placement and styling vary too much to bake in. It's a few lines with `blog.getTranslations(slug)` and the exported `localePath` (docs get `DocsLanguagePicker` in the navbar for free):\n\n```tsx\nimport { localePath } from \"@daanvandenbergh/scribekit\";\n\nfunction LanguageSwitcher({ slug, current }: { slug: string; current: string }) {\n    return (\n        <nav aria-label=\"Language\">\n            {blog.getTranslations(slug).map((code) => (\n                <a key={code} hrefLang={code}\n                   href={localePath({ basePath: blog.site?.basePath, defaultLocale: blog.defaultLocale, prefixDefaultLocale: blog.prefixDefaultLocale, trailingSlash: blog.trailingSlash, lang: code, slug })}\n                   aria-current={code === current ? \"true\" : undefined}>\n                    {blog.locales.find((l) => l.code === code)?.label ?? code}\n                </a>\n            ))}\n        </nav>\n    );\n}\n```\n\n> Set the page's `<html lang>` per request from your own layout - that's your app chrome, not the package's job.\n\n### ⚠️ `linkComponent` must render `href` as given\n\n**Never pass a locale-rewriting `<Link>` wrapper as `linkComponent`.** Every href scribekit hands a link component is **already final**: it is built by `localePath`, so the locale is resolved (`/docs/<slug>` on the default language, `/nl/docs/<slug>` on Dutch). The contract is *render this href verbatim* - `next/link` and a bare `<a>` honour it.\n\nMost i18n apps have a `<LocaleLink>` that prefixes the active locale onto an href, and passing it here is the natural instinct. It is a bug, and a nasty one, because it **looks like it works**:\n\n```tsx\n// ❌ Wrong - a link wrapper that rewrites hrefs\n<DocsSidebar nav={nav} linkComponent={LocaleLink} />\n\n// ✅ Right - render the href exactly as scribekit built it\n<DocsSidebar nav={nav} linkComponent={Link} />\n```\n\nRe-prefixing an *already*-prefixed href is usually a no-op, so every sidebar, tab, card, and search hit navigates fine. The one thing it breaks is the **language picker** - the only component that emits an href for a locale **other than the active one**. On a Dutch page, `DocsLanguagePicker`'s English entry is the bare `/docs/<slug>`; a rewriting wrapper turns it back into `/nl/docs/<slug>`, so the reader clicks \"English\", stays in Dutch, and can never leave. Silent, and it disables precisely the control meant to fix it.\n\nThe rule: an href **you** author bare (`/pricing`, `homeHref`) gets your locale-aware link; an href **scribekit** hands you gets a plain one.\n\n> **Cookie-based locale preference? Pass `onSelect`.** If your middleware resolves a bare URL's language from a stored preference (a cookie or `Accept-Language`), a plain link **cannot** switch *to* the default locale: navigating to the unprefixed `/docs/<slug>` gets 307'd straight back to the old stored language, so the reader clicks \"English\", stays in Dutch, and can never leave. Give `DocsLanguagePicker` an **`onSelect`** and it hands you the chosen code instead of navigating (the click is `preventDefault`ed), so you can write the preference **first** and then route. Wire it to your locale setter - with [i18nkit](https://www.npmjs.com/package/@daanvandenbergh/i18nkit) that is one line, since `useSetLocale()` writes the cookie synchronously and its provider does the navigation:\n>\n> ```tsx\n> const setLocale = useSetLocale();\n> <DocsLanguagePicker locales={docs.locales} currentLang={lang} onSelect={setLocale} /* … */ />\n> ```\n>\n> The `href`/`hrefLang` stay on each anchor either way, so the links remain crawlable. Leave `onSelect` unset on a purely URL-routed site and the links navigate on their own, as before.\n\n**i18n sitemap.** `blog.sitemapEntries()` (and `docs.sitemapEntries()`) returns one entry per `(slug, lang)` with its absolute URL, hreflang `alternates.languages` (every translation plus `x-default`) and - for blog posts - `lastModified` (front-matter `updated`, else `date`) - assignable straight to a Next.js `sitemap.ts` (needs `siteUrl`/`brandName`):\n\n```ts\n// app/sitemap.ts\nimport type { MetadataRoute } from \"next\";\nimport { blog } from \"./[lang]/blog/_blog\";\n\nexport default function sitemap(): MetadataRoute.Sitemap {\n    return blog.sitemapEntries();\n}\n```\n\nSee [`demo/`](./demo) for a complete example: every post has a `fr.mdx` beside its `en.mdx`, the single `[lang]/blog` tree lives under `demo/app/`, and `demo/proxy.ts` serves the default language at the clean `/blog`.\n\n---\n\n## Theming\n\nEvery colour is a CSS custom property with a sensible light-theme default. Override any from your own CSS - no config, no build step:\n\n```css\n:root {\n    --scribekit-primary: #6d5df6;      /* links, hover accents, \"read more\" */\n    --scribekit-ink: #0b1b36;          /* headings and body text */\n    --scribekit-ink-muted: #4a5568;    /* dates, descriptions */\n    --scribekit-surface: #ffffff;      /* card background */\n    --scribekit-border: #e5eaf0;       /* card/hr/table borders */\n    --scribekit-bg-subtle: #f7f9fc;    /* code blocks, table headers */\n    /* --scribekit-overview-width, --scribekit-post-width, --scribekit-card-shadow, --scribekit-font-mono ... */\n}\n```\n\nClass names are namespaced `.scribekit-*` and MDX body tags are scoped under `.scribekit-prose`, so nothing leaks into the rest of your site. Fonts are inherited from your app.\n\n**Docs** reuse these tokens plus a few of their own (all with defaults): `--scribekit-docs-nav-width`, `--scribekit-doc-width`, `--scribekit-docs-toc-width` (the three column widths), and `--scribekit-code-bg` / `--scribekit-code-ink` (the dark code slab). Docs classes are namespaced `.scribekit-docs-*` / `.scribekit-doc*`.\n\n---\n\n## MDX plugins\n\n**GFM is on by default.** `BlogPage` and `DocsPage` render MDX with [`remark-gfm`](https://github.com/remarkjs/remark-gfm) already applied, so **tables**, strikethrough, task lists, and autolinks just work - along with headings, lists, links, blockquotes, inline code, and fenced code blocks, all styled out of the box. (Pipe tables are a GFM extension, not core Markdown: without the plugin a `| a | b |` table does not error, it silently renders as a paragraph of literal `|` characters. That is a content bug you only see on the published page, so it is not left to the consumer to remember.)\n\nTo add anything *extra* - syntax highlighting, autolinked headings - pass options through to `next-mdx-remote` (works the same on `BlogPage` and `DocsPage`). **Your plugins are merged with GFM, never replace it:**\n\n```tsx\nimport rehypePrettyCode from \"rehype-pretty-code\";\n\n<BlogPage\n    blog={blog}\n    slug={slug}\n    mdxOptions={{ mdxOptions: { rehypePlugins: [rehypePrettyCode] } }}   // gfm stays enabled\n    components={{ pre: MyCodeBlock }}\n/>;\n```\n\n**Compiling is memoized.** A body already compiled in this process is not compiled again - the cache is keyed on the MDX source text *and* your plugin set, so a page edited under `next dev` is a different key and always renders fresh, and two different plugin sets never share an entry.\n\n---\n\n## API reference\n\n### `new Blog(config)`\n\nThe site attributes are passed directly (flattened) into the config:\n\n| Config | Default | Description |\n| --- | --- | --- |\n| `contentDir` | *(required)* | Folder of `<slug>/<lang>.mdx` posts (one folder per post; default `en.mdx`). Relative to `process.cwd()`, or absolute. |\n| `siteUrl` / `brandName` | - | Site origin + brand name. Provide **both** to enable the SEO methods and JSON-LD. |\n| `defaultAuthor` | `brandName` | Author used when a post omits its own. |\n| `basePath` | `/blog` | Route the blog is mounted at (used to build URLs). |\n| `description` | - | Blog index meta description, also the RSS channel description and the `CollectionPage` description. A `string` is used in every locale; a `{ en: \"...\", nl: \"...\" }` map gives each locale its own. |\n| `indexName` | `` `${brandName} Blog` `` (bare `brandName` for the RSS channel `<title>`) | Human-readable index name: RSS channel title, `CollectionPage` name, index OpenGraph title. Takes the same per-locale map as `description`. |\n| `titleTemplate` | `` `%s \\| ${brandName}` `` | Template for every page `<title>` (posts and index), `%s` = the page's own title - e.g. `\"%s - Example\"` to match the host site's separator. |\n| `indexTitle` | `\"Blog\"` | The index page's own title, put through `titleTemplate` - e.g. a keyword title per locale. Changes only the `<title>` (the OpenGraph title stays `indexName`). Takes the same per-locale map as `description`. |\n| `homeLabel` | `\"Home\"` | Name of the first `BreadcrumbList` crumb (the locale's home) in the post, index and docs JSON-LD. Takes the same per-locale map as `description`. |\n| `extension` | `.mdx` | Post file extension (each file is `<slug>/<lang><ext>`, e.g. `en.mdx` / `fr.mdx`). |\n| `locale` | `en-GB` | Locale for `formatDate` (default language). |\n| `locales` | - | Languages this blog is published in; see [Multiple locales](#multiple-locales). Leave unset for a single-language blog. |\n| `defaultLocale` | first `locales` code, else base subtag of `locale` | The default language (the `x-default` hreflang target), served unprefixed unless `prefixDefaultLocale`. |\n| `prefixDefaultLocale` | `false` | When `true`, the default locale is URL-prefixed too (`/en/blog/<slug>`), so every locale routes through one `[lang]` segment. |\n| `localeOrigins` | - | One origin per locale for a [domain-per-locale](#one-domain-per-locale) site (`{ nl: \"https://example.nl\", de: \"https://example.de\" }`): no locale is prefixed and every absolute URL uses the page locale's origin. `siteUrl` then defaults to the default locale's origin. |\n| `trailingSlash` | `true` | Whether every built URL ends in a slash (`/blog/<slug>/`, `/blog/`). **Must match your `next.config` `trailingSlash`** - a mismatch is silent and site-wide, pointing every canonical, hreflang, sitemap entry and link at the form your host doesn't serve. Next's own default is `false`, so either set `trailingSlash: true` in `next.config` (what the [GitHub Pages setup](#deploy-to-github-pages) does) or `trailingSlash: false` here. The site root stays `/` either way. |\n| `organizationId` | - | `@id` of an `Organization` in your site-wide JSON-LD. When set, `BlogPosting.publisher` and the overview `CollectionPage.publisher` reference it by `@id` instead of inlining a duplicate. |\n| `authorId` | - | `@id` of a `Person`/`Organization` your site defines as the blog author. When set, `BlogPosting.author` references it by `@id` instead of inlining a name-only `Organization`. |\n| `websiteId` | - | `@id` of a `WebSite` your site defines. When set, `BlogPosting` and the overview `CollectionPage` gain an `isPartOf` reference to it. |\n| `twitterSite` | - | Your site's X (Twitter) handle, `@` included (`@example`). Emitted as `twitter:site` on every post and index card; unset emits no attribution. |\n\n**Stitch into an existing site graph (better SEO).** If your app already emits site-wide schema.org JSON-LD with stable `@id`s, pass `organizationId` / `authorId` / `websiteId` so the blog references those entities by `@id` instead of inlining its own copies - search engines then merge the blog into your single knowledge-graph entity. Leave them unset to keep the self-contained default output.\n\nMethods: `getPostSlugs()`, `getPost(slug, lang?)` (throws `PostNotFoundError`), `getAllPosts(lang?)` (newest first), `getAllCategories(lang?)`, `formatDate(iso, lang?)`, `readingMinutes(post)`, `tableOfContents(post)`, `similarPosts(post, limit?)`, and - when `siteUrl`/`brandName` are set - `overviewMetadata(lang?)`, `postMetadata(post)`, `overviewJsonLd(posts, lang?)`, `postJsonLd(post)`, `sitemapEntries()`. Multi-language: `getPostRefs()` (every `(slug, lang)` pair, for `generateStaticParams`), `getTranslations(slug)`, `dateLocale(lang?)`, `ogLocale(lang?)` (that language's `og:locale` tag - the same value the metadata builders emit, for a host app that hand-builds an OpenGraph block). The assembled config is exposed as `blog.site` / `blog.locale` / `blog.locales` / `blog.defaultLocale` / `blog.prefixDefaultLocale` / `blog.localeOrigins` / `blog.trailingSlash`. The pure helpers behind the components (`readingMinutes`, `tableOfContents`, `similarPosts`, `slugify`, `collectCategories`, `localePath`) are also exported from the package root.\n\n### `<BlogOverview>` / `<BlogPage>`\n\nBoth take the `blog` instance and derive their data, date locale, and JSON-LD from it. `BlogOverview` also accepts `posts` to override the auto-derived list; `BlogPage` takes the `slug` (loading the post and 404-ing on an unknown one). Both accept `lang` for [multi-locale](#multiple-locales) blogs (defaults to `blog.defaultLocale`).\n\nShared optional props: `basePath` (defaults to `blog.site.basePath`), `imgComponent` (default `\"img\"` - pass `next/image`), `linkComponent` (default `\"a\"` - pass `next/link`; **it must render `href` as given** - never a locale-rewriting wrapper, see [the contract](#️-linkcomponent-must-render-href-as-given)). `BlogOverview` also takes `header`, `emptyLabel`, `readMoreLabel`, plus the [search, filter & pagination props](#overview-search-filters--pagination). `BlogPage` also takes `components`, `mdxOptions`, `showBackLink`, `backLabel`, plus the [sidebar props](#post-sidebar).\n\n> **Next 16 (Turbopack):** `next/link` / `next/image` imported in a server component are no longer serializable client references, so passing them to `BlogOverview` (whose grid is a client component) fails the build with *\"Functions cannot be passed directly to Client Components\"*. Re-export them from a `\"use client\"` file and pass that instead:\n>\n> ```tsx\n> // app/blog/_link.tsx\n> \"use client\";\n> export { default as Link } from \"next/link\";\n> ```\n\n### `new Docs(config)`\n\nSame flattened site attributes as [`new Blog(config)`](#new-blogconfig) (`siteUrl` / `brandName` / `defaultAuthor` / `description` / `indexName` / `titleTemplate` / `indexTitle` / `homeLabel` / `organizationId` / `authorId` / `websiteId` / `twitterSite` / `locale` / `locales` / `defaultLocale` / `prefixDefaultLocale` / `trailingSlash`; `localeOrigins` is blog-only and makes `new Docs` throw), plus:\n\n| Config | Default | Description |\n| --- | --- | --- |\n| `contentDir` | *(required)* | Folder of `<slug>/<lang>.mdx` docs (one folder per page; default `en.mdx`). Relative to `process.cwd()`, or absolute. |\n| `basePath` | `/docs` | Route the docs are mounted at (used to build URLs). Set `\"\"` to mount at the site root, so pages are `/<slug>` and the index is `/`. |\n| `tabs` | - | Display order + labels for the top-level tabs. Each entry is a tab id (matching a page's `tab`) or `{ id, label }`. Purely presentational. |\n| `groups` | - | Display order + labels for the sidebar group headings, same semantics as `tabs`. |\n| `redirects` | - | Old slug → new slug for [renamed pages](#renaming-a-page-redirects), e.g. `{ \"getting-started\": \"quickstart\" }`. A real page always wins over an entry with the same slug; chains resolve in one hop; a cycle 404s instead of looping. |\n\nMethods: `getDocSlugs()`, `getDocRefs()` (every `(slug, lang)` pair), `getRedirect(slug, lang?)` (the 308 destination URL for a renamed slug, else `undefined`), `getRedirectRefs()` (every redirected `(slug, lang)` pair - spread it into `generateStaticParams`), `getDoc(slug, lang?)` (throws `DocNotFoundError`), `getAllDocs(lang?)`, `getTranslations(slug)`, `getNavTree(lang?)`, `getBreadcrumb(slug, lang?)`, `getAdjacent(slug, lang?)` (prev/next), `tableOfContents(doc)`, `readingMinutes(doc)`, `formatDate(iso, lang?)`, `dateLocale(lang?)`, and - when `siteUrl`/`brandName` are set - `docMetadata(doc)`, `indexMetadata(lang?)`, `docJsonLd(doc)`, `indexJsonLd(lang?)`, `sitemapEntries()`. The config is exposed as `docs.site` / `docs.locale` / `docs.locales` / `docs.defaultLocale` / `docs.prefixDefaultLocale` / `docs.trailingSlash`.\n\n### `<DocsNavbar>` / `<DocsTabs>` / `<DocsSidebar>` / `<DocsToc>` / `<DocsPage>` / `<DocsIndex>`\n\nEvery component below takes `linkComponent` (default `\"a\"` - pass `next/link`). **It must render `href` as given**: scribekit has already resolved the locale, so a locale-rewriting `<Link>` wrapper silently breaks the language picker - see [the contract](#️-linkcomponent-must-render-href-as-given).\n\n- **`DocsSearchProvider`** (client) - owns the shared ⌘K command palette; wrap your docs shell in it. Props: `nav`, `lang`, `linkComponent`, `searchPlaceholder`, `searchEmptyLabel`, `renderIcon`. Any descendant opens it via **`useDocsSearch().open()`**, or drop a **`DocsSearchButton`** (`placeholder`, `lang`, `className`).\n- **`DocsNavbar`** (client, optional) - the top bar. Props: `logo`, `logoSize` (default 22), `brandName`, `docsText` (the pill, default `\"Docs\"`; `\"\"`/`null` hides it), `homeHref`, `linkComponent`, `lang`, `showSearch` (default `true`), `searchPlaceholder`, **`actions`** (the right-hand section - the part most sites edit), and **`languagePicker`** (a slot before the actions). `actions` takes **arbitrary nodes**: drop in `DocsNavbarButton`s, or your own site's CTA component. A link that carries a class of its own keeps its own styling; only a genuinely raw, unstyled `<a>` picks up the navbar's muted fallback colour.\n- **`DocsNavbarButton`** (optional) - a navbar action: `variant` `\"link\"` / `\"primary\"` / `\"secondary\"`. Props: `href` (renders a link, else a `<button>`) / `onClick`, `variant`, `linkComponent`, `icon`, `target`, `rel`, `ariaLabel`. Pass a list to `DocsNavbar`'s `actions`.\n- **`DocsLanguagePicker`** (client, optional) - the navbar language switcher: a flag-and-caret trigger opening a menu of the docs' languages, each a `hreflang` link. **Auto-hides for single-locale docs**, so you can always render it. Flags come from [i18nkit](https://www.npmjs.com/package/@daanvandenbergh/i18nkit)'s `localeFlag` (override with `renderFlag`). Props: `locales`, `currentLang`, `activePath`, `basePath`, `defaultLocale`, `prefixDefaultLocale`, `trailingSlash`, `linkComponent`, **`onSelect`** (`(code) => void` - takes over the switch instead of navigating; **required if your middleware resolves a bare URL's language from a cookie**, see [above](#️-linkcomponent-must-render-href-as-given)), `lang`, `renderFlag`, `changeLanguageLabel`, `headingLabel`. Pass it to `DocsNavbar`'s `languagePicker`.\n- **`DocsTabs`** (client) - the top tab bar (underline tabs + sliding indicator); each tab links to its section's first page. Props: `nav`, `activePath`, `linkComponent`, `lang`, `label`. Renders nothing for a single-tab tree.\n- **`DocsSidebar`** (client) - the left nav (active tab's groups) + ⌘K palette. Props: `nav`, `activePath`, `linkComponent`, `lang`, `renderIcon`, and label overrides (`searchPlaceholder`, `searchEmptyLabel`, `label`).\n- **`DocsToc`** (client) - the right \"on this page\" minimap with scroll-spy. Rendered by `DocsPage`. Props: `toc`, `title`.\n- **`DocsPage`** (server) - one page (article + `DocsToc`). Props: `docs`, `slug`, `lang`, `linkComponent`, `components` / `mdxOptions`, `showToc` / `showBreadcrumb` / `showFeedback`, `onFeedback`, and label overrides (`tocTitle`, `previousLabel`, `nextLabel`, `feedbackQuestion`, `readingLabel`, …).\n- **`DocsIndex`** (server) - the landing page. Props: `docs`, `lang`, `linkComponent`, `title`, `description`, `header` (replace the hero), `renderIcon`.\n\nThe built-in UI copy (search, prev/next, \"was this helpful?\", \"on this page\", \"updated …\") is translated into 24 EU languages and picked by `lang`; every string is overridable via the props above.\n\n---\n\n## Notes\n\n- **Static by default.** With `generateStaticParams` + `dynamicParams = false`, posts and docs are prerendered at build time (SSG). If you instead read at request time with `output: \"standalone\"`, pass an **absolute** `contentDir` and add the content dir to `outputFileTracingIncludes` so the files ship with your server bundle.\n- **Reads are cached, and the cache checks the file.** Each content file is read and normalised once per `Blog`/`Docs` instance, then re-used until its modification time or size changes - so a build does not re-parse the whole corpus for every page. The check is a `stat` per read, which costs a fraction of the work it skips, and it means there is nothing to configure or clear: `next dev` picks up an edit immediately, and a long-lived `output: \"standalone\"` server picks up content that changes underneath it.\n- **Server-only classes.** `Blog` and `Docs` read the filesystem - keep them in server components / route files and pass the resulting data to the components as props (exactly what the snippets above do). `DocsTabs` / `DocsSidebar` / `DocsToc` are client components, so they take the already-computed `nav` tree / `toc` as props.\n","readmeFilename":"README.md"}