{"_id":"react-editable-calendar","_rev":"7-bc996c3ceecf6d2507c8c20e3cdd3dae","name":"react-editable-calendar","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.0":{"name":"react-editable-calendar","version":"0.1.0","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.0","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"d3159edc58238dab09ed5a9254ee5c9cf811d78f","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.0.tgz","fileCount":9,"integrity":"sha512-H2g6lYeMjAhfCaU0ClqSLAS25gabjm7+g9HEKmVAxNs1MEPMiLqTyW75fx0uPaHueyfKa4nBs57AXpQZnvmBzA==","signatures":[{"sig":"MEQCIGreBdhmgD3nP6KyFoxezRFSNCfZmI31AYtFLRwaa7HwAiBeTKhVEFLDuCjjtTI2XJglHRl0+7Sf09cZuojETAj8QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181098},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node src/utils/setup.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.0_1782535073016_0.7129531760015748","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"react-editable-calendar","version":"0.1.1","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.1","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"30049ddf332bb3c1133b2e5e8eb35bd590606683","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.1.tgz","fileCount":9,"integrity":"sha512-0mHX8tRIzWqTUz5YCtPcUuL+owvfufjT7TiffnGstjsTJ42lzPdXvErWjkhnIMyYl58kKSsq4Tyvisd4lfjrWw==","signatures":[{"sig":"MEUCIQCbrmOTCtUagk3+W1g7Z4qc8G1AZHLfq32ks+iiZwV00wIgcEtsiJjXZeGOcyXbEAkSG2ocLurWkL1CUARgOsmrRUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181093},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node dist/index.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.1_1782537130012_0.6610439100549388","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"react-editable-calendar","version":"0.1.2","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.2","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"f72cf831e1dd86f38dd93336a6103074f622a4e3","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.2.tgz","fileCount":9,"integrity":"sha512-f39yqju7mlY4W33xCohxxPW7ccTI1YCjsHPeUdvYDuGwYXFYz7knuthppvxZT5wcu8OdqSVezuJg+ywlWTjAug==","signatures":[{"sig":"MEUCIQDVvl6SplfiCoP1+mZH1MMPII4IMYagHDb4VaO6+x2t9QIgdYQq7zbTNsYKqEnowlHiLDbIB/5WaUHOPOK3PjwgJss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181093},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node dist/index.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.2_1782542433846_0.10517584142254699","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"react-editable-calendar","version":"0.1.3","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.3","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"fa988ab72595f99edb74cb729389181d75377194","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.3.tgz","fileCount":9,"integrity":"sha512-UkafkT1NpHTvC3IRrfebW5GaDyzC1/7llPniCmiPvEtiMfLESIR16RpwKjCFWqKU9cx5AL6DTVQCOWW6ucynFw==","signatures":[{"sig":"MEUCIAQH3/6SI3IzJ9CYC5F1drE4v1bN04PDINxwEUvV26KlAiEArON9fUlOzuePkrYhAQlbQ8LL6cX4gpoAPZFDG8F9KIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181093},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node dist/index.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.3_1782542953058_0.8310218518905903","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"react-editable-calendar","version":"0.1.4","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.4","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"ffa5f745c3f379267c0bab924efdf2b71c6a3b39","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.4.tgz","fileCount":9,"integrity":"sha512-pNzPGAiQh7Pi2XfePMlu68InH/lIsEdUCxWElQm8hwfZfrXJHAGdrhlXo3jVVRQ8yn9csFR2uzptF5sfCirZdw==","signatures":[{"sig":"MEUCICFDJogCs8NM9UJE7RuJOx+0j745rmsUtS3u535Us0/4AiEAy6Od29y0cKwM7EAeDYWgJhncltS+tz/59VQFuOLQRfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181093},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest","postinstall":"node dist/index.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.4_1782543159297_0.2730737885976777","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"react-editable-calendar","version":"0.1.6","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"author":"","license":"MIT","_id":"react-editable-calendar@0.1.6","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"dist":{"shasum":"5e15116fc783debdac977a971b1c69f3a5f7b115","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.6.tgz","fileCount":9,"integrity":"sha512-2+IKRlA7g1SxYM6R+nOEnuoa7SkT0X3ixgTI50nKxAwkRi1nNXzU0jVZsAY8eDG1Kjqd0J+Vyhoap8EresCqjg==","signatures":[{"sig":"MEUCIQDRUwUaeB/pZq0+nSqy7PWeXQ/24OBgqJsGrDt5mHGuPQIgNKggeiorkmgNEhZbSPGdnMlB+J3FJaXiNYL+QdFSXSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180978},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"test":"vitest run","typecheck":"tsc --noEmit","preinstall":"node src/utils/index.d.js","test:watch":"vitest"},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"_npmVersion":"11.13.0","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.9","typescript":"^5.8.2"},"_npmOperationalInternal":{"tmp":"tmp/react-editable-calendar_0.1.6_1782552559981_0.07113067965163622","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"react-editable-calendar","version":"0.1.7","description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","author":"","license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","preinstall":"node dist/index.d.js"},"keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"engines":{"node":">=18"},"devDependencies":{"typescript":"^5.8.2","vitest":"^3.0.9"},"_id":"react-editable-calendar@0.1.7","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-xOreUhGKCBur7Lt59YLTRe809tQRqhd3UaUZ5NfvL/xZtdEiKDAXMYVihYd66B2sQl7jsB5tgoGsUA2B+Q5Wtg==","shasum":"9d3ee693bafa569442dba5d5a52cb22c1634c01d","tarball":"https://registry.npmjs.org/react-editable-calendar/-/react-editable-calendar-0.1.7.tgz","fileCount":10,"unpackedSize":181465,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCBGSukZEs5bFkd3K6IB9bvNiFfyqP3FYmdRPyKYzB0lQIgWhvGq4G3/25KqfNb99rr8xV3YVbw5C7q+J4cqq3M+oM="}]},"_npmUser":{"name":"jmcfann","email":"jmcfann29@gmail.com"},"directories":{},"maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-editable-calendar_0.1.7_1782552776986_0.41919196743666487"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T04:37:52.982Z","modified":"2026-06-27T09:32:57.381Z","0.1.0":"2026-06-27T04:37:53.147Z","0.1.1":"2026-06-27T05:12:10.145Z","0.1.2":"2026-06-27T06:40:33.987Z","0.1.3":"2026-06-27T06:49:13.197Z","0.1.4":"2026-06-27T06:52:39.425Z","0.1.6":"2026-06-27T09:29:20.137Z","0.1.7":"2026-06-27T09:32:57.162Z"},"license":"MIT","keywords":["calendar","schedule","scheduling","events","recurrence","timezone","editable","drag-and-drop","headless","planner","agenda","time-management"],"description":"Smart, editable calendar scheduling engine - headless, timezone-aware, with recurrence, conflict resolution, and drag-resize semantics","maintainers":[{"name":"jmcfann","email":"jmcfann29@gmail.com"}],"readme":"# schedulaforge\n\nSmart, editable calendar scheduling engine for JavaScript. Headless, zero runtime dependencies, with recurrence, conflict resolution, drag-resize semantics, and slot suggestions.\n\nUse it in Node.js backends, React/Vue/Angular frontends, or any environment that needs a programmable schedule layer beneath your calendar UI.\n\n## Features\n\n- Headless core (no UI lock-in)\n- Editable move / resize / split / merge\n- Recurrence expansion\n- Conflict and buffer detection\n- Auto-resolve overlaps\n- Smart slot suggestions\n- Month / week / day / agenda grids\n- Resource lanes and capacity\n- Working-hours constraints\n- JSON import/export\n- Zero dependencies\n\n## Install\n\n```bash\nnpm install schedulaforge\n```\n\n## Quick start\n\n```ts\nimport { SchedulaForge } from \"schedulaforge\";\n\nconst forge = new SchedulaForge({\n  constraints: {\n    snapMinutes: 15,\n    bufferMinutes: 5,\n    workingHours: {\n      byWeekday: {\n        1: [[540, 1020]],\n        2: [[540, 1020]],\n        3: [[540, 1020]],\n        4: [[540, 1020]],\n        5: [[540, 1020]],\n      },\n    },\n  },\n  resources: [\n    { id: \"room-a\", label: \"Conference A\", capacity: 1 },\n    { id: \"room-b\", label: \"Conference B\", capacity: 1 },\n  ],\n});\n\nforge.addEvent({\n  id: \"standup\",\n  title: \"Team standup\",\n  start: \"2026-06-26T09:00:00.000Z\",\n  end: \"2026-06-26T09:30:00.000Z\",\n  resourceId: \"room-a\",\n});\n\nforge.dragEvent(\"standup\", { deltaMs: 60 * 60 * 1000 });\n\nconst grid = forge.getCalendarGrid(\"month\", \"2026-06-26T00:00:00.000Z\");\nconst slots = forge.suggestSlots(45, \"2026-06-26T08:00:00.000Z\", \"2026-06-26T18:00:00.000Z\", \"room-a\");\n```\n\n## Publishing to npm\n\n```bash\ncd schedulaforge\nnpm login\nnpm publish --access public\n```\n\n## License\n\nMIT","readmeFilename":"README.md"}