{"_id":"@abduljebar/pdf-reader","_rev":"7-bbdd5d03a1e892ba2e9b2923bdd48d11","name":"@abduljebar/pdf-reader","dist-tags":{"latest":"1.0.5"},"versions":{"0.0.0":{"name":"@abduljebar/pdf-reader","version":"0.0.0","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@0.0.0","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"13f24635877ec0b5d1485c846ac88d9a09dfdd8d","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-0.0.0.tgz","fileCount":19,"integrity":"sha512-2uZrJDwSW/tSz0qwdobyDZ+rZpADMZhs7SbGyTPQud2741oDYVSU4paGMh+6ROz397DpNF0u1QuMQxEHAObszw==","signatures":[{"sig":"MEUCIB9GGsLoB2lswr6eFBI3lRR/QYCbv61vdOaCI6TC/uRKAiEAqR2DsPqG5xJddmell6KpRjlatUMvwGUL7IJJ7u36bW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47843},"type":"module","gitHead":"443e241a1ef73550ea344b8c1fb838245ec3ea83","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build && npm run build:types","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.5","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_0.0.0_1767184436551_0.41684154038895205","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@abduljebar/pdf-reader","version":"0.0.2","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@0.0.2","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"d23150c04e04280f4a62b8f2e4da40125b91761f","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-0.0.2.tgz","fileCount":6,"integrity":"sha512-SFQLNS8e3tTLDK/o2qRrIwCcqwGS4HsjU2HTnssIoruooYrgnkNvTW8mwWOuORP8hY6qL+fF2syjm55ZHTQ/7Q==","signatures":[{"sig":"MEUCIQDWVki/Xlw2nkV1W7iu6UhHy1kW9ky/Gu/tvewdkJ1FcgIgKhbS1Hd7cyDjUzW7RmTgIU/UF9mZhE2kXuibvCMfUv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5295870},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3a2386ba91da764470ddd933654194dc191364a7","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build && npm run build:types","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.5","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_0.0.2_1767185903842_0.4313113047598003","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@abduljebar/pdf-reader","version":"0.0.3","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@0.0.3","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"a806cd8a3df55f38464a2a597b9cac188ecc6e5a","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-0.0.3.tgz","fileCount":6,"integrity":"sha512-OFM3od07uYgtx+d7jPdCW5BAGVGSCiFhrnUEpg19xt2nMY+sUsKSCUrOB42BOFoslwB4mqiue1eKcK+MaJ/MJg==","signatures":[{"sig":"MEQCIFV40p86fo4LRBnC2NS9go6i2xYhrkwJIieYAV0CdZ7CAiBoKkRzV2Vnm7q+7HHKw8C7kI6aRh2I4Ntcl17PmTgxSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5295811},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3a2386ba91da764470ddd933654194dc191364a7","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build && npm run build:types","build:lib":"vite build --config vite.lib.config.ts","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.5","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_0.0.3_1767257106811_0.4117489271081278","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@abduljebar/pdf-reader","version":"1.0.0","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@1.0.0","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"c7d09b9235a2e9641b5293be5ebfd07094e5b3aa","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-1.0.0.tgz","fileCount":6,"integrity":"sha512-Rh+M0GteI3m0vKsU610m8Bgu0uGmTsIndcdFePGunyJscqtV3dciSrqt5TD0vSpB0fmBFCRkQijkzw2eIenGlQ==","signatures":[{"sig":"MEUCIDCweM3ptEzIi2sQfO+e0DHS4AezWzaMBv/3srMl8+0PAiEAp1ACSwpx95XnLZ0BcJOIhFDLN3fBVuyBSp5WqLKa/0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6261543},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e6ca7d14832e68495dd8a84320d46bc75d8a77f9","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build  --config vite.lib.config.ts && npm run build:types","build:lib":"vite build --config vite.lib.config.ts","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.5","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_1.0.0_1767259135501_0.647516819747213","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@abduljebar/pdf-reader","version":"1.0.1","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@1.0.1","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"20eea764fca5543514237fdc9a5e6a6bc10f38a4","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-1.0.1.tgz","fileCount":6,"integrity":"sha512-kMnRae7UkDbz3oD1A/ofXL5G4x7GC+NDDNcUVTnKW9Xj0Smh3kWeZP9DIMwDDiL+nMAMplCGZZHj7eNfajGTJg==","signatures":[{"sig":"MEQCIHzku8I/63vwXTA9Igx17OhF6stTF5rj4KvGFnIZ3zSZAiAZ+W4+XklcREIw2JDo+Mocbm1T559/E8dwBr0ZbFJTfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6261543},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e6ca7d14832e68495dd8a84320d46bc75d8a77f9","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build  --config vite.lib.config.ts && npm run build:types","build:lib":"vite build --config vite.lib.config.ts","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","@types/react":"^19.2.5","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_1.0.1_1767259430400_0.7198744096284577","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@abduljebar/pdf-reader","version":"1.0.2","keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","_id":"@abduljebar/pdf-reader@1.0.2","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"dist":{"shasum":"60c96529d09b5510f328c1c3017b8e61107f7635","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-1.0.2.tgz","fileCount":7,"integrity":"sha512-QOeCwpBHkK/FBmy+XNb8WFzLO4+er4edTkXIv6IynNwyzAfvVuiEh9Gq87BGDXkB1tQdIos2TLuVTiyIjvGx4A==","signatures":[{"sig":"MEUCIAhBCFAG/yepsjmV0ReDF0hgQYdPcYXdIfWeU6RIM6qaAiEA5beFCgWUB8Hr4u1twFiLxZNXU9I4YMUbtw5tGRsR6RU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6298521},"main":"./dist/index.js","type":"module","style":"./dist/index.css","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./dist/index.css":"./dist/index.css"},"gitHead":"e6ca7d14832e68495dd8a84320d46bc75d8a77f9","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc && vite build  --config vite.lib.config.ts && npm run build:types","build:lib":"vite build --config vite.lib.config.ts","build:types":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"repository":{"url":"git+https://github.com/Abduljebar49/Pdf-reader.git","type":"git"},"_npmVersion":"11.4.1","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","pdfjs-dist":"^5.4.394","tailwindcss":"^4.1.18","lucide-react":"^0.562.0","@tailwindcss/vite":"^4.1.18","@tailwindcss/postcss":"^4.1.18","@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^4.1.14","@types/react":"^19.2.5","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/pdf-reader_1.0.2_1767263479144_0.5836352403398941","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@abduljebar/pdf-reader","private":false,"version":"1.0.5","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","style":"./dist/index.css","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts","require":"./dist/index.js"},"./dist/index.css":"./dist/index.css"},"scripts":{"dev":"vite","build":"tsc && vite build  --config vite.lib.config.ts && npm run build:types","build:lib":"vite build --config vite.lib.config.ts","build:types":"tsc","lint":"eslint .","prepublishOnly":"npm run build"},"dependencies":{"@react-pdf-viewer/core":"^3.12.0","@react-pdf-viewer/default-layout":"^3.12.0","@react-pdf-viewer/scroll-mode":"^3.12.0","@tailwindcss/postcss":"^4.1.18","@tailwindcss/vite":"^4.1.18","lucide-react":"^0.562.0","pdfjs-dist":"^5.4.394","react":"^19.2.0","react-dom":"^19.2.0","react-pdf":"^10.2.0","tailwindcss":"^4.1.18"},"devDependencies":{"@eslint/js":"^9.39.1","@types/node":"^25.0.3","@types/react":"^19.2.5","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.1","autoprefixer":"^10.4.21","eslint":"^9.39.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","globals":"^16.5.0","postcss":"^8.5.6","tailwindcss":"^4.1.14","typescript":"~5.9.3","typescript-eslint":"^8.46.4","vite":"^7.2.4","vite-plugin-dts":"^4.5.4"},"keywords":["pdf","viewer","react","component","document","preview"],"author":{"name":"Abduljebar Sani"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Abduljebar49/Pdf-reader.git"},"bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"_id":"@abduljebar/pdf-reader@1.0.5","gitHead":"7ff2266249ca194659b2235300867d8a28ce3ab8","description":"A modern, feature-rich PDF viewer component built with React, TypeScript, and Vite. This library provides a responsive PDF viewing experience with extensive customization options.","homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","_nodeVersion":"22.14.0","_npmVersion":"11.4.1","dist":{"integrity":"sha512-3vrNZbT8n2Vl0CjbiIuNQrsReuEl7WHvVdgJR7jVkSfJbpweqTFOt+X7j1xI+ThOY31YMRJ/0OBsytw1zVtfKQ==","shasum":"3cb70d0f3721a040bde70d81b37f797e2c7c1978","tarball":"https://registry.npmjs.org/@abduljebar/pdf-reader/-/pdf-reader-1.0.5.tgz","fileCount":7,"unpackedSize":6424992,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBB905JptlcnDKD9cLZEF6+ppc076nrla6D2peCBLsfvAiA1NfNIoHS5eiwWDzRmMFTF1/qFCrWOGEVElGxrE2rrIA=="}]},"_npmUser":{"name":"abduljebar","email":"abduljebar49@gmail.com"},"directories":{},"maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdf-reader_1.0.5_1767273391649_0.390906088191157"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-31T12:33:56.442Z","modified":"2026-01-01T13:16:32.103Z","0.0.0":"2025-12-31T12:33:56.708Z","0.0.2":"2025-12-31T12:58:24.083Z","0.0.3":"2026-01-01T08:45:07.066Z","1.0.0":"2026-01-01T09:18:55.736Z","1.0.1":"2026-01-01T09:23:50.628Z","1.0.2":"2026-01-01T10:31:19.390Z","1.0.5":"2026-01-01T13:16:31.921Z"},"bugs":{"url":"https://github.com/Abduljebar49/Pdf-reader/issues"},"author":{"name":"Abduljebar Sani"},"license":"MIT","homepage":"https://github.com/Abduljebar49/Pdf-reader#readme","keywords":["pdf","viewer","react","component","document","preview"],"repository":{"type":"git","url":"git+https://github.com/Abduljebar49/Pdf-reader.git"},"description":"A modern, feature-rich PDF viewer component built with React, TypeScript, and Vite. This library provides a responsive PDF viewing experience with extensive customization options.","maintainers":[{"name":"abduljebar","email":"abduljebar49@gmail.com"}],"readme":"# React PDF Viewer Library\n\nA modern, feature-rich PDF viewer component built with React, TypeScript, and Vite. This library provides a responsive PDF viewing experience with extensive customization options.\n\n## ✨ Features\n\n### 📱 **Responsive Design**\n- Mobile-first approach with adaptive layouts\n- Touch-friendly controls with gesture support\n- Optimized for all screen sizes (mobile, tablet, desktop)\n- Bottom-sheet navigation on mobile devices\n\n### 🎨 **Customization**\n- Configurable toolbar with toggle options\n- Multiple view modes (vertical, horizontal, single page)\n- Custom sidebar panels (thumbnails, outline, annotations)\n- Theme support (light, dark, system)\n- Custom CSS classes for styling\n\n### 🔧 **Core Features**\n- High-performance PDF rendering with pdf.js\n- Zoom controls (in/out, fit to width, fit to page)\n- Page navigation with keyboard shortcuts\n- Search functionality\n- Print and download support\n- File upload with drag & drop\n- Smooth scrolling and transitions\n\n### 🎯 **UI/UX Enhancements**\n- Smooth animations and transitions\n- Loading states with skeleton screens\n- Error handling with recovery options\n- Accessible with ARIA labels\n- Keyboard navigation support\n- Touch gesture support\n\n## 📦 Installation\n\n```bash\nnpm install @your-library/pdf-viewer\n# or\nyarn add @your-library/pdf-viewer\n```\n\n## 🚀 Quick Start\n\n```tsx\nimport { PDFViewer } from '@your-library/pdf-viewer';\nimport '@your-library/pdf-viewer/dist/style.css';\n\nfunction App() {\n  return (\n    <div style={{ height: '100vh' }}>\n      <PDFViewer\n        pdfUrl=\"/document.pdf\"\n        config={{\n          enableDarkMode: true,\n          enableZoom: true,\n          enablePageNavigation: true,\n          defaultZoom: 1,\n          defaultScrollMode: 'vertical',\n          showThumbnails: true,\n          showOutline: true,\n        }}\n        theme=\"system\"\n        onPageChange={(page) => console.log('Page:', page)}\n        onZoomChange={(zoom) => console.log('Zoom:', zoom)}\n      />\n    </div>\n  );\n}\n```\n\n## 📖 Documentation\n\n### Basic Usage\n\n```tsx\nimport { PDFViewer } from '@your-library/pdf-viewer';\n\nfunction MyPDFViewer() {\n  return (\n    <PDFViewer\n      pdfUrl=\"https://example.com/document.pdf\"\n      config={{\n        enableDarkMode: true,\n        enableZoom: true,\n        enablePageNavigation: true,\n      }}\n    />\n  );\n}\n```\n\n### With File Upload\n\n```tsx\nfunction PDFUploadViewer() {\n  const [file, setFile] = useState<File | null>(null);\n\n  return (\n    <PDFViewer\n      file={file}\n      config={{\n        enableFileUpload: true,\n      }}\n      onFileSelect={(selectedFile) => {\n        setFile(selectedFile);\n        console.log('File selected:', selectedFile.name);\n      }}\n    />\n  );\n}\n```\n\n### Advanced Configuration\n\n```tsx\n<PDFViewer\n  pdfUrl=\"/document.pdf\"\n  config={{\n    // Feature toggles\n    enableDarkMode: true,\n    enableZoom: true,\n    enablePageNavigation: true,\n    enableViewModeToggle: true,\n    enableFileUpload: true,\n    enableSearch: true,\n    enablePrint: true,\n    enableDownload: true,\n    \n    // Display options\n    defaultZoom: 1,\n    minZoom: 0.25,\n    maxZoom: 3,\n    defaultScrollMode: 'vertical',\n    showThumbnails: true,\n    showOutline: true,\n    showAnnotations: false,\n    pageGap: 40,\n    \n    // UI/UX options\n    enableKeyboardNavigation: true,\n    enableSmoothScrolling: true,\n    showPageNumbers: true,\n    showDocumentTitle: true,\n  }}\n  \n  // Layout\n  showSidebar={true}\n  sidebarWidth={280}\n  sidebarPosition=\"left\"\n  \n  // Theme\n  theme=\"system\"\n  \n  // Callbacks\n  onLoad={(pdfDoc) => console.log('PDF loaded:', pdfDoc)}\n  onError={(error) => console.error('Error:', error)}\n  onPageChange={(page) => console.log('Page changed:', page)}\n  onZoomChange={(zoom) => console.log('Zoom changed:', zoom)}\n  \n  // Custom components\n  customToolbar={<MyCustomToolbar />}\n  customSidebar={<MyCustomSidebar />}\n  customLoadingComponent={<MyLoadingSpinner />}\n/>\n```\n\n## 🏗️ Component Architecture\n\n```\nsrc/\n├── components/\n│   ├── PDFViewer/\n│   │   ├── PDFViewer.tsx          # Main component\n│   │   ├── Sidebar.tsx            # Responsive sidebar\n│   │   ├── PDFDocument.tsx        # PDF rendering\n│   │   ├── ThumbnailsPanel.tsx    # Page thumbnails\n│   │   ├── OutlinePanel.tsx       # Document outline\n│   │   └── AnnotationsPanel.tsx   # Comments & highlights\n│   │\n│   └── Toolbar/\n│       ├── Toolbar.tsx            # Main toolbar\n│       ├── ZoomControls.tsx       # Zoom functionality\n│       ├── PageControls.tsx       # Page navigation\n│       ├── ViewModeToggle.tsx     # View mode switcher\n│       ├── DarkModeToggle.tsx     # Theme toggle\n│       ├── FileUpload.tsx         # File upload\n│       └── ResponsiveDropdown.tsx # Mobile dropdown\n│\n├── hooks/\n│   └── useMediaQuery.ts           # Responsive hooks\n│\n├── types/\n│   └── index.ts                   # TypeScript definitions\n│\n└── utils/\n    └── pdfWorker.ts              # PDF.js setup\n```\n\n## 🎨 Styling\n\nThe library uses Tailwind CSS for styling. You can customize the appearance by:\n\n1. **Overriding CSS variables:**\n```css\n:root {\n  --pdf-primary: #2563eb;\n  --pdf-secondary: #64748b;\n  --pdf-background: #ffffff;\n  --pdf-foreground: #1f2937;\n}\n```\n\n2. **Using custom classes:**\n```tsx\n<PDFViewer\n  className=\"my-custom-class\"\n  toolbarClassName=\"my-toolbar-class\"\n  sidebarClassName=\"my-sidebar-class\"\n  documentClassName=\"my-document-class\"\n/>\n```\n\n3. **Extending Tailwind config:**\n```javascript\n// tailwind.config.js\nmodule.exports = {\n  theme: {\n    extend: {\n      colors: {\n        'pdf-primary': '#2563eb',\n        'pdf-secondary': '#64748b',\n      },\n    },\n  },\n}\n```\n\n## 📱 Responsive Breakpoints\n\n| Device | Breakpoint | Features |\n|--------|------------|----------|\n| Mobile | < 768px | Bottom navigation, simplified controls, touch gestures |\n| Tablet | 768px - 1024px | Condensed toolbar, medium sidebar |\n| Desktop | > 1024px | Full toolbar, full sidebar, all features |\n\n## 🎯 Performance\n\n- **Lazy loading**: Components load on demand\n- **Virtual scrolling**: Only visible pages are rendered\n- **Image optimization**: Thumbnails use appropriate resolutions\n- **Memory management**: Proper cleanup of resources\n- **Bundle optimization**: Code splitting for faster loads\n\n## 🔧 Development\n\n### Prerequisites\n- Node.js 18+ \n- npm, yarn, or pnpm\n\n### Setup\n```bash\n# Clone the repository\ngit clone <repository-url>\ncd pdf-viewer-library\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Run tests\nnpm test\n\n# Lint code\nnpm run lint\n\n# Type checking\nnpm run type-check\n```\n\n### Project Structure\n```\n.\n├── src/                    # Source code\n├── dist/                   # Built files\n├── examples/               # Usage examples\n├── tests/                  # Test files\n├── docs/                   # Documentation\n└── package.json\n```\n\n### Building for Distribution\n```bash\n# Build library\nnpm run build:lib\n\n# Build documentation\nnpm run build:docs\n\n# Publish to npm\nnpm publish\n```\n\n## 🧪 Testing\n\n```bash\n# Run all tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run E2E tests\nnpm run test:e2e\n```\n\n## 📄 API Reference\n\n### PDFViewer Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `pdfUrl` | `string` | - | URL of the PDF to load |\n| `file` | `File` | - | PDF file object |\n| `config` | `PDFViewerConfig` | `{}` | Configuration object |\n| `theme` | `'light' | 'dark' | 'system'` | `'system'` | Theme mode |\n| `showSidebar` | `boolean` | `true` | Show/hide sidebar |\n| `sidebarWidth` | `number` | `240` | Sidebar width in pixels |\n| `sidebarPosition` | `'left' | 'right'` | `'left'` | Sidebar position |\n| `onLoad` | `function` | - | Called when PDF loads |\n| `onError` | `function` | - | Called on error |\n| `onPageChange` | `function` | - | Called when page changes |\n| `onZoomChange` | `function` | - | Called when zoom changes |\n\n### PDFViewerConfig\n\n```typescript\ninterface PDFViewerConfig {\n  // Feature toggles\n  enableDarkMode?: boolean;\n  enableZoom?: boolean;\n  enablePageNavigation?: boolean;\n  enableViewModeToggle?: boolean;\n  enableFileUpload?: boolean;\n  enableSearch?: boolean;\n  enablePrint?: boolean;\n  enableDownload?: boolean;\n  \n  // Display options\n  defaultZoom?: number;\n  minZoom?: number;\n  maxZoom?: number;\n  defaultScrollMode?: ScrollMode;\n  showThumbnails?: boolean;\n  showOutline?: boolean;\n  showAnnotations?: boolean;\n  pageGap?: number;\n  \n  // UI/UX options\n  enableKeyboardNavigation?: boolean;\n  enableSmoothScrolling?: boolean;\n  showPageNumbers?: boolean;\n  showDocumentTitle?: boolean;\n  \n  // Customization\n  className?: string;\n  toolbarClassName?: string;\n  sidebarClassName?: string;\n  documentClassName?: string;\n}\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n- Follow TypeScript best practices\n- Write comprehensive tests\n- Document new features\n- Update README when necessary\n- Follow the existing code style\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [PDF.js](https://mozilla.github.io/pdf.js/) - PDF rendering engine\n- [Lucide React](https://lucide.dev/) - Beautiful icons\n- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework\n\n## 📞 Support\n\n<!-- - **Documentation**: [Read the docs](https://your-library/docs) -->\n- **Issues**: [GitHub Issues](https://github.com/abduljebar49/pdf-viewer/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/abduljebar49/pdf-viewer/discussions)\n- **Email**: abduljebar49@gmail.com\n\n## 🚀 Roadmap\n\n- [ ] Text selection and copying\n- [ ] Annotation creation and editing\n- [ ] Form filling support\n- [ ] PDF/A compliance\n- [ ] Multi-language support\n- [ ] Plugin system\n- [ ] Offline support\n- [ ] Cloud storage integration\n\n---\n\nMade with ❤️ by Abduljebar Sani","readmeFilename":"README.md"}