{"_id":"@artifact-kit/pptxgenjs-jsx","_rev":"4-9866560758fc04c0a91d94158518a638","name":"@artifact-kit/pptxgenjs-jsx","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@artifact-kit/pptxgenjs-jsx","version":"0.1.0","keywords":["pptx","pptxgenjs","powerpoint","jsx","typescript","llm","presentation","slides"],"license":"MIT","_id":"@artifact-kit/pptxgenjs-jsx@0.1.0","maintainers":[{"name":"yuhang-dong","email":"dong_yu_hang@126.com"}],"homepage":"https://github.com/artifact-kit/pptxgenjs-jsx#readme","bugs":{"url":"https://github.com/artifact-kit/pptxgenjs-jsx/issues"},"dist":{"shasum":"9cc3fe5060ac08b2331f3cea0fc681f1a4256c62","tarball":"https://registry.npmjs.org/@artifact-kit/pptxgenjs-jsx/-/pptxgenjs-jsx-0.1.0.tgz","fileCount":66,"integrity":"sha512-toHpQlCJXRwNAk4NXqH4uqWj1qsCHvb3Eja717vslZ0/qamlGOfpm35w2anuPt/k+SlgwYDhjNVSZJjoXSEq+w==","signatures":[{"sig":"MEYCIQCmsq7UUT9+VZeWgpMIg49lWAmduk8E+/356andwspJ9QIhAMVNb7304Qfj8GsqHsxy+zgF+RdcM/esLZA2W2cQA/WO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1071750},"main":"./dist/pptxgenjs-jsx.cjs","type":"module","types":"./dist/types/index.d.ts","unpkg":"./dist/pptxgenjs-jsx.browser.iife.js","module":"./dist/pptxgenjs-jsx.es.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.es.js","browser":{"import":"./dist/pptxgenjs-jsx.browser.es.js","default":"./dist/pptxgenjs-jsx.browser.es.js"},"require":"./dist/pptxgenjs-jsx.cjs"},"./browser":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.browser.es.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./component-manifest.json":"./component-manifest.json"},"gitHead":"eae48f0f554d4cdba5e9bf3ccb42abdf915db2ec","private":false,"scripts":{"test":"pnpm build && node scripts/run-tsx-test.mjs test-smoke/test.tsx","build":"pnpm docs:generate && pnpm typecheck && node scripts/build.mjs && tsc -p tsconfig.types.json","test:tsx":"node scripts/run-tsx-test.mjs","typecheck":"tsc --noEmit","docs:generate":"node scripts/generate-llm-docs.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"yuhang-dong","email":"dong_yu_hang@126.com"},"jsdelivr":"./dist/pptxgenjs-jsx.browser.iife.js","repository":{"url":"git+https://github.com/artifact-kit/pptxgenjs-jsx.git","type":"git"},"_npmVersion":"11.8.0","description":"LLM-friendly JSX declaration layer for PptxGenJS.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"pptxgenjs":"^4.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"vite":"^5.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pptxgenjs-jsx_0.1.0_1777460365170_0.6767649209820961","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@artifact-kit/pptxgenjs-jsx","version":"0.1.1","keywords":["pptx","pptxgenjs","powerpoint","jsx","typescript","llm","presentation","slides"],"license":"MIT","_id":"@artifact-kit/pptxgenjs-jsx@0.1.1","maintainers":[{"name":"yuhang-dong","email":"dong_yu_hang@126.com"}],"homepage":"https://github.com/artifact-kit/pptxgenjs-jsx#readme","bugs":{"url":"https://github.com/artifact-kit/pptxgenjs-jsx/issues"},"dist":{"shasum":"3bd5cf5051f8e21fbe340e9ba2325a3e29e2b3d5","tarball":"https://registry.npmjs.org/@artifact-kit/pptxgenjs-jsx/-/pptxgenjs-jsx-0.1.1.tgz","fileCount":66,"integrity":"sha512-+dhaaqfXx/ex0yfftFcxaJeyg42nmy0BQ5oR/RwI9K6Z70P0P6PvqQ1YihhLWA/uZ9kRQ5QEO4MczRwDgxqQfA==","signatures":[{"sig":"MEUCIQCaWEDmREnfxvq234l0wknaovUI8IPfBQWgRyBQRGED6wIgTuTvaZQlAws79zg/xzynEaOlMlseVigHA3yAFTCkAQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072573},"main":"./dist/pptxgenjs-jsx.cjs","type":"module","types":"./dist/types/index.d.ts","unpkg":"./dist/pptxgenjs-jsx.browser.iife.js","module":"./dist/pptxgenjs-jsx.es.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.es.js","browser":{"import":"./dist/pptxgenjs-jsx.browser.es.js","default":"./dist/pptxgenjs-jsx.browser.es.js"},"require":"./dist/pptxgenjs-jsx.cjs"},"./browser":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.browser.es.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./component-manifest.json":"./component-manifest.json"},"gitHead":"4894bd00a6d184ccab52e51ddec76ee55fd40650","private":false,"scripts":{"test":"pnpm build && node scripts/run-tsx-test.mjs test-smoke/test.tsx","build":"pnpm docs:generate && pnpm typecheck && node scripts/build.mjs && tsc -p tsconfig.types.json","test:tsx":"node scripts/run-tsx-test.mjs","typecheck":"tsc --noEmit","docs:generate":"node scripts/generate-llm-docs.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"yuhang-dong","email":"dong_yu_hang@126.com"},"jsdelivr":"./dist/pptxgenjs-jsx.browser.iife.js","repository":{"url":"git+https://github.com/artifact-kit/pptxgenjs-jsx.git","type":"git"},"_npmVersion":"11.8.0","description":"LLM-friendly JSX declaration layer for PptxGenJS.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"pptxgenjs":"^4.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"vite":"^5.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pptxgenjs-jsx_0.1.1_1777462407566_0.1919817012737397","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@artifact-kit/pptxgenjs-jsx","version":"0.1.5","keywords":["pptx","pptxgenjs","powerpoint","jsx","typescript","llm","presentation","slides"],"license":"MIT","_id":"@artifact-kit/pptxgenjs-jsx@0.1.5","maintainers":[{"name":"yuhang-dong","email":"dong_yu_hang@126.com"}],"homepage":"https://github.com/artifact-kit/pptxgenjs-jsx#readme","bugs":{"url":"https://github.com/artifact-kit/pptxgenjs-jsx/issues"},"dist":{"shasum":"b1364483595755dbc008a3df07fa9644b2130260","tarball":"https://registry.npmjs.org/@artifact-kit/pptxgenjs-jsx/-/pptxgenjs-jsx-0.1.5.tgz","fileCount":74,"integrity":"sha512-C/kCg9Egu1jfYxdKIpcXDDwkvlM0zpzuiI1Dh1pT6Neku8XjLEeEoBnePVvEMknE9A++i6b8w4m3xij7QEG6Ng==","signatures":[{"sig":"MEQCIHlQCq2ip6AC9DsjOVyAWkdFwG6IpBOYhDpiSgHjSIjoAiACn20h8KWPeAqSTt81XfXpX1csArcknY9oRBavUItWEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1229773},"main":"./dist/pptxgenjs-jsx.cjs","type":"module","types":"./dist/types/index.d.ts","unpkg":"./dist/pptxgenjs-jsx.browser.iife.js","module":"./dist/pptxgenjs-jsx.es.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.es.js","browser":{"import":"./dist/pptxgenjs-jsx.browser.es.js","default":"./dist/pptxgenjs-jsx.browser.es.js"},"require":"./dist/pptxgenjs-jsx.cjs"},"./browser":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.browser.es.js"},"./measure":{"types":"./dist/types/measure/index.d.ts","import":"./dist/measure.es.js","browser":{"import":"./dist/measure.browser.es.js","default":"./dist/measure.browser.es.js"},"require":"./dist/measure.cjs"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"require":"./dist/jsx-runtime.cjs"},"./component-manifest.json":"./component-manifest.json"},"gitHead":"4bc7dc870c52721d5c4bf5714d3f3987d2b8b9a2","private":false,"scripts":{"test":"pnpm build && node scripts/run-tsx-test.mjs test-smoke/test.tsx && node scripts/verify-measure-readers.mjs && node scripts/verify-attention-example.mjs","build":"pnpm docs:generate && pnpm typecheck && node scripts/build.mjs && tsc -p tsconfig.types.json","test:tsx":"node scripts/run-tsx-test.mjs","typecheck":"tsc --noEmit","docs:generate":"node scripts/generate-llm-docs.mjs","prepublishOnly":"pnpm build","test:attention":"pnpm build && node scripts/verify-attention-example.mjs"},"_npmUser":{"name":"yuhang-dong","email":"dong_yu_hang@126.com"},"jsdelivr":"./dist/pptxgenjs-jsx.browser.iife.js","repository":{"url":"git+https://github.com/artifact-kit/pptxgenjs-jsx.git","type":"git"},"_npmVersion":"11.8.0","description":"LLM-friendly JSX declaration layer for PptxGenJS.","directories":{},"_nodeVersion":"24.13.1","dependencies":{"pptxgenjs":"^4.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"vite":"^5.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pptxgenjs-jsx_0.1.5_1777469243690_0.6776616433303317","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@artifact-kit/pptxgenjs-jsx","version":"0.1.6","description":"LLM-friendly JSX declaration layer for PptxGenJS.","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/artifact-kit/pptxgenjs-jsx.git"},"bugs":{"url":"https://github.com/artifact-kit/pptxgenjs-jsx/issues"},"homepage":"https://github.com/artifact-kit/pptxgenjs-jsx#readme","keywords":["pptx","pptxgenjs","powerpoint","jsx","typescript","llm","presentation","slides"],"type":"module","packageManager":"pnpm@10.29.3","main":"./dist/pptxgenjs-jsx.cjs","module":"./dist/pptxgenjs-jsx.es.js","types":"./dist/types/index.d.ts","unpkg":"./dist/pptxgenjs-jsx.browser.iife.js","jsdelivr":"./dist/pptxgenjs-jsx.browser.iife.js","exports":{".":{"types":"./dist/types/index.d.ts","browser":{"import":"./dist/pptxgenjs-jsx.browser.es.js","default":"./dist/pptxgenjs-jsx.browser.es.js"},"import":"./dist/pptxgenjs-jsx.es.js","require":"./dist/pptxgenjs-jsx.cjs"},"./browser":{"types":"./dist/types/index.d.ts","import":"./dist/pptxgenjs-jsx.browser.es.js"},"./measure":{"types":"./dist/types/measure/index.d.ts","browser":{"import":"./dist/measure.browser.es.js","default":"./dist/measure.browser.es.js"},"import":"./dist/measure.es.js","require":"./dist/measure.cjs"},"./component-manifest.json":"./component-manifest.json","./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","browser":{"import":"./dist/jsx-runtime.browser.es.js","default":"./dist/jsx-runtime.browser.es.js"},"import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs"}},"scripts":{"build":"pnpm docs:generate && pnpm typecheck && node scripts/build.mjs && tsc -p tsconfig.types.json","docs:generate":"node scripts/generate-llm-docs.mjs","prepublishOnly":"pnpm build","test":"pnpm build && node scripts/run-tsx-test.mjs test-smoke/test.tsx && node scripts/verify-measure-readers.mjs && node scripts/verify-attention-example.mjs","test:attention":"pnpm build && node scripts/verify-attention-example.mjs","test:tsx":"node scripts/run-tsx-test.mjs","typecheck":"tsc --noEmit"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"pptxgenjs":"^4.0.1"},"devDependencies":{"typescript":"^5.0.0","vite":"^5.0.0"},"gitHead":"8f50ee6553445b85af46d9c3ec37c7a075da5cf2","_id":"@artifact-kit/pptxgenjs-jsx@0.1.6","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-8Nxy8lMgOR79X8gOB7bNV0LukmIDpKBzjmZcLLVPWJEEOYHxhqbgLTfks9XPhVD8K+ORNHi1O+GHLap7PDDW/Q==","shasum":"59f0332c725de83008d35ffcbb6fb851c9f87165","tarball":"https://registry.npmjs.org/@artifact-kit/pptxgenjs-jsx/-/pptxgenjs-jsx-0.1.6.tgz","fileCount":77,"unpackedSize":4169804,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBhQbPUzFlVxXT/13B0l49Z5jqyNEqnhzFyBUEFQUw6fAiBuTXpOx+9on19ZKV9H//Tdst2HkJe3Xjx8sYsdUPJnng=="}]},"_npmUser":{"name":"yuhang-dong","email":"dong_yu_hang@126.com"},"directories":{},"maintainers":[{"name":"yuhang-dong","email":"dong_yu_hang@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pptxgenjs-jsx_0.1.6_1777477474883_0.7855748754088991"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T10:59:25.111Z","modified":"2026-04-29T15:44:35.328Z","0.1.0":"2026-04-29T10:59:25.382Z","0.1.1":"2026-04-29T11:33:27.746Z","0.1.5":"2026-04-29T13:27:23.843Z","0.1.6":"2026-04-29T15:44:35.208Z"},"bugs":{"url":"https://github.com/artifact-kit/pptxgenjs-jsx/issues"},"license":"MIT","homepage":"https://github.com/artifact-kit/pptxgenjs-jsx#readme","keywords":["pptx","pptxgenjs","powerpoint","jsx","typescript","llm","presentation","slides"],"repository":{"type":"git","url":"git+https://github.com/artifact-kit/pptxgenjs-jsx.git"},"description":"LLM-friendly JSX declaration layer for PptxGenJS.","maintainers":[{"name":"yuhang-dong","email":"dong_yu_hang@126.com"}],"readme":"# @artifact-kit/pptxgenjs-jsx\n\nWrite editable PowerPoint decks as JSX. Recreate rendered HTML and SVG as native `.pptx` objects when a screenshot is not good enough.\n\nThis package wraps [PptxGenJS](https://gitbrent.github.io/PptxGenJS/) with an LLM-friendly component model:\n\n- Describe a deck as a readable tree: `<Deck><Slide><Text /></Slide></Deck>`.\n- Use dedicated components for text, shapes, images, tables, charts, lines, and raw PptxGenJS escape hatches.\n- Validate the structure before writing a file.\n- In browser workflows, measure real DOM nodes and map them into PowerPoint coordinates.\n- Export editable PowerPoint objects instead of flattening a page into one bitmap.\n\n## What It Can Produce\n\nThe attention example is the clearest proof in this repo. It starts with a 1600x900 HTML/Tailwind/SVG lecture slide, measures the rendered DOM in the browser, then rebuilds the slide as editable PowerPoint text, shapes, lines, arrows, chart objects, and diagram parts.\n\nSource HTML:\n\n![Source HTML slide](assets/proof/01-source-html.png)\n\nGenerated PPTX preview:\n\n![Generated PPTX preview](assets/proof/02-generated-pptx-preview.png)\n\nEditable native PowerPoint objects:\n\n![Editable native PowerPoint objects](assets/proof/03-editable-native-objects.png)\n\nOpen the exporter at [examples/attention/exporter.html](examples/attention/exporter.html). It exercises DOM measurement, SVG primitive mapping, `LineBetween`, `CustomGeometry`, native chart output, validation, and browser download behavior.\n\n## Install\n\n```bash\npnpm add @artifact-kit/pptxgenjs-jsx\n```\n\n## Basic Usage\n\nUse JSX when you already know the slide structure and coordinates:\n\n```tsx\n/** @jsxImportSource @artifact-kit/pptxgenjs-jsx */\nimport { BarChart, Deck, RoundRect, Slide, Text, renderPptx, validateDeck } from \"@artifact-kit/pptxgenjs-jsx\";\n\nconst deck = (\n  <Deck title=\"Q1 Review\" layout={{ name: \"WIDE\", width: 13.333, height: 7.5 }}>\n    <Slide background={{ color: \"FFFFFF\" }}>\n      <RoundRect x={0.7} y={0.6} w={3.8} h={0.6} fill={{ color: \"EEF2FF\" }} />\n      <Text x={0.9} y={0.78} w={3.4} h={0.3} fontSize={18} bold>Q1 Review</Text>\n      <BarChart data={[{ name: \"Revenue\", labels: [\"Jan\", \"Feb\", \"Mar\"], values: [12, 18, 24] }]} x={6.5} y={1} w={5.5} h={3} />\n    </Slide>\n  </Deck>\n);\n\nconst issues = validateDeck(deck);\nif (issues.some((issue) => issue.level === \"error\")) throw new Error(JSON.stringify(issues, null, 2));\nawait renderPptx(deck, { fileName: \"q1-review.pptx\" });\n```\n\nIf you do not want a JSX transform, use `pptxElement(Component, props, ...children)`.\n\n## HTML to Editable PPTX\n\nFor local tools and agent-generated exporters, you can write JSX directly in the browser with the IIFE build plus Babel Standalone. This is useful when the source of truth is a rendered HTML page, dashboard, report, or slide-like document.\n\nThe workflow is:\n\n1. Keep the source HTML clean.\n2. Copy it into an exporter page.\n3. Make every slide/page visible in one vertical document.\n4. Add `data-ak-slide`, `data-ak-width`, `data-ak-height`, `data-ak-px-per-in`, and `data-ak-measure` markers.\n5. On export, call `measureArtifacts({ document })`.\n6. Use `readSlideLayout()`, `readPptBox()`, and `readFontPt()` to place native PowerPoint objects.\n7. Run `validateDeck()`, then `renderPptx()`.\n\nMinimal browser pattern:\n\n```html\n<script src=\"https://unpkg.com/@artifact-kit/pptxgenjs-jsx/dist/pptxgenjs-jsx.browser.iife.js\"></script>\n<script src=\"https://unpkg.com/@babel/standalone/babel.min.js\"></script>\n<script type=\"text/babel\" data-presets=\"typescript,react\">\n  /** @jsx pptxElement */\n  const {\n    Deck,\n    Slide,\n    Text,\n    measureArtifacts,\n    pptxElement,\n    readFontPt,\n    readPptBox,\n    readSlideLayout,\n    renderPptx,\n    validateDeck,\n  } = window.ArtifactKitPptxGenJsx;\n\n  document.querySelector(\"#export-pptx\").addEventListener(\"click\", async () => {\n    await measureArtifacts({ document });\n\n    const deck = (\n      <Deck title=\"Measured deck\" layout={readSlideLayout(\"slide-1\")}>\n        <Slide background={{ color: \"FFFFFF\" }}>\n          <Text {...readPptBox(\"title-1\")} fontSize={readFontPt(\"title-1\")} bold margin={0}>\n            {document.querySelector('[data-ak-measure=\"title-1\"]').textContent.trim()}\n          </Text>\n        </Slide>\n      </Deck>\n    );\n\n    const issues = validateDeck(deck);\n    if (issues.some((issue) => issue.level === \"error\")) throw new Error(JSON.stringify(issues, null, 2));\n    await renderPptx(deck, { fileName: \"measured-export.pptx\" });\n  });\n</script>\n```\n\nSee [examples/browser-jsx.html](examples/browser-jsx.html) for a small browser example and [examples/attention/exporter.html](examples/attention/exporter.html) for the full measure-first HTML-to-PPTX example.\n\n## When To Use It\n\nUse this package when you need:\n\n- Editable PowerPoint files generated from TypeScript, browser tools, or agent-authored code.\n- A declarative surface that is easier for LLMs to write and review than ordered imperative calls.\n- Native charts, tables, shapes, images, text runs, lines, and custom geometry.\n- HTML-to-PPTX reconstruction where layout comes from real browser measurement.\n- Machine-readable docs and a component manifest for coding agents.\n\nDo not use it when a single screenshot image is the intended final artifact. This package is most valuable when the generated deck must remain editable.\n\n## Documentation Layout\n\nThis repo is organized for both humans and agents:\n\n- [llms.txt](llms.txt): load order and retrieval hints for coding agents.\n- [docs/llm/quickstart.md](docs/llm/quickstart.md): default LLM context, always useful.\n- [docs/llm/component-selection.md](docs/llm/component-selection.md): component choice table.\n- [docs/reference/common-props.md](docs/reference/common-props.md): common PptxGenJS props for text, images, tables, slides, and output.\n- [docs/reference/shape-props.md](docs/reference/shape-props.md): shape props and the full shape-name list.\n- [docs/reference/chart-props.md](docs/reference/chart-props.md): chart data, axis, label, legend, and style props.\n- [docs/reference/all-upstream-props.md](docs/reference/all-upstream-props.md): complete generated upstream reference.\n- [docs/measure-contract.md](docs/measure-contract.md): browser DOM measurement contract for HTML-to-PPTX workflows.\n- [component-manifest.json](component-manifest.json): machine-readable component manifest.\n\n## Build Outputs\n\n| Output | File |\n| :-- | :-- |\n| Node ESM | `dist/pptxgenjs-jsx.es.js` |\n| Node CJS | `dist/pptxgenjs-jsx.cjs` |\n| Browser ESM | `dist/pptxgenjs-jsx.browser.es.js` |\n| Browser IIFE | `dist/pptxgenjs-jsx.browser.iife.js` global `ArtifactKitPptxGenJsx` |\n\n## Development\n\n```bash\npnpm install\npnpm docs:generate\npnpm test\npnpm test:attention\n```\n","readmeFilename":"README.md"}