{"_id":"@bilalmohib7896/react-tour-guide","_rev":"5-cfad084d5b33e9be6190486941212665","name":"@bilalmohib7896/react-tour-guide","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@bilalmohib7896/react-tour-guide","version":"1.0.0","keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"author":{"name":"bilalmohib7896@gmail.com"},"license":"MIT","_id":"@bilalmohib7896/react-tour-guide@1.0.0","maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"homepage":"https://github.com/bilalmohib/react-tour-guide#readme","bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"dist":{"shasum":"8efad4897cef083f01d054781172951d97ae9509","tarball":"https://registry.npmjs.org/@bilalmohib7896/react-tour-guide/-/react-tour-guide-1.0.0.tgz","fileCount":10,"integrity":"sha512-GKjgGRorln2gm0AK3ndfgB2RSny4O4jXLqSdOCA7LwwtMMq+ZcwG7d1cMGR/n7mCl3b20E+0IT2IH+FEy9lP5A==","signatures":[{"sig":"MEYCIQCk4Ksd00hrSd/5BS3qHPs7vWZPS94mckNUy8zbMf4JCQIhAKCfBg5X2/KAaQc3p7LaYjF0dOj6tWtIIAodQUvuXfbY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125087},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./tour.css":"./dist/tour.css","./styles.css":"./dist/tour.css"},"gitHead":"495007be6df5c83994cc48e216ed53b8fd174fec","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && npm run type-check"},"_npmUser":{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"},"repository":{"url":"git+https://github.com/bilalmohib/react-tour-guide.git","type":"git"},"_npmVersion":"11.6.4","description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","directories":{},"sideEffects":false,"_nodeVersion":"25.1.0","dependencies":{"clsx":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^25.0.0","react":"^19.0.0","eslint":"^9.0.0","vitest":"^2.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/node":"^25.0.9","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.0.0","eslint-plugin-react":"^7.37.0","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.0.0","eslint-plugin-react-hooks":"^5.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-tour-guide_1.0.0_1768842022057_0.26490345756980416","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bilalmohib7896/react-tour-guide","version":"1.0.1","keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"author":{"name":"bilalmohib7896@gmail.com"},"license":"MIT","_id":"@bilalmohib7896/react-tour-guide@1.0.1","maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"homepage":"https://github.com/bilalmohib/react-tour-guide#readme","bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"dist":{"shasum":"285f193e25d7f598eb6ef0e906666f52bc16c908","tarball":"https://registry.npmjs.org/@bilalmohib7896/react-tour-guide/-/react-tour-guide-1.0.1.tgz","fileCount":11,"integrity":"sha512-57wKI5W8eW7fpew8bGSHfXaR4/tsZHZGm8E7NOu/VFR/wtSgswy5euS4jU0qnWC9i5esrTn2UQbKRJ/RPFV+rg==","signatures":[{"sig":"MEUCICKvn1SxkZz8srOAvUWXQZeagLoyIGPG3Ltgbde1Dl1kAiEAxrOrZhcOCo0N+05dhAWUAFz3K20ywYT6ch5USWerEAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125397},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.esm.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./tour.css":"./dist/tour.css","./styles.css":"./dist/tour.css"},"gitHead":"a37c503eff0945af3a33492930d0044aca2b5a12","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && npm run type-check"},"_npmUser":{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"},"repository":{"url":"git+https://github.com/bilalmohib/react-tour-guide.git","type":"git"},"_npmVersion":"11.6.4","description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","directories":{},"sideEffects":false,"_nodeVersion":"25.1.0","dependencies":{"clsx":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^25.0.0","react":"^19.0.0","eslint":"^9.0.0","vitest":"^2.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/node":"^25.0.9","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.0.0","eslint-plugin-react":"^7.37.0","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.0.0","eslint-plugin-react-hooks":"^5.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-tour-guide_1.0.1_1768842478657_0.0015559371404958444","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bilalmohib7896/react-tour-guide","version":"1.0.2","keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"author":{"name":"bilalmohib7896@gmail.com"},"license":"MIT","_id":"@bilalmohib7896/react-tour-guide@1.0.2","maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"homepage":"https://github.com/bilalmohib/react-tour-guide#readme","bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"dist":{"shasum":"3b2144fa577897712282ca62f2c4b2f2ac3e0373","tarball":"https://registry.npmjs.org/@bilalmohib7896/react-tour-guide/-/react-tour-guide-1.0.2.tgz","fileCount":11,"integrity":"sha512-R1LgYoE/kjkGJ5cdYaDerC67LzXqfXBV4aFWs+Drxf8ZPhxld7cciqR+ThLLWiQ5o5C45PHsdTSq+D7gNpv2CQ==","signatures":[{"sig":"MEUCIQD8HgPNkAGGQkdZcCneOIZKPRCvT+sp5WG/jKhIWDW6bAIgFLQx21dyozdBzsFKEIyBuRhR8/bvVeKxasQz2+J14DQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125392},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./tour.css":"./dist/tour.css","./styles.css":"./dist/tour.css"},"gitHead":"a37c503eff0945af3a33492930d0044aca2b5a12","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && npm run type-check"},"_npmUser":{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"},"repository":{"url":"git+https://github.com/bilalmohib/react-tour-guide.git","type":"git"},"_npmVersion":"11.6.4","description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","directories":{},"sideEffects":false,"_nodeVersion":"25.1.0","dependencies":{"clsx":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^25.0.0","react":"^19.0.0","eslint":"^9.0.0","vitest":"^2.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/node":"^25.0.9","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.0.0","eslint-plugin-react":"^7.37.0","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.0.0","eslint-plugin-react-hooks":"^5.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-tour-guide_1.0.2_1768843969545_0.1112869681403108","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bilalmohib7896/react-tour-guide","version":"1.0.3","keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"author":{"name":"bilalmohib7896@gmail.com"},"license":"MIT","_id":"@bilalmohib7896/react-tour-guide@1.0.3","maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"homepage":"https://github.com/bilalmohib/react-tour-guide#readme","bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"dist":{"shasum":"b2ceeeeed6731c2e3eca63469c8619a0d4519c64","tarball":"https://registry.npmjs.org/@bilalmohib7896/react-tour-guide/-/react-tour-guide-1.0.3.tgz","fileCount":11,"integrity":"sha512-mcbstquzhwMl2G8cLEH/f6Emh2PX8ncAP1aM7ebajK/xA/sHW9O5Nj6tfwo0OLma04jYNLzTdW7DtvPZYbbJKw==","signatures":[{"sig":"MEUCIQCtn2LJRU4cYzFdMbvnkSJXyN8aHdFz/E1GV8OFzW162AIgYxSUGyBnxaIRcM/UsjdWHsfkl3wu08Tb6E1M8xnnxdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124194},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./tour.css":"./dist/tour.css","./styles.css":"./dist/tour.css"},"gitHead":"37e68216a7d9395cc290d2d17cb96d5123aa7199","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && npm run type-check"},"_npmUser":{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"},"repository":{"url":"git+https://github.com/bilalmohib/react-tour-guide.git","type":"git"},"_npmVersion":"11.6.4","description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","directories":{},"sideEffects":false,"_nodeVersion":"25.1.0","dependencies":{"clsx":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^25.0.0","react":"^19.0.0","eslint":"^9.0.0","vitest":"^2.0.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/node":"^25.0.9","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.0.0","eslint-plugin-react":"^7.37.0","@testing-library/react":"^16.2.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.0.0","eslint-plugin-react-hooks":"^5.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-tour-guide_1.0.3_1768844198351_0.6612314474206302","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bilalmohib7896/react-tour-guide","version":"1.0.4","description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","sideEffects":false,"author":{"name":"bilalmohib7896@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/bilalmohib/react-tour-guide.git"},"bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"homepage":"https://github.com/bilalmohib/react-tour-guide#readme","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./styles.css":"./dist/tour.css","./tour.css":"./dist/tour.css"},"scripts":{"build":"tsup","dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","type-check":"tsc --noEmit","test":"vitest","test:coverage":"vitest --coverage","prepublishOnly":"npm run build && npm run type-check"},"keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"license":"MIT","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"devDependencies":{"@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.2.0","@types/node":"^25.0.9","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^2.0.0","eslint":"^9.0.0","eslint-plugin-react":"^7.37.0","eslint-plugin-react-hooks":"^5.0.0","jsdom":"^25.0.0","react":"^19.0.0","react-dom":"^19.0.0","tsup":"^8.3.0","typescript":"^5.7.0","vitest":"^2.0.0"},"dependencies":{"clsx":"^2.1.1"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"bd0db58d574f2bbd015f1d5a7b7c837e73e5f7d6","_id":"@bilalmohib7896/react-tour-guide@1.0.4","_nodeVersion":"25.1.0","_npmVersion":"11.6.4","dist":{"integrity":"sha512-T6gZwl0vTJAb3ZdnwP4L0odpwIuLY2DxOYlIMZt37SgIzkZishsH+0vy0YO4iDOXVJ0bbS9Pjb94dFCzCmb4Mg==","shasum":"f45c88483129cd3d24dd266eb9936f9ee1e0ac67","tarball":"https://registry.npmjs.org/@bilalmohib7896/react-tour-guide/-/react-tour-guide-1.0.4.tgz","fileCount":11,"unpackedSize":130005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEt3Hu3jZ1l6f49zhGz7efr59m6/qKv8QDN4UQBR+NHLAiEAy3LysWvJa269RD8vl4TqwrM0nlsVexj96gs7ugrgHRY="}]},"_npmUser":{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"},"directories":{},"maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-tour-guide_1.0.4_1768844490851_0.024869318539803675"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-19T17:00:21.972Z","modified":"2026-01-19T17:41:31.123Z","1.0.0":"2026-01-19T17:00:22.215Z","1.0.1":"2026-01-19T17:07:58.801Z","1.0.2":"2026-01-19T17:32:49.730Z","1.0.3":"2026-01-19T17:36:38.496Z","1.0.4":"2026-01-19T17:41:31.007Z"},"bugs":{"url":"https://github.com/bilalmohib/react-tour-guide/issues"},"author":{"name":"bilalmohib7896@gmail.com"},"license":"MIT","homepage":"https://github.com/bilalmohib/react-tour-guide#readme","keywords":["react","tour","onboarding","walkthrough","guide","tutorial","joyride","user-guide","product-tour","spotlight","tooltip","accessible","typescript","react19","react18"],"repository":{"type":"git","url":"git+https://github.com/bilalmohib/react-tour-guide.git"},"description":"A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.","maintainers":[{"name":"bilalmohib7896","email":"bilalmohib7896@gmail.com"}],"readme":"# @bilalmohib7896/react-tour-guide\n\n> A modern, accessible, and performant React tour/onboarding library. A better alternative to react-joyride with zero legacy peer dependency issues.\n\n[![npm version](https://img.shields.io/npm/v/@bilalmohib7896/react-tour-guide.svg)](https://www.npmjs.com/package/@bilalmohib7896/react-tour-guide)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n\n## ✨ Features\n\n- 🚀 **Zero Legacy Dependencies** - No `--force` or `--legacy-peer-deps` needed\n- 🎯 **TypeScript First** - Full TypeScript support with comprehensive types\n- ♿ **Accessible** - Built with ARIA labels and keyboard navigation\n- 🎨 **Highly Customizable** - Customize colors, styles, labels, and behavior\n- 📱 **Responsive** - Works seamlessly on all screen sizes\n- ⚡ **Performant** - Optimized with React hooks and efficient re-renders\n- 🎭 **Flexible** - Support for CSS selectors or React refs\n- ⌨️ **Keyboard Navigation** - Arrow keys and Escape support\n- 🎪 **Auto Positioning** - Smart tooltip placement with auto-detection\n- 🎬 **Smooth Animations** - Polished transitions and effects\n- 🔒 **Production Ready** - Battle-tested and ready for enterprise use\n\n## 📦 Installation\n\n```bash\nnpm install @bilalmohib7896/react-tour-guide\n# or\nyarn add @bilalmohib7896/react-tour-guide\n# or\npnpm add @bilalmohib7896/react-tour-guide\n```\n\n## 🚀 Quick Start\n\n```tsx\nimport { Tour } from \"@bilalmohib7896/react-tour-guide\";\nimport \"@bilalmohib7896/react-tour-guide/styles.css\"; // Optional: import default styles\n\nfunction App() {\n  const [run, setRun] = useState(false);\n\n  const steps = [\n    {\n      target: \"#my-button\",\n      content: <div>This is the first step!</div>,\n      placement: \"bottom\",\n    },\n    {\n      target: \"#my-input\",\n      content: <div>This is the second step!</div>,\n      placement: \"right\",\n    },\n  ];\n\n  return (\n    <>\n      <button onClick={() => setRun(true)}>Start Tour</button>\n      <Tour\n        steps={steps}\n        run={run}\n        callback={(data) => {\n          if (data.status === \"finished\" || data.status === \"skipped\") {\n            setRun(false);\n          }\n        }}\n      />\n    </>\n  );\n}\n```\n\n## 📚 Documentation\n\n### Basic Usage\n\n```tsx\nimport { Tour } from \"@bilalmohib7896/react-tour-guide\";\n\nconst steps = [\n  {\n    target: \".feature-1\",\n    content: <h3>Welcome to Feature 1</h3>,\n    placement: \"bottom\",\n  },\n  {\n    target: \".feature-2\",\n    content: <h3>This is Feature 2</h3>,\n    placement: \"right\",\n  },\n];\n\nfunction MyComponent() {\n  const [isRunning, setIsRunning] = useState(false);\n\n  return (\n    <>\n      <button onClick={() => setIsRunning(true)}>Start Tour</button>\n      <Tour\n        steps={steps}\n        run={isRunning}\n        callback={(data) => {\n          if (data.status === \"finished\" || data.status === \"skipped\") {\n            setIsRunning(false);\n          }\n        }}\n      />\n    </>\n  );\n}\n```\n\n### Using React Refs\n\n```tsx\nimport { useRef } from \"react\";\nimport { Tour } from \"@bilalmohib7896/react-tour-guide\";\n\nfunction MyComponent() {\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const [run, setRun] = useState(false);\n\n  const steps = [\n    {\n      target: buttonRef,\n      content: <div>This button does something special!</div>,\n    },\n  ];\n\n  return (\n    <>\n      <button ref={buttonRef}>Click me</button>\n      <Tour steps={steps} run={run} />\n    </>\n  );\n}\n```\n\n### Customization\n\n```tsx\n<Tour\n  steps={steps}\n  run={run}\n  primaryColor=\"#FF6B6B\"\n  overlayOpacity={0.7}\n  showProgress={true}\n  showSkipButton={true}\n  showBackButton={true}\n  labels={{\n    next: \"Continue\",\n    back: \"Previous\",\n    skip: \"Skip Tour\",\n    finish: \"Complete\",\n  }}\n  className={{\n    tooltip: \"custom-tooltip-class\",\n    overlay: \"custom-overlay-class\",\n  }}\n  keyboardNavigation={true}\n  disableBodyScroll={false}\n/>\n```\n\n### Advanced: Step Configuration\n\n```tsx\nconst steps = [\n  {\n    target: \"#element-1\",\n    content: <div>Step 1</div>,\n    placement: \"auto\", // Auto-detect best position\n    disableSpotlight: false,\n    disableScroll: false,\n    offset: {\n      top: 10,\n      left: 20,\n    },\n  },\n  {\n    target: \"#element-2\",\n    content: <div>Step 2</div>,\n    placement: \"center\", // Center in viewport\n    disableSpotlight: true, // No highlight\n  },\n];\n```\n\n### Callback Handling\n\n```tsx\n<Tour\n  steps={steps}\n  run={run}\n  callback={(data) => {\n    switch (data.type) {\n      case \"tour:start\":\n        console.log(\"Tour started\");\n        break;\n      case \"tour:end\":\n        console.log(`Tour ${data.status}`);\n        break;\n      case \"step:after\":\n        console.log(`Moved to step ${data.index}`);\n        break;\n      case \"target:notfound\":\n        console.warn(`Target not found for step ${data.index}`);\n        break;\n    }\n  }}\n/>\n```\n\n## 🎨 Styling\n\n### Using Default Styles\n\n```tsx\nimport \"@tour-guide/react/styles\";\n```\n\n### Custom Styling\n\nThe component uses semantic class names that you can override:\n\n- `.tour-overlay` - Overlay backdrop\n- `.tour-tooltip` - Tooltip container\n- `.tour-progress` - Progress indicator\n- `.tour-content` - Step content\n- `.tour-actions` - Action buttons container\n- `.tour-button-primary` - Primary button (Next/Finish)\n- `.tour-button-back` - Back button\n- `.tour-button-skip` - Skip button\n\n```css\n.tour-tooltip {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  border-radius: 12px;\n}\n\n.tour-button-primary {\n  background: white;\n  color: #667eea;\n}\n```\n\n## 📖 API Reference\n\n### `Tour` Component Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `steps` | `TourStep[]` | **required** | Array of tour steps |\n| `run` | `boolean` | `false` | Whether the tour is running |\n| `stepIndex` | `number` | `0` | Initial step index |\n| `continuous` | `boolean` | `true` | Auto-proceed to next step |\n| `showProgress` | `boolean` | `true` | Show progress indicator |\n| `showSkipButton` | `boolean` | `true` | Show skip button |\n| `showBackButton` | `boolean` | `true` | Show back button |\n| `callback` | `(data: TourCallbackProps) => void` | - | Callback for tour events |\n| `primaryColor` | `string` | `\"#0F6CBD\"` | Primary color for buttons/highlights |\n| `zIndex` | `number` | `10000` | Z-index for overlay and tooltip |\n| `overlayOpacity` | `number` | `0.5` | Overlay opacity (0-1) |\n| `disableOverlayClose` | `boolean` | `false` | Disable closing on overlay click |\n| `className` | `object` | - | Custom class names |\n| `labels` | `object` | - | Custom button labels |\n| `keyboardNavigation` | `boolean` | `true` | Enable keyboard navigation |\n| `scrollPadding` | `number` | `20` | Scroll padding when scrolling to target |\n| `disableBodyScroll` | `boolean` | `false` | Disable body scroll when tour is active |\n| `spotlightPadding` | `number` | `8` | Spotlight padding around element |\n| `spotlightBorderRadius` | `number` | `8` | Spotlight border radius |\n\n### `TourStep` Interface\n\n| Property | Type | Default | Description |\n|----------|------|---------|-------------|\n| `target` | `string \\| RefObject<HTMLElement>` | **required** | CSS selector or React ref |\n| `content` | `ReactNode` | **required** | Step content |\n| `placement` | `Placement` | `\"bottom\"` | Tooltip placement |\n| `disableSpotlight` | `boolean` | `false` | Disable spotlight for this step |\n| `disableScroll` | `boolean` | `false` | Disable scrolling to target |\n| `offset` | `{ top?: number; left?: number }` | - | Custom tooltip offset |\n| `data` | `Record<string, string>` | - | Custom data attributes |\n\n### `Placement` Type\n\n```tsx\ntype Placement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"center\" | \"auto\";\n```\n\n### `TourCallbackProps` Interface\n\n```tsx\ninterface TourCallbackProps {\n  status: \"idle\" | \"running\" | \"paused\" | \"finished\" | \"skipped\";\n  type: \"tour:start\" | \"tour:end\" | \"step:before\" | \"step:after\" | \"target:notfound\";\n  index?: number;\n  step?: TourStep;\n}\n```\n\n## 🎯 Comparison with react-joyride\n\n| Feature | @bilalmohib7896/react-tour-guide | react-joyride |\n|---------|------------------|---------------|\n| Modern Dependencies | ✅ Yes | ❌ Requires --legacy-peer-deps |\n| TypeScript Support | ✅ Full | ⚠️ Partial |\n| React 18+ Support | ✅ Yes | ⚠️ Issues |\n| Bundle Size | ✅ Smaller | ⚠️ Larger |\n| Accessibility | ✅ Built-in | ⚠️ Limited |\n| Customization | ✅ Extensive | ⚠️ Moderate |\n| Performance | ✅ Optimized | ⚠️ Can be slow |\n| Maintenance | ✅ Active | ⚠️ Slower updates |\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📝 License\n\nMIT © bilalmohib\n\n## 🙏 Acknowledgments\n\nBuilt with ❤️ for the React community. Inspired by the need for a modern, dependency-free tour library.\n","readmeFilename":"README.md"}