{"_id":"@alphinex/dashboard-kit","_rev":"9-bd103e1485a3e04616801a7ad9d207cc","name":"@alphinex/dashboard-kit","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@alphinex/dashboard-kit","version":"1.0.0","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.0","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"909b0ff46d9ba572880f3f6e8826bce8f550bb0d","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.0.tgz","fileCount":5,"integrity":"sha512-R4gslc58eFr15O1VA/NCZ6DNwxrdXcZbV47viPSHfwGJcQQNeeMQR6g7FQx/lOqPTZClAXJMWs9itSAMTzB16Q==","signatures":[{"sig":"MEUCIC/XkXVh0KVuiMqR+0hMEmJrzXVhfCIiUL9pHYIYSkWBAiEA79AmJpo78fcIUg5W9waHzdL6LOUY1EkXxx1MEp3q9fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.1.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.0","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.0_1785935160595_0.21273270297622404","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alphinex/dashboard-kit","version":"1.0.1","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.1","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"7f736a403267e6ff7a00514869ef33f8b4d302b9","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.1.tgz","fileCount":5,"integrity":"sha512-x0xDOi3rPtl4Tv+MilXbVJvI6oUBPs4NYPFjv6786x1U07hEKrjxY+pCkcV9rfNagKhxX12+4Exk0B/Uv2yXxQ==","signatures":[{"sig":"MEYCIQDA5IOj8x7OfAcLMjGk/vcf6UMNzPVzNJDMRgeqgNCm8AIhANwL90akd6zT0M0F6H6SOPBt48JXZlzU6rl5gAdfCx86","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.1.1","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.1_1785938261470_0.6624761465285984","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alphinex/dashboard-kit","version":"1.0.2","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.2","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"14b5da6aa975d77d368044515a45a471c6d03ed5","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.2.tgz","fileCount":5,"integrity":"sha512-MVJ4WuErDbGeq3QbuZR2ESTRsIEJDA5lUAHn0EW+7P+Ui0BYj4Ad+mPqr+lVpIoZfr4PVNSPsF+X4zOJCZYmJw==","signatures":[{"sig":"MEUCIQDoszTXe8+CW8OAt5pAgAINABbT/7jl9Mh0Zjsv4zVRHgIgbO4rLeQVW4vPzyRc/OoWojKt7C6H1967YIofg0eLxA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.2.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.2_1786003927649_0.5497349540957814","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alphinex/dashboard-kit","version":"1.0.3","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.3","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"f478e21c17aba23c91a00d8aa0fc4caeabbf41c4","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.3.tgz","fileCount":5,"integrity":"sha512-DTOtaK5Npoevb6seKAz4XVxxtGGLxr8xamGd0+mm7BT6z/75cRnhk79V23LikmYXXCHR9LgZCj/+55Fd3uwKNQ==","signatures":[{"sig":"MEUCIQDH5e7s5VLW6FuhmlmRzyHcPLHBKrtg+GYxWs7jFTAjKwIgZuY/5vieoUt7BG+ejClHVBylPHIVNbeEbweGYH7XODU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.3.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.3_1786200446880_0.1274004789048515","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@alphinex/dashboard-kit","version":"1.0.4","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.4","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"5e07fe61c194df1382a8c1ccf8999f4c9160bcee","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.4.tgz","fileCount":5,"integrity":"sha512-+Q9+eD3RcqmlTj8CbTBFH/ENJaZmI2BEikhXz3lfzrC4+0//4pfMP6BfU2ry4MvfxJEH3QhxCvns6YTB4rISKQ==","signatures":[{"sig":"MEUCIQCDb2SZQJUb6onANq5Sqkm37iDsuTmnvzWjWS0sRt2y8gIgPBkXDZH4JHv3wguXytZCbxFaX5oNqmBiaOMsfjl50eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.4.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.4_1786218404138_0.893391667063486","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alphinex/dashboard-kit","version":"1.0.5","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.5","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"d1e8bcc90b54fb81471817ce926167abfd2a893e","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.5.tgz","fileCount":5,"integrity":"sha512-jl+AjaSSMRBr4Dz+8/pUN5YEaolbg6jL8yKOTKnERwDewj8zBMQwv/SlGl86b1fSeUbFNF1ksBCDLqfIlHAEeA==","signatures":[{"sig":"MEQCICHajP3lAXEBk77z2hhXv3uMI9CSM0BnQSK8ha2tBHECAiA52Pwpxy2hktBOOm+htqP1EeOApfKajp5IRZ0xjl7reQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.5.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.0.1","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.5_1786273315409_0.4341903671821894","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@alphinex/dashboard-kit","version":"1.0.6","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.6","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"cc7996ab36f0170c1a7abaf43a2729ea1e950012","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.6.tgz","fileCount":5,"integrity":"sha512-VXLnJmzvEA5L/ox6x/WmvMek7KTqVEQI/d1Fryt6ASX6FkkjAFw7UL3jckZk4OJlCh6QxGCoFpU08GS720B3tg==","signatures":[{"sig":"MEUCIQCjMCxTl68ezrgg34ea7VO1O1HLrjFnGJhGBWjDGzqarwIgTFGcGxRe+V0qxVsiSYHj1GBwflXOKgQoa9kLOYGIf78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.5.1","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.1","@alphinex/icons":"1.1.0","@alphinex/theme":"1.1.0","@alphinex/utils":"1.0.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.6_1786298608364_0.31218389507153543","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@alphinex/dashboard-kit","version":"1.0.7","license":"UNLICENSED","_id":"@alphinex/dashboard-kit@1.0.7","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"dist":{"shasum":"761867317e2c1f22baf484830fbd14fa1a87a42e","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.7.tgz","fileCount":5,"integrity":"sha512-VvPsbLgmpI3VRVin8k9vOn8lNKRnEBVU5rqlU2JVOjCkVmd/pDUiK0VnrDL80IbMYKriE2jBQ2jwekK5WHg39g==","signatures":[{"sig":"MEUCIQC3PHTIMnejH9/WO5LzEM78jJxMC0D0bdGIzmRhzdlDiAIgE96cSzzCwvXlHAjkFO0REwnfHtGkqSyot7wNQXizfk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"vite build --watch","lint":"eslint .","test":"vitest run","build":"vite build","clean":"rimraf dist .turbo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@alphinex/ui":"2.6.0","@dnd-kit/core":"^6.3.1","@alphinex/core":"1.0.0","@alphinex/hooks":"1.0.2","@alphinex/icons":"1.2.0","@alphinex/theme":"1.1.0","@alphinex/utils":"1.1.0","@dnd-kit/utilities":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^25.0.1","react":"^19.0.0","eslint":"^9.17.0","vitest":"^2.1.8","axe-core":"^4.10.2","react-dom":"^19.0.0","typescript":"^5.7.2","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@vitejs/plugin-react":"^4.3.4","@alphinex/build-config":"0.0.0","@testing-library/react":"^16.1.0","@alphinex/eslint-config":"0.0.0","@testing-library/jest-dom":"^6.6.3","@alphinex/typescript-config":"0.0.0","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/dashboard-kit_1.0.7_1786525482554_0.1324135911704596","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@alphinex/dashboard-kit","version":"1.0.8","private":false,"description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","license":"UNLICENSED","type":"module","sideEffects":false,"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/utilities":"^3.2.2","@alphinex/theme":"1.1.0","@alphinex/core":"1.0.0","@alphinex/utils":"1.1.0","@alphinex/hooks":"1.0.2","@alphinex/icons":"1.2.0","@alphinex/ui":"2.7.0"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"react-dom":{"optional":false}},"devDependencies":{"typescript":"^5.7.2","vite":"^6.0.5","vitest":"^2.1.8","react":"^19.0.0","react-dom":"^19.0.0","@types/react":"^19.0.2","@types/react-dom":"^19.0.2","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.5.2","@vitejs/plugin-react":"^4.3.4","axe-core":"^4.10.2","jsdom":"^25.0.1","eslint":"^9.17.0","@alphinex/build-config":"0.0.0","@alphinex/eslint-config":"0.0.0","@alphinex/typescript-config":"0.0.0"},"scripts":{"build":"vite build","dev":"vite build --watch","lint":"eslint .","typecheck":"tsc --noEmit","test":"vitest run","clean":"rimraf dist .turbo"},"_nodeVersion":"22.14.0","_id":"@alphinex/dashboard-kit@1.0.8","dist":{"integrity":"sha512-bvz9Al1eHQbcByrcuKOXE3VCqjmINAA2i3PerKgaU1mdhrIRH0HtMw3cvnmBqjaHRejs55c3nqQdVhTthJCl2g==","shasum":"8d61e2f095bed72a1e214657ac519ea3157d24c6","tarball":"https://registry.npmjs.org/@alphinex/dashboard-kit/-/dashboard-kit-1.0.8.tgz","fileCount":5,"unpackedSize":29154,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDRSDWSQ+jbdnp++98rh25uXlQ8ggapaAZEXAWHjp+ROwIgY4UbKBD6RQHdkNpW5PEokc7rHdbUEmOi7F9qWpnkvAE="}]},"_npmUser":{"name":"anasaliqureshi","email":"anas@alphinex.com"},"directories":{},"maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dashboard-kit_1.0.8_1786546530703_0.4393083315792301"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T13:06:00.385Z","modified":"2026-08-12T14:55:31.020Z","1.0.0":"2026-08-05T13:06:00.745Z","1.0.1":"2026-08-05T13:57:41.625Z","1.0.2":"2026-08-06T08:12:07.833Z","1.0.3":"2026-08-08T14:47:27.032Z","1.0.4":"2026-08-08T19:46:44.268Z","1.0.5":"2026-08-09T11:01:55.562Z","1.0.6":"2026-08-09T18:03:28.514Z","1.0.7":"2026-08-12T09:04:42.693Z","1.0.8":"2026-08-12T14:55:30.858Z"},"license":"UNLICENSED","description":"Draggable/resizable widget grid for building saved dashboard layouts. Reuses @dnd-kit (ADR-0011) for pointer/touch drag; resize and keyboard repositioning are hand-rolled. See documentation/PRODUCT-RESEARCH-MASTER-PLAN.md §10 (Sprint 19).","maintainers":[{"name":"anasaliqureshi","email":"anas@alphinex.com"}],"readme":"# @alphinex/dashboard-kit\n\nDraggable/resizable widget grid for building saved dashboard layouts.\n\n## Usage\n\n```tsx\nimport { DashboardGrid, type DashboardWidgetLayout } from \"@alphinex/dashboard-kit\";\nimport { StatCard } from \"@alphinex/business\";\nimport { useState } from \"react\";\n\nfunction Dashboard() {\n  const [layout, setLayout] = useState<DashboardWidgetLayout[]>([\n    { id: \"revenue\", x: 0, y: 0, w: 3, h: 2 },\n    { id: \"orders\", x: 3, y: 0, w: 3, h: 2 },\n  ]);\n\n  return (\n    <DashboardGrid\n      widgets={layout.map((widget) => ({\n        ...widget,\n        title: widget.id,\n        content: <StatCard label={widget.id} value=\"1,204\" delta={4.2} />,\n      }))}\n      onWidgetsChange={(next) => {\n        setLayout(next);\n        // Persist however the app wants — a backend call, localStorage, etc. This package\n        // has no storage opinion of its own.\n        void saveDashboardLayout(next);\n      }}\n    />\n  );\n}\n```\n\nWidget `content` is a plain `ReactNode` — drop in any existing component\n(`@alphinex/business`'s `StatCard` for a KPI tile, a `@alphinex/charts` chart, ...) rather than\nthis package reimplementing widget content types.\n\n## Interaction model\n\n- **Pointer/touch drag** uses [`@dnd-kit`](https://dndkit.com) (already adopted for\n  `@alphinex/kanban`, see ADR-0011) for its collision/pointer-capture handling.\n- **Keyboard**: focusing a widget's drag handle and pressing the arrow keys moves it one grid\n  cell at a time — a hand-rolled alternative to dragging, the same split `@alphinex/kanban` uses\n  (a library for the pointer state machine, hand-rolled code for the bounded arrow-key path).\n- **Resize** (pointer drag on the corner handle, or arrow keys while it's focused) is entirely\n  hand-rolled — pixel-delta-to-grid-cell math, not a separate dependency.\n\n## Known limitations\n\n- No collision detection between widgets — this is a free-form grid, not a bin-packing\n  algorithm. Overlapping widgets are a layout the caller chose, not an error this package\n  corrects.\n- Layout persistence is entirely the consumer's responsibility via `onWidgetsChange`.\n","readmeFilename":""}