{"_id":"@whereq/react","_rev":"7-3e30338f9edcfa173aa676c87b5d0b6d","name":"@whereq/react","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@whereq/react","version":"0.1.0","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.1.0","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"9dc69c1f9de6dcbf8f5c7b89f006a6eb7f47b7c9","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.1.0.tgz","fileCount":9,"integrity":"sha512-+rcLG0pUKJbhikyOPstRKvtR4/Eh9zfp6xVFH9EZUEJtrPrIjdn0RwcPd4IcG0YisrlZmqzenvYhJ2H+zIJ96w==","signatures":[{"sig":"MEQCIB3CrvQ0+15+tzGbVEJpZL+KjlQLkye6WOnqnKcMl7F5AiASCz77r34kGI2pNpGUFF0oSzWvKN4LkZdJfVhkqdlgOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66069},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/47ed8790083021d2597dc405ef36a345/whereq-react-0.1.0.tgz","_integrity":"sha512-+rcLG0pUKJbhikyOPstRKvtR4/Eh9zfp6xVFH9EZUEJtrPrIjdn0RwcPd4IcG0YisrlZmqzenvYhJ2H+zIJ96w==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"11.11.0","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.1.0_1789488814492_0.4661983843920927","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@whereq/react","version":"0.3.0","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.3.0","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"2685442052cee649bb729619b50a192998f3e5c4","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.3.0.tgz","fileCount":9,"integrity":"sha512-s2bix/KVUoX5VQ4MOfa3Lgp6yHMWj3brWNt2AfcP0zW71nhXC78de3uB8xanR4g3a6yUvSwy4VpmMiAQAKUe7g==","signatures":[{"sig":"MEUCIFySnGS2qBSK0xQX/ODA/EyzjzD1emyWHFTWWO0nExA8AiEA1uCXE8eXUoVQ9ExB3di9d0iOpe3/jiLJ+SXdvrz2PlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBRNdOuBH5L+w484oV34/fU4dT+oM9TJCsnX0cPehkV2AiEAhyTvuCTvKuP0CZ9j2GMRi8w96y6RhnNZLROFlX74baY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266333},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/894be3a7b47cc5a97da5a1ea4fd7e5d9/whereq-react-0.3.0.tgz","_integrity":"sha512-s2bix/KVUoX5VQ4MOfa3Lgp6yHMWj3brWNt2AfcP0zW71nhXC78de3uB8xanR4g3a6yUvSwy4VpmMiAQAKUe7g==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.3.0_1790392488038_0.46966731641123505","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@whereq/react","version":"0.4.0","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.4.0","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"a5c5d2201a3d877ae6fe9baf83ab5ce0bdba4d4b","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.4.0.tgz","fileCount":9,"integrity":"sha512-FLWgqt3eZeAEB1QVvRI3RTwJi54tP5CfjkLgb2voBA7EtJrqNarF82HTCe4bFbC7+q2s4HTMJ8SjoHrGPH4Jag==","signatures":[{"sig":"MEQCIAHw0E+RNrr0wFWrRAfajiibe/IxSbFpzjvH0ByQ2qv9AiBm5S/ib6ufxz/qHbTkOVU0Y9YmZQQ9JfRpEQQUEE/X5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIELRdYrcO7ZtrdtLm4a+CeHsubUaNpURqDlEa3OzILuQAiEA3qRsTf5wvPNBlYBkltjts7+yAoAbC5CdC4KwoTw/RwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":290589},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/28168fbdd7507d985aebaadfbaddbe57/whereq-react-0.4.0.tgz","_integrity":"sha512-FLWgqt3eZeAEB1QVvRI3RTwJi54tP5CfjkLgb2voBA7EtJrqNarF82HTCe4bFbC7+q2s4HTMJ8SjoHrGPH4Jag==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.4.0_1790565755440_0.8226047086366624","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@whereq/react","version":"0.4.1","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.4.1","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"3b71eabf5486c54de5fc9d8de333b8fff8b054e9","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.4.1.tgz","fileCount":9,"integrity":"sha512-fIpmdTVF+yKChy9bZKVBhmDL0iSP0E445+etgCSsLxL0ZP7LS5Ymo2jUhR4Hs4Yw1/2MCBBPSVi/ofifmXS2sw==","signatures":[{"sig":"MEUCIQCP5TgFLZ+PwsBG9gwxbziERyYyOWAahijBOQS2gb7rzwIgLQ2JneHJ7CTodystFs6iUzrN2V+c94QFu7n1SGsVmVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHnnL0HbaMj0NRn6DYAON8tYIAJkVnF+J5VGFzMDo4sMAiEA9Zg0W9HMGzeIx+oua9o7Jxn+zGJf73PJcsCdyXDt9E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291187},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.4.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/5f3891f6841c9cb9dcb8a84274ad3fbe/whereq-react-0.4.1.tgz","_integrity":"sha512-fIpmdTVF+yKChy9bZKVBhmDL0iSP0E445+etgCSsLxL0ZP7LS5Ymo2jUhR4Hs4Yw1/2MCBBPSVi/ofifmXS2sw==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.4.1_1790568910096_0.610121440277317","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@whereq/react","version":"0.4.2","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.4.2","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"34beffad8910c660bf9307591b347b55fa5fedcf","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.4.2.tgz","fileCount":9,"integrity":"sha512-JD73OPcupmqytWZEy96EgjOYk0ib+avsrzLpSperHrtO6+Qr8v2OJEPS3Du1mwL8Rl2XW42nmdR7IlbAdpJu3Q==","signatures":[{"sig":"MEUCICUI8+F1unfl7ywEhsKZrl3HEC/ZW2v1Aid6YwQ84hG0AiEAl8DNpp3m9W2WzrMNIBi/WVvIlhG2ifyMoxaee4rB/6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHm9xy0KcQMHAIZceEVb3OVbJDdmP7dHAd8ughK8YMVMAiEA0CGROcHNRhvVXezcLUfmyayd0+uED0zjB7ro3yz3OQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":296438},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.4.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","verify":"pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check \"src/**/*.{ts,tsx,css,md}\"","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/5440a0c3f127429a133741bb3afc2a73/whereq-react-0.4.2.tgz","_integrity":"sha512-JD73OPcupmqytWZEy96EgjOYk0ib+avsrzLpSperHrtO6+Qr8v2OJEPS3Du1mwL8Rl2XW42nmdR7IlbAdpJu3Q==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.4.2_1790655590910_0.006509735483855472","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@whereq/react","version":"0.6.0","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"author":{"name":"WhereQ"},"license":"MIT","_id":"@whereq/react@0.6.0","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"homepage":"https://github.com/whereq/whereq-react#readme","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"97b7c1a9f2847ee385441ce841491e2c15dfcb05","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.6.0.tgz","fileCount":9,"integrity":"sha512-DOVLYXnMhPcOo34Lv76WOc+/UMHfnazHGdIw0D0Mnr8/aZ6TqFFbvWUQWpUcsbXbkA4jZPgqyXSKrxOio7sVeg==","signatures":[{"sig":"MEUCIQCpMMn7pMtUqvB5uT+r1BxK4Oh47f454AgIC3BmZX5+kwIgN5bCO2IER2B5wp/qQnL3xq6cvFuIyYlQdsf+G3+6Dyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDblpTXet9mg88vbkNh286pxMODeWVDMJyeofshk8W6mAIgdBgvnnwS1576xsTzTDKcufAz28q/jJ5g30RZWkuvb14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":297444},"main":"./dist/index.cjs","type":"module","_from":"file:whereq-react-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","verify":"pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check \"src/**/*.{ts,tsx,css,md}\"","build-storybook":"storybook build -o storybook-static"},"_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"_resolved":"/tmp/c1b0ebf2813d13c0e08163f8555111bb/whereq-react-0.6.0.tgz","_integrity":"sha512-DOVLYXnMhPcOo34Lv76WOc+/UMHfnazHGdIw0D0Mnr8/aZ6TqFFbvWUQWpUcsbXbkA4jZPgqyXSKrxOio7sVeg==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/react_0.6.0_1790708328090_0.20085430611546018","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@whereq/react@0.7.0","bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"dist":{"shasum":"8e30942769a2c72b967fcae412dc36cb552f9dc0","tarball":"https://registry.npmjs.org/@whereq/react/-/react-0.7.0.tgz","fileCount":9,"integrity":"sha512-SDmFifl+3BjRcBU3EAduy3h4QS8QAGtVnw5hReuTiZrL5s7zGJbF9xg593XYfDThuEcAFnpoPGThJ6pXsC1R7A==","signatures":[{"sig":"MEUCIBdCAQAw4bP/bXqN9uH5zm6ywpVLOnzWnwXVRfNBqGi/AiEAyfd5qzjZTC6OC6BCz2WuwBbk8vGqH3l26z2acOXQJQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCo8IQX1S/7dTajm86QBwA/C0s0WOL9HLqrrG8CAC3LXAIhAJJ3yqdfATHVNXw3ZDVKI/xn6up7rgyxeXtD/8tbgFn8"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@whereq%2freact@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":297444},"main":"./dist/index.cjs","name":"@whereq/react","type":"module","_from":"file:whereq-react-0.7.0.tgz","types":"./dist/index.d.ts","author":{"name":"WhereQ"},"module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"license":"MIT","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup && node scripts/prepend-use-client.mjs","clean":"rm -rf dist storybook-static docs/.vitepress/dist node_modules/.cache","format":"prettier --write \"src/**/*.{ts,tsx,css,md}\"","verify":"pnpm run typecheck && pnpm run lint && pnpm run test && pnpm run build","release":"pnpm run build && changeset publish","docs:dev":"vitepress dev docs","storybook":"storybook dev -p 6006","typecheck":"tsc --noEmit","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check \"src/**/*.{ts,tsx,css,md}\"","build-storybook":"storybook build -o storybook-static"},"version":"0.7.0","_npmUser":{"name":"whereq","email":"whereq@gmail.com"},"homepage":"https://github.com/whereq/whereq-react#readme","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"_resolved":"/tmp/aed07ce16a937bb1b0b7050c7b49981e/whereq-react-0.7.0.tgz","_integrity":"sha512-SDmFifl+3BjRcBU3EAduy3h4QS8QAGtVnw5hReuTiZrL5s7zGJbF9xg593XYfDThuEcAFnpoPGThJ6pXsC1R7A==","repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"_npmVersion":"10.8.2","description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","directories":{},"maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vite":"^6.0.0","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","prettier":"^3.4.2","react-dom":"^19.0.0","storybook":"^8.5.0","vitepress":"^1.5.0","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/react":"^19.0.2","@changesets/cli":"^2.27.10","@storybook/react":"^8.5.0","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@storybook/react-vite":"^8.5.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@typescript-eslint/parser":"^8.18.1","eslint-plugin-react-hooks":"^5.1.0","@storybook/addon-essentials":"^8.5.0","@typescript-eslint/eslint-plugin":"^8.18.1"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react_0.7.0_1790726424013_0.5960147414916186"}}},"time":{"created":"2026-09-15T16:13:34.248Z","modified":"2026-09-30T00:00:25.412Z","0.1.0":"2026-09-15T16:13:34.801Z","0.3.0":"2026-09-26T03:14:48.150Z","0.4.0":"2026-09-28T03:22:35.555Z","0.4.1":"2026-09-28T04:15:10.232Z","0.4.2":"2026-09-29T04:19:50.997Z","0.6.0":"2026-09-29T18:58:48.224Z","0.7.0":"2026-09-30T00:00:24.111Z"},"bugs":{"url":"https://github.com/whereq/whereq-react/issues"},"author":{"name":"WhereQ"},"license":"MIT","homepage":"https://github.com/whereq/whereq-react#readme","keywords":["react","component","components","ui","scrollbar","custom-scrollbar","thin-scrollbar","typescript","whereq"],"repository":{"url":"git+https://github.com/whereq/whereq-react.git","type":"git"},"description":"WhereQ's open-source React component library. Lightweight, accessible, themeable UI primitives — starting with a beautiful thin Scrollbar.","maintainers":[{"name":"whereq","email":"whereq@gmail.com"}],"readme":"<div align=\"center\">\n\n# @whereq/react\n\n**WhereQ's open-source React component library.**\nLightweight, accessible, themeable UI primitives — a thin **Scrollbar**, a generic **Avatar**, an inline-SVG **CountryFlag**, a multi-variant **Tag**, and a portal-style **Toast**.\n\n[![npm version](https://img.shields.io/npm/v/@whereq/react.svg)](https://www.npmjs.com/package/@whereq/react)\n[![npm downloads](https://img.shields.io/npm/dm/@whereq/react.svg)](https://www.npmjs.com/package/@whereq/react)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/@whereq/react)](https://bundlephobia.com/package/@whereq/react)\n[![license](https://img.shields.io/npm/l/@whereq/react.svg)](./LICENSE)\n[![types](https://img.shields.io/npm/types/@whereq/react.svg)](https://www.npmjs.com/package/@whereq/react)\n[![CI](https://github.com/whereq/whereq-react/actions/workflows/ci.yml/badge.svg)](https://github.com/whereq/whereq-react/actions/workflows/ci.yml)\n\n📖 [Docs](https://whereq.github.io/whereq-react/) · 🧪 [Storybook](https://whereq.github.io/whereq-react/storybook/)\n\n</div>\n\n---\n\nThe `Scrollbar` was extracted from [whereq.cc](https://whereq.cc), our privacy-first\nphoto gallery. It styles the **native** scrollbar — no scroll hijacking — so wheel,\nkeyboard, touch, and accessibility all keep working, with zero runtime scroll math.\n\n- 🪶 **Tiny & dependency-free** — one `<div>`, native scrollbars, a few bytes of CSS.\n- 🎨 **Themeable** — light/dark/auto presets, or full control via colour props / CSS variables.\n- 🌗 **Auto light-dark** — the default adapts to the page's `color-scheme`.\n- 🙈 **Auto-hide** — optionally reveal the thumb only on hover / while scrolling.\n- ♿ **Accessible & native** — real scrollbars, real keyboard & screen-reader behaviour.\n- 🧩 **SSR-safe & RSC-ready** — ships a `\"use client\"` boundary; styles inject before paint.\n- 🔔 **Toasts included** — built-in ToastProvider + imperative `toast.error(\"…\")` API with 4 variants and 6 positions.\n- 🔠 **First-class TypeScript** — full types, ESM + CJS.\n\n## Install\n\n```bash\nnpm install @whereq/react\n# or\npnpm add @whereq/react\n# or\nyarn add @whereq/react\n```\n\n> `react >= 18` is a peer dependency.\n\n## Usage\n\n### `<Scrollbar>` — a scoped scroll container\n\n```tsx\nimport { Scrollbar } from '@whereq/react'\n\nexport function Sidebar() {\n  return (\n    <Scrollbar style={{ maxHeight: 320 }}>\n      {/* any tall content */}\n      <ul>{/* … */}</ul>\n    </Scrollbar>\n  )\n}\n```\n\nAuto-hide + a thicker, rounded thumb, adapting to light/dark:\n\n```tsx\n<Scrollbar autoHide size={8} theme=\"auto\" style={{ maxHeight: '70vh' }}>\n  <Content />\n</Scrollbar>\n```\n\nHorizontal, with custom colours:\n\n```tsx\n<Scrollbar axis=\"horizontal\" thumbColor=\"#17a2ae\" thumbHoverColor=\"#0f7f89\">\n  <Row />\n</Scrollbar>\n```\n\n### `<GlobalScrollbar>` — style every scrollbar on the page\n\nReproduces the whereq.cc app-wide look. Mount it once near your root; it renders nothing.\n\n```tsx\nimport { GlobalScrollbar } from '@whereq/react'\n\nexport function App() {\n  return (\n    <>\n      <GlobalScrollbar theme=\"auto\" size={6} />\n      <Routes />\n    </>\n  )\n}\n```\n\nPrefer an imperative call (e.g. outside React)? Use `injectGlobalScrollbarStyles`:\n\n```ts\nimport { injectGlobalScrollbarStyles } from '@whereq/react'\n\nconst cleanup = injectGlobalScrollbarStyles({ theme: 'dark', size: 6 })\n// cleanup() removes the styles\n```\n\n### `<Avatar>` — image, with a graceful initials fallback\n\n```tsx\nimport { Avatar, AvatarGroup } from '@whereq/react'\n\n// Image; falls back to initials on a name-derived colour if it 404s.\n;<Avatar src=\"/users/ada.jpg\" name=\"Ada Lovelace\" status=\"online\" />\n\n// No image → deterministic initials chip.\n;<Avatar name=\"Grace Hopper\" />\n\n// Head-crop a portrait so the face fills the circle, with a ring.\n;<Avatar src=\"/mascot.png\" name=\"Q\" position=\"top\" ring=\"#e4e8ee\" ringWidth={2} />\n\n// Overlapping stack with a +N overflow chip.\n;<AvatarGroup size={32} max={3}>\n  <Avatar src=\"/a.jpg\" name=\"Ada\" />\n  <Avatar src=\"/b.jpg\" name=\"Ben\" />\n  <Avatar name=\"Cai\" />\n  <Avatar name=\"Dee\" />\n</AvatarGroup>\n```\n\n## API\n\n### `<Scrollbar>` props\n\nExtends `React.HTMLAttributes<HTMLDivElement>` (so `className`, `style`, `onScroll`, `ref`, … all work).\n\n| Prop              | Type                                          | Default      | Description                                                        |\n| ----------------- | --------------------------------------------- | ------------ | ----------------------------------------------------------------- |\n| `axis`            | `'vertical' \\| 'horizontal' \\| 'both'`        | `'vertical'` | Which axis may scroll.                                             |\n| `size`            | `number`                                      | `6`          | Thumb/track thickness in px.                                      |\n| `radius`          | `number`                                      | `size / 2`   | Thumb corner radius in px.                                        |\n| `theme`           | `'auto' \\| 'dark' \\| 'light' \\| 'neutral'`    | `'auto'`     | Colour preset (see [Theming](#theming)).                          |\n| `thumbColor`      | `string`                                      | theme value  | Override the thumb colour.                                        |\n| `thumbHoverColor` | `string`                                      | theme value  | Override the thumb hover colour.                                  |\n| `trackColor`      | `string`                                      | `transparent`| Override the track colour.                                        |\n| `autoHide`        | `boolean`                                     | `false`      | Reveal the thumb only on hover / while scrolling (webkit).        |\n| `autoHideDelay`   | `number`                                      | `1000`       | ms the thumb stays after scrolling stops.                        |\n| `firefoxWidth`    | `'auto' \\| 'thin' \\| 'none'`                  | `'thin'`     | Firefox `scrollbar-width` keyword.                               |\n\n### `<Avatar>` props\n\nExtends `React.HTMLAttributes<HTMLSpanElement>` (minus `color`). Full table in the\n[Avatar docs](https://whereq.github.io/whereq-react/components/avatar).\n\n| Prop        | Type                                        | Default    | Description                                              |\n| ----------- | ------------------------------------------- | ---------- | ------------------------------------------------------- |\n| `src`       | `string`                                    | —          | Image URL; falls back to initials if missing / errors.  |\n| `name`      | `string`                                    | —          | Drives auto-initials, the colour and the a11y label.    |\n| `size`      | `number`                                    | `40`       | Diameter in px.                                         |\n| `shape`     | `'circle' \\| 'rounded' \\| 'square'`         | `'circle'` | Outline shape.                                          |\n| `position`  | `CSSProperties['objectPosition']`           | `'center'` | Image `object-position` — use `'top'` to head-crop.     |\n| `ring`      | `string`                                    | —          | Inset ring colour (`ringWidth` px, default `1`).        |\n| `status`    | `'online' \\| 'offline' \\| 'busy' \\| 'away'` | —          | Presence dot in the corner.                            |\n\n`<AvatarGroup>` overlaps children (`size`, `max`, `spacing`, `ring`, `shape`).\n\n### Exports\n\n- `Scrollbar`, `GlobalScrollbar`\n- `injectGlobalScrollbarStyles(options)` → cleanup fn\n- `buildGlobalScrollbarCss(options)` → CSS string (for SSR / manual `<style>`)\n- `ensureScrollbarStyles()`, `resolveColors(theme, overrides)`, `scrollbarCss`, `SCROLLBAR_CLASS`\n- `Avatar`, `AvatarGroup`\n- `initialsFromName(name, max?)`, `colorFromName(name, palette?)`, `radiusFor(shape, size)`, `AVATAR_PALETTE`, `STATUS_COLORS`\n- `CountryFlag` — props: `country` (ISO 3166-1 alpha-2), `size`, `shape`, `fit`, `className`, `alt`\n- `lookupFlag(slug)`, `isSupported(slug)`, `FLAG_CATALOG`, `SUPPORTED_SLUGS`, `FLAG_VIEWBOX`, `star5(cx, cy, r)`\n- `Tag`, `TagImpl<T>` — props: `variant` (subtle/solid/dot/link), `size` (sm/md), `as` (span/a/button/div), `solidColor`, `dotColor`, `className`, `children`\n- `tagClasses(variant?, size?, dotColor?, solidColor?)` — pure helper\n- `toast` (imperative handle), `ToastProvider`, `ToastViewport`, `useToast` / `useToastContext`\n- Types: `ScrollbarProps`, `ScrollbarAxis`, `ScrollbarTheme`, `ScrollbarColors`, `ScrollbarStyleOptions`, `FirefoxScrollbarWidth`, `GlobalScrollbarOptions`, `AvatarProps`, `AvatarGroupProps`, `AvatarShape`, `AvatarStatus`, `CountryFlagProps`, `CountryFlagShape`, `CountryFlagFit`, `CountrySlug`, `TagProps`, `TagPropsDefault`, `TagVariant`, `TagSize`, `TagAs`, `ToastApi`, `ToastItem`, `ToastOptions`, `ToastPosition`, `ToastVariant`, `ToastViewportProps`, `ToastContextValue`\n\n## Theming\n\nColours are driven by CSS custom properties, so you can theme with props **or** with plain CSS.\n\n- **`theme=\"auto\"` (default)** — uses the CSS [`light-dark()`](https://developer.mozilla.org/docs/Web/CSS/color_value/light-dark) function and matches whereq.cc exactly on both schemes. For it to adapt, declare a `color-scheme` on your page (e.g. `:root { color-scheme: light dark }`). If none is declared it falls back to the light value.\n- **`theme=\"dark\" | \"light\"`** — explicit whereq.cc palette values.\n- **`theme=\"neutral\"`** — a translucent grey that's visible on any background, even without `color-scheme`.\n\nOverride individual tokens per instance:\n\n```tsx\n<Scrollbar thumbColor=\"rgba(23,162,174,.5)\" thumbHoverColor=\"rgba(23,162,174,.8)\" />\n```\n\n…or globally with CSS (the component reads these variables):\n\n```css\n.wq-scrollbar {\n  --wq-sb-thumb: rgba(255, 255, 255, 0.1);\n  --wq-sb-thumb-hover: rgba(255, 255, 255, 0.2);\n  --wq-sb-size: 6px;\n}\n```\n\n## Browser support\n\nNative scrollbar styling: Chromium/Safari via `::-webkit-scrollbar`, Firefox via\n`scrollbar-width` + `scrollbar-color`. `autoHide`'s per-state thumb reveal is a\nwebkit enhancement; Firefox shows the thin scrollbar consistently.\n\n## Docs & playground\n\n- 📖 **Docs** — https://whereq.github.io/whereq-react/\n- 🧪 **Storybook** — https://whereq.github.io/whereq-react/storybook/ (`pnpm storybook` locally)\n- 🖼️ A zero-build demo lives at [`examples/demo.html`](./examples/demo.html).\n\n## Contributing & releasing\n\nIssues and PRs welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md). We ship from a\n`dev` → `main` → tag pipeline; see [RELEASING.md](./RELEASING.md). This is the first\ncomponent in WhereQ's frontend library; more primitives are on the way.\n\n## License\n\n[MIT](./LICENSE) © WhereQ\n","readmeFilename":"README.md"}