claude-code-templates 1.21.13 → 1.21.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +8 -2
- package/.claude-plugin/marketplace.json +251 -0
- package/.github/workflows/component-security-validation.yml +129 -0
- package/README.md +13 -6
- package/cli-tool/README.md +56 -0
- package/cli-tool/bin/create-claude-config.js +2 -0
- package/cli-tool/components/.claude-plugin/marketplace.json +92 -0
- package/cli-tool/components/agents/development-tools/flutter-go-reviewer.md +163 -0
- package/cli-tool/components/agents/development-tools/unused-code-cleaner.md +194 -0
- package/cli-tool/components/commands/git-workflow/gemini-review.md +293 -0
- package/cli-tool/components/commands/testing/add-mutation-testing.md +2 -2
- package/cli-tool/components/commands/testing/add-property-based-testing.md +2 -2
- package/cli-tool/components/commands/testing/e2e-setup.md +2 -2
- package/cli-tool/components/commands/testing/generate-test-cases.md +2 -2
- package/cli-tool/components/commands/testing/generate-tests.md +8 -3
- package/cli-tool/components/commands/testing/setup-comprehensive-testing.md +2 -2
- package/cli-tool/components/commands/testing/setup-load-testing.md +2 -2
- package/cli-tool/components/commands/testing/setup-visual-testing.md +2 -2
- package/cli-tool/components/commands/testing/test-automation-orchestrator.md +2 -2
- package/cli-tool/components/commands/testing/test-changelog-automation.md +2 -2
- package/cli-tool/components/commands/testing/test-coverage.md +2 -2
- package/cli-tool/components/commands/testing/test-quality-analyzer.md +2 -2
- package/cli-tool/components/commands/testing/testing_plan_integration.md +2 -2
- package/cli-tool/components/commands/testing/write-tests.md +2 -2
- package/cli-tool/components/commands/utilities/ultra-think.md +10 -5
- package/cli-tool/components/hooks/git/validate-branch-name.json +1 -1
- package/cli-tool/components/mcps/devtools/chrome-devtools.json +9 -0
- package/cli-tool/components/mcps/devtools/grafana.json +15 -0
- package/cli-tool/components/mcps/devtools/pulumi.json +9 -0
- package/cli-tool/components/mcps/devtools/terraform.json +1 -1
- package/cli-tool/components/settings/statusline/context-monitor.py +1 -1
- package/cli-tool/components/skills/ANTHROPIC_ATTRIBUTION.md +81 -0
- package/cli-tool/components/skills/creative-design/algorithmic-art/LICENSE.txt +202 -0
- package/cli-tool/components/skills/creative-design/algorithmic-art/SKILL.md +405 -0
- package/cli-tool/components/skills/creative-design/algorithmic-art/templates/generator_template.js +223 -0
- package/cli-tool/components/skills/creative-design/algorithmic-art/templates/viewer.html +599 -0
- package/cli-tool/components/skills/creative-design/canvas-design/LICENSE.txt +202 -0
- package/cli-tool/components/skills/creative-design/canvas-design/SKILL.md +130 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/cli-tool/components/skills/creative-design/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/LICENSE.txt +202 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/SKILL.md +646 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/color_palettes.py +302 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/easing.py +230 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/frame_composer.py +469 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/gif_builder.py +246 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/typography.py +357 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/validators.py +264 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/core/visual_effects.py +494 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/requirements.txt +4 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/bounce.py +106 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/explode.py +331 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/fade.py +329 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/flip.py +291 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/morph.py +329 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/move.py +293 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/pulse.py +268 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/shake.py +127 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/slide.py +291 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/spin.py +269 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/wiggle.py +300 -0
- package/cli-tool/components/skills/creative-design/slack-gif-creator/templates/zoom.py +312 -0
- package/cli-tool/components/skills/creative-design/theme-factory/LICENSE.txt +202 -0
- package/cli-tool/components/skills/creative-design/theme-factory/SKILL.md +59 -0
- package/cli-tool/components/skills/creative-design/theme-factory/theme-showcase.pdf +0 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/arctic-frost.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/botanical-garden.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/desert-rose.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/forest-canopy.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/golden-hour.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/midnight-galaxy.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/modern-minimalist.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/ocean-depths.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/sunset-boulevard.md +19 -0
- package/cli-tool/components/skills/creative-design/theme-factory/themes/tech-innovation.md +19 -0
- package/cli-tool/components/skills/development/artifacts-builder/LICENSE.txt +202 -0
- package/cli-tool/components/skills/development/artifacts-builder/SKILL.md +74 -0
- package/cli-tool/components/skills/development/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/cli-tool/components/skills/development/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/cli-tool/components/skills/development/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/cli-tool/components/skills/development/git-commit-helper/SKILL.md +203 -0
- package/cli-tool/components/skills/development/mcp-builder/LICENSE.txt +202 -0
- package/cli-tool/components/skills/development/mcp-builder/SKILL.md +328 -0
- package/cli-tool/components/skills/development/mcp-builder/reference/evaluation.md +602 -0
- package/cli-tool/components/skills/development/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/cli-tool/components/skills/development/mcp-builder/reference/node_mcp_server.md +916 -0
- package/cli-tool/components/skills/development/mcp-builder/reference/python_mcp_server.md +752 -0
- package/cli-tool/components/skills/development/mcp-builder/scripts/connections.py +151 -0
- package/cli-tool/components/skills/development/mcp-builder/scripts/evaluation.py +373 -0
- package/cli-tool/components/skills/development/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/cli-tool/components/skills/development/mcp-builder/scripts/requirements.txt +2 -0
- package/cli-tool/components/skills/development/skill-creator/LICENSE.txt +202 -0
- package/cli-tool/components/skills/development/skill-creator/SKILL.md +209 -0
- package/cli-tool/components/skills/development/skill-creator/scripts/init_skill.py +303 -0
- package/cli-tool/components/skills/development/skill-creator/scripts/package_skill.py +110 -0
- package/cli-tool/components/skills/development/skill-creator/scripts/quick_validate.py +65 -0
- package/cli-tool/components/skills/development/webapp-testing/LICENSE.txt +202 -0
- package/cli-tool/components/skills/development/webapp-testing/SKILL.md +96 -0
- package/cli-tool/components/skills/development/webapp-testing/examples/console_logging.py +35 -0
- package/cli-tool/components/skills/development/webapp-testing/examples/element_discovery.py +40 -0
- package/cli-tool/components/skills/development/webapp-testing/examples/static_html_automation.py +33 -0
- package/cli-tool/components/skills/development/webapp-testing/scripts/with_server.py +106 -0
- package/cli-tool/components/skills/document-processing/docx/LICENSE.txt +30 -0
- package/cli-tool/components/skills/document-processing/docx/SKILL.md +197 -0
- package/cli-tool/components/skills/document-processing/docx/docx-js.md +350 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/pack.py +159 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/unpack.py +29 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validate.py +69 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/base.py +951 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/docx.py +274 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/cli-tool/components/skills/document-processing/docx/ooxml.md +610 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/__init__.py +1 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/document.py +1276 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/templates/comments.xml +3 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsExtended.xml +3 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/templates/commentsIds.xml +3 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/templates/people.xml +3 -0
- package/cli-tool/components/skills/document-processing/docx/scripts/utilities.py +374 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/LICENSE.txt +30 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/SKILL.md +294 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/forms.md +205 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/reference.md +612 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_bounding_boxes.py +70 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_bounding_boxes_test.py +226 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/check_fillable_fields.py +12 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/convert_pdf_to_images.py +35 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/create_validation_image.py +41 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/extract_form_field_info.py +152 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/fill_fillable_fields.py +114 -0
- package/cli-tool/components/skills/document-processing/pdf-anthropic/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/cli-tool/components/skills/document-processing/pdf-processing/FORMS.md +143 -0
- package/cli-tool/components/skills/document-processing/pdf-processing/SKILL.md +149 -0
- package/cli-tool/components/skills/document-processing/pdf-processing-pro/FORMS.md +610 -0
- package/cli-tool/components/skills/document-processing/pdf-processing-pro/OCR.md +137 -0
- package/cli-tool/components/skills/document-processing/pdf-processing-pro/SKILL.md +296 -0
- package/cli-tool/components/skills/document-processing/pdf-processing-pro/TABLES.md +626 -0
- package/cli-tool/components/skills/document-processing/pdf-processing-pro/scripts/analyze_form.py +307 -0
- package/cli-tool/components/skills/document-processing/pptx/LICENSE.txt +30 -0
- package/cli-tool/components/skills/document-processing/pptx/SKILL.md +484 -0
- package/cli-tool/components/skills/document-processing/pptx/html2pptx.md +625 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/pack.py +159 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/unpack.py +29 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validate.py +69 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/base.py +951 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/cli-tool/components/skills/document-processing/pptx/ooxml.md +427 -0
- package/cli-tool/components/skills/document-processing/pptx/scripts/html2pptx.js +979 -0
- package/cli-tool/components/skills/document-processing/pptx/scripts/inventory.py +1020 -0
- package/cli-tool/components/skills/document-processing/pptx/scripts/rearrange.py +231 -0
- package/cli-tool/components/skills/document-processing/pptx/scripts/replace.py +385 -0
- package/cli-tool/components/skills/document-processing/pptx/scripts/thumbnail.py +450 -0
- package/cli-tool/components/skills/document-processing/xlsx/LICENSE.txt +30 -0
- package/cli-tool/components/skills/document-processing/xlsx/SKILL.md +289 -0
- package/cli-tool/components/skills/document-processing/xlsx/recalc.py +178 -0
- package/cli-tool/components/skills/enterprise-communication/brand-guidelines/LICENSE.txt +202 -0
- package/cli-tool/components/skills/enterprise-communication/brand-guidelines/SKILL.md +73 -0
- package/cli-tool/components/skills/enterprise-communication/email-composer/SKILL.md +317 -0
- package/cli-tool/components/skills/enterprise-communication/excel-analysis/SKILL.md +247 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/LICENSE.txt +202 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/SKILL.md +32 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/3p-updates.md +47 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/company-newsletter.md +65 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/faq-answers.md +30 -0
- package/cli-tool/components/skills/enterprise-communication/internal-comms/examples/general-comms.md +16 -0
- package/cli-tool/package-lock.json +39 -16
- package/cli-tool/package.json +7 -2
- package/cli-tool/security-report.json +62361 -0
- package/cli-tool/src/analytics-web/chats_mobile.html +17 -16
- package/cli-tool/src/console-bridge.js +3 -3
- package/cli-tool/src/index.js +157 -10
- package/cli-tool/src/plugin-dashboard-web/app.js +806 -0
- package/cli-tool/src/plugin-dashboard-web/index.html +292 -0
- package/cli-tool/src/plugin-dashboard-web/styles.css +1781 -0
- package/cli-tool/src/plugin-dashboard.js +689 -0
- package/cli-tool/src/security-audit.js +164 -0
- package/cli-tool/src/validation/ARCHITECTURE.md +309 -0
- package/cli-tool/src/validation/BaseValidator.js +152 -0
- package/cli-tool/src/validation/README.md +543 -0
- package/cli-tool/src/validation/ValidationOrchestrator.js +305 -0
- package/cli-tool/src/validation/validators/IntegrityValidator.js +338 -0
- package/cli-tool/src/validation/validators/ProvenanceValidator.js +399 -0
- package/cli-tool/src/validation/validators/ReferenceValidator.js +373 -0
- package/cli-tool/src/validation/validators/SemanticValidator.js +449 -0
- package/cli-tool/src/validation/validators/StructuralValidator.js +376 -0
- package/docs/CLAUDE.md +363 -0
- package/docs/api/README.md +297 -0
- package/docs/api/package.json +7 -0
- package/docs/api/track-download-supabase.js +150 -0
- package/docs/blog/README.md +199 -0
- package/docs/blog/blog-articles.json +133 -0
- package/docs/blog/css/blog-controls.css +254 -0
- package/docs/blog/e2b-claude-code-sandbox/index.html +8 -0
- package/docs/blog/index.html +81 -124
- package/docs/blog/js/blog-loader.js +602 -0
- package/docs/blog/nextjs-vercel-claude-code-integration/index.html +8 -0
- package/docs/blog/supabase-claude-code-integration/index.html +8 -0
- package/docs/component.html +226 -48
- package/docs/components.json +61610 -604
- package/docs/css/blog.css +292 -0
- package/docs/css/component-page.css +840 -3
- package/docs/css/plugin-page.css +648 -0
- package/docs/css/styles.css +504 -1
- package/docs/css/trending.css +110 -6
- package/docs/download-stats.html +8 -0
- package/docs/index.html +48 -22
- package/docs/jobs.html +8 -0
- package/docs/js/cart-manager.js +21 -8
- package/docs/js/component-page.js +1013 -12
- package/docs/js/data-loader.js +11 -8
- package/docs/js/index-events.js +305 -53
- package/docs/js/plugin-page.js +390 -0
- package/docs/js/script.js +50 -3
- package/docs/js/search-functionality.js +19 -16
- package/docs/js/trending.js +55 -20
- package/docs/plugin.html +262 -0
- package/docs/sandbox-interface.html +8 -0
- package/docs/static/favicon/about.txt +6 -0
- package/docs/static/favicon/android-chrome-192x192.png +0 -0
- package/docs/static/favicon/android-chrome-512x512.png +0 -0
- package/docs/static/favicon/apple-touch-icon.png +0 -0
- package/docs/static/favicon/favicon-16x16.png +0 -0
- package/docs/static/favicon/favicon-32x32.png +0 -0
- package/docs/static/favicon/favicon.ico +0 -0
- package/docs/static/favicon/site.webmanifest +1 -0
- package/docs/trending-data.json +616 -579
- package/docs/trending.html +24 -3
- package/docs/vercel.json +12 -0
- package/docs/workflows.html +8 -0
- package/generate_components_json.py +386 -11
- package/package.json +1 -1
- package/sync-api.sh +50 -0
- package/vercel.json +10 -75
- package/ROADMAP.md +0 -278
- package/test_serpapi.py +0 -36
- /package/cli-tool/components/commands/svelte/{svelte:a11y.md → svelte-a11y.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:component.md → svelte-component.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:debug.md → svelte-debug.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:migrate.md → svelte-migrate.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:optimize.md → svelte-optimize.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:scaffold.md → svelte-scaffold.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook-migrate.md → svelte-storybook-migrate.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook-mock.md → svelte-storybook-mock.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook-setup.md → svelte-storybook-setup.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook-story.md → svelte-storybook-story.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook-troubleshoot.md → svelte-storybook-troubleshoot.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:storybook.md → svelte-storybook.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:test-coverage.md → svelte-test-coverage.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:test-fix.md → svelte-test-fix.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:test-setup.md → svelte-test-setup.md} +0 -0
- /package/cli-tool/components/commands/svelte/{svelte:test.md → svelte-test.md} +0 -0
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
# HTML to PowerPoint Guide
|
|
2
|
+
|
|
3
|
+
Convert HTML slides to PowerPoint presentations with accurate positioning using the `html2pptx.js` library.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
1. [Creating HTML Slides](#creating-html-slides)
|
|
8
|
+
2. [Using the html2pptx Library](#using-the-html2pptx-library)
|
|
9
|
+
3. [Using PptxGenJS](#using-pptxgenjs)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Creating HTML Slides
|
|
14
|
+
|
|
15
|
+
Every HTML slide must include proper body dimensions:
|
|
16
|
+
|
|
17
|
+
### Layout Dimensions
|
|
18
|
+
|
|
19
|
+
- **16:9** (default): `width: 720pt; height: 405pt`
|
|
20
|
+
- **4:3**: `width: 720pt; height: 540pt`
|
|
21
|
+
- **16:10**: `width: 720pt; height: 450pt`
|
|
22
|
+
|
|
23
|
+
### Supported Elements
|
|
24
|
+
|
|
25
|
+
- `<p>`, `<h1>`-`<h6>` - Text with styling
|
|
26
|
+
- `<ul>`, `<ol>` - Lists (never use manual bullets •, -, *)
|
|
27
|
+
- `<b>`, `<strong>` - Bold text (inline formatting)
|
|
28
|
+
- `<i>`, `<em>` - Italic text (inline formatting)
|
|
29
|
+
- `<u>` - Underlined text (inline formatting)
|
|
30
|
+
- `<span>` - Inline formatting with CSS styles (bold, italic, underline, color)
|
|
31
|
+
- `<br>` - Line breaks
|
|
32
|
+
- `<div>` with bg/border - Becomes shape
|
|
33
|
+
- `<img>` - Images
|
|
34
|
+
- `class="placeholder"` - Reserved space for charts (returns `{ id, x, y, w, h }`)
|
|
35
|
+
|
|
36
|
+
### Critical Text Rules
|
|
37
|
+
|
|
38
|
+
**ALL text MUST be inside `<p>`, `<h1>`-`<h6>`, `<ul>`, or `<ol>` tags:**
|
|
39
|
+
- ✅ Correct: `<div><p>Text here</p></div>`
|
|
40
|
+
- ❌ Wrong: `<div>Text here</div>` - **Text will NOT appear in PowerPoint**
|
|
41
|
+
- ❌ Wrong: `<span>Text</span>` - **Text will NOT appear in PowerPoint**
|
|
42
|
+
- Text in `<div>` or `<span>` without a text tag will be silently ignored
|
|
43
|
+
|
|
44
|
+
**NEVER use manual bullet symbols (•, -, *, etc.)** - Use `<ul>` or `<ol>` lists instead
|
|
45
|
+
|
|
46
|
+
**ONLY use web-safe fonts that are universally available:**
|
|
47
|
+
- ✅ Web-safe fonts: `Arial`, `Helvetica`, `Times New Roman`, `Georgia`, `Courier New`, `Verdana`, `Tahoma`, `Trebuchet MS`, `Impact`, `Comic Sans MS`
|
|
48
|
+
- ❌ Wrong: `'Segoe UI'`, `'SF Pro'`, `'Roboto'`, custom fonts - **Might cause rendering issues**
|
|
49
|
+
|
|
50
|
+
### Styling
|
|
51
|
+
|
|
52
|
+
- Use `display: flex` on body to prevent margin collapse from breaking overflow validation
|
|
53
|
+
- Use `margin` for spacing (padding included in size)
|
|
54
|
+
- Inline formatting: Use `<b>`, `<i>`, `<u>` tags OR `<span>` with CSS styles
|
|
55
|
+
- `<span>` supports: `font-weight: bold`, `font-style: italic`, `text-decoration: underline`, `color: #rrggbb`
|
|
56
|
+
- `<span>` does NOT support: `margin`, `padding` (not supported in PowerPoint text runs)
|
|
57
|
+
- Example: `<span style="font-weight: bold; color: #667eea;">Bold blue text</span>`
|
|
58
|
+
- Flexbox works - positions calculated from rendered layout
|
|
59
|
+
- Use hex colors with `#` prefix in CSS
|
|
60
|
+
- **Text alignment**: Use CSS `text-align` (`center`, `right`, etc.) when needed as a hint to PptxGenJS for text formatting if text lengths are slightly off
|
|
61
|
+
|
|
62
|
+
### Shape Styling (DIV elements only)
|
|
63
|
+
|
|
64
|
+
**IMPORTANT: Backgrounds, borders, and shadows only work on `<div>` elements, NOT on text elements (`<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>`)**
|
|
65
|
+
|
|
66
|
+
- **Backgrounds**: CSS `background` or `background-color` on `<div>` elements only
|
|
67
|
+
- Example: `<div style="background: #f0f0f0;">` - Creates a shape with background
|
|
68
|
+
- **Borders**: CSS `border` on `<div>` elements converts to PowerPoint shape borders
|
|
69
|
+
- Supports uniform borders: `border: 2px solid #333333`
|
|
70
|
+
- Supports partial borders: `border-left`, `border-right`, `border-top`, `border-bottom` (rendered as line shapes)
|
|
71
|
+
- Example: `<div style="border-left: 8pt solid #E76F51;">`
|
|
72
|
+
- **Border radius**: CSS `border-radius` on `<div>` elements for rounded corners
|
|
73
|
+
- `border-radius: 50%` or higher creates circular shape
|
|
74
|
+
- Percentages <50% calculated relative to shape's smaller dimension
|
|
75
|
+
- Supports px and pt units (e.g., `border-radius: 8pt;`, `border-radius: 12px;`)
|
|
76
|
+
- Example: `<div style="border-radius: 25%;">` on 100x200px box = 25% of 100px = 25px radius
|
|
77
|
+
- **Box shadows**: CSS `box-shadow` on `<div>` elements converts to PowerPoint shadows
|
|
78
|
+
- Supports outer shadows only (inset shadows are ignored to prevent corruption)
|
|
79
|
+
- Example: `<div style="box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);">`
|
|
80
|
+
- Note: Inset/inner shadows are not supported by PowerPoint and will be skipped
|
|
81
|
+
|
|
82
|
+
### Icons & Gradients
|
|
83
|
+
|
|
84
|
+
- **CRITICAL: Never use CSS gradients (`linear-gradient`, `radial-gradient`)** - They don't convert to PowerPoint
|
|
85
|
+
- **ALWAYS create gradient/icon PNGs FIRST using Sharp, then reference in HTML**
|
|
86
|
+
- For gradients: Rasterize SVG to PNG background images
|
|
87
|
+
- For icons: Rasterize react-icons SVG to PNG images
|
|
88
|
+
- All visual effects must be pre-rendered as raster images before HTML rendering
|
|
89
|
+
|
|
90
|
+
**Rasterizing Icons with Sharp:**
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
const React = require('react');
|
|
94
|
+
const ReactDOMServer = require('react-dom/server');
|
|
95
|
+
const sharp = require('sharp');
|
|
96
|
+
const { FaHome } = require('react-icons/fa');
|
|
97
|
+
|
|
98
|
+
async function rasterizeIconPng(IconComponent, color, size = "256", filename) {
|
|
99
|
+
const svgString = ReactDOMServer.renderToStaticMarkup(
|
|
100
|
+
React.createElement(IconComponent, { color: `#${color}`, size: size })
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
// Convert SVG to PNG using Sharp
|
|
104
|
+
await sharp(Buffer.from(svgString))
|
|
105
|
+
.png()
|
|
106
|
+
.toFile(filename);
|
|
107
|
+
|
|
108
|
+
return filename;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Usage: Rasterize icon before using in HTML
|
|
112
|
+
const iconPath = await rasterizeIconPng(FaHome, "4472c4", "256", "home-icon.png");
|
|
113
|
+
// Then reference in HTML: <img src="home-icon.png" style="width: 40pt; height: 40pt;">
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Rasterizing Gradients with Sharp:**
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
const sharp = require('sharp');
|
|
120
|
+
|
|
121
|
+
async function createGradientBackground(filename) {
|
|
122
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="562.5">
|
|
123
|
+
<defs>
|
|
124
|
+
<linearGradient id="g" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
125
|
+
<stop offset="0%" style="stop-color:#COLOR1"/>
|
|
126
|
+
<stop offset="100%" style="stop-color:#COLOR2"/>
|
|
127
|
+
</linearGradient>
|
|
128
|
+
</defs>
|
|
129
|
+
<rect width="100%" height="100%" fill="url(#g)"/>
|
|
130
|
+
</svg>`;
|
|
131
|
+
|
|
132
|
+
await sharp(Buffer.from(svg))
|
|
133
|
+
.png()
|
|
134
|
+
.toFile(filename);
|
|
135
|
+
|
|
136
|
+
return filename;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Usage: Create gradient background before HTML
|
|
140
|
+
const bgPath = await createGradientBackground("gradient-bg.png");
|
|
141
|
+
// Then in HTML: <body style="background-image: url('gradient-bg.png');">
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Example
|
|
145
|
+
|
|
146
|
+
```html
|
|
147
|
+
<!DOCTYPE html>
|
|
148
|
+
<html>
|
|
149
|
+
<head>
|
|
150
|
+
<style>
|
|
151
|
+
html { background: #ffffff; }
|
|
152
|
+
body {
|
|
153
|
+
width: 720pt; height: 405pt; margin: 0; padding: 0;
|
|
154
|
+
background: #f5f5f5; font-family: Arial, sans-serif;
|
|
155
|
+
display: flex;
|
|
156
|
+
}
|
|
157
|
+
.content { margin: 30pt; padding: 40pt; background: #ffffff; border-radius: 8pt; }
|
|
158
|
+
h1 { color: #2d3748; font-size: 32pt; }
|
|
159
|
+
.box {
|
|
160
|
+
background: #70ad47; padding: 20pt; border: 3px solid #5a8f37;
|
|
161
|
+
border-radius: 12pt; box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.25);
|
|
162
|
+
}
|
|
163
|
+
</style>
|
|
164
|
+
</head>
|
|
165
|
+
<body>
|
|
166
|
+
<div class="content">
|
|
167
|
+
<h1>Recipe Title</h1>
|
|
168
|
+
<ul>
|
|
169
|
+
<li><b>Item:</b> Description</li>
|
|
170
|
+
</ul>
|
|
171
|
+
<p>Text with <b>bold</b>, <i>italic</i>, <u>underline</u>.</p>
|
|
172
|
+
<div id="chart" class="placeholder" style="width: 350pt; height: 200pt;"></div>
|
|
173
|
+
|
|
174
|
+
<!-- Text MUST be in <p> tags -->
|
|
175
|
+
<div class="box">
|
|
176
|
+
<p>5</p>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</body>
|
|
180
|
+
</html>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Using the html2pptx Library
|
|
184
|
+
|
|
185
|
+
### Dependencies
|
|
186
|
+
|
|
187
|
+
These libraries have been globally installed and are available to use:
|
|
188
|
+
- `pptxgenjs`
|
|
189
|
+
- `playwright`
|
|
190
|
+
- `sharp`
|
|
191
|
+
|
|
192
|
+
### Basic Usage
|
|
193
|
+
|
|
194
|
+
```javascript
|
|
195
|
+
const pptxgen = require('pptxgenjs');
|
|
196
|
+
const html2pptx = require('./html2pptx');
|
|
197
|
+
|
|
198
|
+
const pptx = new pptxgen();
|
|
199
|
+
pptx.layout = 'LAYOUT_16x9'; // Must match HTML body dimensions
|
|
200
|
+
|
|
201
|
+
const { slide, placeholders } = await html2pptx('slide1.html', pptx);
|
|
202
|
+
|
|
203
|
+
// Add chart to placeholder area
|
|
204
|
+
if (placeholders.length > 0) {
|
|
205
|
+
slide.addChart(pptx.charts.LINE, chartData, placeholders[0]);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
await pptx.writeFile('output.pptx');
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### API Reference
|
|
212
|
+
|
|
213
|
+
#### Function Signature
|
|
214
|
+
```javascript
|
|
215
|
+
await html2pptx(htmlFile, pres, options)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### Parameters
|
|
219
|
+
- `htmlFile` (string): Path to HTML file (absolute or relative)
|
|
220
|
+
- `pres` (pptxgen): PptxGenJS presentation instance with layout already set
|
|
221
|
+
- `options` (object, optional):
|
|
222
|
+
- `tmpDir` (string): Temporary directory for generated files (default: `process.env.TMPDIR || '/tmp'`)
|
|
223
|
+
- `slide` (object): Existing slide to reuse (default: creates new slide)
|
|
224
|
+
|
|
225
|
+
#### Returns
|
|
226
|
+
```javascript
|
|
227
|
+
{
|
|
228
|
+
slide: pptxgenSlide, // The created/updated slide
|
|
229
|
+
placeholders: [ // Array of placeholder positions
|
|
230
|
+
{ id: string, x: number, y: number, w: number, h: number },
|
|
231
|
+
...
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Validation
|
|
237
|
+
|
|
238
|
+
The library automatically validates and collects all errors before throwing:
|
|
239
|
+
|
|
240
|
+
1. **HTML dimensions must match presentation layout** - Reports dimension mismatches
|
|
241
|
+
2. **Content must not overflow body** - Reports overflow with exact measurements
|
|
242
|
+
3. **CSS gradients** - Reports unsupported gradient usage
|
|
243
|
+
4. **Text element styling** - Reports backgrounds/borders/shadows on text elements (only allowed on divs)
|
|
244
|
+
|
|
245
|
+
**All validation errors are collected and reported together** in a single error message, allowing you to fix all issues at once instead of one at a time.
|
|
246
|
+
|
|
247
|
+
### Working with Placeholders
|
|
248
|
+
|
|
249
|
+
```javascript
|
|
250
|
+
const { slide, placeholders } = await html2pptx('slide.html', pptx);
|
|
251
|
+
|
|
252
|
+
// Use first placeholder
|
|
253
|
+
slide.addChart(pptx.charts.BAR, data, placeholders[0]);
|
|
254
|
+
|
|
255
|
+
// Find by ID
|
|
256
|
+
const chartArea = placeholders.find(p => p.id === 'chart-area');
|
|
257
|
+
slide.addChart(pptx.charts.LINE, data, chartArea);
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Complete Example
|
|
261
|
+
|
|
262
|
+
```javascript
|
|
263
|
+
const pptxgen = require('pptxgenjs');
|
|
264
|
+
const html2pptx = require('./html2pptx');
|
|
265
|
+
|
|
266
|
+
async function createPresentation() {
|
|
267
|
+
const pptx = new pptxgen();
|
|
268
|
+
pptx.layout = 'LAYOUT_16x9';
|
|
269
|
+
pptx.author = 'Your Name';
|
|
270
|
+
pptx.title = 'My Presentation';
|
|
271
|
+
|
|
272
|
+
// Slide 1: Title
|
|
273
|
+
const { slide: slide1 } = await html2pptx('slides/title.html', pptx);
|
|
274
|
+
|
|
275
|
+
// Slide 2: Content with chart
|
|
276
|
+
const { slide: slide2, placeholders } = await html2pptx('slides/data.html', pptx);
|
|
277
|
+
|
|
278
|
+
const chartData = [{
|
|
279
|
+
name: 'Sales',
|
|
280
|
+
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
|
|
281
|
+
values: [4500, 5500, 6200, 7100]
|
|
282
|
+
}];
|
|
283
|
+
|
|
284
|
+
slide2.addChart(pptx.charts.BAR, chartData, {
|
|
285
|
+
...placeholders[0],
|
|
286
|
+
showTitle: true,
|
|
287
|
+
title: 'Quarterly Sales',
|
|
288
|
+
showCatAxisTitle: true,
|
|
289
|
+
catAxisTitle: 'Quarter',
|
|
290
|
+
showValAxisTitle: true,
|
|
291
|
+
valAxisTitle: 'Sales ($000s)'
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
// Save
|
|
295
|
+
await pptx.writeFile({ fileName: 'presentation.pptx' });
|
|
296
|
+
console.log('Presentation created successfully!');
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
createPresentation().catch(console.error);
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Using PptxGenJS
|
|
303
|
+
|
|
304
|
+
After converting HTML to slides with `html2pptx`, you'll use PptxGenJS to add dynamic content like charts, images, and additional elements.
|
|
305
|
+
|
|
306
|
+
### ⚠️ Critical Rules
|
|
307
|
+
|
|
308
|
+
#### Colors
|
|
309
|
+
- **NEVER use `#` prefix** with hex colors in PptxGenJS - causes file corruption
|
|
310
|
+
- ✅ Correct: `color: "FF0000"`, `fill: { color: "0066CC" }`
|
|
311
|
+
- ❌ Wrong: `color: "#FF0000"` (breaks document)
|
|
312
|
+
|
|
313
|
+
### Adding Images
|
|
314
|
+
|
|
315
|
+
Always calculate aspect ratios from actual image dimensions:
|
|
316
|
+
|
|
317
|
+
```javascript
|
|
318
|
+
// Get image dimensions: identify image.png | grep -o '[0-9]* x [0-9]*'
|
|
319
|
+
const imgWidth = 1860, imgHeight = 1519; // From actual file
|
|
320
|
+
const aspectRatio = imgWidth / imgHeight;
|
|
321
|
+
|
|
322
|
+
const h = 3; // Max height
|
|
323
|
+
const w = h * aspectRatio;
|
|
324
|
+
const x = (10 - w) / 2; // Center on 16:9 slide
|
|
325
|
+
|
|
326
|
+
slide.addImage({ path: "chart.png", x, y: 1.5, w, h });
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Adding Text
|
|
330
|
+
|
|
331
|
+
```javascript
|
|
332
|
+
// Rich text with formatting
|
|
333
|
+
slide.addText([
|
|
334
|
+
{ text: "Bold ", options: { bold: true } },
|
|
335
|
+
{ text: "Italic ", options: { italic: true } },
|
|
336
|
+
{ text: "Normal" }
|
|
337
|
+
], {
|
|
338
|
+
x: 1, y: 2, w: 8, h: 1
|
|
339
|
+
});
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Adding Shapes
|
|
343
|
+
|
|
344
|
+
```javascript
|
|
345
|
+
// Rectangle
|
|
346
|
+
slide.addShape(pptx.shapes.RECTANGLE, {
|
|
347
|
+
x: 1, y: 1, w: 3, h: 2,
|
|
348
|
+
fill: { color: "4472C4" },
|
|
349
|
+
line: { color: "000000", width: 2 }
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
// Circle
|
|
353
|
+
slide.addShape(pptx.shapes.OVAL, {
|
|
354
|
+
x: 5, y: 1, w: 2, h: 2,
|
|
355
|
+
fill: { color: "ED7D31" }
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
// Rounded rectangle
|
|
359
|
+
slide.addShape(pptx.shapes.ROUNDED_RECTANGLE, {
|
|
360
|
+
x: 1, y: 4, w: 3, h: 1.5,
|
|
361
|
+
fill: { color: "70AD47" },
|
|
362
|
+
rectRadius: 0.2
|
|
363
|
+
});
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Adding Charts
|
|
367
|
+
|
|
368
|
+
**Required for most charts:** Axis labels using `catAxisTitle` (category) and `valAxisTitle` (value).
|
|
369
|
+
|
|
370
|
+
**Chart Data Format:**
|
|
371
|
+
- Use **single series with all labels** for simple bar/line charts
|
|
372
|
+
- Each series creates a separate legend entry
|
|
373
|
+
- Labels array defines X-axis values
|
|
374
|
+
|
|
375
|
+
**Time Series Data - Choose Correct Granularity:**
|
|
376
|
+
- **< 30 days**: Use daily grouping (e.g., "10-01", "10-02") - avoid monthly aggregation that creates single-point charts
|
|
377
|
+
- **30-365 days**: Use monthly grouping (e.g., "2024-01", "2024-02")
|
|
378
|
+
- **> 365 days**: Use yearly grouping (e.g., "2023", "2024")
|
|
379
|
+
- **Validate**: Charts with only 1 data point likely indicate incorrect aggregation for the time period
|
|
380
|
+
|
|
381
|
+
```javascript
|
|
382
|
+
const { slide, placeholders } = await html2pptx('slide.html', pptx);
|
|
383
|
+
|
|
384
|
+
// CORRECT: Single series with all labels
|
|
385
|
+
slide.addChart(pptx.charts.BAR, [{
|
|
386
|
+
name: "Sales 2024",
|
|
387
|
+
labels: ["Q1", "Q2", "Q3", "Q4"],
|
|
388
|
+
values: [4500, 5500, 6200, 7100]
|
|
389
|
+
}], {
|
|
390
|
+
...placeholders[0], // Use placeholder position
|
|
391
|
+
barDir: 'col', // 'col' = vertical bars, 'bar' = horizontal
|
|
392
|
+
showTitle: true,
|
|
393
|
+
title: 'Quarterly Sales',
|
|
394
|
+
showLegend: false, // No legend needed for single series
|
|
395
|
+
// Required axis labels
|
|
396
|
+
showCatAxisTitle: true,
|
|
397
|
+
catAxisTitle: 'Quarter',
|
|
398
|
+
showValAxisTitle: true,
|
|
399
|
+
valAxisTitle: 'Sales ($000s)',
|
|
400
|
+
// Optional: Control scaling (adjust min based on data range for better visualization)
|
|
401
|
+
valAxisMaxVal: 8000,
|
|
402
|
+
valAxisMinVal: 0, // Use 0 for counts/amounts; for clustered data (e.g., 4500-7100), consider starting closer to min value
|
|
403
|
+
valAxisMajorUnit: 2000, // Control y-axis label spacing to prevent crowding
|
|
404
|
+
catAxisLabelRotate: 45, // Rotate labels if crowded
|
|
405
|
+
dataLabelPosition: 'outEnd',
|
|
406
|
+
dataLabelColor: '000000',
|
|
407
|
+
// Use single color for single-series charts
|
|
408
|
+
chartColors: ["4472C4"] // All bars same color
|
|
409
|
+
});
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
#### Scatter Chart
|
|
413
|
+
|
|
414
|
+
**IMPORTANT**: Scatter chart data format is unusual - first series contains X-axis values, subsequent series contain Y-values:
|
|
415
|
+
|
|
416
|
+
```javascript
|
|
417
|
+
// Prepare data
|
|
418
|
+
const data1 = [{ x: 10, y: 20 }, { x: 15, y: 25 }, { x: 20, y: 30 }];
|
|
419
|
+
const data2 = [{ x: 12, y: 18 }, { x: 18, y: 22 }];
|
|
420
|
+
|
|
421
|
+
const allXValues = [...data1.map(d => d.x), ...data2.map(d => d.x)];
|
|
422
|
+
|
|
423
|
+
slide.addChart(pptx.charts.SCATTER, [
|
|
424
|
+
{ name: 'X-Axis', values: allXValues }, // First series = X values
|
|
425
|
+
{ name: 'Series 1', values: data1.map(d => d.y) }, // Y values only
|
|
426
|
+
{ name: 'Series 2', values: data2.map(d => d.y) } // Y values only
|
|
427
|
+
], {
|
|
428
|
+
x: 1, y: 1, w: 8, h: 4,
|
|
429
|
+
lineSize: 0, // 0 = no connecting lines
|
|
430
|
+
lineDataSymbol: 'circle',
|
|
431
|
+
lineDataSymbolSize: 6,
|
|
432
|
+
showCatAxisTitle: true,
|
|
433
|
+
catAxisTitle: 'X Axis',
|
|
434
|
+
showValAxisTitle: true,
|
|
435
|
+
valAxisTitle: 'Y Axis',
|
|
436
|
+
chartColors: ["4472C4", "ED7D31"]
|
|
437
|
+
});
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
#### Line Chart
|
|
441
|
+
|
|
442
|
+
```javascript
|
|
443
|
+
slide.addChart(pptx.charts.LINE, [{
|
|
444
|
+
name: "Temperature",
|
|
445
|
+
labels: ["Jan", "Feb", "Mar", "Apr"],
|
|
446
|
+
values: [32, 35, 42, 55]
|
|
447
|
+
}], {
|
|
448
|
+
x: 1, y: 1, w: 8, h: 4,
|
|
449
|
+
lineSize: 4,
|
|
450
|
+
lineSmooth: true,
|
|
451
|
+
// Required axis labels
|
|
452
|
+
showCatAxisTitle: true,
|
|
453
|
+
catAxisTitle: 'Month',
|
|
454
|
+
showValAxisTitle: true,
|
|
455
|
+
valAxisTitle: 'Temperature (°F)',
|
|
456
|
+
// Optional: Y-axis range (set min based on data range for better visualization)
|
|
457
|
+
valAxisMinVal: 0, // For ranges starting at 0 (counts, percentages, etc.)
|
|
458
|
+
valAxisMaxVal: 60,
|
|
459
|
+
valAxisMajorUnit: 20, // Control y-axis label spacing to prevent crowding (e.g., 10, 20, 25)
|
|
460
|
+
// valAxisMinVal: 30, // PREFERRED: For data clustered in a range (e.g., 32-55 or ratings 3-5), start axis closer to min value to show variation
|
|
461
|
+
// Optional: Chart colors
|
|
462
|
+
chartColors: ["4472C4", "ED7D31", "A5A5A5"]
|
|
463
|
+
});
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
#### Pie Chart (No Axis Labels Required)
|
|
467
|
+
|
|
468
|
+
**CRITICAL**: Pie charts require a **single data series** with all categories in the `labels` array and corresponding values in the `values` array.
|
|
469
|
+
|
|
470
|
+
```javascript
|
|
471
|
+
slide.addChart(pptx.charts.PIE, [{
|
|
472
|
+
name: "Market Share",
|
|
473
|
+
labels: ["Product A", "Product B", "Other"], // All categories in one array
|
|
474
|
+
values: [35, 45, 20] // All values in one array
|
|
475
|
+
}], {
|
|
476
|
+
x: 2, y: 1, w: 6, h: 4,
|
|
477
|
+
showPercent: true,
|
|
478
|
+
showLegend: true,
|
|
479
|
+
legendPos: 'r', // right
|
|
480
|
+
chartColors: ["4472C4", "ED7D31", "A5A5A5"]
|
|
481
|
+
});
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Multiple Data Series
|
|
485
|
+
|
|
486
|
+
```javascript
|
|
487
|
+
slide.addChart(pptx.charts.LINE, [
|
|
488
|
+
{
|
|
489
|
+
name: "Product A",
|
|
490
|
+
labels: ["Q1", "Q2", "Q3", "Q4"],
|
|
491
|
+
values: [10, 20, 30, 40]
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: "Product B",
|
|
495
|
+
labels: ["Q1", "Q2", "Q3", "Q4"],
|
|
496
|
+
values: [15, 25, 20, 35]
|
|
497
|
+
}
|
|
498
|
+
], {
|
|
499
|
+
x: 1, y: 1, w: 8, h: 4,
|
|
500
|
+
showCatAxisTitle: true,
|
|
501
|
+
catAxisTitle: 'Quarter',
|
|
502
|
+
showValAxisTitle: true,
|
|
503
|
+
valAxisTitle: 'Revenue ($M)'
|
|
504
|
+
});
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
### Chart Colors
|
|
508
|
+
|
|
509
|
+
**CRITICAL**: Use hex colors **without** the `#` prefix - including `#` causes file corruption.
|
|
510
|
+
|
|
511
|
+
**Align chart colors with your chosen design palette**, ensuring sufficient contrast and distinctiveness for data visualization. Adjust colors for:
|
|
512
|
+
- Strong contrast between adjacent series
|
|
513
|
+
- Readability against slide backgrounds
|
|
514
|
+
- Accessibility (avoid red-green only combinations)
|
|
515
|
+
|
|
516
|
+
```javascript
|
|
517
|
+
// Example: Ocean palette-inspired chart colors (adjusted for contrast)
|
|
518
|
+
const chartColors = ["16A085", "FF6B9D", "2C3E50", "F39C12", "9B59B6"];
|
|
519
|
+
|
|
520
|
+
// Single-series chart: Use one color for all bars/points
|
|
521
|
+
slide.addChart(pptx.charts.BAR, [{
|
|
522
|
+
name: "Sales",
|
|
523
|
+
labels: ["Q1", "Q2", "Q3", "Q4"],
|
|
524
|
+
values: [4500, 5500, 6200, 7100]
|
|
525
|
+
}], {
|
|
526
|
+
...placeholders[0],
|
|
527
|
+
chartColors: ["16A085"], // All bars same color
|
|
528
|
+
showLegend: false
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
// Multi-series chart: Each series gets a different color
|
|
532
|
+
slide.addChart(pptx.charts.LINE, [
|
|
533
|
+
{ name: "Product A", labels: ["Q1", "Q2", "Q3"], values: [10, 20, 30] },
|
|
534
|
+
{ name: "Product B", labels: ["Q1", "Q2", "Q3"], values: [15, 25, 20] }
|
|
535
|
+
], {
|
|
536
|
+
...placeholders[0],
|
|
537
|
+
chartColors: ["16A085", "FF6B9D"] // One color per series
|
|
538
|
+
});
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Adding Tables
|
|
542
|
+
|
|
543
|
+
Tables can be added with basic or advanced formatting:
|
|
544
|
+
|
|
545
|
+
#### Basic Table
|
|
546
|
+
|
|
547
|
+
```javascript
|
|
548
|
+
slide.addTable([
|
|
549
|
+
["Header 1", "Header 2", "Header 3"],
|
|
550
|
+
["Row 1, Col 1", "Row 1, Col 2", "Row 1, Col 3"],
|
|
551
|
+
["Row 2, Col 1", "Row 2, Col 2", "Row 2, Col 3"]
|
|
552
|
+
], {
|
|
553
|
+
x: 0.5,
|
|
554
|
+
y: 1,
|
|
555
|
+
w: 9,
|
|
556
|
+
h: 3,
|
|
557
|
+
border: { pt: 1, color: "999999" },
|
|
558
|
+
fill: { color: "F1F1F1" }
|
|
559
|
+
});
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
#### Table with Custom Formatting
|
|
563
|
+
|
|
564
|
+
```javascript
|
|
565
|
+
const tableData = [
|
|
566
|
+
// Header row with custom styling
|
|
567
|
+
[
|
|
568
|
+
{ text: "Product", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } },
|
|
569
|
+
{ text: "Revenue", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } },
|
|
570
|
+
{ text: "Growth", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } }
|
|
571
|
+
],
|
|
572
|
+
// Data rows
|
|
573
|
+
["Product A", "$50M", "+15%"],
|
|
574
|
+
["Product B", "$35M", "+22%"],
|
|
575
|
+
["Product C", "$28M", "+8%"]
|
|
576
|
+
];
|
|
577
|
+
|
|
578
|
+
slide.addTable(tableData, {
|
|
579
|
+
x: 1,
|
|
580
|
+
y: 1.5,
|
|
581
|
+
w: 8,
|
|
582
|
+
h: 3,
|
|
583
|
+
colW: [3, 2.5, 2.5], // Column widths
|
|
584
|
+
rowH: [0.5, 0.6, 0.6, 0.6], // Row heights
|
|
585
|
+
border: { pt: 1, color: "CCCCCC" },
|
|
586
|
+
align: "center",
|
|
587
|
+
valign: "middle",
|
|
588
|
+
fontSize: 14
|
|
589
|
+
});
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
#### Table with Merged Cells
|
|
593
|
+
|
|
594
|
+
```javascript
|
|
595
|
+
const mergedTableData = [
|
|
596
|
+
[
|
|
597
|
+
{ text: "Q1 Results", options: { colspan: 3, fill: { color: "4472C4" }, color: "FFFFFF", bold: true } }
|
|
598
|
+
],
|
|
599
|
+
["Product", "Sales", "Market Share"],
|
|
600
|
+
["Product A", "$25M", "35%"],
|
|
601
|
+
["Product B", "$18M", "25%"]
|
|
602
|
+
];
|
|
603
|
+
|
|
604
|
+
slide.addTable(mergedTableData, {
|
|
605
|
+
x: 1,
|
|
606
|
+
y: 1,
|
|
607
|
+
w: 8,
|
|
608
|
+
h: 2.5,
|
|
609
|
+
colW: [3, 2.5, 2.5],
|
|
610
|
+
border: { pt: 1, color: "DDDDDD" }
|
|
611
|
+
});
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
### Table Options
|
|
615
|
+
|
|
616
|
+
Common table options:
|
|
617
|
+
- `x, y, w, h` - Position and size
|
|
618
|
+
- `colW` - Array of column widths (in inches)
|
|
619
|
+
- `rowH` - Array of row heights (in inches)
|
|
620
|
+
- `border` - Border style: `{ pt: 1, color: "999999" }`
|
|
621
|
+
- `fill` - Background color (no # prefix)
|
|
622
|
+
- `align` - Text alignment: "left", "center", "right"
|
|
623
|
+
- `valign` - Vertical alignment: "top", "middle", "bottom"
|
|
624
|
+
- `fontSize` - Text size
|
|
625
|
+
- `autoPage` - Auto-create new slides if content overflows
|