{"_id":"@ameshkin/nextcrumbs","_rev":"8-7c86ae39827267c6f469b12b7be8c3c7","name":"@ameshkin/nextcrumbs","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"@ameshkin/nextcrumbs","version":"0.0.1","keywords":["mui","breadcrumbs","nextjs","react","NEXT","material-ui","seo","schema.org","app router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.0.1","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"add426d44ac8f03dee69b196e9aeaf6bebb4a88a","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.0.1.tgz","fileCount":6,"integrity":"sha512-US2O7JEeT+9AlYVxyCSQp+pwNx2jjpHrv6GaA51roAluIInxiDRX/jG1q0RSDTMJm7xURd2X9Wa4COQMpTjb7Q==","signatures":[{"sig":"MEYCIQDUqUsE2UJBRs03zWyw9ZPJXGQma0UonFGZKwqwULpyvQIhAK9baqu5J1FhSwBAbBiphOcrGiAbJ9cfvt/gSUbgaD7u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"abe7a01a27801459d1d2bad2ba2abf2031b83077","scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.2.3","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","dependencies":{"next":"^16.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","vitest":"^4.0.5","typescript":"^5.9.3","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@vitejs/plugin-react":"^5.1.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.0.1_1761875526516_0.007847532516261024","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@ameshkin/nextcrumbs","version":"0.0.3","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.0.3","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"5f8fd125ae2375d692cd1ca6f66c495d368e3ec6","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.0.3.tgz","fileCount":6,"integrity":"sha512-zXI4Cp9t6lsIdaQzXo4BDWadEyvCw2/ufr0hHw6HsrjoB46UdLzjqOIwNo/VMJLJTIRBBvpMpPhBJQrijhgUBA==","signatures":[{"sig":"MEQCIFJGUbswJhdfLpEvFi7RtpydGnzLHESWNe/Ls6Yh8443AiAj6YtpZQeHaGbe1iafr4y9rY6Ug7dl+mDDfQsLb3wnQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30191},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"8d3cd225162cd410c76e3478e3c6ceb94605d8a3","scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit","release:pre":"npm run typecheck && npm run test && npm run build","publish:patch":"npm run release:patch","release:patch":"npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish --access public"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.2.3","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^4.0.5","react-dom":"^18.3.1","typescript":"^5.9.3","@vitejs/plugin-react":"^5.1.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.4.2"},"peerDependencies":{"react":">=18","react-dom":">=18","@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.0.3_1761921167666_0.4151435813859232","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@ameshkin/nextcrumbs","version":"0.0.4","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.0.4","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"5f34329a73ccbf3ef49859d5cf232f5aad9201a4","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.0.4.tgz","fileCount":6,"integrity":"sha512-Ppcn7uG892DXee92R9tylGf1mDy6B4I0T4Zx8DSOUCWC8MIfoeD5usuifz34eYrYr90BU9T9BjakC4nVh7nfjQ==","signatures":[{"sig":"MEUCIQCr89AEkaMVpMWAZDgu20KWtUApdG50/WVv/ywTOgLSSgIgY5+pyhqeY40q+ejfrasIwm+5tILbgWvia/F6kWUsGIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30191},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"136d1fe833ef7442413ce79b05db19ced24a1be7","scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit","release:pre":"npm run typecheck && npm run test && npm run build","publish:patch":"npm run release:patch","release:patch":"npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish --access public"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.2.3","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^4.0.5","react-dom":"^18.3.1","typescript":"^5.9.3","@vitejs/plugin-react":"^5.1.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.4.2"},"peerDependencies":{"react":">=18","react-dom":">=18","@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.0.4_1761921187618_0.5410329961086116","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@ameshkin/nextcrumbs","version":"0.1.0","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.1.0","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"eb1c0e1392f4565a4d984685b25501fc997d6c7a","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.1.0.tgz","fileCount":6,"integrity":"sha512-+mndeneJzcWkwCG8PWW0OpsZ2n1zGEcAHMmNYby9e78zN0OQ2wjlW6wYbJv4Q01Je32HTbtrM8Bbt+GhI8nDVg==","signatures":[{"sig":"MEUCIQDivaDgtsb7xETbw8pFO1PEOlmmYBlnTsg5evSsGJ3n4AIgej7d5l51hxZU0vNMMpk6x+/wImCYTPjtL6f1xfUcg5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41354},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19 <21 || >=22.12"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"d6459e95161fdb450619595270c22932b336b352","scripts":{"test":"vitest","build":"tsup","clean":"tsup --clean","test:run":"vitest run","typecheck":"tsc -p tsconfig.build.json --noEmit","release:pre":"npm run typecheck && npm run test -- --run && npm run build","publish:patch":"npm run release:patch","release:patch":"npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish --access public"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.9.0","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@10.5.0","devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^4.0.6","react-dom":"^18.3.1","typescript":"^5.9.3","react-router-dom":"^7.9.5","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","react-dom":">=18","@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","react-router-dom":">=6 || >=7","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.1.0_1762050917475_0.27666823068750723","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ameshkin/nextcrumbs","version":"0.1.3","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router","react router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.1.3","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"4560e72061e082fe11ac6c3d060d794e7b24fefc","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.1.3.tgz","fileCount":6,"integrity":"sha512-xFM6cgIm3EqE+4ZaE4SAV2i6dFAmAlffIt8Cmi9OkoHdpIwQ7nBuvH1P4//vePt/AQ2lmaQD3ogk0eUtfYyRYg==","signatures":[{"sig":"MEYCIQCA4aHPwbBi3qQriXpdC2zzVo9TGjP6OdMqLq3jRS55mgIhAN14pHoilWW+AKivFGpx9U+0MfxhrmuSe8vqObUu4X1t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47588},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19 <21 || >=22.12"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"4622951c5113faa7dcf9b4d8d9afb995ece770d7","scripts":{"test":"vitest","build":"tsup","clean":"tsup --clean","test:run":"vitest run","typecheck":"tsc -p tsconfig.build.json --noEmit","release:pre":"npm run typecheck && npm run test -- --run && npm run build","publish:patch":"npm run release:patch","release:patch":"npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish --access public"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.2.3","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@10.5.0","devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^4.0.6","react-dom":"^18.3.1","typescript":"^5.9.3","react-router-dom":"^7.9.6","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","react-dom":">=18","@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","react-router-dom":">=6 || >=7","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.1.3_1763992611040_0.39441330883960646","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ameshkin/nextcrumbs","version":"0.1.4","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router","react router"],"author":{"url":"https://github.com/ameshkin","name":"Amir Meshkin","email":"amir.meshkin@gmail.com"},"license":"MIT","_id":"@ameshkin/nextcrumbs@0.1.4","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/nextcrumbs#readme","bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"dist":{"shasum":"2399699cb95b8cc59f070664c9016d60a0eb0060","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.1.4.tgz","fileCount":6,"integrity":"sha512-J9VDJvIGpYdfhj0uQot9i5Uoa5XwCM2K2n+gn2Zq6xolgpvUtkfZm+V68AZm6gs40kiFDlWfCehYybaKDyh3FA==","signatures":[{"sig":"MEYCIQD5ptXKTa0RCEWlK8boXkMIm9k5+R3o7PmVM/+dV1Ho9gIhAOqn4//b2shgsQ/FOYsRMyVafcMFS+gKuLDkXi7xyzpe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65940},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19 <21 || >=22.12"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/ameshkin","type":"github"},"gitHead":"db38179dd42e144ec043c39856f69df6796cc6b8","scripts":{"test":"vitest","build":"tsup","clean":"tsup --clean","test:run":"vitest run","typecheck":"tsc -p tsconfig.build.json --noEmit","release:pre":"npm run typecheck && npm run test -- --run && npm run build","publish:patch":"npm run release:patch","release:patch":"npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish --access public"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/nextcrumbs.git","type":"git"},"_npmVersion":"10.2.3","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@10.5.0","devDependencies":{"tsup":"^8.5.0","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^4.0.6","react-dom":"^18.3.1","typescript":"^5.9.3","react-router-dom":"^7.9.6","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","react-dom":">=18","@mui/material":">=7","@emotion/react":">=11","@emotion/styled":">=11","react-router-dom":">=6 || >=7","@mui/icons-material":">=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false},"react-router-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/nextcrumbs_0.1.4_1763994496725_0.7617810319619167","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ameshkin/nextcrumbs","version":"0.2.0","description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","license":"MIT","type":"module","workspaces":["packages/*"],"author":{"name":"Amir Meshkin","email":"amir.meshkin@gmail.com","url":"https://github.com/ameshkin"},"main":"./public/index.js","module":"./public/index.js","types":"./public/index.d.ts","exports":{".":{"types":"./public/index.d.ts","import":"./public/index.js","default":"./public/index.js"},"./breadcrumbs":{"types":"./public/Breadcrumbs.d.ts","import":"./public/Breadcrumbs.js"},"./hooks/usePathBreadcrumbs":{"types":"./public/hooks/usePathBreadcrumbs.d.ts","import":"./public/hooks/usePathBreadcrumbs.js"},"./hooks/useReactRouterBreadcrumbs":{"types":"./public/hooks/useReactRouterBreadcrumbs.d.ts","import":"./public/hooks/useReactRouterBreadcrumbs.js"},"./utils/jsonld":{"types":"./public/utils/jsonld.d.ts","import":"./public/utils/jsonld.js"}},"sideEffects":false,"scripts":{"clean":"tsup --clean","build":"tsup","test":"vitest","test:run":"vitest run","test:e2e:ui":"playwright test","test:e2e:bdd":"cucumber-js \"tests/e2e/features/**/*.feature\" --require \"tests/e2e/steps/**/*.mjs\"","typecheck":"tsc -p tsconfig.build.json --noEmit","prepublishOnly":"npm run typecheck && npm run test:run && npm run build","publish:all":"npm run typecheck && npm run test:run && npm run build && npm version patch -m \"chore(release): %s\" && git push --follow-tags && npm publish && npm publish --access public --registry https://registry.npmjs.org/","orchestrator:ci":"ts-node ./scripts/orchestrator-ci.ts","clean-build":"bash ./scripts/orchestrator-clean-build.sh","orchestrator:clean-build":"bash ./scripts/orchestrator-clean-build.sh","jira:projects":"node scripts/jira-projects.js"},"peerDependencies":{"@emotion/react":">=11","@emotion/styled":">=11","@mui/icons-material":">=7","@mui/material":">=7","react":">=18","react-dom":">=18","react-router-dom":">=6 || >=7"},"peerDependenciesMeta":{"@emotion/react":{"optional":false},"@emotion/styled":{"optional":false},"react-router-dom":{"optional":true}},"devDependencies":{"@ameshkin/jira-mate":"^0.1.17","@cucumber/cucumber":"^11.2.0","@playwright/test":"^1.57.0","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.0","jsdom":"^22.1.0","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^7.9.6","tsup":"^8.5.0","typescript":"^5.9.3","vitest":"^4.0.6"},"repository":{"type":"git","url":"git+https://github.com/ameshkin/nextcrumbs.git"},"bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"homepage":"https://github.com/ameshkin/nextcrumbs#readme","funding":{"type":"github","url":"https://github.com/sponsors/ameshkin"},"engines":{"node":">=20.19 <21 || >=22.12"},"packageManager":"npm@10.5.0","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router","react router"],"publishConfig":{"access":"public"},"gitHead":"373598633dba6483a6dfd9462f71e18871903b57","_id":"@ameshkin/nextcrumbs@0.2.0","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-lZARWsDJTsNi5EsTaMAkhpElIBVJeGduvHvu6AzkOfgzzFXf3xgDoqpOJd5CrNZvga32fv32TOB/hVNBJbR7Wg==","shasum":"7f9afccb795f63cba8c3b07ae5b130c50d499afc","tarball":"https://registry.npmjs.org/@ameshkin/nextcrumbs/-/nextcrumbs-0.2.0.tgz","fileCount":28,"unpackedSize":80306,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICSHuZYJ0wNDpHRms94VE3FhqjV2/5CRDr+QoGJzFVCPAiEAwnx6oK76E7R0q5g3mubpBlWZXGbPMbkjunF0b3HlEOw="}]},"_npmUser":{"name":"nevaro","email":"amir.meshkin@gmail.com"},"directories":{},"maintainers":[{"name":"nevaro","email":"amir.meshkin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nextcrumbs_0.2.0_1765574238858_0.5387308548973797"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-31T01:52:06.423Z","modified":"2025-12-12T21:17:19.191Z","0.0.1":"2025-10-31T01:52:06.710Z","0.0.3":"2025-10-31T14:32:47.856Z","0.0.4":"2025-10-31T14:33:07.847Z","0.1.0":"2025-11-02T02:35:17.725Z","0.1.3":"2025-11-24T13:56:51.240Z","0.1.4":"2025-11-24T14:28:16.920Z","0.2.0":"2025-12-12T21:17:18.999Z"},"bugs":{"url":"https://github.com/ameshkin/nextcrumbs/issues"},"author":{"name":"Amir Meshkin","email":"amir.meshkin@gmail.com","url":"https://github.com/ameshkin"},"license":"MIT","homepage":"https://github.com/ameshkin/nextcrumbs#readme","keywords":["mui","breadcrumbs","nextjs","react","material-ui","seo","schema.org","app router","react router"],"repository":{"type":"git","url":"git+https://github.com/ameshkin/nextcrumbs.git"},"description":"MUI 7 breadcrumbs with Next.js Link support, optional URL auto-generation, and SEO microdata.","maintainers":[{"name":"nevaro","email":"amir.meshkin@gmail.com"}],"readme":"# NextCrumbs\n\n> MUI 7 Breadcrumbs with **Next.js Link** support, optional **URL-based generation**, and **built-in SEO microdata**. Router-agnostic with zero runtime deps.\n\n| Item            | Value                                                                        | Badge                                                                                                                                                                                                                                                                                                                                                                                              |\n| --------------- | ---------------------------------------------------------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **GitHub repo** | [github.com/ameshkin/nextcrumbs](https://github.com/ameshkin/nextcrumbs)     | —                                                                                                                                                                                                                                                                                                                                                                                                  |\n| **CI**          | `.github/workflows/ci.yml`                                                   | [![CI — main](https://img.shields.io/github/actions/workflow/status/ameshkin/nextcrumbs/ci.yml?branch=main\\&label=ci%20\\(main\\))](https://github.com/ameshkin/nextcrumbs/actions/workflows/ci.yml) [![CI — dev](https://img.shields.io/github/actions/workflow/status/ameshkin/nextcrumbs/ci.yml?branch=dev\\&label=ci%20\\(dev\\))](https://github.com/ameshkin/nextcrumbs/actions/workflows/ci.yml) |\n| **npm package** | [@ameshkin/nextcrumbs](https://www.npmjs.com/package/@ameshkin/nextcrumbs)   | [![npm](https://img.shields.io/npm/v/@ameshkin/nextcrumbs.svg)](https://www.npmjs.com/package/@ameshkin/nextcrumbs)                                                                                                                                                                                                                                                                                |\n| **Install**     | `npm i @ameshkin/nextcrumbs`                                                 | [![install test](https://img.shields.io/github/actions/workflow/status/ameshkin/nextcrumbs/ci-main.yml?branch=main\\&label=install%20test)](https://github.com/ameshkin/nextcrumbs/actions/workflows/ci-main.yml)                                                                                                                                                                                   |\n| **Peer deps**   | `@mui/material@^7`, `@mui/icons-material@^7`, `react@>=18`, `react-dom@>=18`<br/>(Optional: `react-router-dom@>=6`) | ![peer deps](https://img.shields.io/badge/peer_deps-MUI%207%20%7C%20Icons%207%20%7C%20React%2018-blue)                                                                                                                                                                                                                                                                                             |\n| **Types**       | TypeScript                                                                   | ![types](https://img.shields.io/badge/types-TypeScript-blue.svg)                                                                                                                                                                                                                                                                                                                                   |\n| **License**     | MIT                                                                          | [![license](https://img.shields.io/badge/license-MIT-black.svg)](LICENSE)                                                                                                                                                                                                                                                                                                                          |\n| **Bundle size** | bundlephobia                                                                 | [![bundle size](https://img.shields.io/bundlephobia/minzip/%40ameshkin%2Fnextcrumbs?label=bundle%20size)](https://bundlephobia.com/package/@ameshkin/nextcrumbs)                                                                                                                                                                                                                                   |\n| **Deps status** | libraries.io                                                                 | [![deps](https://img.shields.io/librariesio/release/npm/%40ameshkin%2Fnextcrumbs)](https://libraries.io/npm/%40ameshkin%2Fnextcrumbs)                                                                                                                                                                                                                                                              |\n\n---\n\n## Menu\n\n* [Features](#features)\n* [Requirements](#requirements)\n* [Install](#install)\n* [Quick Start (Next.js)](#quick-start-nextjs)\n* [Auto from URL (Next App Router)](#auto-from-url-next-app-router)\n* [React Router](#react-router)\n* [Props](#props)\n* [Icon & Separator Examples](#icon--separator-examples)\n* [Accessibility & SEO](#accessibility--seo)\n* [Docs](#docs)\n* [Dependency Checks](#dependency-checks)\n* [Troubleshooting](#troubleshooting)\n* [FAQ](#faq)\n* [Contributing](#contributing)\n* [License](#license)\n\n---\n\n## Features\n\n* ✅ **MUI** Breadcrumbs under the hood (accessible, stable)\n* ✅ **Next.js** ready via pluggable `LinkComponent` (e.g., `next/link`)\n* ✅ Optional **URL → items** helper for App Router (`usePathBreadcrumbs`)\n* ✅ **React Router** helper hook (`useReactRouterBreadcrumbs`) - optional dependency\n* ✅ Fully typed with TypeScript\n\n---\n\n## Requirements\n\n* React **18+**\n* @mui/material **7+**\n* (Optional) @mui/icons-material **7+** for icons\n* Next.js **13.4+** if using App Router examples\n* (Optional) react-router-dom **6+ or 7+** for the React Router hook\n\n---\n\n## Install\n\n```bash\nnpm i @ameshkin/nextcrumbs\n# peer deps\nnpm i @mui/material @mui/icons-material react react-dom\n# optional: only needed if using useReactRouterBreadcrumbs hook\nnpm i react-router-dom\n```\n\n> **Note for Next.js projects:** If you're using Next.js and don't need React Router, you can either:\n> - Install `react-router-dom` as a dev dependency: `npm i -D react-router-dom`\n> - Or configure webpack to ignore it (see [Troubleshooting](#troubleshooting))\n\n---\n\n## Quick Start (Next.js)\n\n```tsx\n\"use client\";\nimport Link from \"next/link\";\nimport { NextCrumb } from \"@ameshkin/nextcrumbs\";\n// Also available as: import { Breadcrumbs } from \"@ameshkin/nextcrumbs\";\n\nexport default function HeaderTrail() {\n  return (\n    <NextCrumb\n      LinkComponent={Link}\n      items={[\n        { label: \"Dashboard\", href: \"/\" },\n        { label: \"Products\", href: \"/products\" },\n        { label: \"New\" }\n      ]}\n    />\n  );\n}\n```\n\n---\n\n## Auto from URL (Next App Router)\n\nSee full guide: [`docs/next-router.md`](./docs/next-router.md)\n\n```tsx\n\"use client\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { Breadcrumbs, usePathBreadcrumbs } from \"@ameshkin/nextcrumbs\";\n\nexport default function AutoTrail() {\n  const pathname = usePathname();\n  const items = usePathBreadcrumbs(pathname, {\n    baseHref: \"/\",\n    rootLabel: \"Home\",\n    labelMap: { new: \"Create\" },\n    exclude: [\"_private\"]\n  });\n\n  return <Breadcrumbs LinkComponent={Link} items={items} />;\n}\n```\n\n---\n\n## React Router\n\nSee full guide: [`docs/react-router.md`](./docs/react-router.md)\n\n```tsx\nimport { MemoryRouter, Routes, Route } from \"react-router-dom\";\nimport { Breadcrumbs, useReactRouterBreadcrumbs } from \"@ameshkin/nextcrumbs\";\n\nfunction Trail() {\n  const items = useReactRouterBreadcrumbs({\n    rootLabel: \"Home\",\n    exclude: [/^_/]\n  });\n  return <Breadcrumbs items={items} />;\n}\n\nexport default function Demo() {\n  return (\n    <MemoryRouter initialEntries={[\"/catalog/hats\"]}>\n      <Routes>\n        <Route path=\"/\" element={<Trail />} />\n        <Route path=\"/catalog/hats\" element={<Trail />} />\n      </Routes>\n    </MemoryRouter>\n  );\n}\n```\n\n> **Important:** `react-router-dom` is an **optional peer dependency**. You only need to install it if you use the `useReactRouterBreadcrumbs` hook. The package uses lazy loading, so importing other parts of the library won't require `react-router-dom` to be installed.\n\n---\n\n## Props\n\n### `<Breadcrumbs />`\n\n| Prop            | Type                                                                                             | Default              | Description                                               |\n| --------------- | ------------------------------------------------------------------------------------------------ | -------------------- | --------------------------------------------------------- |\n| `items`         | `{ label: string; href?: string; icon?: React.ReactNode; title?: string; external?: boolean }[]` | **required**         | The breadcrumb trail; last item usually has no `href`.    |\n| `LinkComponent` | `React.ElementType`                                                                              | `@mui/material/Link` | Custom link component (e.g., Next.js `Link`).             |\n| `muiProps`      | `Omit<MUIBreadcrumbsProps,\"children\">`                                                           | —                    | Props passed through to MUI `<Breadcrumbs />`.            |\n| `separatorIcon` | `React.ReactNode`                                                                                | `ChevronRightIcon`   | Icon/node placed between items.                           |\n| `homeLabel`     | `string`                                                                                         | `\"Home\"`             | If a crumb's label matches, it can receive a Home icon.   |\n\n### `usePathBreadcrumbs(pathname, options?)`\n\n| Option         | Type                    | Default      | Description                        |\n| -------------- | ----------------------- | ------------ | ---------------------------------- |\n| `baseHref`     | `string`                | `\"/\"`        | Root href for the first crumb.     |\n| `labelMap`     | `Record<string,string>` | `{}`         | Override labels by URL segment.    |\n| `exclude`      | `string[]`              | `[]`         | Skip specific segments.            |\n| `decode`       | `boolean`               | `true`       | `decodeURIComponent` each segment. |\n| `rootLabel`    | `string`                | `\"Dashboard\"`| Label for the root/home breadcrumb. |\n| `transformLabel` | `(segment: string) => string` | — | Custom label formatter function. |\n\n### `useReactRouterBreadcrumbs(options?)`\n\n| Option            | Type                                           | Default | Description                                           |\n| ----------------- | ---------------------------------------------- | ------- | ----------------------------------------------------- |\n| `rootLabel`       | `string`                                       | —       | Optional first crumb label linking to `/`.            |\n| `basePath`        | `string`                                       | —       | Strip a leading base path when building crumbs.       |\n| `decode`          | `boolean`                                      | `true`  | Decode each segment before labeling.                  |\n| `exclude`         | `(string \\| RegExp)[]`                         | `[]`    | Skip segments by string or regex.                     |\n| `mapSegmentLabel` | `(segment, index, segments) => string \\| null` | —       | Customize a label or return `null` to hide a segment. |\n\n---\n\n## Icon & Separator Examples\n\n```tsx\nimport Link from \"next/link\";\nimport NavigateNextIcon from \"@mui/icons-material/NavigateNext\";\nimport HomeOutlinedIcon from \"@mui/icons-material/HomeOutlined\";\nimport { Breadcrumbs } from \"@ameshkin/nextcrumbs\";\n\n<Breadcrumbs\n  LinkComponent={Link}\n  separatorIcon={<NavigateNextIcon fontSize=\"small\" />}\n  items={[\n    { label: \"Home\", href: \"/\", icon: <HomeOutlinedIcon /> },\n    { label: \"Products\", href: \"/products\" },\n    { label: \"Gadgets\" }\n  ]}\n/>;\n```\n\n---\n\n## Accessibility & SEO\n\n* Uses MUI's accessible `<Breadcrumbs aria-label=\"breadcrumbs\">`.\n* Minimal DOM footprint; sensible defaults for current page vs. links.\n* Follows ARIA best practices for breadcrumb navigation.\n\n### JSON-LD Structured Data\n\nFor SEO, you can add JSON-LD structured data using the built-in utilities:\n\n```tsx\nimport { Breadcrumbs, BreadcrumbJsonLd, breadcrumbsToJsonLd } from \"@ameshkin/nextcrumbs\";\n\nfunction MyPage() {\n  const items = [\n    { label: \"Home\", href: \"/\" },\n    { label: \"Products\", href: \"/products\" },\n    { label: \"New Product\" }\n  ];\n\n  return (\n    <>\n      <BreadcrumbJsonLd crumbs={breadcrumbsToJsonLd(items)} origin=\"https://example.com\" />\n      <Breadcrumbs items={items} />\n    </>\n  );\n}\n```\n\nOr use the `toJsonLd` function for custom JSON-LD generation:\n\n```tsx\nimport { toJsonLd } from \"@ameshkin/nextcrumbs\";\n\nconst jsonLd = toJsonLd(\n  [{ name: \"Home\", href: \"/\" }, { name: \"Products\" }],\n  { origin: \"https://example.com\" }\n);\n```\n\n> See [`docs/vanilla-json.md`](./docs/vanilla-json.md) for more examples.\n\n---\n\n## Docs\n\n- **Next.js App Router guide**: `docs/next-router.md`  \n  Deep dive into `usePathBreadcrumbs` with Next App Router, theming, and testing tips.\n\n- **React Router guide**: `docs/react-router.md`  \n  How to use `useReactRouterBreadcrumbs`, wire up `<Link>` for SPA navigation, and test with RTL.\n\n- **Vanilla React + JSON-LD**: `docs/vanilla-json.md`  \n  Using `<Breadcrumbs />` without any router and adding SEO JSON-LD at the page level.\n\n- **GitLab / subpath exports**: `docs/gitlab.md`  \n  How to consume `@ameshkin/nextcrumbs` (and its subpath exports) in GitLab and other CI/CD setups with good tree shaking.\n\n- **Export & API changes**: `docs/changes.md`  \n  Notes on the current export layout, subpath exports, and dependency cleanup.\n\n---\n\n## Dependency Checks\n\n```bash\nnpm ls @mui/material @mui/icons-material react react-dom\n# optional router (only needed if using useReactRouterBreadcrumbs)\nnpm ls react-router-dom\n```\n\n## Troubleshooting\n\n### Webpack Error: \"Can't resolve 'react-router-dom'\"\n\nIf you're using Next.js (or another webpack-based bundler) and see this error even though you're not using the React Router hook, you have two options:\n\n**Option 1: Install as dev dependency (Recommended)**\n```bash\nnpm install --save-dev react-router-dom\n```\n\n**Option 2: Configure webpack to ignore it**\n\nFor Next.js, add this to your `next.config.js`:\n\n```js\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  webpack: (config) => {\n    config.externals = config.externals || {}\n    config.externals['react-router-dom'] = 'commonjs react-router-dom'\n    return config\n  }\n}\n\nmodule.exports = nextConfig\n```\n\n> **Note:** The `useReactRouterBreadcrumbs` hook uses lazy loading, so `react-router-dom` is only accessed when the hook is actually called. However, webpack may still try to resolve it during static analysis. The solutions above prevent webpack from failing when the module isn't installed.\n\n---\n\n## FAQ\n\n**Does it work with React Router?**\nYes. Use `useReactRouterBreadcrumbs()` or pass your router's `<Link>` via `LinkComponent`. Note that `react-router-dom` is optional and only needed if you use the hook.\n\n**Do I need to install react-router-dom if I'm using Next.js?**\nNo, you only need it if you're using the `useReactRouterBreadcrumbs` hook. If webpack complains about it, install it as a dev dependency or configure webpack to ignore it (see [Troubleshooting](#troubleshooting)).\n\n**How do I change the last crumb's style?**\nThe last item usually has no `href`. Style it as the current page using your theme or conditional props via the `currentSx` prop.\n\n**Can I disable icons entirely?**\nYes—don't pass `icon` in your items, and set `homeLabel` to a non-matching value if you don't want the home icon.\n\n---\n\n## Contributing\n\n```bash\nnpm ci\nnpm run typecheck\nnpm run build\nnpm test -- --run\n```\n\nKeep peer ranges compatible with MUI 7 and React 18+.\n\n---\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}