{"_id":"@brainfish-ai/wayfinder-core","_rev":"10-902367b224a55a33f2829f7523a964c1","name":"@brainfish-ai/wayfinder-core","dist-tags":{"latest":"0.1.10"},"versions":{"0.1.0":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.0","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.0","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"4503f1ebd04b7959532356189f35142334286c14","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.0.tgz","fileCount":11,"integrity":"sha512-zzZFzrxu810c6zLezf9WVvZc3Czg1hXdaoc3MqkwJc0jRKdpuhx475cv1Rs44l2DalT8LCto3kb7uKHQ8QVUBg==","signatures":[{"sig":"MEQCIHuIgOhfr9QLNQEbU7GJ1PgPRtMsH7Y8Vj5h9rSMm16EAiB+tvD15wdiYsuV8r+0zdGEUL/z/AkddsCOr97sNCsW8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":630333},"main":"./dist/wayfinder.umd.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-zzZFzrxu810c6zLezf9WVvZc3Czg1hXdaoc3MqkwJc0jRKdpuhx475cv1Rs44l2DalT8LCto3kb7uKHQ8QVUBg==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.0_1773872851383_0.16255469895843655","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.1","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.1","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"a0671b49a8e68f17f7338d78093354ceba187ad6","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.1.tgz","fileCount":11,"integrity":"sha512-O28Lgggqn0Pm3fJXMwpH3E1ZQUQVgZGflnTE9U9iJz2EQo6577jpE8XpwTOSNT6ne9QEI9jeeGPyJvFOIznfUw==","signatures":[{"sig":"MEYCIQDHpQOyiYLlm35UaFYgDaM9s5WtjisB/S8CiXrlDtevsAIhAKQpkWteOGk5MJRMAyyb8HERfvy8CbAS2f6A0WpXHQM8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649649},"main":"./dist/wayfinder.umd.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-O28Lgggqn0Pm3fJXMwpH3E1ZQUQVgZGflnTE9U9iJz2EQo6577jpE8XpwTOSNT6ne9QEI9jeeGPyJvFOIznfUw==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.1_1773878392926_0.7226740148819444","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.2","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.2","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"8b7a0febf565869592a50b6eed60daf088228739","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.2.tgz","fileCount":11,"integrity":"sha512-LD+uhftaydHeo/C2ZxraI8LsencfKdnZ3s/XFf5XgAYA+400emDPFANA65Ym5vbq6vordbYkoRDjBfYm3DR7EQ==","signatures":[{"sig":"MEYCIQD23hqZdE0o2S9p00x0pOUSWt6fzYqOtYF891ZLARFKIAIhAIQ9bX/P42PSDU2G+n+i0AHSXOvM3977AaUlbCaljEdh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":690731},"main":"./dist/wayfinder.umd.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-LD+uhftaydHeo/C2ZxraI8LsencfKdnZ3s/XFf5XgAYA+400emDPFANA65Ym5vbq6vordbYkoRDjBfYm3DR7EQ==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.2_1773954846865_0.738111319787361","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.4","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.4","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"15bf291407604195a0aa9a117c306eeba85bad23","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.4.tgz","fileCount":11,"integrity":"sha512-JkZ9JeuezLhmlADnBJtNS1CGVFruN+oJx3QfWvfLn2ZleMg41sMU1lPwqUqpQOzfY8so5NXLQKpaQU8evJcoIA==","signatures":[{"sig":"MEUCIQCH9NuBnpIo97Ov2H3+p+wRuJlVkKvnmJ4ITfw4sj4wkAIgOeEtCUG1vtvACCJriW3gzMRRcr7YkCm58FbJc2iPsmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693623},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-JkZ9JeuezLhmlADnBJtNS1CGVFruN+oJx3QfWvfLn2ZleMg41sMU1lPwqUqpQOzfY8so5NXLQKpaQU8evJcoIA==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.4_1773971873704_0.9308978297643029","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.3","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.3","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"73e8d853e7cc8be63b90ce37d07a1c9af2ea1695","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.3.tgz","fileCount":11,"integrity":"sha512-BA6pPsndziQCiRmOwnIbzodDBKaUaQ/SfeyDpWtMQVHt0TV0KQ2m3zoh8nydF+T3mVu3uYDwMhSrdZ7KWeKVqA==","signatures":[{"sig":"MEUCICwsOvrMDzDl45Wwhi7qdmWdjnHr6K1pCvFSPfxKVxioAiEAok5ZmrZJ3USnZS5LKQ+B2z9hWGD3OCHfDxYYd8WaYX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":690725},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-BA6pPsndziQCiRmOwnIbzodDBKaUaQ/SfeyDpWtMQVHt0TV0KQ2m3zoh8nydF+T3mVu3uYDwMhSrdZ7KWeKVqA==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.3_1773971874912_0.8440287510665427","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.5","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.5","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"1daf7b56f6f20b410d20f4a250bb2b9570218427","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.5.tgz","fileCount":11,"integrity":"sha512-1O5PHjZt0CuGxUqijLj4RzBOcKaTIYj6lFlvZ8rV2Mzktb5fLmKO0ScX7LC0mtyzLWO7+/8EJbxbTWUdf7wV+Q==","signatures":[{"sig":"MEUCIQDGTYXO8wP4A4nfvFEgS2prDcNfOQoR2BfqwJ1vIsfOGgIgaD58VeY05MTohCjhpc8pNk5bcVfTvivfSE/lU5sWqX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695663},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-1O5PHjZt0CuGxUqijLj4RzBOcKaTIYj6lFlvZ8rV2Mzktb5fLmKO0ScX7LC0mtyzLWO7+/8EJbxbTWUdf7wV+Q==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.5_1773972579304_0.7317126252276733","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.6","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.6","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"2951f801f6cfcb0a1b66ac354c4cd6ad241e532d","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.6.tgz","fileCount":11,"integrity":"sha512-nkAcR43HIFd6qhFJeid2h2W0l50Bg6k7WMqq0D42ciHBJnkrG8zrfJApWLp0sw1mM8EuOfTQmsO2ben/dm+c8g==","signatures":[{"sig":"MEUCIBFUTw/iNaQuizuPjnkJtMxDW0ew3sok6iI64AMF51I7AiEA8SGkw+tq+QwX+3Jp8EBY1N+D+L02XtAuPP6Fsqdxok0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":706400},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-nkAcR43HIFd6qhFJeid2h2W0l50Bg6k7WMqq0D42ciHBJnkrG8zrfJApWLp0sw1mM8EuOfTQmsO2ben/dm+c8g==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.6_1773974672232_0.37660587942253154","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.7","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.7","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"a8a1708f3c61daee8c7bf8c8d55b604e3766c701","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.7.tgz","fileCount":11,"integrity":"sha512-TQiex8dh/s+FHmXdZ7xwNS01j5/xVOO09D1S5lx7bl5DLymYQ8S5CvTUogkNs3CHARuYX+KwzrtEPq/KGT2ZIg==","signatures":[{"sig":"MEUCIQCK2qehJgiSwAOlxwH+4Ti5F7Okkmh0xlqRqTve02Mk0wIgEhXjnjIKXgtuVnTS5q/S+Uzs7TuG/vSEmvoSUaYjvA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711095},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-TQiex8dh/s+FHmXdZ7xwNS01j5/xVOO09D1S5lx7bl5DLymYQ8S5CvTUogkNs3CHARuYX+KwzrtEPq/KGT2ZIg==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.7_1773975676075_0.27234186652375714","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.9","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","_id":"@brainfish-ai/wayfinder-core@0.1.9","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"dist":{"shasum":"3c5f7dd54ca975946992495b6f3a751de7b97385","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.9.tgz","fileCount":11,"integrity":"sha512-3BrLz63pFeEHz58P0uOcrYEO7+uW3WKlNZuAADUo28BQuWzaZPi7Ney8t857Ve0bZQSCtkiQHQw8Q37AfgQWlQ==","signatures":[{"sig":"MEUCIG8Zk6uHbduIiXu6gYksWxhi1rpZMMmmofS6vOXZLrPJAiEAoB0DOJt+7OTiSZ8UYf3zEq7W680vpJ0SNeJSslqRmR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710204},"main":"./dist/wayfinder.cjs","type":"module","_from":"file:packages/core/package.tgz","types":"./dist/index.d.ts","module":"./dist/wayfinder.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs"}},"scripts":{"dev":"node ../../node_modules/.bin/vite build --watch","lint":"node ../../node_modules/.bin/tsc --noEmit","build":"node ../../node_modules/.bin/vite build","typecheck":"node ../../node_modules/.bin/tsc --noEmit"},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_integrity":"sha512-3BrLz63pFeEHz58P0uOcrYEO7+uW3WKlNZuAADUo28BQuWzaZPi7Ney8t857Ve0bZQSCtkiQHQw8Q37AfgQWlQ==","_npmVersion":"10.9.4","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"@floating-ui/dom":"^1.6.5"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/wayfinder-core_0.1.9_1774229555188_0.9270375874092989","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@brainfish-ai/wayfinder-core","version":"0.1.10","description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"license":"MIT","type":"module","main":"./dist/wayfinder.cjs","module":"./dist/wayfinder.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/wayfinder.js","require":"./dist/wayfinder.umd.cjs","types":"./dist/index.d.ts"}},"scripts":{"build":"node ../../node_modules/.bin/vite build","dev":"node ../../node_modules/.bin/vite build --watch","typecheck":"node ../../node_modules/.bin/tsc --noEmit","lint":"node ../../node_modules/.bin/tsc --noEmit"},"peerDependencies":{"@floating-ui/dom":">=1.0.0"},"devDependencies":{"@floating-ui/dom":"^1.6.5"},"_id":"@brainfish-ai/wayfinder-core@0.1.10","_integrity":"sha512-J0cxuF9IZj+mq6pK7FvvWXu/io8Xv6rCtLJ26OMKodCRsIqkpPLagl9xJAgpHQJ1vQntA9qdG8DJtud34AG6ZQ==","_resolved":"/home/runner/work/brainfish-wayfinder/brainfish-wayfinder/packages/core/package.tgz","_from":"file:packages/core/package.tgz","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-J0cxuF9IZj+mq6pK7FvvWXu/io8Xv6rCtLJ26OMKodCRsIqkpPLagl9xJAgpHQJ1vQntA9qdG8DJtud34AG6ZQ==","shasum":"f0c7e76e256b28258cfbbe7cd84c3ee417050a7d","tarball":"https://registry.npmjs.org/@brainfish-ai/wayfinder-core/-/wayfinder-core-0.1.10.tgz","fileCount":11,"unpackedSize":710966,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5rm5a1+DqEWZSb0ruMaAs5M04zttGEXYv3iHFOL5YmwIgOxgTModB6WA5EFARseh84ComXa59EdMj3tqYGMmpqrg="}]},"_npmUser":{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},"directories":{},"maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wayfinder-core_0.1.10_1774571755717_0.05705629773639065"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T22:27:31.271Z","modified":"2026-03-27T00:35:56.079Z","0.1.0":"2026-03-18T22:27:31.595Z","0.1.1":"2026-03-18T23:59:53.099Z","0.1.2":"2026-03-19T21:14:07.046Z","0.1.4":"2026-03-20T01:57:53.865Z","0.1.3":"2026-03-20T01:57:55.114Z","0.1.5":"2026-03-20T02:09:39.511Z","0.1.6":"2026-03-20T02:44:32.379Z","0.1.7":"2026-03-20T03:01:16.286Z","0.1.9":"2026-03-23T01:32:35.396Z","0.1.10":"2026-03-27T00:35:55.914Z"},"license":"MIT","keywords":["product-tour","onboarding","walkthrough","spotlight","tooltip"],"description":"A framework-agnostic product tour library with spotlight overlay and analytics hooks","maintainers":[{"name":"ajainvivek","email":"ajainvivek07@gmail.com"},{"name":"johnfumaster","email":"johnfumaster@gmail.com"},{"name":"charlie.shen.brainfi.sh","email":"charlie.shen@brainfi.sh"},{"name":"e.brainfish","email":"emmanuel@brainfi.sh"}],"readme":"# @wayfinder/core\n\nA framework-agnostic, TypeScript-first product tour library. Spotlight your UI elements, guide users step by step, and hook into every interaction for analytics — with no framework dependencies.\n\n## Features\n\n- **Spotlight overlay** — smooth CSS-transition cutout that glides between elements\n- **Smart tooltip positioning** — powered by [Floating UI](https://floating-ui.com/); respects screen edges, scrolling, and all 12 placements\n- **Analytics event hooks** — typed callbacks at every user interaction (`onStart`, `onNext`, `onPrev`, `onSkip`, `onComplete`, `onError`)\n- **Keyboard navigation** — `→` / `Enter` advance, `←` goes back, `Escape` skips\n- **Themeable** — override any CSS class via the `theme` config; no Tailwind required in your app\n- **Single active tour guard** — only one tour can run at a time; `Wayfinder.isRunning()` lets you gate programmatically\n- **Obfuscated class support** — `StepTarget` accepts CSS selectors, direct refs, or a lazy resolver function; `tourId()` helper + `data-tour` convention; `waitForTarget` MutationObserver retry for SPA async DOM\n- **Zero framework dependency** — plain DOM manipulation; works with React, Vue, Angular, Svelte, or vanilla JS\n- **Tiny** — ~14 kB ESM, ~12 kB CJS (gzipped: ~4 kB)\n\n## Installation\n\n```bash\nnpm install @wayfinder/core @floating-ui/dom\n# or\nyarn add @wayfinder/core @floating-ui/dom\n```\n\n`@floating-ui/dom` is a peer dependency and must be installed alongside the library.\n\n## Quick start\n\n```typescript\nimport { Wayfinder } from '@wayfinder/core';\n\nconst tour = new Wayfinder({\n  steps: [\n    {\n      id: 'welcome',\n      target: '#dashboard-header',\n      title: 'Welcome to your Dashboard',\n      description: 'Here you can see a high-level overview of your stats.',\n      placement: 'bottom',\n    },\n    {\n      id: 'create-button',\n      target: '#btn-create-new',\n      title: 'Create a new project',\n      description: 'Click here to get started.',\n      placement: 'left',\n    },\n  ],\n});\n\ndocument.getElementById('start-tour')!.addEventListener('click', () => {\n  tour.start();\n});\n```\n\nWayfinder injects its own styles at runtime — no CSS import required.\n\n## Configuration\n\n```typescript\nnew Wayfinder(config: WayfinderConfig)\n```\n\n### `WayfinderConfig`\n\n| Property | Type | Required | Description |\n|---|---|---|---|\n| `steps` | `Step[]` | One of `steps` or `flows` | Ordered steps for a single-flow tour. Acts as a fallback when `flows` is also provided and no flow matches the current profile. |\n| `flows` | `Flow[]` | One of `steps` or `flows` | Multiple named flows, each with a profile matcher and its own step set. Evaluated in order at `start()` time; first match wins. |\n| `profile` | `UserProfile` | No | Arbitrary key-value object passed to each `Flow.match()` function and to per-step `condition` / `next` callbacks. Defaults to `{}`. |\n| `theme` | `Theme` | No | CSS class overrides and visual options. |\n| `events` | `EventHandlers` | No | Analytics / lifecycle callbacks. |\n| `waitForTargetTimeoutMs` | `number` | No | Max time (ms) to wait for a target element to appear in the DOM (uses a MutationObserver). Fires `onError` on timeout. Default: `3000`. |\n| `tourAttribute` | `string` | No | The HTML attribute used by `tourId()` and the framework helpers. Change if `data-tour` conflicts with another library. Default: `'data-tour'`. |\n| `launcher` | `LauncherConfig` | No | Optional self-serve launcher beacon. A pulsing ring is attached to the target element; clicking it starts the tour automatically. |\n\n---\n\n### `Flow`\n\nA named tour variant tied to a user profile. Flows let you show a different set of steps depending on user state — role, plan, onboarding status, etc.\n\n| Property | Type | Required | Description |\n|---|---|---|---|\n| `id` | `string` | Yes | Unique identifier — surfaced in all analytics payloads as `flowId`. |\n| `match` | `(profile: UserProfile) => boolean` | Yes | Called with the current `profile` at `start()` time. Return `true` to select this flow. Flows are tested in array order; first truthy match wins. |\n| `steps` | `Step[]` | Yes | Steps shown when this flow is matched. |\n\n**Example — role-based flows:**\n\n```typescript\nconst tour = new Wayfinder({\n  profile: { role: 'admin', plan: 'enterprise' },\n  flows: [\n    {\n      id: 'admin-onboarding',\n      match: (profile) => profile.role === 'admin',\n      steps: [\n        { id: 'users', target: '#users-nav', title: 'User management', description: 'Manage your team here.' },\n        { id: 'billing', target: '#billing-nav', title: 'Billing', description: 'View and update your subscription.' },\n      ],\n    },\n    {\n      id: 'member-onboarding',\n      match: () => true, // fallback flow\n      steps: [\n        { id: 'dashboard', target: '#dashboard', title: 'Your Dashboard', description: 'Everything starts here.' },\n      ],\n    },\n  ],\n});\n```\n\n---\n\n### `Step`\n\n| Property | Type | Required | Description |\n|---|---|---|---|\n| `id` | `string` | Yes | Unique identifier (used in analytics payloads). |\n| `target` | `StepTarget` | Yes | See [`StepTarget`](#steptarget) below. |\n| `title` | `string` | Yes | Tooltip heading. |\n| `description` | `string` | Yes | Tooltip body text. |\n| `placement` | `Placement` | No | Floating UI placement (default: `'bottom'`). Any of: `top`, `bottom`, `left`, `right`, and their `-start` / `-end` variants. |\n| `spotlightPadding` | `number` | No | Extra padding (px) around the spotlight cutout for this step. |\n| `condition` | `(profile: UserProfile) => boolean` | No | Guard evaluated just before the step is displayed. Return `false` to skip the step and auto-advance in the current direction. |\n| `next` | `string \\| ((profile: UserProfile) => string \\| null \\| undefined)` | No | ID of the step to show after this one, overriding default linear progression. Return `null` / `undefined` from the function to complete the tour early. |\n| `clickOnNext` | `boolean` | No | When `true`, pressing Next programmatically clicks the step's target element before advancing. Useful for demo flows. Default: `false`. |\n| `url` | `string \\| (() => string)` | No | URL or path this step belongs to. Wayfinder navigates to it if the current URL doesn't match. Supports `:param` and `*` wildcards for pattern matching without triggering navigation. |\n\n**`condition` example — admin-only step:**\n\n```typescript\n{\n  id: 'invite-team',\n  target: '[data-tour=\"invite-btn\"]',\n  title: 'Invite your team',\n  description: 'Add teammates with a single click.',\n  condition: (profile) => profile.role === 'admin',\n}\n```\n\n**`next` example — dynamic branching:**\n\n```typescript\n{\n  id: 'check-integration',\n  target: '[data-tour=\"integrations\"]',\n  title: 'Integrations',\n  description: 'Connect your tools.',\n  next: (profile) => profile.hasIntegration ? 'step-done' : 'step-connect',\n}\n```\n\n**`clickOnNext` example — demo walkthrough:**\n\n```typescript\n{\n  id: 'open-menu',\n  target: '[data-tour=\"menu-btn\"]',\n  title: 'Open the menu',\n  description: 'Click here to open the navigation menu.',\n  clickOnNext: true, // clicks the element then advances\n}\n```\n\n**`url` example — cross-page tour:**\n\n```typescript\n[\n  { id: 'settings', target: '[data-tour=\"settings-tab\"]', url: '/settings', title: 'Settings', description: '...' },\n  { id: 'profile',  target: '[data-tour=\"profile-form\"]', url: '/settings/profile', title: 'Profile', description: '...' },\n]\n```\n\n---\n\n### `StepTarget`\n\n```typescript\ntype StepTarget =\n  | string                      // CSS selector: '#my-btn', '[data-tour=\"create\"]'\n  | HTMLElement                 // Direct element reference\n  | (() => HTMLElement | null); // Lazy resolver — called at step-show time\n```\n\nThe resolver function form is the escape hatch for **obfuscated class names**. It is called freshly at every step transition, so it works with CSS Modules, styled-components, React refs, and any other dynamic element source:\n\n```typescript\n// CSS Modules — resolve by data-testid instead of the hashed class\n{ target: () => document.querySelector('[data-testid=\"create-button\"]') }\n\n// React ref captured in outer scope\n{ target: () => myRef.current }\n\n// styled-components — target by a stable attribute you control\n{ target: () => document.querySelector('[data-tour=\"create-btn\"]') }\n```\n\n---\n\n### `Theme`\n\nAll class properties **replace** the default class string when provided. Use this to supply your own Tailwind or custom CSS classes.\n\n| Property | Type | Description |\n|---|---|---|\n| `tooltip` | `string` | Tooltip card wrapper |\n| `tooltipTitle` | `string` | Title element |\n| `tooltipDescription` | `string` | Description element |\n| `buttonNext` | `string` | Next / Finish button |\n| `buttonPrev` | `string` | Back button |\n| `buttonSkip` | `string` | Skip button |\n| `progress` | `string` | \"X of Y\" progress indicator |\n| `overlayColor` | `string` | CSS color for the overlay background (default: `rgba(0,0,0,0.55)`) |\n| `spotlightBorderRadius` | `number` | Border radius (px) of the spotlight cutout (default: `4`) |\n\n**Example — Tailwind overrides:**\n\n```typescript\nconst tour = new Wayfinder({\n  theme: {\n    tooltip: 'bg-white rounded-xl shadow-lg p-4 max-w-sm',\n    buttonNext: 'bg-indigo-600 text-white px-4 py-2 rounded-md hover:bg-indigo-700',\n    buttonSkip: 'text-gray-500 hover:text-gray-700 text-sm',\n  },\n  steps: [...],\n});\n```\n\n---\n\n### `LauncherConfig`\n\nAn optional self-serve beacon. A pulsing ring is rendered over the target element; clicking the element (or the ring) starts the tour and automatically removes the beacon.\n\n| Property | Type | Required | Description |\n|---|---|---|---|\n| `target` | `StepTarget` | Yes | Element to attach the beacon to (CSS selector, `HTMLElement`, or resolver function). |\n| `color` | `string` | No | Color of the pulse ring and center dot. Default: `'#4f46e5'`. |\n| `size` | `number` | No | Diameter (px) of the center dot. Default: `14`. |\n\n**Example — \"Take a tour\" help button:**\n\n```typescript\nconst tour = new Wayfinder({\n  launcher: {\n    target: '[data-tour=\"help-btn\"]',\n    color: '#4f46e5',\n    size: 16,\n  },\n  steps: [...],\n});\n// No need to call tour.start() — the beacon handles it.\n```\n\n---\n\n### `EventHandlers`\n\nHook into every user interaction to push data to your analytics tool. Every payload includes a `flowId` field — the ID of the matched `Flow`, or `null` when top-level `steps` are used.\n\n| Event | Payload type | Fired when |\n|---|---|---|\n| `onStart` | `{ totalSteps: number, flowId: string \\| null }` | Tour begins |\n| `onNext` | `{ step: Step, index: number, flowId: string \\| null }` | User advances a step |\n| `onPrev` | `{ step: Step, index: number, flowId: string \\| null }` | User goes back a step |\n| `onSkip` | `{ step: Step, index: number, flowId: string \\| null }` | User dismisses the tour early |\n| `onComplete` | `{ steps: Step[], flowId: string \\| null }` | User finishes the last step |\n| `onError` | `{ step: Step \\| null, error: string }` | Target element not found in DOM |\n\n**Example — Mixpanel integration:**\n\n```typescript\nconst tour = new Wayfinder({\n  steps: [...],\n  events: {\n    onStart: ({ totalSteps }) => {\n      mixpanel.track('Onboarding Started', { totalSteps });\n    },\n    onNext: ({ step }) => {\n      mixpanel.track('Onboarding Step Viewed', { stepId: step.id });\n    },\n    onSkip: ({ step, index }) => {\n      mixpanel.track('Onboarding Skipped', { dropoffStep: step.id, dropoffIndex: index });\n    },\n    onComplete: () => {\n      mixpanel.track('Onboarding Completed');\n    },\n  },\n});\n```\n\n## Instance API\n\n| Method | Description |\n|---|---|\n| `start()` | Start from step 0. No-ops if a tour is already running. |\n| `next()` | Advance to the next step. Fires `onComplete` on the last step. |\n| `prev()` | Go back one step. No-op on the first step. |\n| `skip()` | Dismiss the tour at the current step. Fires `onSkip`. |\n| `goTo(index)` | Jump to any step by zero-based index. |\n| `destroy()` | Tear down all DOM nodes and clear state. |\n\n## Static API\n\n| Method | Returns | Description |\n|---|---|---|\n| `Wayfinder.isRunning()` | `boolean` | Returns `true` if any tour instance is currently active. Only one tour may run at a time. |\n\n**Example — guard against concurrent tours:**\n\n```typescript\ndocument.getElementById('start-tour')!.addEventListener('click', () => {\n  if (Wayfinder.isRunning()) {\n    console.warn('A tour is already in progress.');\n    return;\n  }\n  tour.start();\n});\n```\n\n## Obfuscated class names\n\nWhen your app uses CSS Modules, styled-components, Emotion, or a build minifier, class-based selectors become unstable across builds. Wayfinder provides three complementary strategies — pick the one that fits your stack.\n\n### Strategy 1 — `tourId()` helper (recommended, any framework)\n\nAdd a stable `data-tour` attribute to the element you want to target. Data attributes are never touched by any build tool.\n\n```typescript\nimport { Wayfinder, tourId } from '@wayfinder/core';\n```\n\n```html\n<!-- Mark the element once in your template/JSX -->\n<button data-tour=\"create-btn\">New Project</button>\n```\n\n```typescript\n// Reference it in your step config\n{ id: 'create-btn', target: tourId('create-btn') }\n// tourId('create-btn') returns '[data-tour=\"create-btn\"]'\n```\n\nUse a custom attribute name if `data-tour` is taken:\n```typescript\nnew Wayfinder({\n  tourAttribute: 'data-wf',   // changes the attribute tourId() produces\n  steps: [{ target: tourId('create-btn', 'data-wf') }]\n})\n```\n\n### Strategy 2 — Resolver function target\n\nPass a lazy function as `target`. It is called fresh at each step transition:\n\n```typescript\n{ target: () => document.querySelector('[data-testid=\"my-btn\"]') }\n{ target: () => myReactRef.current }\n```\n\n### Strategy 3 — `waitForTargetTimeoutMs` (SPA async DOM)\n\nWayfinder always uses a MutationObserver to wait for target elements to appear in the DOM before showing each step — no extra flag required. This covers SPA route changes, modal opens, and panel reveals automatically.\n\nTune the timeout window with `waitForTargetTimeoutMs` (default `3000` ms). If the element doesn't appear in time, `onError` fires:\n\n```typescript\nnew Wayfinder({\n  waitForTargetTimeoutMs: 5000,\n  steps: [...],\n})\n```\n\n### Framework packages\n\n| Package | How it helps |\n|---|---|\n| [`@wayfinder/react`](../../packages/react) | `useTourTarget` hook + `TourTarget` component — writes `data-tour` via a React ref |\n| [`@wayfinder/vue`](../../packages/vue) | `v-tour-target` directive + `WayfinderPlugin` |\n| [`@wayfinder/vite-plugin`](../../packages/vite-plugin) | Injects `data-tour` at build time — zero markup changes needed |\n\n## Keyboard navigation\n\nWhen a tour is active the following keyboard shortcuts are available globally:\n\n| Key | Action |\n|---|---|\n| `→` or `Enter` | Next step |\n| `←` | Previous step |\n| `Escape` | Skip tour |\n\n## CSS customisation\n\nWayfinder injects a minimal stylesheet with the following class hooks. You can target these directly in your own CSS:\n\n| Class | Element |\n|---|---|\n| `.wf-overlay` | Full-screen click-blocking overlay |\n| `.wf-spotlight` | The cutout div (box-shadow creates the dark surround) |\n| `.wf-tooltip` | Tooltip card wrapper |\n| `.wf-tooltip-title` | Title text |\n| `.wf-tooltip-description` | Description text |\n| `.wf-tooltip-footer` | Footer row (progress + controls) |\n| `.wf-progress` | \"X of Y\" text |\n| `.wf-controls` | Button container |\n| `.wf-btn-next` | Next / Finish button |\n| `.wf-btn-prev` | Back button |\n| `.wf-btn-skip` | Skip button |\n\n## Output formats\n\nThe package ships three build targets:\n\n| File | Format | Use case |\n|---|---|---|\n| `dist/wayfinder.js` | ESM | Bundlers (Vite, Webpack, Rollup) |\n| `dist/wayfinder.cjs` | CommonJS | Node / legacy bundlers |\n| `dist/wayfinder.umd.cjs` | UMD | CDN / `<script>` tag |\n| `dist/index.d.ts` | TypeScript declarations | Type checking |\n\n**CDN usage:**\n\n```html\n<script src=\"https://unpkg.com/@floating-ui/dom\"></script>\n<script src=\"https://unpkg.com/@wayfinder/core/dist/wayfinder.umd.cjs\"></script>\n<script>\n  const { Wayfinder } = Wayfinder; // UMD global\n  const tour = new Wayfinder({ steps: [...] });\n</script>\n```\n\n## Development\n\n```bash\n# From the repo root\nyarn install --no-immutable\n\n# Build the library (outputs to packages/core/dist/)\nyarn build\n\n# Watch mode during development\nyarn workspace @wayfinder/core run dev\n\n# Run the interactive demo at http://localhost:3111\nyarn dev\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}