{"_id":"@abloatai/decks","_rev":"4-f1218d041ac2add79b35a2644ad573be","name":"@abloatai/decks","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@abloatai/decks","version":"0.1.0","keywords":["ablo","slides","decks","presentations","sdk"],"license":"Apache-2.0","_id":"@abloatai/decks@0.1.0","maintainers":[{"name":"lukaswithablo","email":"lukas@ablo.finance"}],"homepage":"https://docs.tryablo.com","bugs":{"url":"https://github.com/Abloatai/decks/issues"},"dist":{"shasum":"bf83a5ecf67abe1e9eedfb3b643ca92557ca6c56","tarball":"https://registry.npmjs.org/@abloatai/decks/-/decks-0.1.0.tgz","fileCount":8,"integrity":"sha512-oOfDyUXuR0BBzeU73xePpoV7iqotflu3IdubD8xenWAj4FSOIbcj9f6t56+dwIjVm1h+gIpx19kzbvDeGNG5QQ==","signatures":[{"sig":"MEUCIAoCaSHt1t1GN70wY3f6uqi3OTinjVl8RrS/o2N0CifZAiEA4KMYEoBOCRoN0YJt5wF82qFE/qK/o5K5m/UOwC7PnEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abloatai%2fdecks@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1607154},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"284015a640dba9c6166c7ead0796e5ff7386ed1a","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"lukaswithablo","email":"lukas@ablo.finance"},"repository":{"url":"git+https://github.com/Abloatai/decks.git","type":"git"},"_npmVersion":"10.8.2","description":"Build Ablo slide decks from code — a typed resource API.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.0.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.8.2","@types/node":"^22.13.9","@types/geojson":"^7946.0.16"},"_npmOperationalInternal":{"tmp":"tmp/decks_0.1.0_1780943484728_0.907513600606626","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@abloatai/decks","version":"0.1.1","keywords":["ablo","slides","decks","presentations","sdk"],"license":"Apache-2.0","_id":"@abloatai/decks@0.1.1","maintainers":[{"name":"lukaswithablo","email":"lukas@ablo.finance"}],"homepage":"https://docs.tryablo.com","bugs":{"url":"https://github.com/Abloatai/decks/issues"},"dist":{"shasum":"62f99eb89db4ac47240969c43109765375df96ed","tarball":"https://registry.npmjs.org/@abloatai/decks/-/decks-0.1.1.tgz","fileCount":8,"integrity":"sha512-G+r+p6sKAFctU0QPN3PKhQyryI9sLhOytKo8ULR7JDYBqSPr2AdDsL74Y12RXFNATJu2Fo7lZPAt5pyhCQLR0g==","signatures":[{"sig":"MEQCIAY6cvSffCDlzJRkCBoNNXc/yKijaWhoQObQI92tleiZAiBDykpv3CKMig/IzSETKuYBMpG0d6Pz9AYHNmSECEOFQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abloatai%2fdecks@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1608042},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1c1372a4b1759becc526089d626366e3c992ae7b","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"lukaswithablo","email":"lukas@ablo.finance"},"repository":{"url":"git+https://github.com/Abloatai/decks.git","type":"git"},"_npmVersion":"10.8.2","description":"Build Ablo slide decks from code — a typed resource API.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.0.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.8.2","@types/node":"^22.13.9","@types/geojson":"^7946.0.16"},"_npmOperationalInternal":{"tmp":"tmp/decks_0.1.1_1781016271992_0.762335154450406","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@abloatai/decks","version":"0.3.0","keywords":["ablo","slides","decks","presentations","sdk"],"license":"Apache-2.0","_id":"@abloatai/decks@0.3.0","maintainers":[{"name":"lukaswithablo","email":"lukas@ablo.finance"}],"homepage":"https://docs.tryablo.com","bugs":{"url":"https://github.com/Abloatai/decks/issues"},"dist":{"shasum":"cce47ce42d6bb22bf693a3e66883a9a20d09bd47","tarball":"https://registry.npmjs.org/@abloatai/decks/-/decks-0.3.0.tgz","fileCount":8,"integrity":"sha512-1GiX2GhzUKFGK8IsuFxLuZwBx8C0TX0C7khwbggh1BQ1dbnSXCFNZN/m8yfgHUonX6FyYyctBS4kJ8hssZau+w==","signatures":[{"sig":"MEYCIQDNRd3V7S92hmWxjyewzRnLUAJN1mN4ZNIiXqudjwD4MQIhAMCHM1QAfU/DcnDuuPez976eC7axWsq4yIITclNdSfD3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abloatai%2fdecks@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2278325},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"68aeeff9ee5d2b44d6bba47fe9be693f8c581588","scripts":{"build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"lukaswithablo","email":"lukas@ablo.finance"},"repository":{"url":"git+https://github.com/Abloatai/decks.git","type":"git"},"_npmVersion":"10.8.2","description":"Build Ablo slide decks from code — a typed resource API.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.0.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.8.2","@types/node":"^22.13.9","@types/geojson":"^7946.0.16"},"_npmOperationalInternal":{"tmp":"tmp/decks_0.3.0_1781694912308_0.2542232009208649","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-06-08T18:31:24.488Z","modified":"2026-08-15T18:24:37.008Z","0.1.0":"2026-06-08T18:31:24.943Z","0.1.1":"2026-06-09T14:44:32.172Z","0.3.0":"2026-06-17T11:15:12.519Z"},"bugs":{"url":"https://github.com/Abloatai/decks/issues"},"license":"Apache-2.0","homepage":"https://docs.tryablo.com","keywords":["ablo","slides","decks","presentations","sdk"],"repository":{"url":"git+https://github.com/Abloatai/decks.git","type":"git"},"description":"Build Ablo slide decks from code — a typed resource API.","maintainers":[{"email":"lukas@ablo.finance","name":"lukaswithablo"},{"email":"lukas@abloatai.com","name":"lukasanderss"}],"readme":"# @abloatai/decks\n\nBuild [Ablo](https://tryablo.com) slide decks from code — a typed\nresource API. Each call compiles to the same canonical commit operation the Ablo\neditor and AI produce, and posts it to the Ablo API with your key. No code\nsandbox, no server internals — just `decks`, `slides`, `layers`, `layouts`,\n`themes`, and `images`.\n\n```bash\nnpm i @abloatai/decks\n```\n\n```ts\nimport { Decks, text, table, chart } from '@abloatai/decks';\n\nconst ablo = new Decks(process.env.ABLO_API_KEY);\n\nconst deck = await ablo.decks.create({\n  title: 'Q3 Board Update',\n  slides: [\n    {\n      title: 'Revenue',\n      layers: [\n        { type: 'text', text: 'Revenue up 40% YoY', style: 'h1', at: { x: 160, y: 120, w: 1600, h: 160 } },\n        { type: 'bar', data: [{ label: 'Q1', value: 120 }, { label: 'Q2', value: 168 }], at: { x: 160, y: 340, w: 1600, h: 600 } },\n      ],\n    },\n  ],\n});\n```\n\nGet a key from your Ablo workspace (**Settings → API**) and read the full guide\nat **[docs.tryablo.com](https://docs.tryablo.com/docs/slides-sdk/overview)**.\n\n## What you get\n\n- **Decks & slides** — declarative trees or imperative calls; client-minted ids returned synchronously.\n- **Layers** — `text`, `bullets`, `numbered`, `bar`, `donut`, `chart`, `table`, `image`, `shape`, `icon`.\n- **Styling** — fonts, weights, line-height, letter-spacing, highlight, paragraph spacing; fills (solid / gradient / mesh / shader), shadows, effects.\n- **Charts & tables** — every chart family; full cell + table styling including border width.\n- **Layouts & themes** — named placeholders with an AI brief (`prompt` + `examples`); structured `{ fonts, colors }` themes.\n- **Images** — `ablo.images.upload({ bytes, contentType })` → hosted URL.\n- **PowerPoint import** — `ablo.decks.importPptx({ bytes })` rebuilds a `.pptx` as a real, editable Ablo deck (text, shapes, images, tables, live charts, layout & theme).\n\nEvery option is a typed, discoverable Zod enum — you never guess a string.\n\n## Import a PowerPoint\n\n```ts\nimport { Decks } from '@abloatai/decks';\nimport { readFileSync } from 'node:fs';\n\nconst ablo = new Decks(process.env.ABLO_API_KEY);\n\nconst { deckId, slideCount } = await ablo.decks.importPptx({\n  bytes: readFileSync('board-update.pptx'),\n});\n```\n\nRuns the same converter the Ablo editor uses, so the result matches an editor\nimport of the same file. Returns `{ deckId, slideCount, layoutId }` — live and\neditable immediately. See the [import guide](https://docs.tryablo.com/docs/slides-sdk/import).\n","readmeFilename":"README.md"}