{"_id":"@bluemillstudio/gantt","_rev":"20-5fa1dbd8fd9ef80b79791592ae26e3de","name":"@bluemillstudio/gantt","dist-tags":{"latest":"0.11.1"},"versions":{"0.1.0":{"name":"@bluemillstudio/gantt","version":"0.1.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.1.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"985ad1e4f17734d3c9e752611f5a4b314ff97f4a","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.1.0.tgz","fileCount":18,"integrity":"sha512-3PxuKu28d2DdUb3EcC5r7gTLlTAMhM8BzoW7tk7Rf2FwN4llSd83kjRW4v5iGLM/PKKF8uHNcT6LeUB+C+RtIw==","signatures":[{"sig":"MEQCIGQBTP+3z/u6KNoRvZpeQgz3+fun9ge0DAwSmA58QPx0AiBLveVFPDvRuiCiyy19Jvj1lBt3NQn8ZAo7aPkiFWS2KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1263144},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"ca1c19d804719b063b5403c76d76d08c985f66d6","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.8.2","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.1.0_1776179796221_0.5203316190876188","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bluemillstudio/gantt","version":"0.2.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.2.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"e7cf66331084422ca7673f72c996fa1c416f9313","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.2.0.tgz","fileCount":18,"integrity":"sha512-Dy8h3LLVYYYxZ8YBrzn/9YacvfYvIabnHG8JZT20g24SiBdSmZDRIqxhXvFkTY/henCI+8LQNxYY8M9JmCvxQQ==","signatures":[{"sig":"MEUCIQDWmFxXXRqIwd3QXvefH09R9ZYEMQF0t3ckrACQDCn/JQIgdhLKv2LXuP7YAvk4E8ccg2FZ6lUIN18r2Z6msJ8uMss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1283369},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"8f17caee66382ec785920b61177c22b596e1533f","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.8.2","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.2.0_1776182919709_0.5356089563235371","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bluemillstudio/gantt","version":"0.3.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.3.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"98bc6b2eca1dcd17760e513dadaf2599608a1271","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.3.0.tgz","fileCount":18,"integrity":"sha512-KdLC1SRkkdceu1tnd1lfzLalI6cj3MLXzv4nCsScdBFtv+5EWcKZYo1gR6XQHOqLAs/Zubiljo4NtRmD7jCDKA==","signatures":[{"sig":"MEYCIQCEfDj2IT/wapydO1R4hgXSAt9OLIk+AiKgaIpKpatOIwIhANQC7hzvadIqmX2iRTdNvXRsLDq3Vd4k1yNYnpRteqWZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1336414},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"2bd0a81dbc908d429a8df27a96e920f9662a0116","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.8.2","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.3.0_1776183825289_0.09941323671848923","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bluemillstudio/gantt","version":"0.4.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.4.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"66bfae099d45a823b7525e886392bcd17f682aa1","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.4.0.tgz","fileCount":18,"integrity":"sha512-XiTikqYsC+PQgTC6B7uDzGsJC1HGLcIvCfd65Qqw50qdzGdhMIVr5hA3T1IWi5KaIBg6647UC2xmr81dRltjBQ==","signatures":[{"sig":"MEUCIGE7cH4ttzliD4D4VwrcG0Uqprulyk0RQ5S5DWiJ5v5jAiEAvIvqPtSDVtsWlEXreIsaiihQV/6iB1xemdtXZCbn7P4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1360744},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"76f5353833fb5ec3804e4827059aa2d8d26965ac","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.8.2","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.4.0_1776184123141_0.09111713148233158","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bluemillstudio/gantt","version":"0.4.1","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.4.1","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"3064578dc4da000a1080e7507078a859b526f262","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.4.1.tgz","fileCount":18,"integrity":"sha512-uerytwKS4HOdPlkAhQ370O3iA4E63SA6m8/yC9nhMCcoU/ypkmM6RWORd7IXigfHrbxqumGJmPBxKAXk7o4t7A==","signatures":[{"sig":"MEUCIFJtM8gLAGfJ484FCfletbGtJVg0erJMmt2tP2sEkPDXAiEAictesTh8qBh6zE/qytIuf/SJOJZEFYpoabVUZeSaNTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1361109},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"2f2d9c17e7921dd0d22f33146df5b8395ca87db4","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.4.1_1776185539288_0.3972136305916536","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bluemillstudio/gantt","version":"0.5.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.5.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"08275407aae5dca081bb46e65d0e39321a3530e4","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.5.0.tgz","fileCount":18,"integrity":"sha512-9OAuOLGxnuUeVNJhj5w9Mxh36yM3LzdF5vRplZsrmBE2/1pH+TdfxrHav7XW1XM1ir1mvJ4k/kDx9TvAXR5szA==","signatures":[{"sig":"MEUCIQD+wUhIIAHP8x7k+mnr097WW1XuMLDSd7C0bwArFb7GogIgTePQ2EuQ34xqUKgulzQ5pMb+3C7rV/C2hvv/xj9Dl8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1377558},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"34e79aac500debb94d3a0547fc61692f94383657","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.5.0_1776223311661_0.1411466331799025","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bluemillstudio/gantt","version":"0.5.1","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.5.1","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"20a07e628bb342065b49379c07f68c4e7d2bd8ac","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.5.1.tgz","fileCount":18,"integrity":"sha512-ZSsH2OLSvdjQK4CgbyEfGIQgeir1zVQ+eSA6HOmf10lOHW7hDGVFXMf9BRrvdZEODirCKISXO9mMn7HVLyTYqw==","signatures":[{"sig":"MEUCIQDpZLA75iq7CaK87HmZZl5luC6l0wvRPpIA9sP7JKPCZAIgfkkbgkeQqbNo47dJ2u13nlDzzA/hmKtCFWXVw6RXOeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1386581},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"2175597f38badf1656579a6fe439c4d0a2d0a37b","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.5.1_1776225658136_0.5760221066001292","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@bluemillstudio/gantt","version":"0.5.2","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.5.2","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"2ad6248aebb6340c00555386813d845c1f76b34c","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.5.2.tgz","fileCount":18,"integrity":"sha512-Wv3dp2M7mD9CgWsY/J8WoUudL8OoJa1poFG7UjNcxC4eNLzupSOCi3jPdwW/7uo+f0Ythjq84unqUZbn7ZBmwQ==","signatures":[{"sig":"MEUCIC7yXN3mB5dpCVmWd2anFue6g7NLuVZNdmwAfrdkPltsAiEA96Hqvw0OqBNSS/qEx5UH0sTYYF7s1sWAkLSPYWn3eeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1394129},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"725691ff1f27cfdcd18d55ddacda76e0c600457c","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.5.2_1776227340546_0.6986284067176973","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bluemillstudio/gantt","version":"0.6.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.6.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"736dc92fc6a2f9946b6fb565853542117f792fe7","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.6.0.tgz","fileCount":18,"integrity":"sha512-nBsHKi4KzAfDW3XpysGmkSokN/KVwkGjHobDyhvWKwQUCt+wgNp3HdPq7dSUf+H2NzkaGLg3dqZakY0rigkuXA==","signatures":[{"sig":"MEUCIC+QDUL+ZnAZQNs9n/86iM6mPSLdYHB+CSmPBzq13WpkAiEAoYZ2anB+VuUdd6iogQ197QATQ9O3gQ70gYgFO/15g2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1398622},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"8d40ac8a9ae4a7e8b7dc3141f991c21d0dea7a11","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.6.0_1776227554488_0.2419462003303572","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@bluemillstudio/gantt","version":"0.6.1","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.6.1","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"5cb7d3375587c8ab27160db37dfcab6a6144f5cd","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.6.1.tgz","fileCount":18,"integrity":"sha512-TSCb9SGETOecnFNYcNWny4h/f4iAm0XPaZRfVrJSQpi8QtYsn3NeMO4izKB4GpVroXaKSSCoXC1qxONoe/p7Pw==","signatures":[{"sig":"MEYCIQDKMwCqcVHMEu0YB6l9ojAbO1Xmy127OfozDgnAzVEEsQIhAKDNqrHOMvAk/TixPbSTu1BbFi9U5T/1UYQMtRTuoFXB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1403588},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"56dbbf534957152276e4be01e6dd4601e512aed5","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.6.1_1776227883306_0.48866838955428116","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@bluemillstudio/gantt","version":"0.7.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.7.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"5f48cc4f94f87dcb2083bf9737eceae4e1f09f8a","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.7.0.tgz","fileCount":18,"integrity":"sha512-fE6MzHVWzIpxgq0fn7k0+lbOLET3IMeIRrQJ69Qag1xDKUc0Wd4lsSxsiVJ+ll+UQM12rMwNCohF/D+o0h58XQ==","signatures":[{"sig":"MEUCIQCJoWUhx+bdAJ+139yS12I/mIGkDC2adGgExnQAo7hIYwIgNntF3MnjADHgdKGbBit1ZBD7pAvV8MK44hwPBWtgvkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1485812},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}}},"gitHead":"f83aec3cfb07faaa6a64406f01b67f9dd561d287","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.7.0_1776229861047_0.21981245521971915","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@bluemillstudio/gantt","version":"0.8.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.8.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"c8eda8832c6e7fe69d1ec606aeb83d3964185f06","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.8.0.tgz","fileCount":32,"integrity":"sha512-J5UoBPS9r42PWAGRxnKg9xH9sAV3Www/0mG9Nj+tzjCTwaYUp8dCsLZ+ddCEFlczM60o1hl/82jdZIbVodMFpQ==","signatures":[{"sig":"MEYCIQC9MQSDKJWIcBtKB12vO9AMxoP3I+Lmf6M1aShBdEV2qQIhALGMU9J1wiScC7lV/N93KrVsINmfOXf815Vlp9LtjvG4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1585401},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"c77b6023e8fd2a68847ef17cd6dadb8bb7900781","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.8.0_1776230456313_0.8878433943462782","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@bluemillstudio/gantt","version":"0.9.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.9.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"de3928545c084b95737370ca882d41273a205f7a","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.9.0.tgz","fileCount":32,"integrity":"sha512-boEta7EwKG8vw/JuZqpJMlxdajjlur0XBDKkCEJ8zjEpQ7OOlQqgwLLnphIyWvcBRxvFPumrFZl7WNchpZNBBA==","signatures":[{"sig":"MEQCIEvP/BxNc+KO6okCSTm2vWTBU8Y+BphItuZ38DOWE1WTAiAWjvWAbz3jaezmhUJ3F6lSu+xDmtNs2SYgjcJd3nJaIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1591556},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"dfa512855b26bebe64ea3dfd4f08d61bcb4b0aca","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.9.0_1776314564309_0.020796716859824427","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@bluemillstudio/gantt","version":"0.9.1","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.9.1","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"bc4bbf813f7cb8803560179608e01bf3d55644f0","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.9.1.tgz","fileCount":32,"integrity":"sha512-aggmfY2rOHm1d3j+eKSnKxy6qVnTWnsNGTa5O+G2QQJ+vnklxPWLfa1OHj9nL0QdiNFFLYvquaFN+MtGoLxk0g==","signatures":[{"sig":"MEYCIQCNhz1lAPMcjx86FwaBFIpuIz8BAviUTTCui4fll8OengIhAMAqTG8yjEY0ioKDd9G9kU8urcExlgrQAoBpOspJzsV1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1610827},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"0a266e2fe3276c5dfff7e35e3e5f1cbf5b9cc42a","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.9.1_1776314879035_0.3776837760358769","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@bluemillstudio/gantt","version":"0.9.2","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.9.2","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"05d23bebf9eeb027e1dad65c521b62f7e30a6adc","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.9.2.tgz","fileCount":32,"integrity":"sha512-Kp/oHtwNsPB2ozCRueTa2MjHGfp7EEDhjyunRbjucdlwWNgZQTzYwopd9sW4a5PaTx7UmXVQhpQnX5x7jhu6oQ==","signatures":[{"sig":"MEQCIGEpAZ292CZmCZ6qE2xpuui5Z7yCq5qRRBWuajTHTg9YAiBa4gQuKHiHRaRjbkybj57HhJE1cZuoJk2S6bdrqn46Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1621513},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"84ec98975287b49eea5570b403b0990eef9ab888","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.9.2_1776315460210_0.6621742172704042","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@bluemillstudio/gantt","version":"0.9.3","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.9.3","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"2f26802268e127611894065aa3d0691e806d48c6","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.9.3.tgz","fileCount":32,"integrity":"sha512-/QV1NURU9G4WCSj/TJIWQgV94d1D3t1SrOkCLJiif/64Vt0UMvbnVA7fpwM2I2YR5IDrRfu6HEk6Z4Whs9ln6g==","signatures":[{"sig":"MEYCIQCJ6lB9Z+EV9Y+sa/aKKc8zElbTUqOqncYX2Ur4g5PeyAIhAI3tgU/AFWQuS6jv3/XGzZ6uV/3q+p+KR18n4IBqKe9f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1626847},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"c7df0a1173f83a6d4e97b75e21e3e1f3a88deec2","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.9.3_1776323621413_0.08645246237223225","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@bluemillstudio/gantt","version":"0.10.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.10.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"1bc9a0e314fe7610f59a66abc95df9ffcb295e86","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.10.0.tgz","fileCount":32,"integrity":"sha512-vRUImt+Jwq+BQkFl+AcKXJ0OFCd5+13Xz1HaTIO0SVfwXJoQzBlF4miZQq3UsiUmb2AcKr/oKu8vRlt4eKZP+Q==","signatures":[{"sig":"MEQCIH4qZQozEfMfCpkY2rEK9Wch/VEPjurrZZerdEkJeYAWAiBmR78VdcPqKXvJKO/oq5MIidrtnQRxn81Hi6AWENB1Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1627896},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"a7420483f4a0971026c13fe1a21f5505210e9276","scripts":{"test":"vitest run","build":"tsup","check:pkg":"npx publint && npx @arethetypeswrong/cli --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.10.0_1776326468233_0.9154999133060386","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@bluemillstudio/gantt","version":"0.10.1","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.10.1","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"4fb1a0985dac09939c08e1b0cf7dddbabbd5172d","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.10.1.tgz","fileCount":32,"integrity":"sha512-ZS8rylqjPmZKXKaSqRC+WefmhbrBZUvAiX5bcN6CQy6xJ/CbcOJQ10ihzg+JV43G3cmNxp9NkWj+DTTno3N7jQ==","signatures":[{"sig":"MEQCIFc6MnL8RyENHii10SExu1BNjhT5w1AgWs8KynL85FVkAiAhzkGP95WpsRs3kXChB4k4NxccgYLkMfFm2+to/+9zrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1628684},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"6233b0f9a9015427e140c1678efaefdf5c4c049f","scripts":{"test":"vitest run","build":"tsup","check:pkg":"npx publint && npx @arethetypeswrong/cli --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","check:bundlesize":"node scripts/check-bundlesize.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.10.1_1776327450284_0.12366243350991057","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@bluemillstudio/gantt","version":"0.11.0","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"author":{"name":"Blue Mill Studio"},"license":"MIT","_id":"@bluemillstudio/gantt@0.11.0","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"dist":{"shasum":"33c18183647ba0837e6d81441e1b2b99c22659a8","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.11.0.tgz","fileCount":32,"integrity":"sha512-cvADVpWQVVCWr0MKovJnr4PMLgFIkEr1UM8OD9rYuzYLyFlhWJe1BbUtKYPch34EL6ETJqv0l+DbjM7MtN2R1Q==","signatures":[{"sig":"MEYCIQDECV7O4fTjczBNPXmrCv54F57nv8LZV5qi7tL/kJl3ugIhALd62b1JYchtAz0ZkCRo6aL8EiNf0WgYXo+TuBVvhMBL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1702544},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"gitHead":"743ffaea418ba0e11e24c3509ef9388ee4fbe9ca","scripts":{"test":"vitest run","build":"tsup","check:pkg":"npx publint && npx @arethetypeswrong/cli --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","docs:catalog":"node scripts/generate-catalog.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:scenarios":"node scripts/check-scenarios.mjs","check:bundlesize":"node scripts/check-bundlesize.mjs","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs"},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"repository":{"url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git","type":"git"},"_npmVersion":"10.9.7","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7","date-fns":"^3.6.0","html-to-image":"^1.11.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","yaml":"^2.8.3","jsdom":"^29.0.2","vitest":"^1.6.1","typescript":"^5.9.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","@tanstack/react-table":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gantt_0.11.0_1776841164630_0.7817003604106547","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@bluemillstudio/gantt","version":"0.11.1","type":"commonjs","description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","author":{"name":"Blue Mill Studio"},"license":"MIT","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"repository":{"type":"git","url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git"},"homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./store":{"import":{"types":"./dist/store.d.mts","default":"./dist/store.mjs"},"require":{"types":"./dist/store.d.ts","default":"./dist/store.js"}},"./query":{"import":{"types":"./dist/query.d.mts","default":"./dist/query.mjs"},"require":{"types":"./dist/query.d.ts","default":"./dist/query.js"}},"./analysis":{"import":{"types":"./dist/analysis.d.mts","default":"./dist/analysis.mjs"},"require":{"types":"./dist/analysis.d.ts","default":"./dist/analysis.js"}}},"sideEffects":false,"scripts":{"build":"tsup","prepublishOnly":"npm run build","typecheck":"tsc --noEmit","typecheck:examples":"tsc -p tsconfig.examples.json --noEmit","check:contract-coverage":"node scripts/check-contract-coverage.mjs","check:scenarios":"node scripts/check-scenarios.mjs","check:catalog":"node scripts/generate-catalog.mjs --check","check:pkg":"npx publint && npx @arethetypeswrong/cli --pack .","check:bundlesize":"node scripts/check-bundlesize.mjs","docs:catalog":"node scripts/generate-catalog.mjs","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"peerDependencies":{"@tanstack/react-table":"^8.0.0","react":">=18.0.0","react-dom":">=18.0.0"},"dependencies":{"date-fns":"^3.6.0","html-to-image":"^1.11.13","jspdf":"^4.2.1","zundo":"^2.3.0","zustand":"^4.5.7"},"devDependencies":{"@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^1.6.1","jsdom":"^29.0.2","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^1.6.1","yaml":"^2.8.3"},"publishConfig":{"access":"public"},"_id":"@bluemillstudio/gantt@0.11.1","gitHead":"61cee4bbc5285620d82b0813f9f1308a47a48042","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-CZd3xndYb0VTNKZy9/Y2oyylWFQcAchtiXHxzx9+uny2GndxMwLlBszULeQQN14rCXPP4AR7WyG9Ik+jfzjrOA==","shasum":"1df1d0a6ef5189252c4aa85a0d71bb9db19dd5fc","tarball":"https://registry.npmjs.org/@bluemillstudio/gantt/-/gantt-0.11.1.tgz","fileCount":32,"unpackedSize":1703173,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bluemillstudio%2fgantt@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEbXjy7I5GUaxWUsvaiWgvCAGbC0w1j3ksEDfGzuPusAAiEAzjwWMTDzHghNLQUCcfs3jGFMZd9oJU3e1dd77+/lBAg="}]},"_npmUser":{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"},"directories":{},"maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gantt_0.11.1_1777393665559_0.6656822481379183"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T15:16:36.084Z","modified":"2026-04-28T16:27:45.998Z","0.1.0":"2026-04-14T15:16:36.476Z","0.2.0":"2026-04-14T16:08:39.953Z","0.3.0":"2026-04-14T16:23:45.552Z","0.4.0":"2026-04-14T16:28:43.384Z","0.4.1":"2026-04-14T16:52:19.487Z","0.5.0":"2026-04-15T03:21:51.818Z","0.5.1":"2026-04-15T04:00:58.388Z","0.5.2":"2026-04-15T04:29:00.779Z","0.6.0":"2026-04-15T04:32:34.744Z","0.6.1":"2026-04-15T04:38:03.459Z","0.7.0":"2026-04-15T05:11:01.259Z","0.8.0":"2026-04-15T05:20:56.482Z","0.9.0":"2026-04-16T04:42:44.462Z","0.9.1":"2026-04-16T04:47:59.195Z","0.9.2":"2026-04-16T04:57:40.364Z","0.9.3":"2026-04-16T07:13:41.623Z","0.10.0":"2026-04-16T08:01:08.406Z","0.10.1":"2026-04-16T08:17:30.482Z","0.11.0":"2026-04-22T06:59:24.828Z","0.11.1":"2026-04-28T16:27:45.737Z"},"bugs":{"url":"https://github.com/Diederik-Henhouse-Studio/bms-gantt/issues"},"author":{"name":"Blue Mill Studio"},"license":"MIT","homepage":"https://github.com/Diederik-Henhouse-Studio/bms-gantt#readme","keywords":["gantt","gantt-chart","react","react-gantt","scheduling","project-management","typescript","critical-path","timeline","resource-scheduling","swimlanes","react-timeline"],"repository":{"type":"git","url":"git+https://github.com/Diederik-Henhouse-Studio/bms-gantt.git"},"description":"Interactive Gantt chart component for React — drag & drop, dependencies, critical path, auto-scheduling","maintainers":[{"name":"diederik-henhouse-studio","email":"dm@henhouse.studio"}],"readme":"# @bluemillstudio/gantt\n\n[![npm](https://img.shields.io/npm/v/@bluemillstudio/gantt)](https://www.npmjs.com/package/@bluemillstudio/gantt)\n[![downloads](https://img.shields.io/npm/dm/@bluemillstudio/gantt)](https://www.npmjs.com/package/@bluemillstudio/gantt)\n[![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n![react](https://img.shields.io/badge/react-%E2%89%A518-61dafb)\n![typescript](https://img.shields.io/badge/typescript-5.x-3178c6)\n[![provenance](https://img.shields.io/badge/provenance-verified-brightgreen)](https://www.npmjs.com/package/@bluemillstudio/gantt)\n\nInteractive Gantt chart component for React with drag & drop, dependencies, critical path analysis, auto-scheduling, and more. Zero Gantt dependencies — built on top of Zustand (state), date-fns (dates) and SVG (dependency arrows).\n\n## Features\n\n- **Drag & drop** — move, resize, and adjust task progress\n- **Dependencies** — SVG arrows between tasks (finish-to-start, finish-to-finish, start-to-start, start-to-finish)\n- **Critical path** — forward/backward pass (CPM) with red highlighting\n- **Auto-scheduling** — automatically shift tasks along dependency chains\n- **Baselines** — original plan shown as a shadow bar behind the live bar\n- **Slack / float** — per-task slack computation and visualisation\n- **Export** — PNG and PDF export of the entire chart\n- **Zoom** — 6 levels: hours, days, weeks, months, quarters, years\n- **Hierarchy** — summary tasks with collapsible sub-trees\n- **Milestones** — zero-duration tasks rendered as diamonds\n- **Markers** — vertical lines on specific dates (deadlines, cut-offs)\n- **Calendar** — configurable working days and holidays\n- **Virtual scrolling** — stays performant on large datasets\n- **Keyboard & context menu** — right-click actions\n\n## Installation\n\n```bash\nnpm install @bluemillstudio/gantt\n```\n\n### Peer dependencies\n\n```json\n{\n  \"react\": \">=18.0.0\",\n  \"react-dom\": \">=18.0.0\",\n  \"@tanstack/react-table\": \"^8.0.0\"\n}\n```\n\nThe component uses **Tailwind CSS** utility classes internally. To ensure they're included in your CSS bundle, add the package's dist to your Tailwind `content` config:\n\n```js\n// tailwind.config.js\nmodule.exports = {\n  content: [\n    './src/**/*.{ts,tsx}',\n    './node_modules/@bluemillstudio/gantt/dist/**/*.{js,mjs}', // ← add this\n  ],\n};\n```\n\nYou also need the shadcn/ui CSS variables — see [Styling & Theming](#styling--theming).\n\n## Quick Start\n\n```tsx\nimport { Gantt } from '@bluemillstudio/gantt';\nimport type { GanttTask } from '@bluemillstudio/gantt/store';\n\nconst tasks: GanttTask[] = [\n  {\n    id: '1',\n    text: 'Design',\n    start: new Date('2026-05-01'),\n    end: new Date('2026-05-15'),\n    duration: 11,\n    progress: 40,\n    parentId: null,\n    type: 'task',\n    open: false,\n    $x: 0, $y: 0, $w: 0, $h: 0, $level: 0,\n  },\n  {\n    id: '2',\n    text: 'Implementation',\n    start: new Date('2026-05-16'),\n    end: new Date('2026-06-01'),\n    duration: 13,\n    progress: 0,\n    parentId: null,\n    type: 'task',\n    open: false,\n    $x: 0, $y: 0, $w: 0, $h: 0, $level: 0,\n  },\n];\n\nexport default function Planning() {\n  return (\n    <div className=\"h-[600px]\">\n      <Gantt\n        tasks={tasks}\n        links={[{ id: 'l1', source: '1', target: '2', type: 'e2s' }]}\n        onTaskClick={(task) => console.log('Click:', task.text)}\n        onTaskUpdate={(task) => console.log('Update:', task.id)}\n      />\n    </div>\n  );\n}\n```\n\n> **Tip:** Computed layout fields (`$x`, `$y`, `$w`, `$h`, `$level`) are populated automatically by the store. Initialise them to `0` when creating tasks.\n\n## API Reference\n\n### GanttProps\n\n| Prop | Type | Required | Description |\n|------|------|----------|-------------|\n| `tasks` | `GanttTask[]` | Yes | List of tasks to render |\n| `links` | `GanttLink[]` | No | Dependency links between tasks |\n| `markers` | `GanttMarker[]` | No | Vertical marker lines |\n| `config` | `Partial<GanttConfig>` | No | Configuration overrides |\n| `className` | `string` | No | Extra CSS class on the container |\n| `labels` | `Partial<GanttLabels>` | No | Override UI strings (defaults are English) |\n| `slots` | `GanttSlots` | No | Customisation slots: `renderTaskBar`, `columns` |\n| `onTaskClick` | `(task: GanttTask) => void` | No | Fires on task bar click |\n| `onTaskDoubleClick` | `(task: GanttTask) => void` | No | Fires on task bar double-click |\n| `onTaskUpdate` | `(task: GanttTask) => void` | No | Fires after drag/resize/progress change |\n| `onLinkCreate` | `(link: GanttLink) => void` | No | Fires when a dependency is created |\n| `onLinkDelete` | `(linkId: string) => void` | No | Fires when a dependency is deleted |\n\n### GanttTask\n\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `id` | `string` | Yes | Unique identifier |\n| `text` | `string` | Yes | Task label |\n| `start` | `Date` | Yes | Start date |\n| `end` | `Date` | Yes | End date |\n| `duration` | `number` | Yes | Duration in working days |\n| `progress` | `number` | Yes | Progress 0–100% |\n| `parentId` | `string \\| null` | Yes | Parent id for tree structure, `null` for root |\n| `type` | `'task' \\| 'summary' \\| 'milestone'` | Yes | Structural role |\n| `open` | `boolean` | Yes | Whether children are expanded (only for `summary`) |\n| `$x, $y, $w, $h` | `number` | Yes | Computed pixel positions (init to `0`) |\n| `$level` | `number` | Yes | Computed indentation depth |\n| `baseStart` | `Date` | No | Baseline start (original plan) |\n| `baseEnd` | `Date` | No | Baseline end |\n| `critical` | `boolean` | No | Computed: on the critical path |\n| `slack` | `number` | No | Computed: slack in working days |\n| `segments` | `TaskSegment[]` | No | Segments for split tasks |\n| `taskCategory` | `TaskCategory` | No | Optional, consumer-defined category used for bar colour |\n| `minDuration` | `number` | No | Minimum duration in calendar days — resize is clamped to this value |\n| `maxDuration` | `number` | No | Maximum duration in calendar days — resize is clamped to this value |\n| `lockStart` | `boolean` | No | When true, the start date cannot be changed by drag/resize |\n| `lockEnd` | `boolean` | No | When true, the end date cannot be changed by drag/resize |\n| `noOverlap` | `boolean` | No | When true, drag reverts if it would overlap a sibling (same parentId) |\n| `projectId` | `string` | No | Optional: FK to a parent project/dossier |\n| `status` | `TaskStatus` | No | Lifecycle: `planned`, `active`, `paused`, `completed`, `cancelled` |\n| `color` | `string` | No | Override bar colour (CSS value) |\n\n### GanttLink\n\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `id` | `string` | Yes | Unique identifier |\n| `source` | `string` | Yes | Predecessor task id |\n| `target` | `string` | Yes | Successor task id |\n| `type` | `LinkType` | Yes | `'e2s'` (finish-to-start), `'e2e'`, `'s2s'`, `'s2e'` |\n| `critical` | `boolean` | No | Computed: on the critical path |\n| `$points` | `string` | No | Computed: SVG polyline coordinates |\n\n### GanttMarker\n\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `id` | `string` | Yes | Unique identifier |\n| `date` | `Date` | Yes | Position of the marker line |\n| `label` | `string` | No | Label shown above the line |\n| `color` | `string` | No | CSS colour |\n| `dashed` | `boolean` | No | Dashed instead of solid |\n\n### GanttConfig\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `scales` | `GanttScale[]` | From zoom preset | Header rows (e.g. months + days) |\n| `cellWidth` | `number` | From zoom preset | Pixel width per cell |\n| `cellHeight` | `number` | `36` | Pixel height per task row |\n| `barHeight` | `number` | `24` | Pixel height of the task bar |\n| `barPadding` | `number` | `6` | Vertical padding above/below the bar |\n| `readonly` | `boolean` | `false` | Read-only mode (no drag/edit) |\n| `showBaselines` | `boolean` | `false` | Render baseline (shadow) bars |\n| `showCriticalPath` | `boolean` | `false` | Highlight the critical path in red |\n| `showSlack` | `boolean` | `false` | Show slack/float indicators |\n| `showToolbar` | `boolean` | `true` | Render the built-in toolbar (zoom, today, export, etc.) |\n| `workingDays` | `number[]` | `[1,2,3,4,5]` | ISO weekday numbers (1=Mon, 7=Sun) |\n| `holidays` | `Date[]` | `[]` | Non-working dates |\n\n## Zoom Levels\n\nThe chart supports 6 zoom levels via `ZOOM_PRESETS`:\n\n| Level | Top header | Bottom header | Cell width | Suitable for |\n|-------|-----------|---------------|-----------|--------------|\n| `minutes` | Hour (`HH:00`) | Minute (`mm`) | 20px | Intra-day scheduling (default 15-min steps) |\n| `hours` | Day (`d MMM`) | Hour (`HH`) | 40px | Detailed day-level planning |\n| `days` | Month (`MMM yyyy`) | Day (`d`) | 32px | Weekly planning |\n| `weeks` | Month (`MMM yyyy`) | Week (`W1`) | 80px | Monthly overview |\n| `months` | Year (`yyyy`) | Month (`MMM`) | 80px | Quarterly overview |\n| `quarters` | Year (`yyyy`) | Quarter (`Q1`) | 100px | Yearly overview |\n| `years` | Year (`yyyy`) | — | 120px | Multi-year overview |\n\nChange the zoom via the toolbar or programmatically:\n\n```tsx\nimport { useGanttStore } from '@bluemillstudio/gantt/store';\n\nconst setZoom = useGanttStore((s) => s.setZoom);\nsetZoom('weeks');\n```\n\n## Events\n\n```tsx\n<Gantt\n  tasks={tasks}\n  links={links}\n  onTaskClick={(task) => router.push(`/projects/${task.projectId}`)}\n  onTaskDoubleClick={(task) => openEditor(task.id)}\n  onTaskUpdate={async (task) => {\n    await api.updateTask(task.id, {\n      start: task.start,\n      end: task.end,\n      progress: task.progress,\n    });\n  }}\n  onLinkCreate={async (link) => api.createLink(link)}\n  onLinkDelete={async (linkId) => api.deleteLink(linkId)}\n/>\n```\n\n## Advanced Features\n\n### Critical Path\n\nComputes the longest path through the dependency network. Tasks on the critical path have no slack — any delay delays the whole project.\n\n```tsx\n<Gantt tasks={tasks} links={links} config={{ showCriticalPath: true }} />\n```\n\nWhen enabled:\n- Critical tasks get `critical: true` and are rendered in red\n- Critical links are also rendered in red\n- Computed via forward/backward pass (CPM algorithm)\n\n### Auto-Scheduling\n\nAutomatically shifts tasks forward based on their dependencies, respecting working days and holidays.\n\n```tsx\nimport { useGanttStore } from '@bluemillstudio/gantt/store';\n\nconst autoSchedule = useGanttStore((s) => s.autoScheduleTasks);\nautoSchedule();\n```\n\nSupported link types:\n\n| Type | Name | Meaning |\n|------|------|---------|\n| `e2s` | Finish-to-Start | Successor starts after predecessor ends |\n| `e2e` | Finish-to-Finish | Successor ends together with predecessor |\n| `s2s` | Start-to-Start | Successor starts together with predecessor |\n| `s2e` | Start-to-Finish | Successor ends when predecessor starts |\n\n### Baselines\n\nShow the original plan as a shadow bar behind the live bar:\n\n```tsx\nconst tasks: GanttTask[] = [\n  {\n    id: '1',\n    text: 'Transport',\n    start: new Date('2026-06-01'),\n    end: new Date('2026-06-20'),\n    baseStart: new Date('2026-05-15'),\n    baseEnd: new Date('2026-06-01'),\n    // ...other fields\n  },\n];\n\n<Gantt tasks={tasks} config={{ showBaselines: true }} />\n```\n\n### Slack / Float\n\nShows how many working days a task can slip without delaying the project:\n\n```tsx\n<Gantt tasks={tasks} links={links} config={{ showSlack: true }} />\n```\n\nAfter calculation each task has a `slack` field (working days). Tasks with `slack === 0` are on the critical path.\n\n### Export (PNG / PDF)\n\nThe toolbar includes a built-in `ExportButton`. It exports the full chart (including content outside the viewport) as:\n\n- **PNG** — retina quality (2× pixel ratio)\n- **PDF** — automatic orientation (landscape/portrait) and page size (A3/A4)\n\n## Example Integration\n\nThe [`src/presets/examples/moonbase.ts`](src/presets/examples/moonbase.ts) module is kept in the package as a worked example of a **domain-specific integration** (using a fictional moonbase-construction project). It shows one way to:\n\n- Define a category-to-colour mapping (`TASK_CATEGORY_COLORS`)\n- Define a status-to-colour mapping (`TASK_STATUS_COLORS`)\n- Convert a domain object into `{ tasks, links, markers }` via `createProjectGanttData()`\n- Provide a default `GanttConfig` and a holidays array\n\nYou are not expected to use the Moonbase preset directly — copy it into your own app and adapt it to your domain.\n\n## Customisation slots\n\nCustomise parts of the chart via the `slots` prop — all fields are optional.\n\n```tsx\nimport { Gantt, type GanttSlots } from '@bluemillstudio/gantt';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nconst helper = createColumnHelper<GanttTask>();\n\nconst slots: GanttSlots = {\n  // Replace the default left-pane columns\n  columns: [\n    helper.accessor('text', { header: 'Name', size: 240 }),\n    helper.accessor('projectId', { header: 'Project', size: 140 }),\n    helper.accessor('progress', { header: '%', size: 60 }),\n  ],\n  // Replace the inner content of regular task bars\n  renderTaskBar: (task) => (\n    <div className=\"flex h-full items-center px-1 text-[11px] text-white\">\n      {task.text} — {task.progress}%\n    </div>\n  ),\n  // Override the timeline header cell content\n  renderHeaderCell: (cell, rowIndex) => (\n    <span className={rowIndex === 0 ? 'font-mono' : ''}>{cell.label}</span>\n  ),\n  // Custom hover tooltip\n  renderTaskTooltip: (task) => (\n    <div>\n      <strong>{task.text}</strong>\n      <div>{task.progress}% complete</div>\n    </div>\n  ),\n};\n\n<Gantt tasks={tasks} slots={slots} />\n```\n\n## Internationalisation\n\nAll UI strings are English by default and can be overridden via the `labels` prop:\n\n```tsx\nimport { Gantt, type GanttLabels } from '@bluemillstudio/gantt';\n\nconst dutch: Partial<GanttLabels> = {\n  today: 'Vandaag',\n  zoomIn: 'Inzoomen',\n  zoomOut: 'Uitzoomen',\n  save: 'Opslaan',\n  cancel: 'Annuleren',\n};\n\n<Gantt tasks={tasks} labels={dutch} />\n```\n\nSee `DEFAULT_LABELS` exported from the package for the full list of keys.\n\n## Theming via CSS custom properties\n\nKey colours can be overridden via CSS variables. No stylesheet import is required — all values fall back to sensible defaults if the variable is not set. Scope overrides to the `.gantt-container` class to isolate them from the rest of your app.\n\n```css\n.gantt-container {\n  --gantt-weekend-bg: rgb(148 163 184 / 0.12);\n  --gantt-holiday-bg: rgb(239 68 68 / 0.1);\n  --gantt-today-color: hsl(220 90% 55%);\n  --gantt-today-fg: white;\n  --gantt-critical-color: rgb(239 68 68);\n  --gantt-baseline-bg: rgb(148 163 184 / 0.15);\n  --gantt-baseline-stripe: rgb(148 163 184 / 0.35);\n  --gantt-baseline-border: rgb(148 163 184 / 0.6);\n}\n\n/* Dark-mode tweak */\n.dark .gantt-container {\n  --gantt-weekend-bg: rgb(148 163 184 / 0.08);\n  --gantt-critical-color: rgb(252 165 165);\n}\n```\n\nBar category colours, status opacity, and text contrast are still driven by Tailwind + shadcn variables — consumer controls those via their existing design tokens.\n\n## Styling & Theming\n\nThe component uses **Tailwind CSS** utility classes and expects the following shadcn/ui CSS variables:\n\n```css\n:root {\n  --background: ...;\n  --foreground: ...;\n  --muted: ...;\n  --muted-foreground: ...;\n  --accent: ...;\n  --border: ...;\n  --popover: ...;\n}\n```\n\nThe container has the classes `bg-background border rounded-lg`. Pass additional styling via the `className` prop:\n\n```tsx\n<Gantt tasks={tasks} className=\"shadow-lg h-[800px]\" />\n```\n\nTask bar colours are resolved in this order:\n1. `task.color` — direct override\n2. `task.taskCategory` via `TASK_CATEGORY_COLORS` — domain colours\n3. Default theme colour\n\n## Introspection for agents & tests\n\nEvery rendered element carries `data-gantt-*` attributes that describe its role and coordinates in a stable, serializable form. Combined with the imperative `ref` handle, this makes the chart programmatically legible to AI agents, Playwright suites, and custom tooling — no screenshot parsing required.\n\n### DOM attributes\n\n| Role | Attribute selector | Key data attributes |\n|------|-------------------|---------------------|\n| container | `[data-gantt-role=\"container\"]` | — |\n| task bar | `[data-gantt-role=\"task-bar\"]` | `data-gantt-task-id`, `data-gantt-x/y/w/h`, `data-gantt-start/end`, `data-gantt-critical`, `data-gantt-category`, `data-gantt-status`, `data-gantt-lane` |\n| milestone | `[data-gantt-role=\"milestone\"]` | `data-gantt-task-id`, coords, `data-gantt-start` |\n| summary | `[data-gantt-role=\"summary\"]` | `data-gantt-task-id`, coords, `data-gantt-start/end` |\n| scale cell | `[data-gantt-role=\"scale-cell\"]` | `data-gantt-scale-row`, `data-gantt-unit`, `data-gantt-date`, `data-gantt-w`, `data-gantt-weekend/holiday/today` |\n| link | `[data-gantt-role=\"link\"]` | `data-gantt-link-id`, `data-gantt-link-source/target/type`, `data-gantt-points` |\n| marker | `[data-gantt-role=\"marker\"]` | `data-gantt-marker-id`, `data-gantt-date`, `data-gantt-x` |\n| now-line | `[data-gantt-role=\"now-line\"]` | `data-gantt-date`, `data-gantt-x` |\n\n### Ref handle — `GanttHandle`\n\n```tsx\nimport { useRef } from 'react';\nimport { Gantt, type GanttHandle } from '@bluemillstudio/gantt';\n\nconst handle = useRef<GanttHandle>(null);\n\n<Gantt ref={handle} tasks={tasks} />;\n\n// Serializable layout — great for agent ingestion / visual regression\nconst snap = handle.current!.snapshot();\n// { bars: [...], scaleRows: [...], links: [...], totalWidth, ... }\n\n// Hit-testing (content-coordinate space)\nhandle.current!.elementAt(420, 58);   // { kind: 'bar', ref: LayoutBar }\nhandle.current!.rowAtY(58);            // LayoutBar | null\nhandle.current!.dateAtX(420);          // ISO string\nhandle.current!.cellAtX(420);          // LayoutScaleCell | null\n\n// DOM helpers\nhandle.current!.taskBarRect('t-123');  // DOMRect in viewport coordinates\n\n// Alignment sanity check\nconst report = handle.current!.validate();\nif (!report.ok) console.warn(report.issues);\n```\n\n### Pure hit-test helpers (no DOM)\n\n```ts\nimport { rowAtY, cellAtX, barAtPoint, dateAtX } from '@bluemillstudio/gantt/store';\n```\n\nThese operate on plain layout data, so they're usable in SSR, workers, Node-based tests, and anywhere a store snapshot is available.\n\n## Computation layer (v0.8)\n\nDrive derived values and data transforms without touching the source tasks — the library runs your pipeline during `recalculate()` and stores the results on `task.$computed`.\n\n### computedFields\n\n```tsx\n<Gantt\n  tasks={tasks}\n  computedFields={[\n    { key: 'riskScore', compute: (t) => (t.slack ?? Infinity) < 2 ? 'high' : 'low' },\n    { key: 'cost',      compute: (t) => (t.hourlyRate ?? 0) * t.duration * 8 },\n    { key: 'variance',  compute: (t) =>\n        t.baseEnd ? (t.end.getTime() - t.baseEnd.getTime()) / 86_400_000 : null },\n  ]}\n/>\n```\n\n`task.$computed` is a `Record<string, unknown>` readable from `slots.renderTaskBar`, `slots.columns`, tooltips, and `snapshot()`.\n\n### summaryAggregators\n\nCustom roll-ups for summary tasks. They run after `computedFields` so aggregators can compose over derived values.\n\n```tsx\n<Gantt\n  summaryAggregators={{\n    totalCost: (children) =>\n      children.reduce((s, c) => s + Number(c.$computed?.cost ?? 0), 0),\n    worstRisk: (children) =>\n      children.some((c) => c.$computed?.riskScore === 'high') ? 'high' : 'ok',\n  }}\n/>\n```\n\n### Pure query helpers\n\n```ts\nimport { filterTasks, sortTasks, groupTasksBy } from '@bluemillstudio/gantt/query';\n\nconst active = filterTasks(tasks, { status: ['active', 'paused'], progressLte: 80 });\nconst byStart = sortTasks(active, 'start', { by: 'progress', dir: 'desc' });\nconst byOwner = groupTasksBy(active, (t) => t.projectId ?? '—');\n```\n\n### Analysis utilities\n\n```ts\nimport { forecastEnd, resourceLoad, burndown } from '@bluemillstudio/gantt/analysis';\n\nforecastEnd(task);               // Date — linear ETA from current progress\nresourceLoad(tasks, {            // per-day histogram\n  weight: (t) => t.duration,\n  groupBy: (t) => t.projectId,\n});\nburndown(tasks);                 // [{ date, ideal, actual }]\n```\n\nAll three are pure functions — safe in SSR, workers, and tests.\n\n### Out-of-scope (by design)\n\nThe library does **not** fetch, cache, or persist data. Use TanStack Query / SWR / Apollo / your own layer for those; pipe the resulting task list in via the `tasks` prop.\n\n## Headless Mode\n\nUse the store directly without the UI component — useful for server-side calculations or custom renderers:\n\n```tsx\nimport {\n  createGanttStore,\n  flattenTaskTree,\n  calcCriticalPath,\n  calcSlack,\n  autoSchedule,\n  topologicalSort,\n  detectCycles,\n} from '@bluemillstudio/gantt/store';\n\nconst store = createGanttStore();\nstore.setState({ tasks, links, config });\nstore.getState().recalculate();\n\nconst { flatTasks, visibleLinks, dateRange } = store.getState();\n```\n\nFunctions exposed by `@bluemillstudio/gantt/store`:\n\n| Function | Description |\n|----------|-------------|\n| `createGanttStore()` | Create a new Zustand store instance |\n| `useGanttStore` | Singleton store hook for React components |\n| `flattenTaskTree()` | Flatten the task hierarchy honouring open/closed state |\n| `recalcSummaries()` | Recompute start/end/progress for summary tasks |\n| `topologicalSort()` | Sort tasks in dependency order (Kahn's algorithm) |\n| `detectCycles()` | Detect circular dependencies |\n| `autoSchedule()` | Forward-pass auto-scheduling |\n| `calcCriticalPath()` | Compute the critical path (CPM) |\n| `calcSlack()` | Compute slack/float per task |\n| `dateToX()` / `xToDate()` | Convert between dates and pixel positions |\n| `snapToUnit()` | Snap a date to the nearest unit boundary |\n\n## Architecture\n\n```\nsrc/\n├── components/        React UI components\n├── store/             Zustand state management\n├── hooks/             Custom React hooks\n├── presets/           Domain-specific configuration\n│   ├── index.ts           Re-exports\n│   └── examples/\n│       └── moonbase.ts     Example: fictional moonbase-construction domain\n└── utils/             Helpers\n```\n\n**Dataflow:** Props → Zustand store → `recalculate()` → computed `flatTasks`, `scaleCells`, `visibleLinks` → React render.\n\nFor a deeper architectural tour, see [docs/architectuur.md](docs/architectuur.md).\n\n## Feature catalog\n\nEvery public feature lives in [`docs/features/<slug>/`](docs/features) with:\n\n- `feature.md` — human context (why, trade-offs, scope)\n- `contract.yaml` — machine-readable API surface + invariants\n- `scenarios.yaml` — Given/When/Then, agent-executable\n- `examples/*.tsx` — compile-checked snippets\n\nSee [`docs/features/README.md`](docs/features/README.md) for the catalog and conventions. The generic scenario runner lives at [`tests/`](tests/README.md).\n\n## Example app\n\nA live demo lives in [`example/`](example/). It consumes the library via `file:..`, so you can iterate end-to-end:\n\n```bash\nnpm run build         # build the library\ncd example\nnpm install\nnpm run dev           # http://localhost:5173\n```\n\nThe app demonstrates slots, theming (dark-mode toggle), introspection (the \"📸 Snapshot\" button dumps `handle.snapshot()`), and computed fields.\n\n## Development\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run build\n```\n\n### Tech stack\n\n| Layer | Technology |\n|-------|------------|\n| UI framework | React 18+ |\n| State management | Zustand 4.x |\n| Date math | date-fns 3.x |\n| Grid (left pane) | TanStack Table 8.x |\n| Export | html-to-image + jsPDF |\n| Styling | Tailwind CSS + shadcn/ui variables |\n| Language | TypeScript 5.x (strict) |\n| Tests | Vitest |\n| Build | tsup |\n\n## Contributing\n\nPull requests are welcome. For larger changes, please open an issue first to discuss the direction.\n\n## License\n\nMIT © Blue Mill Studio — see [LICENSE](LICENSE).\n","readmeFilename":"README.md"}