{"_id":"@aiquants/resize-panels","_rev":"18-edf24a3757c09a6f00edb54dd5444211","name":"@aiquants/resize-panels","dist-tags":{"latest":"2.0.1"},"versions":{"0.2.0":{"name":"@aiquants/resize-panels","version":"0.2.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@0.2.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"a6420857ac87ef6adb7a801bc48992d2097e8fb5","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-0.2.0.tgz","fileCount":29,"integrity":"sha512-5fkpfZ8qLR79r5/hincP9pwCGROJBvMci/98JUt6mXaHOXeO5qUw8w7QPjJXM75lCB5ksoDLVUnUufgtyfhgFA==","signatures":[{"sig":"MEUCIG3ZJRYj2fEcMJz1KAlxahOf/teDgKQGdKEcB5cB1lI1AiEAl/Q3Jcp6h37ZIMjv6F1b3E0XSw/AAUTyb4R8QW3PM9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299887},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./css":"./dist/resize-panels.css"},"gitHead":"d56dc9cf85090a24b8d50c340b81bcb906553855","scripts":{"dev":"vite build --watch","build":"vite build","clean":"rimraf dist","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.16","tailwind-merge":"^3.3.1","@tailwindcss/postcss":"^4.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","react":"^19.2.0","rimraf":"^6.0.1","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.2","vite-plugin-dts":"^3.9.1","@types/react-dom":"^19.2.2","@tailwindcss/vite":"^4.1.16","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_0.2.0_1761640900510_0.214510000761037","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aiquants/resize-panels","version":"0.3.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@0.3.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"b4d77fe5623e7a266edf103304500eb865914da4","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-0.3.0.tgz","fileCount":29,"integrity":"sha512-4JRjXiJH2VenFFILYaY5Iz9Mxyv8f/axkQ5iHoipuB+L6xiuzrHoU4omjpUdXOCAZGlEBQkIpuJb9jD5xZdmUQ==","signatures":[{"sig":"MEYCIQC0bQVn+aAKrn/mh5Sywy0E2qeICrXssHEDYD741QwXmQIhAOI6l1PJCNGcjGHAPa7eAJ9nLNwsD5fb4TEnNv2Nraj0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300081},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./resize-panels.css":"./dist/resize-panels.css"},"gitHead":"ad3c363ea5542915068996c82d881b5d68aed0b2","scripts":{"dev":"vite build --watch","build":"vite build","clean":"rimraf dist","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.16","tailwind-merge":"^3.3.1","@tailwindcss/postcss":"^4.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","react":"^19.2.0","rimraf":"^6.0.1","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.2","vite-plugin-dts":"^3.9.1","@types/react-dom":"^19.2.2","@tailwindcss/vite":"^4.1.16","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_0.3.0_1761818783118_0.0776534849579198","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aiquants/resize-panels","version":"0.4.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@0.4.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"a0ec1eb33484fc195fa81dddc12516e00b65ab9b","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-0.4.0.tgz","fileCount":29,"integrity":"sha512-shmC3Bp5xKXfGrOVdpc3BwCtz4K5rEcGIKew2+s8eS3AD5M+H88WoVAFYCyeqFug7Waqqg7oBcaPuhEs3JtsqQ==","signatures":[{"sig":"MEUCIQCWxdvBgREtAPGIK3eD87WY45pOvmz2FrBHr/lDYRuh8AIga5/XYbPmqsRCGP9KP2q9al+rdqX51K/fr6+GxaQrODg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328630},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./resize-panels.css":"./dist/resize-panels.css"},"gitHead":"57e8c71900b527275756971c5fbe83a316af3c36","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build","clean":"rimraf dist","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.16","tailwind-merge":"^3.3.1","@tailwindcss/postcss":"^4.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.0","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.2","vite-plugin-dts":"^3.9.1","@types/react-dom":"^19.2.2","@tailwindcss/vite":"^4.1.16","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_0.4.0_1762597676975_0.8725742274453885","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aiquants/resize-panels","version":"1.0.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.0.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"18594c148fc2e760176d3c387989b48a8750873a","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.0.0.tgz","fileCount":29,"integrity":"sha512-RkWlHmhUlH4P8jvTHpTe+r6QkNvCR+2BEI1J9Gpe8TCL6kyQzlZyopulw4LVXBdo9WjCvTa1BneyieCgljoMCQ==","signatures":[{"sig":"MEUCIGs4nHGMvyo7MqGuo916DL7mMYusgOXP7zM8rMDBesdKAiEAjPsV4v3fOhWkj3rzHaMMMuO0q3V818dWJAnM/Ko5b1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328630},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./resize-panels.css":"./dist/resize-panels.css"},"gitHead":"57e8c71900b527275756971c5fbe83a316af3c36","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build","clean":"rimraf dist","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.16","tailwind-merge":"^3.3.1","@tailwindcss/postcss":"^4.1.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.0","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.2","vite-plugin-dts":"^3.9.1","@types/react-dom":"^19.2.2","@tailwindcss/vite":"^4.1.16","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.0.0_1762597907615_0.8645925742098262","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aiquants/resize-panels","version":"1.1.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.1.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"e8125953abd9b90b1cd70f5a91322dbf2460f34f","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.1.0.tgz","fileCount":29,"integrity":"sha512-KvTMVQbw1lOWls0pymdaDO4EASIXhvVYE6FuDkia8qw2KU7GeFq2sp6B/CNQ7Vy58ejnaSrJlHoc/aCcHYy4CA==","signatures":[{"sig":"MEQCIDI9WnsL891vo/7vzAfBfLeldWQhA8/48HQZG7z/4LR0AiBEl2/ohiVBRmDgtnd27hyJkXlYeYR80/VAYjy+fx8CPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327575},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./resize-panels.css":"./dist/resize-panels.css"},"gitHead":"7bb81cbfac7220080e5e5d9aa56c6ee541d1aba0","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build","clean":"rimraf dist","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.17","tailwind-merge":"^3.3.1","@tailwindcss/postcss":"^4.1.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.0","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.2","vite-plugin-dts":"^3.9.1","@types/react-dom":"^19.2.2","@tailwindcss/vite":"^4.1.17","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.1.0_1762647827955_0.5684928045195359","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aiquants/resize-panels","version":"1.2.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.2.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"073ec31ffbdcb349ada2718d907c5a0363379df3","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.2.0.tgz","fileCount":30,"integrity":"sha512-JiRdr10PNvFVi0b9WfrGH75wxUHyKvJT/z0IymLF0yEbcZirQgTTswQrWNXUkUspE877xtLj1rCNVsF/D+s/Mg==","signatures":[{"sig":"MEUCICvfJ24D62GC8DbsHEVMfdCzwPLsxATgGJSoLt8+V/MQAiEA/L+e/hNQjYaZwJyobqdmp6v9htfACAy6XnL2VV9zHLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352769},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"gitHead":"e829d852d1249528830adfe51be07fe36ac55eb2","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde-k","email":"owner@aiquants.co.jp"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.17","tailwind-merge":"^3.4.0","@tailwindcss/postcss":"^4.1.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.6","vite-plugin-dts":"^3.9.1","@tailwindcss/cli":"^4.1.17","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.17","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.2.0_1764034258277_0.42622701374310434","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aiquants/resize-panels","version":"1.3.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.3.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"0b451f16a2577afa7ac948b57733af12d85cb0a9","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.3.0.tgz","fileCount":30,"integrity":"sha512-MW1kHnf8GlQFnHBYrE2LkUPKEPc5HGj1Qkdf2oGIABInFiXkhzdy3lUsKSWQrZ/Qnym12+OLEVXXqM+AMRQCLA==","signatures":[{"sig":"MEUCIQCCEQaRDC9hgEtDzoRA6KxI4tnNXHmY6dWxXXbUou6J4wIgNC+iesgk72UUckJimIJc0u9rOOmAxAymZYWouX8BBF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351550},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"gitHead":"92a72d90bacfc31d887e5e961bf9c2edb9e59a9f","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde-k","email":"owner@aiquants.co.jp"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.17","tailwind-merge":"^3.4.0","@tailwindcss/postcss":"^4.1.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.6","vite-plugin-dts":"^3.9.1","@tailwindcss/cli":"^4.1.17","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.17","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.3.0_1764983311585_0.30081317363393567","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aiquants/resize-panels","version":"1.4.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.4.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"3dd607e3bffc7515955d59fb708946fdbc128001","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.4.0.tgz","fileCount":30,"integrity":"sha512-TTdh6wLR4hSXUVlBhL5qMwvsLdgofy+rd1FtMBrNJQcI8U1jLOorHJrQx2GCENHARSLo20OPMiIsszen7/GGjA==","signatures":[{"sig":"MEYCIQC/zhp1by9Q4+H0LJM7dd1fG0bBTRuMRSAOc52v3JvVrAIhAMQjRqaCW4HFySrlTOicSgPRKdd3sO01Xf+L6eyS8mst","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351204},"main":"dist/index.umd.js","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"gitHead":"5cdf3f5c977092d49de1b08f0656db7977cd364a","scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && npm publish","publish:minor":"npm version minor && npm publish","publish:patch":"npm version patch && npm publish","prepublishOnly":"npm run clean && npm run typecheck && npm run test --if-present && npm run build","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde-k","email":"owner@aiquants.co.jp"},"_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.17","tailwind-merge":"^3.4.0","@tailwindcss/postcss":"^4.1.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","jsdom":"^26.1.0","react":"^19.2.0","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.3","@types/react":"^19.2.6","vite-plugin-dts":"^3.9.1","@tailwindcss/cli":"^4.1.17","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.17","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.4.0_1764984079246_0.7681172102682139","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@aiquants/resize-panels","version":"1.5.1","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.5.1","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"eb322aab8f390a0d793c79c30ddaffcdb3d846f8","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.5.1.tgz","fileCount":30,"integrity":"sha512-k9d/YlKw5xP/dfkJyaJNwhxFdgoMHVNU6cfuffIlGPdHimrdyZMxxKKkpDx/TyqYl3pBbHlcUOjmGANRP6ZOvA==","signatures":[{"sig":"MEQCIE/L1o8VYBbwGaoTMUMlWAqisYKDWKFNXw111pO3I97bAiApB4OM2fChGlJ08HPBMXgNMXymGr9usIRa74KM7jA3sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351136},"main":"dist/index.umd.js","_from":"file:aiquants-resize-panels-1.5.1.tgz","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && pnpm publish --no-git-checks","publish:minor":"npm version minor && pnpm publish --no-git-checks","publish:patch":"npm version patch && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"_resolved":"/tmp/91d85627e6b2a6305dcfc74b53f37c21/aiquants-resize-panels-1.5.1.tgz","_integrity":"sha512-k9d/YlKw5xP/dfkJyaJNwhxFdgoMHVNU6cfuffIlGPdHimrdyZMxxKKkpDx/TyqYl3pBbHlcUOjmGANRP6ZOvA==","_npmVersion":"10.9.2","description":"Reusable resizable panel components and utilities for React","directories":{},"_nodeVersion":"22.17.1","dependencies":{"tailwindcss":"^4.1.18","tailwind-merge":"^3.4.0","@tailwindcss/postcss":"^4.1.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","jsdom":"^26.1.0","react":"^19.2.3","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.3","typescript":"^5.9.3","@types/react":"^19.2.7","vite-plugin-dts":"^3.9.1","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","vite-tsconfig-paths":"^5.1.4","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.5.1_1766532744945_0.3417125295765857","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@aiquants/resize-panels","version":"1.6.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.6.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"6ebf74eb07bf4c817a634cc1599af78df6f04f62","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.6.0.tgz","fileCount":32,"integrity":"sha512-dN3HTnxJGzSDL1T6qArQq/pOsYw3hIhWIE8CTF1Xyn+LfKm7FYHHNHb5DwKoPUAY8huYeeUS26Hpihc287D60A==","signatures":[{"sig":"MEYCIQC36O+wHHQnLtG0WvMEtXh2JOYgT/ACQzMhG0dubsd3AwIhAIav1+AVCPJdpzeYU+g0eP3ttGOzJeEtbRImPzNx16F/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248314},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && pnpm publish --no-git-checks","publish:minor":"npm version minor && pnpm publish --no-git-checks","publish:patch":"npm version patch && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.6.0_1780719329856_0.297461265709281","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@aiquants/resize-panels","version":"1.7.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.7.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"2c638fd5649313cd05a6b4b2c2209ecd2feed21c","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.7.0.tgz","fileCount":32,"integrity":"sha512-AYg7XH+8CUSV8E8jH44u+J3fcXZSHL/5CvQknb28oJ5BczVvn6HzuWvJbs9ER0Fq54GJqvjCskTp6y7OugRrwA==","signatures":[{"sig":"MEUCIDIer2ekEZ21FoPq8GEj425ks3w0ubrFx/7KgpO1j0xLAiEAjHJyzakGMsh0EyQwymWC6Zjin/Bel/WqeYakiiJh/z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251223},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && pnpm publish --no-git-checks","publish:minor":"npm version minor && pnpm publish --no-git-checks","publish:patch":"npm version patch && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.7.0_1782991009382_0.08548228530639101","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@aiquants/resize-panels","version":"1.7.2","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.7.2","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"c91c8de808cd93e3b3627a866c5baa4bf756063a","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.7.2.tgz","fileCount":40,"integrity":"sha512-Q4VLw/GA2Td0cBCu8FH/6jpqQzuczdFAXUbrAYMl2Pcfmyw6g1+JP2vjvmfDNBFTXdAQFzvhU9DLeV/BAefjIg==","signatures":[{"sig":"MEUCIQDdHg3gFF5uS+7NFD4vbXaDvc/9aH3enuIWmybkTksn2gIgA0htOreWJXejdHlaMRvbDN/0psJAda8wOROHWCaF/Jg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264914},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"npm version major && pnpm publish --no-git-checks","publish:minor":"npm version minor && pnpm publish --no-git-checks","publish:patch":"npm version patch && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.7.2_1784101401879_0.3173748214834784","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@aiquants/resize-panels","version":"1.7.3","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.7.3","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"2e909cfd0ca83bfe20cfab60bd2c9b9ef779a960","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.7.3.tgz","fileCount":40,"integrity":"sha512-swNtNZTIJKcIdDL/R5dDZEfGUBPPaS60lQhH2FLtkX0EHPcWQnaa0HeuqPAapKlzoeqNuG7A2YDyo4O7+V1wDw==","signatures":[{"sig":"MEQCIBC4krJd4GP/vtkivry/NpB68MFJibuxiZweMR2x+dLAAiACjDLLqrejOM0S9TZB+eHfbcqRGb2Z5y012NfFixDx3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265184},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/tailwind.css -o dist/styles/resize-panels.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.7.3_1784773313887_0.923291243323229","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@aiquants/resize-panels","version":"1.8.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.8.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"f33df35aa45a8fcb56e96d823d8898a2c7dfd0bd","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.8.0.tgz","fileCount":58,"integrity":"sha512-bB0TYmQIkh7LzizZhnn0MRuBtzl8uZ0vq3Y2RW4ZkacxfuxBM6dgUaL8QjG6JHhSotwdsccltKFO+sgyqP7Rnw==","signatures":[{"sig":"MEQCIH9hIsvgepoPuxbEPcfbR9feTUx1H6hSzxG7NklUkUnwAiBN9YsqKJKIhf1LMnT4FkFPK6g/z4l8H+8yaDck3CtZPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":489136},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css","./styles/resize-panels.standalone.css":"./dist/styles/resize-panels.standalone.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.8.0_1784848572054_0.1713286272296657","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@aiquants/resize-panels","version":"1.8.1","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.8.1","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"d6b9d41546ee927aec7ab3603580eff4a80ac09a","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.8.1.tgz","fileCount":58,"integrity":"sha512-Q49pxixlIspC56wITc/Ik5FFk5QqOADGNE+XJP2y1fS8PMRHsMRlU+sQH0S9gvPkg3FOKdlOcdRsHPMtrIA64A==","signatures":[{"sig":"MEUCIDKxkgYUd4CUSpunpMPXF+lDETaLZEKL83FpOEOOZc6EAiEA2jVGPJxRrMUI72Re5D9LiWBfgoTCdfVT6e7XxuDR+JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":489117},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css","./styles/resize-panels.standalone.css":"./dist/styles/resize-panels.standalone.css"},"scripts":{"dev":"vite build --watch","test":"vitest","build":"vite build && pnpm build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.8.1_1784862197486_0.4548789582953854","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@aiquants/resize-panels","version":"1.9.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@1.9.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"6175b4715c6db081d0c4c6af82c1ec9cf2028db0","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-1.9.0.tgz","fileCount":58,"integrity":"sha512-NGv6tNMCBoGg4DoWPJBSPAYAZf4cCsUBVFZHNHjaD5AyayLcYedpnT7X0S+oylLhjsg7tHl9HpjKPeHaYEzHMg==","signatures":[{"sig":"MEYCIQD5uUIpZFyXRurP1pgjrELIhJhjWaN3AiuAIqiNGlrfUgIhAP3x9+ie0vLoqdIhfxlsSCT+26DTRcdfseYrdlExtvSb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":503300},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css","./styles/resize-panels.standalone.css":"./dist/styles/resize-panels.standalone.css"},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"pnpm run clean && vite build && pnpm run build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_1.9.0_1788876344977_0.24685471776445223","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aiquants/resize-panels","version":"2.0.0","keywords":["react","resizable","panels","layout","component","ui"],"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","_id":"@aiquants/resize-panels@2.0.0","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"dist":{"shasum":"ee3dc34382a8da5bb9f949df9294973462e28163","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-2.0.0.tgz","fileCount":64,"integrity":"sha512-wUU1Kzm182/HfweR6R/mGXN1qUFN6QOUg+AmMS0cYDO1bAZggc3OkFjOYD4SwFQ3SNfNrUWNtyat//U1547+2Q==","signatures":[{"sig":"MEUCIQCpQMyjt9d9AVLAosNzAh1ZQS1JysYkhYioHlJcRof8QwIgB4IlvNl9hpF+sIxB17t/QP6qTG00q+GXugduuQFQsJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAooa/C/fxgVJtuZ2dOqWh/9c1WALOPXmVA8pPqvh83wAiEAiqCJA91gI/7aPJB3OBq/6FnkobkGhOTCZf3MAX5WBmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450834},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css","./styles/resize-panels.standalone.css":"./dist/styles/resize-panels.standalone.css"},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"pnpm run clean && vite build && pnpm run build:css","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"description":"Reusable resizable panel components and utilities for React","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"tmp":"tmp/resize-panels_2.0.0_1789529112663_0.5004771594354085","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"_id":"@aiquants/resize-panels@2.0.1","dist":{"shasum":"8e97bb2bf01000bd1b608c9882cdba739b91b696","tarball":"https://registry.npmjs.org/@aiquants/resize-panels/-/resize-panels-2.0.1.tgz","fileCount":28,"integrity":"sha512-4/1NObny6HhuuZUZSJfWrY0lLQOFMStpzYEZJ+y7xQauuja8XgOkLQCeErL+VITpZrMHHXESBG/0wLC6MQpNnA==","signatures":[{"sig":"MEUCIQDFCJq6gOygUT78hqPjm0PFFYb84X9RJk8dCvF+3334LQIgEpRwU0AQNEBGckxMQo4ON6cFr5ODXE7CjHs1q2wWFCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAcmZOQ6tfKQHeRMAf69rFkE6JrZFHt2NzG3nV/LyIt/AiAE1bKmao3+2XnPUwLM5smI59+V1OEJtr/3SSLJ4Leyfw=="}],"unpackedSize":175675},"main":"./dist/index.cjs","name":"@aiquants/resize-panels","type":"module","types":"./dist/index.d.ts","author":{"url":"https://x.com/fehdek","name":"fehde-k"},"module":"./dist/index.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./styles/resize-panels.css":"./dist/styles/resize-panels.css","./styles/resize-panels.standalone.css":"./dist/styles/resize-panels.standalone.css"},"license":"MIT","scripts":{"dev":"vite build --watch","test":"vitest run","build":"pnpm run clean && vite build && pnpm run build:css && node ../../.config/scripts/strip-dts-comments.mjs dist","clean":"rimraf dist","watch":"vite build --watch","build:css":"tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify","typecheck":"tsc --noEmit","license-check":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\"","publish:major":"pnpm run typecheck && pnpm run --if-present test && pnpm version major --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:minor":"pnpm run typecheck && pnpm run --if-present test && pnpm version minor --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","publish:patch":"pnpm run typecheck && pnpm run --if-present test && pnpm version patch --no-git-tag-version --no-git-checks && pnpm publish --no-git-checks","license-check:json":"pnpm dlx license-checker --production --onlyAllow \"MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;Unlicense\" --json"},"version":"2.0.1","_npmUser":{"name":"fehde","email":"genbu0498@gmail.com"},"keywords":["react","resizable","panels","layout","component","ui"],"description":"Reusable resizable panel components and utilities for React","directories":{},"maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"sideEffects":["**/*.css"],"dependencies":{"tailwind-merge":"^3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.0","jsdom":"^26.1.0","react":"^19.2.7","rimraf":"^6.1.2","vitest":"^3.2.4","react-dom":"^19.2.7","typescript":"^5.9.3","tailwindcss":"^4.1.18","@types/react":"^19.2.7","vite-plugin-dts":"^4.5.4","@tailwindcss/cli":"^4.1.18","@types/react-dom":"^19.2.3","@tailwindcss/vite":"^4.1.18","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/resize-panels_2.0.1_1789699641211_0.1066558947947791"}}},"time":{"created":"2025-10-28T08:41:40.355Z","modified":"2026-09-18T02:47:21.493Z","0.2.0":"2025-10-28T08:41:40.711Z","0.3.0":"2025-10-30T10:06:23.354Z","0.4.0":"2025-11-08T10:27:57.181Z","1.0.0":"2025-11-08T10:31:47.857Z","1.1.0":"2025-11-09T00:23:48.150Z","1.2.0":"2025-11-25T01:30:58.502Z","1.3.0":"2025-12-06T01:08:31.762Z","1.4.0":"2025-12-06T01:21:19.462Z","1.5.1":"2025-12-23T23:32:25.102Z","1.6.0":"2026-06-06T04:15:29.996Z","1.7.0":"2026-07-02T11:16:49.559Z","1.7.2":"2026-07-15T07:43:22.022Z","1.7.3":"2026-07-23T02:21:54.025Z","1.8.0":"2026-07-23T23:16:12.206Z","1.8.1":"2026-07-24T03:03:17.640Z","1.9.0":"2026-09-08T14:05:45.115Z","2.0.0":"2026-09-16T03:25:12.763Z","2.0.1":"2026-09-18T02:47:21.317Z"},"author":{"url":"https://x.com/fehdek","name":"fehde-k"},"license":"MIT","keywords":["react","resizable","panels","layout","component","ui"],"description":"Reusable resizable panel components and utilities for React","maintainers":[{"name":"fehde-k","email":"owner@aiquants.co.jp"},{"name":"fehde","email":"genbu0498@gmail.com"}],"readme":"# @aiquants/resize-panels\n\nResizable panel layout components for React, built on one rule: **there is a single function that decides panel sizes, and the handle is the boundary rather than a thing positioned near it.**\n\nEvery state change — first paint, container resize, drag, collapse, restored layout — runs the same allocator, so the panels always fill the container exactly and the handle can never drift away from the edge it moves.\n\n## Key Features\n\n- **One allocator, one geometry**: `allocatePanelSizes` distributes the container among the panels (proportional water-filling with per-panel minimum/maximum bounds). `Σ panel sizes == the group's content box` holds after every transition the declared bounds allow, and the reducer logs a breach of that invariant rather than letting it pass silently — a container the minimums overflow, or that the maximums cannot reach, is reported as a constraint violation instead.\n- **A handle that cannot drift**: the resize handle renders a zero-length in-flow flex item at the boundary and draws its hit area symmetrically around it. Nothing computes its position, so it stays on the boundary in LTR and RTL, horizontal and vertical, with group padding, and during every frame of a live container resize. A drag divides the pointer's travel by the group's visual scale, so the grab point stays under the cursor even below a transformed ancestor.\n- **Predictable proportions**: a flexible panel's size is a weight — only the ratio between weights matters, unless the panel declares `flexAdjustPriority`, which reads the same number as a claim on that share of the container. A dragged layout becomes a fixed point of the allocator, so it survives the next resize as a ratio instead of snapping back.\n- **Directional Collapsible Control**: declarative `collapsible` settings (`from: 'start' | 'end' | 'both'`) and the `usePanelControls` hook support collapsing/expanding from drags and from UI controls; expanding restores the layout the panel had before it closed.\n- **Keyboard & Touch Accessibility**: handles are `role=\"separator\"` widgets whose `aria-valuenow` / `aria-valuemin` / `aria-valuemax` publish the boundary and the travel *this* handle can reach, collapsing included; a collapsed neighbour is reported as length 0 rather than making the values disappear. Arrow keys resize (5x step with Shift), reopen a collapsed neighbour from the side it closed towards and collapse a panel the pair's travel cannot shrink further, while a handle with nowhere to go leaves the key to the page. A drag needs the primary button and survives multi-touch and `pointercancel`.\n- **Auto-Persistence**: set `autoSaveId` to store each panel's open length and collapsed flag in `localStorage` next to its panel id, so a layout saved by a different set of panels is rejected instead of being applied by position.\n- **Debug & Visualization**: enable `showDebugInfo` to inspect allocations through the per-panel `PanelDebugInfo` badge and a global overlay (lazily imported; production bundles without it create no per-panel observers at all). A constraint violation needs no flag: the group draws its own placeholder over the panels whenever the allocator reports one.\n\n## Installation\n\nMonorepo workspace dependency:\n\n```jsonc\n// consumer package.json\n{\n  \"dependencies\": {\n    \"@aiquants/resize-panels\": \"workspace:*\"\n  }\n}\n```\n\nStandard package manager installation:\n\n```bash\npnpm add @aiquants/resize-panels\n```\n\n## Quick Start\n\n```tsx\nimport { useId } from \"react\"\nimport { PanelGroup, Panel, PanelResizeHandle } from \"@aiquants/resize-panels\"\n\nexport const Example = () => {\n    const baseId = useId()\n\n    return (\n        <PanelGroup id={`${baseId}-group`} direction=\"horizontal\" style={{ height: \"24rem\" }}>\n            <Panel id={`${baseId}-left`} defaultSize={{ value: 200, unit: \"pixels\" }} className=\"bg-slate-100\">\n                Left Panel\n            </Panel>\n            <PanelResizeHandle id={`${baseId}-handle`} />\n            <Panel id={`${baseId}-right`} defaultSize={{ value: 60, unit: \"percentage\" }} className=\"bg-slate-50\">\n                Right Panel\n            </Panel>\n        </PanelGroup>\n    )\n}\n```\n\n### Enabling Collapsible Panels\n\nSpecify `collapsible={{ from: \"start\" }}` or `collapsible={{ from: \"end\" }}` on a `Panel` to enable automatic collapse/expand when dragging the corresponding handle to container boundaries. Set `defaultCollapsed` to set initial state to collapsed. Use `collapsible={{ from: \"both\" }}` to allow collapsing from either edge.\n\n```tsx\n<PanelGroup direction=\"horizontal\" style={{ height: \"24rem\" }}>\n    <Panel id=\"sidebar\" defaultSize={{ value: 240, unit: \"pixels\" }} collapsible={{ from: \"end\" }}>\n        Sidebar\n    </Panel>\n    <PanelResizeHandle id=\"handle\" />\n    <Panel id=\"main\" defaultSize={{ value: 60, unit: \"percentage\" }}>\n        Main Content\n    </Panel>\n</PanelGroup>\n```\n\n### Programmatic Controls via Hook\n\nUse `usePanelControls(panelId)` inside any child component of `PanelGroup` to trigger collapse, expand, or toggle actions:\n\n```tsx\nimport { PanelGroup, Panel, PanelResizeHandle, usePanelControls } from \"@aiquants/resize-panels\"\n\nconst PanelToggleButtons = ({ panelId, label }: { panelId: string; label: string }) => {\n    const { panel, isCollapsed, collapse, expand, toggle, canCollapseFromStart, canCollapseFromEnd } = usePanelControls(panelId)\n    const direction = panel?.collapsedByDirection ?? (canCollapseFromStart ? \"start\" : \"end\")\n\n    return (\n        <div className=\"flex items-center gap-2\">\n            <span>{label}</span>\n            <button onClick={() => collapse(direction)} disabled={(!canCollapseFromStart && !canCollapseFromEnd) || isCollapsed}>\n                Collapse\n            </button>\n            <button onClick={() => expand(direction)} disabled={!isCollapsed || (!canCollapseFromStart && !canCollapseFromEnd)}>\n                Expand\n            </button>\n            <button onClick={() => toggle(direction)} disabled={!canCollapseFromStart && !canCollapseFromEnd}>\n                {isCollapsed ? \"Switch to Expand\" : \"Switch to Collapse\"}\n            </button>\n        </div>\n    )\n}\n\nexport const Example = () => (\n    <PanelGroup direction=\"horizontal\" style={{ height: \"24rem\" }}>\n        <Panel id=\"sidebar\" defaultSize={{ value: 240, unit: \"pixels\" }} collapsible={{ from: \"end\" }}>\n            <PanelToggleButtons panelId=\"sidebar\" label=\"Sidebar\" />\n        </Panel>\n        <PanelResizeHandle id=\"split\" />\n        <Panel id=\"main\" defaultSize={{ value: 60, unit: \"percentage\" }}>\n            <PanelToggleButtons panelId=\"details\" label=\"Details Panel\" />\n        </Panel>\n        <PanelResizeHandle id=\"split-right\" />\n        <Panel id=\"details\" defaultSize={{ value: 40, unit: \"percentage\" }} collapsible={{ from: \"start\" }}>\n            Details\n        </Panel>\n    </PanelGroup>\n)\n```\n\n## Component API\n\n### PanelGroup Properties\n\n| Property | Type | Description |\n| --- | --- | --- |\n| `id` | `string` | Group identifier (reflected in `data-panel-group-id`). Recommended when mounting multiple groups |\n| `direction` | `'horizontal' \\| 'vertical'` | Panel layout orientation |\n| `className` / `style` | `string` / `React.CSSProperties` | Additional styling for the container |\n| `children` | `React.ReactNode` | `Panel` and `PanelResizeHandle` child elements |\n| `showDebugInfo` | `boolean` | Enables the per-panel `PanelDebugInfo` badge and the global debug overlay |\n| `onLayout` | `(sizes: number[]) => void` | Callback emitting updated pixel size arrays on resize/init |\n| `autoSaveId` | `string` | Key used to automatically persist and restore panel sizes in `localStorage` |\n\n### Panel Properties\n\n| Property | Type | Description |\n| --- | --- | --- |\n| `id` | `string` | Panel identifier (reflected in `data-panel-id`). Optional — a `useId`-derived id is generated when omitted — but fixed at mount: a later change is ignored with a warning |\n| `defaultSize` | `{ value: number; unit: 'pixels' \\| 'percentage' } \\| number` | Initial panel size (numbers parsed as percentages; `50%` when omitted) |\n| `minSize` / `maxSize` | `FlexibleSize` | Panel size boundaries (pixels or percentages) |\n| `collapsible` | `{ from: 'start' \\| 'end' \\| 'both' }` | Declarative collapsible edge configuration |\n| `defaultCollapsed` | `boolean` | Whether the panel starts collapsed |\n| `pixelAdjustPriority` | `number` | Order in which pixel panels are served when space is scarce (higher first) |\n| `flexAdjustPriority` | `number` | Serving order among flexible panels (higher first); declaring it also reads `defaultSize` as an absolute claim on that share of the container |\n| `contentOverflow` | `React.CSSProperties[\"overflow\"]` | Overflow of the panel's content wrapper (`auto` by default) |\n| `className` / `style` | `string` / `React.CSSProperties` | Panel container styles |\n\n`Panel` and `PanelGroup` forward any other DOM attribute (`data-testid`, `aria-*`, event handlers) to their\nelement, except the ones they compute themselves: `Panel` owns `aria-hidden`, which follows the collapsed state,\nand its own `data-panel-*` attributes, while `PanelGroup` owns `data-panel-group-id` and\n`data-panel-group-direction` — the first is what `getPanelGroupElement` looks up, the second is what marks an\nelement as a group for `findOwningGroup` and therefore for every handle. `aria-hidden` is removed\nfrom `PanelProps` to state that ownership, but TypeScript does not type-check JSX attribute names containing a\nhyphen, so neither it nor a `data-panel-*` / `data-panel-group-*` of your own is rejected at compile time: what\nenforces the contract is the runtime override, which applies these attributes after everything you forwarded. A\n`data-panel-group-id` you pass disappears altogether when the group itself has no `id`. Both elements merge your\n`className` with their own (`panel` / `panel-group`) instead of replacing it.\n\n### PanelResizeHandle Properties\n\n| Property | Type | Description |\n| --- | --- | --- |\n| `id` | `string` | Handle identifier (reflected in `data-resize-handle-id`) |\n| `disabled` | `boolean` | Disables mouse dragging and keyboard resizing when `true` |\n| `thickness` | `number` | Primary axis thickness of the handle's interactive area in pixels (`8px` default) |\n| `indicator` | `boolean \\| PanelResizeHandleIndicatorConfig` | Toggle indicator visibility or provide custom pill/bar dimensions and CSS classes |\n| `indicatorThickness` | `number` | Shorthand for indicator pill wrapper thickness in pixels (`6px` default) |\n| `indicatorLength` | `number` | Shorthand for indicator pill wrapper length in pixels (`48px` horizontal / `80px` vertical default) |\n| `indicatorBarThickness` | `number` | Shorthand for indicator inner bar thickness in pixels (`2px` default) |\n| `indicatorBarLength` | `number` | Shorthand for indicator inner bar length in pixels (`32px` horizontal / `64px` vertical default) |\n| `title` | `string` | Custom tooltip text for the handle element |\n| `onDragging` | `(isDragging: boolean) => void` | Callback triggered on drag start and end (including `pointercancel`) |\n| `className` / `style` | `string` / `React.CSSProperties` | Additional styling for the resize handle |\n| `children` | `React.ReactNode` | Custom indicator element rendered inside handle (overrides default indicator) |\n\n> Handles render as `<button role=\"separator\">` elements accessible via arrow keys (`←`/`→` for horizontal, `↑`/`↓` for vertical); holding `Shift` increases the step 5x. Under `dir=\"rtl\"` the drag and keyboard directions follow the visual layout. The handle sits inside a zero-length anchor placed by flex layout, so its hit area is centred on the panel boundary without any position arithmetic.\n\n`PanelResizeHandle` forwards any other DOM attribute to its `<button>`, and calls your `onPointerDown` /\n`onKeyDown` before its own handling — calling `preventDefault()` in them stops the library's gesture from starting.\nThe attributes it computes from the layout (`role`, `aria-orientation`, `aria-valuenow` / `aria-valuemin` /\n`aria-valuemax`, `aria-disabled`, `aria-hidden`) are removed from `PanelResizeHandleProps`, though only `role` is\nactually caught by the compiler — the hyphenated names are not type-checked in JSX, and it is the runtime override\nthat keeps them the library's. `aria-label` stays yours and replaces the built-in description, and `title` defaults\nto that same description.\n\nYour `style` reaches the button between two library layers. The handle's resolved dimensions are published as CSS\ncustom properties — `--rp-handle-thickness`, `--rp-indicator-thickness`, `--rp-indicator-length`,\n`--rp-indicator-bar-thickness`, `--rp-indicator-bar-length` — *before* it, so decorations of your own can be sized\nfrom the same numbers and may redefine them; the declarations that keep the hit area centred on the boundary\n(`position: absolute`, `zIndex: 20`, `touchAction: none`, the logical insets and the thickness / cross-axis `100%`\nbox) are applied *after* it and take no override. While the group reports a constraint violation, every handle is\nhidden (`display: none` on its anchor) as well as disabled.\n\n## Hooks & Utilities\n\n- `useResizablePanels`: the hook behind `PanelGroup`. It measures the container, keeps the panel order equal to DOM order, notifies `onLayout`, persists the layout and returns the group's base style — it never computes a panel size.\n- `usePanelGroup` / `PanelGroupContext`: context accessor, and the context itself, for the panel list, the container length, the constraint violation and `layoutOrderKey` — the document order of the panels and handle anchors, which changes even when only a handle moved to another boundary.\n- `usePanelControls`: `collapse`, `expand` and `toggle` for a given panel id.\n- `allocatePanelSizes`, `resolvePanelBounds`, `isPixelPanel`: the layout calculation itself, exported for tests and for hosts that drive their own container.\n- `panelReducer`, `initialPanelGroupLayoutState`, `getPanelPreferenceInPixels`, `findLayoutInvariantBreach`: the state machine around the allocator, the length a layout should persist, and the `Σ sizes == container` check.\n- `getContainerSize`: measure one axis of an element in layout pixels; it returns `{ content, border }`, and `content` (padding and borders removed) is the length the allocator fills.\n- `findOwningGroup`, `getGroupLayoutElements`: resolve the group that owns an element, and that group's panels and handle anchors in document order — across wrapper elements, `display: contents` included, while skipping both a nested group's own elements and any `data-panel-id` that belongs to a panel's content rather than to this group.\n- `saveLayout` & `loadLayout`: persist or restore a layout (`{ id, size, collapsed }[]`).\n- `clamp`, `getConstraintInPixels`, `normalizeSizeConfig`, `percentageToPixels`, `toRoundedPercentage`, `calculateSnapThreshold`: the unit conversions and thresholds the components share.\n- `getPanelElement`, `getPanelGroupElement`, `getResizeHandleElement`: DOM element query helpers via `data-*` attributes.\n\nEvery public type (`PanelProps`, `PanelGroupProps`, `PanelResizeHandleProps`, `PanelLayoutData`, `PanelRegistration`, `PersistedPanelSize`, `PanelGroupLayoutState`, `PanelAction`, `LayoutAllocation`, `PanelBounds`, `ContainerAxisMeasurement`, …) is re-exported from the package root; `docs/specs` (`00-architecture-overview.md` §8) lists the surface in full.\n\n## How sizes are decided\n\n| Panel kind | What it declares | What it gets |\n| --- | --- | --- |\n| Flexible (`percentage`, or a bare number) | a weight — only the ratio between such weights matters | its share of what is left after the panels with an absolute target, clamped to its bounds |\n| Flexible with `flexAdjustPriority` | the same number, read as a claim on that share of the container | that claim, served after the pixel panels and clamped to its bounds |\n| Pixel (`pixels`) | an absolute length | that length, clamped to its bounds, once the panels ahead of it in `pixelAdjustPriority` order have been served |\n\nScarcity and surplus are two ends of one order. While space is scarce, targets are served in that order — pixel\npanels by `pixelAdjustPriority`, then flexible panels by `flexAdjustPriority` — so the panel last in line is the\none that falls short of its target, even when every declared minimum would fit. While space is left over, it is\noffered to the ratio panels by weight, then to the prioritized flexible panels by weight, then to the pixel panels\nin `pixelAdjustPriority` order up to their `maxSize`, and last, in equal parts, to the flexible panels that have a\nweight of 0 and no `flexAdjustPriority`. A sidebar declared in pixels therefore grows past its declared length when\nnothing else can absorb the surplus: give it a `maxSize` to pin it. When a clamp bites, the residue is\nredistributed among the remaining panels of the same stage in their own ratio, and the container ends up exactly\nfilled as long as one panel can still take the surplus; when none can, the gap is reported — as a constraint\nviolation when the panels' maximums cannot reach the container, and as a logged invariant breach otherwise. The\nfull statement, including the proofs of ratio preservation, continuity and the drag fixed point, is in `docs/specs`\n(`11-layout-allocator.md`).\n\n## Layout Persistence\n\nWhen `autoSaveId` is provided to `PanelGroup`, the layout is written to `localStorage` under the key\n`panel-layout-<autoSaveId>` as `{ id, size, collapsed }[]`, 200ms after the layout stops changing: a change arriving\ninside that window restarts the timer rather than forcing a write, so a drag never runs synchronous storage I/O once\nper frame. The one write outside that timer is the flush on unmount, which hands over the entries still pending so\nthe last layout is not lost to a navigation. The stored `size` is the panel's preference — the length it occupies\nwhile open — not its allocated size, so a panel saved while collapsed still knows what to reopen to. On the next\nmount, and again whenever `autoSaveId` changes, the payload is applied only if it names exactly the panels that are\npresent; a payload from a different panel set is ignored rather than applied by position.\nRestoring into a container of a different length scales a flexible panel by ratio, because its stored length is\nre-read as a share of the current container, while a pixel panel restores the absolute length it had.\n\n## Debugging & Inspection\n\nEnabling `showDebugInfo` on `PanelGroup` renders inspection metrics over each `Panel` (container length, allocated\nsize, preference, resolved bounds) along with a global inspector: a header counting the groups, panels and resize\nhandles on the page, then one card per group carrying its direction and container box and, for every panel, the\nstate size next to the measured size, both percentages, the preference, the unit, the declared bounds and the two\npriorities. Individual handle measurements and constraint violations are not part of that overlay; a violation is\nshown by the placeholder the group draws over its panels, with or without the flag. Debug components are lazily\nimported (`React.lazy`); without the flag no per-panel `ResizeObserver` is created.\n\n## Styling (CSS)\n\nThe package provides two CSS consumption options:\n\n- **Tailwind v4 Host**: Import components-only styles into `layer(components)` and configure Tailwind to scan package source files:\n\n  ```css\n  /* app tailwind.css */\n  @import \"@aiquants/resize-panels/styles/resize-panels.css\" layer(components);\n  @source \"../node_modules/@aiquants/resize-panels/src/**/*.{ts,tsx}\";\n  /* monorepo: @source \"../../../../packages/resize-panels/src/**/*.{ts,tsx}\"; */\n  ```\n\n- **Non-Tailwind Host**: Import the self-contained standalone CSS bundle:\n\n  ```css\n  @import \"@aiquants/resize-panels/styles/resize-panels.standalone.css\";\n  ```\n\n  Dark mode activates based on the `.dark` class on `<html>`.\n\n### Style ownership\n\nYour `className` and `style` reach all three components, but the declarations the layout itself depends on are\napplied *after* them and do not accept an override:\n\n- **Group**: `display: flex`, `flexDirection`, `alignItems: stretch`, `gap: 0px`, `position: relative`,\n  `boxSizing: border-box`, `writingMode: horizontal-tb`. The presentation defaults (`width`, `height`, `minWidth`,\n  `minHeight`, `overflow`) are yours to change.\n- **Panel**: the flex triple (`flexBasis` / `flexGrow` / `flexShrink`), `order: 0`, `margin: 0`, `display: flex`,\n  `flexDirection: column`, `position: relative`, `boxSizing: border-box`, `minWidth` and `minHeight: 0`,\n  `maxWidth` and `maxHeight: none`, the cross-axis `100%`, and `display: none` while collapsed. The presentation\n  defaults you can override are `overflow: hidden` and `isolation: isolate`.\n- **Handle button**: `position: absolute`, `zIndex: 20`, `touchAction: none`, the logical inset that centres it on\n  the boundary, its primary-axis thickness and its cross-axis `100%`. The `--rp-*` custom properties are placed\n  before your `style`, so those you may redefine.\n\nBoth halves of that list are written to the `style` attribute, so a presentation default is overridable by your\n`style` **only** — a utility class loses to the inline declaration it would replace, which is why the examples\nabove give the group its height through `style` rather than an `h-*` class. Every property the components do not\nwrite inline (colour, padding, borders, radius, …) stays entirely yours to set by class.\n\nA panel owns `maxWidth` / `maxHeight` because a single utility class (`max-w-*` and friends) would otherwise draw\nit shorter than the length the allocator handed out, leaving state and rendering disagreeing with the handle stuck.\nIt defaults to `isolation: isolate` so that a `z-index` used inside a panel cannot rise above the handles; a panel\nwhose content must escape its own box — a `position: fixed` maximised overlay, say — opts out with\n`style={{ isolation: \"auto\" }}` and accepts that the content may then cover a handle. That trade-off is inherent to\nstacking contexts: nothing can both take part in the panel's own stacking order and paint above its siblings.\n\nA panel renders its children inside an in-flow `flex: 1 1 auto` wrapper, so padding you set on a panel behaves\nnormally; `contentOverflow` chooses how that wrapper scrolls. The group keeps `overflow: hidden` so that a handle\nstraddling a boundary cannot raise a scrollbar — at the cost that when an edge panel collapses, the outer half of\nthe handle now sitting on the group's own edge is clipped (its centre stays on the boundary).\n\n## Demo App\n\nRun the included workspace demo app:\n\n```bash\npnpm --filter '@aiquants/resize-panels-demo' dev\n```\n\nOpen `http://localhost:5175` to test interactive layouts.\n\n## Build\n\n```bash\npnpm --filter '@aiquants/resize-panels' build\n```\n\nOutputs built artifacts to `dist/`.\n","readmeFilename":""}