Skip to Content
Nodes

Nodes

This document provides a complete reference for all node types available in pom.

Top-Level <Slide>

The top level of a pom XML document is one or more <Slide> elements, optionally preceded by a single <Theme> element (see the next section). Each <Slide> represents one slide and wraps that slide’s content (any of the nodes below).

<Slide> <VStack w="100%" h="max" padding="48" gap="24"> <Text fontSize="32" bold="true">Title</Text> <Text fontSize="14">Body</Text> </VStack> </Slide>
  • A <Slide> must contain at least one child element.
  • Multiple top-level <Slide> elements produce multiple slides.
  • Top-level elements other than <Slide> and <Theme> are an error.
  • <Slide> does not currently take attributes; per-slide properties (background, notes, etc.) are tracked separately.

The remaining sections describe nodes that go inside a <Slide>. For brevity, the example snippets below omit the <Slide> wrapper.

Top-Level <Theme> (Design Tokens)

A pom XML document may declare a single <Theme> element at the top level. Each attribute declares a named color token, and any color attribute in the document can reference a token as $tokenName. This keeps the palette in one place instead of repeating hex values on every node.

Theme tokens example

<Theme surface="0F172A" accent="38BDF8" textMain="F8FAFC" textMuted="94A3B8" /> <Slide> <VStack w="100%" h="max" padding="48" gap="16" backgroundColor="$surface"> <Text fontSize="28" color="$textMain" bold="true">Title</Text> <Timeline dateColor="$textMuted" titleColor="$textMain" w="1000" h="120"> <TimelineItem date="Q1" title="Phase 1" color="$accent" /> </Timeline> </VStack> </Slide>
  • Token names must start with a letter and may contain letters, digits, _, and -. Values are 6-digit hex colors (# prefix optional).
  • At most one <Theme> per document; it applies to all slides regardless of position. Child elements are not allowed.
  • $tokenName references are resolved in color attributes (attributes ending in Color/Colors, color keys inside object/JSON attributes, highlight) and inside backgroundGradient / textGradient strings. Other attributes and text content are never substituted.
  • References are resolved by parseXml, so the returned POMNode tree contains plain hex values and the <Theme> element itself does not become a node (it is not preserved by serializeXml).
  • Referencing an unknown token (or using $token without a <Theme>) throws a ParseXmlError with a “did you mean” suggestion.

Common Properties

Layout attributes that all nodes can have.

AttributeTypeDescription
idstringUnique identifier within the slide (used by Arrow connectors)
wnumber / "max" / "50%"Width
hnumber / "max" / "50%"Height
growpositive numberFlex grow ratio among siblings (CSS flex-grow)
minW maxWnumberMin/Max width
minH maxHnumberMin/Max height
paddingnumber / padding.top="8" padding.bottom="8"Padding
backgroundColorhexBackground color (e.g., F8F9FA)
backgroundGradientlinear-gradient(135deg, #667EEA 0%, #764BA2 100%) or radial-gradient(circle at center, #1D4ED8 0%, #38BDF8 100%)Linear / radial gradient background
backgroundImagebackgroundImage.src="url" backgroundImage.sizing="cover"Background image
borderborder.color="333" border.width="1"Border
borderTop borderRight borderBottom borderLeftborderLeft.color="1D4ED8" borderLeft.width="6"Per-side border (overrides border for that side)
borderRadiusnumberCorner radius (px)
opacity0-1Background transparency
marginnumber / margin.top="8" margin.bottom="8"Outer margin
zIndexnumberStacking order (higher = on top)
positionrelative / absolutePositioning mode
topnumberTop offset (with position)
rightnumberRight offset (with position)
bottomnumberBottom offset (with position)
leftnumberLeft offset (with position)
alignSelfauto / start / center / end / stretchOverride parent alignItems
shadowshadow.type="outer" shadow.blur="4" shadow.offset="2" shadow.color="000"Drop shadow (not supported on Line)
  • grow: Distributes the remaining space of a VStack / HStack among siblings in proportion to their grow values (e.g., grow="2" and grow="1" produce a 2:1 split). Along the parent’s main axis, w="max" / h="max" behave as grow="1"; when grow is specified together with them, grow takes precedence. See Layout System for details.

    grow example

  • backgroundGradient: CSS-like linear-gradient() or radial-gradient() syntax. Exported as a native PowerPoint gradient fill (editable, not rasterized). Takes precedence over backgroundColor. When set on the root node of a slide, it is applied as the slide background. Note: in browser environments use pptx.write()pptx.writeFile() falls back to plain pptxgenjs output without the gradient post-processing.

    • linear-gradient(<angle>?, <stop>, <stop>, ...) — Angle accepts <n>deg (0 = bottom-to-top, clockwise) or to <direction> keywords (to right, to bottom left, …) and defaults to 180deg (top-to-bottom).
    • radial-gradient(<shape>? <size>? at <position>?, <stop>, <stop>, ...) — Shape accepts circle / ellipse (default ellipse). Size accepts closest-side / closest-corner / farthest-side / farthest-corner (default farthest-corner). Position accepts at center / at top right / at 25% 75% etc. (default center). Note: PowerPoint’s radial gradient fill follows the container aspect ratio and does not visually distinguish circle vs. ellipse or the size keyword — they are accepted as syntax but render the same farthest-corner ellipse on output. Only the center position changes the rendered result.
    • Two or more hex color stops are required for both forms. Stop positions (%) are optional and distributed evenly when omitted.

    backgroundGradient example

  • backgroundImage: src accepts a URL or local file path. sizing controls how the image fits: "cover" (default) fills the area, "contain" fits within the area.

  • border: Can be combined with color, width, and dashType ("solid" / "dash" / "dashDot" / "lgDash" / "lgDashDot" / "lgDashDotDot" / "sysDash" / "sysDot").

  • borderTop / borderRight / borderBottom / borderLeft: Per-side borders with the same fields as border (color / width / dashType). Useful for accent bars (borderLeft.width="6") or underlined headings (borderBottom.width="3"). When combined with border, each side merges field-by-field with the per-side value taking precedence. Cannot be combined with borderRadius — the per-side values are ignored with a diagnostics warning and the uniform border is used instead.

    Per-side border example

  • opacity: 0 = fully transparent, 1 = fully opaque. Useful for semi-transparent overlays with Layer nodes.

  • Shorthand (padding="16" / border='{"color":"333","width":1}') and dot notation (padding.top="8" / border.color="FF0000") can be mixed on the same node. Shorthand is used as the default value, then dot notation overrides each top-level key.

  • Mixed shorthand + dot notation is supported for: padding margin border cellBorder line fill shadow underline beginArrow endArrow backgroundImage connectorStyle sizing glow outline.

Leaf Rotation

Text, Shape, Image, and Icon support rotate as a number of degrees clockwise.

Leaf rotation example

<Text rotate="12">Rotated label</Text> <Shape shapeType="rect" w="120" h="60" rotate="-15" /> <Image src="sample_images/sample_0.png" w="160" h="100" rotate="8" /> <Icon name="cpu" rotate="45" />

Rotation is applied only when rendering to PowerPoint. Yoga layout uses the unrotated bounding box, so rotation does not change sibling placement or parent size.

Node List

1. Text

A node for displaying text.

Text Node Example

<Text fontSize="24" bold="true" color="333333" textAlign="center">Title</Text>
AttributeValues
fontSizenumber (default: 24)
colorhex (text color)
textGradientlinear-gradient(90deg, #38BDF8 0%, #A78BFA 100%)
textAlignleft / center / right
bold italic striketrue / false
subscript superscripttrue / false
underlinetrue / underline.style="wavy" underline.color="FF0000"
highlighthex (highlight color)
fontFamilystring (default: Noto Sans JP)
lineHeightnumber (default: 1.3)
letterSpacingnumber in px (letter spacing, converted to pt on output)
glowglow.size="8" glow.opacity="0.5" glow.color="FF3399"
outlineoutline.size="2" outline.color="0088CC"
rotatenumber (degrees clockwise, render-only)

textGradient accepts the same linear-gradient(...) syntax as backgroundGradient (angle + 2 or more hex color stops, optional % positions). Exported as a native PowerPoint gradient text fill (editable, not rasterized) and takes precedence over color. Applied at the <Text> node level — all runs (<Span>, <B>, etc.) inside are painted with the same gradient, overriding any per-run color. Note: in browser environments use pptx.write()pptx.writeFile() falls back to plain pptxgenjs output without the gradient post-processing.

<Text fontSize="64" bold="true" textGradient="linear-gradient(90deg, #38BDF8 0%, #A78BFA 100%)">Gradient title</Text>

Inline Formatting:

Use <B>, <I>, <A>, <U>, <S>, <Sub>, <Sup>, <Mark>, and <Span> child elements for partial bold/italic/underline/strikethrough/subscript/superscript/highlight/color and hyperlinks within a single text node:

<Text fontSize="16">Normal <B>bold</B> and <I>italic</I> text</Text> <Text fontSize="16"><B><I>Bold italic</I></B></Text> <Text fontSize="16">Visit <A href="https://example.com">our site</A></Text> <Text fontSize="16">Normal <U>underline</U> and <S>strikethrough</S> text</Text> <Text fontSize="16">H<Sub>2</Sub>O and x<Sup>2</Sup> + y<Sup>2</Sup></Text> <Text fontSize="16"><Mark color="FFFF00">highlighted</Mark> text</Text> <Text fontSize="16"><B><U>Bold underline nested</U></B></Text> <Text fontSize="16">Normal <Span color="FF0000">red text</Span> normal</Text> <Text fontSize="16"><B><Span color="1D4ED8">bold blue</Span></B></Text> <Text fontSize="16" fontFamily="Noto Sans JP">Default <Span fontFamily="Arial">Arial section</Span> default</Text> <Text fontSize="16">Normal <Span letterSpacing="6">spaced out</Span> normal</Text> <Text fontSize="52" bold="true" color="1D4ED8">¥84.2<Span fontSize="20">M</Span></Text>

<Span> supports color, fontFamily, fontSize, and letterSpacing attributes. When fontFamily is specified, that run uses the given font face (overrides the parent Text’s fontFamily). fontSize overrides the font size for that run only (useful for inline “big number + small unit” layouts such as KPI numerals like ¥84.2M or 118%). letterSpacing adjusts the spacing between characters for that run only. Note: <Span letterSpacing> is effective inside <Text> only (ignored inside <Li> / <Td>), and layout measurement uses the Text-level letterSpacing (run-level spacing affects rendering only). For <Span fontSize>, layout measurement uses the largest run-level fontSize to avoid clipping.

Subscript / Superscript:

Use <Sub> / <Sup> inline tags for chemical formulas, exponents, and ordinals, or the node-level subscript / superscript attributes to apply the effect to a whole <Text>. The two are mutually exclusive on the same run.

Subscript / Superscript example

<Text fontSize="16">H<Sub>2</Sub>O and x<Sup>2</Sup> + y<Sup>2</Sup></Text> <Text fontSize="14" subscript="true">whole text rendered as subscript</Text> <Text fontSize="14" superscript="true">whole text rendered as superscript</Text>

Letter Spacing:

letterSpacing is specified in px (consistent with other user-facing units such as fontSize) and converted to pt internally for the PPTX output. Layout measurement accounts for the extra width (letterSpacing × character count), so spaced text does not overflow its container.

letterSpacing example

<Text fontSize="32" bold="true" letterSpacing="8">SECTION TITLE</Text>

See Styling Guide for recommended font sizes.

Text Effects (glow / outline):

glow adds a glow effect around the characters, and outline draws a border along the character edges. Both are exported as native PowerPoint text effects (editable in PowerPoint, not rasterized). They are useful for keeping titles legible on top of background images.

Text effects example

<Text fontSize="40" bold="true" color="FFFFFF" glow.size="8" glow.opacity="0.5" glow.color="1D4ED8">Glowing title</Text> <Text fontSize="40" bold="true" color="FFFFFF" outline.size="2" outline.color="0F172A">Outlined title</Text>
  • glow.size: glow radius in px (converted to pt on output, default: 8). glow.opacity: 0–1 (default: 0.75). glow.color: hex (default: FFFFFF).
  • outline.size: outline width in px (converted to pt on output, default: 1). outline.color: hex (default: FFFFFF).
  • Both apply per text node. When inline formatting (<B>, <Span>, …) is used, the node-level effect applies to all runs.
  • Note: LibreOffice does not render character glow (outline renders fine); open the PPTX in PowerPoint to see the glow effect.

UnderlineStyle:

"dash" | "dashHeavy" | "dashLong" | "dashLongHeavy" | "dbl" | "dotDash" | "dotDotDash" | "dotted" | "dottedHeavy" | "heavy" | "none" | "sng" | "wavy" | "wavyDbl" | "wavyHeavy"

2. Ul (Unordered List)

A node for displaying bullet-point lists. Use <Li> child elements to define list items.

<Ul fontSize="14" color="333333"> <Li>Item A</Li> <Li>Item B</Li> <Li bold="true">Item C (bold)</Li> </Ul>

Ul Attributes:

AttributeValues
fontSizenumber (default: 24)
colorhex (text color)
textAlignleft / center / right
bold italic striketrue / false
subscript superscripttrue / false
underlinetrue / underline options
highlighthex (highlight color)
fontFamilystring (default: Noto Sans JP)
lineHeightnumber (default: 1.3)

Li Attributes (overrides parent Ul/Ol style):

AttributeValues
fontSizenumber
colorhex (text color)
bold italic striketrue / false
subscript superscripttrue / false
underlinetrue / underline options
highlighthex (highlight color)
fontFamilystring

Li also supports <B>, <I>, <A>, <U>, <S>, <Sub>, <Sup>, <Mark>, and <Span> inline formatting: <Li>Normal <B>bold</B> item</Li>, <Li>See <A href="https://example.com">link</A></Li>, <Li>x<Sup>2</Sup> + y<Sup>2</Sup></Li>, <Li>H<Sub>2</Sub>O</Li>, <Li><Span color="FF0000">red</Span> item</Li>

Line spacing convention: Ul / Ol use a different line-spacing rule than Text. The rendered row height (and the yoga layout measurement) follows the bundled-font line-height ratio multiplied by lineHeight: measureFontLineHeightRatio × lineHeight × fontSize. In contrast, Text (and the text inside Shape) uses a fixed value of lineHeight × fontSize for both measurement and rendering (PowerPoint spcPts). Use the same lineHeight value when you want a Ul block and a Text block to look visually consistent; the absolute pixel values may differ slightly. See Text Measurement — Line Height and Rendering.

3. Ol (Ordered List)

A node for displaying numbered lists. Has all Ul attributes plus the following:

<Ol fontSize="14" numberType="alphaLcPeriod" numberStartAt="3"> <Li>Item A</Li> <Li>Item B</Li> </Ol>

Additional Ol Attributes:

AttributeValues
numberTypealphaLcPeriod / alphaUcPeriod / arabicParenR / arabicPeriod / arabicPlain / romanLcPeriod / romanUcPeriod etc.
numberStartAtnumber (starting number, default: 1)

4. Image

A node for displaying images.

Image Node Example

<Image src="https://placehold.co/200x150" w="200" h="150" />
AttributeValues
srcstring (URL / path / base64)
sizing'{"type":"contain"}' / '{"type":"cover"}' / '{"type":"crop","x":0,"y":0,"w":100,"h":100}'
rotatenumber (degrees clockwise, render-only)
  • If w and h are not specified, the actual image size is automatically used.
  • If size is specified, the image is displayed at that size (aspect ratio is not preserved).
  • Use sizing to control how the image fits within its bounds:
    • contain: Maintains aspect ratio, fits within the specified size
    • cover: Maintains aspect ratio, covers the entire specified size
    • crop: Crops the image to the specified region

5. Table

A node for drawing tables. Column widths and row heights are declared in px, with fine-grained control over cell decoration.

Table Node Example

<Table> <Col width="200" /> <Col width="100" /> <Tr> <Td bold="true" backgroundColor="DBEAFE">Name</Td> <Td bold="true" backgroundColor="DBEAFE">Score</Td> </Tr> <Tr> <Td>Alice</Td> <Td>95</Td> </Tr> </Table>
  • <Col>: width (omit for even distribution)
  • <Tr>: height (omit to apply defaultRowHeight, default 32)
  • <Td>: Text content + fontSize color bold italic underline strike subscript superscript highlight fontFamily textAlign backgroundColor colspan rowspan. Also supports <B>, <I>, <A>, <U>, <S>, <Sub>, <Sup>, <Mark>, and <Span> inline formatting
AttributeValues
defaultRowHeightnumber (default: 32)
cellBorder{color, width, dashType} — cell border style

6. Shape

A node for drawing shapes. Different representations are possible with or without text, supporting complex visual effects.

Shape Node Example

<Shape shapeType="roundRect" w="200" h="60" text="Button" fontSize="16" fill.color="1D4ED8" color="FFFFFF" />
AttributeValues
shapeTypeShape type (178 types — see list below)
textstring (text inside the shape)
fillfill.color="hex" fill.transparency="0.5"
lineline.color="hex" line.width="2" line.dashType="dash"
outlineoutline.size="2" outline.color="0088CC" (alias for line with the same syntax as Text outline; takes precedence over line)
glowglow.size="8" glow.opacity="0.5" glow.color="FF3399" — native shape glow (editable in PowerPoint, not rasterized)
rotatenumber (degrees clockwise, render-only)
Text attributesfontSize color textAlign bold italic underline strike subscript superscript highlight fontFamily lineHeight

Shape Effects (glow / outline):

glow adds a glow effect around the shape edge, and outline is a Text-style alias for line (the underlying border). Both produce native PowerPoint shape effects that remain editable; nothing is rasterized.

<!-- Glowing badge dot --> <Shape shapeType="ellipse" w="20" h="20" fill.color="3B82F6" glow.size="12" glow.opacity="0.7" glow.color="3B82F6" /> <!-- Outlined pill (outline overrides line if both are specified) --> <Shape shapeType="roundRect" w="160" h="40" outline.size="3" outline.color="1D4ED8" />
  • glow.size: glow radius in px (converted to EMU on output, default: 8). glow.opacity: 0–1 (default: 0.75). glow.color: hex (default: FFFFFF).
  • outline.size: outline width in px (converted to pt on output, default: 1). outline.color: hex (default: FFFFFF).
  • When both line and outline are specified, outline overrides line.color / line.width; line.dashType is still carried over.
  • Note: LibreOffice may not render shape glow reliably; open the PPTX in PowerPoint to verify.

Common Shape Types:

  • roundRect: Rounded rectangle (title boxes, category displays)
  • ellipse: Ellipse/circle (step numbers, badges)
  • cloud: Cloud shape (comments, key points)
  • wedgeRectCallout: Callout with arrow (annotations)
  • cloudCallout: Cloud callout (comments)
  • star5: 5-pointed star (emphasis, decoration)
  • downArrow: Down arrow (flow diagrams)

All Shape Types (178 types)

Basic Shapes: arc, bevel, blockArc, can, chord, corner, cube, decagon, diagStripe, diamond, dodecagon, donut, ellipse, folderCorner, frame, funnel, halfFrame, heptagon, hexagon, homePlate, nonIsoscelesTrapezoid, octagon, parallelogram, pentagon, pie, pieWedge, plaque, plus, rect, roundRect, rtTriangle, trapezoid, triangle

Rounded & Snipped Rectangles: round1Rect, round2DiagRect, round2SameRect, snip1Rect, snip2DiagRect, snip2SameRect, snipRoundRect

Arrows: bentArrow, bentUpArrow, chevron, circularArrow, curvedDownArrow, curvedLeftArrow, curvedRightArrow, curvedUpArrow, downArrow, leftArrow, leftCircularArrow, leftRightArrow, leftRightCircularArrow, leftRightUpArrow, leftUpArrow, notchedRightArrow, quadArrow, rightArrow, stripedRightArrow, swooshArrow, upArrow, upDownArrow, uturnArrow

Arrow Callouts: downArrowCallout, leftArrowCallout, leftRightArrowCallout, quadArrowCallout, rightArrowCallout, upArrowCallout, upDownArrowCallout

Callouts: accentBorderCallout1, accentBorderCallout2, accentBorderCallout3, accentCallout1, accentCallout2, accentCallout3, borderCallout1, borderCallout2, borderCallout3, callout1, callout2, callout3, cloudCallout, wedgeEllipseCallout, wedgeRectCallout, wedgeRoundRectCallout

Stars & Banners: doubleWave, ellipseRibbon, ellipseRibbon2, horizontalScroll, irregularSeal1, irregularSeal2, leftRightRibbon, ribbon, ribbon2, star4, star5, star6, star7, star8, star10, star12, star16, star24, star32, verticalScroll, wave

Flowchart: flowChartAlternateProcess, flowChartCollate, flowChartConnector, flowChartDecision, flowChartDelay, flowChartDisplay, flowChartDocument, flowChartExtract, flowChartInputOutput, flowChartInternalStorage, flowChartMagneticDisk, flowChartMagneticDrum, flowChartMagneticTape, flowChartManualInput, flowChartManualOperation, flowChartMerge, flowChartMultidocument, flowChartOfflineStorage, flowChartOffpageConnector, flowChartOnlineStorage, flowChartOr, flowChartPredefinedProcess, flowChartPreparation, flowChartProcess, flowChartPunchedCard, flowChartPunchedTape, flowChartSort, flowChartSummingJunction, flowChartTerminator

Action Buttons: actionButtonBackPrevious, actionButtonBeginning, actionButtonBlank, actionButtonDocument, actionButtonEnd, actionButtonForwardNext, actionButtonHelp, actionButtonHome, actionButtonInformation, actionButtonMovie, actionButtonReturn, actionButtonSound

Brackets & Braces: bracePair, bracketPair, leftBrace, leftBracket, rightBrace, rightBracket

Math Symbols: mathDivide, mathEqual, mathMinus, mathMultiply, mathNotEqual, mathPlus

Others: chartPlus, chartStar, chartX, cloud, cornerTabs, gear6, gear9, heart, lightningBolt, line, lineInv, moon, noSmoking, plaqueTabs, smileyFace, squareTabs, sun, teardrop

7. VStack

Arranges child elements vertically.

VStack Node Example

<VStack gap="16" alignItems="stretch" justifyContent="start"> <Text>A</Text> <Text>B</Text> </VStack>
AttributeValues
gapnumber (gap between children)
alignItemsstart / center / end / stretch
justifyContentstart / center / end / spaceBetween / spaceAround / spaceEvenly
flexWrapnowrap / wrap / wrapReverse

Note: Child elements of VStack have flexShrink=1 by default (same as CSS Flexbox), so percentage-based heights combined with gap will shrink automatically to fit within the parent.

Tip: An empty <VStack /> renders nothing and can be used as a transparent spacer. Combined with grow="1", it works like CSS <div style="flex:1"></div> to push siblings apart.

<VStack h="300"> <Text>Top</Text> <VStack grow="1" /> <Text>Bottom</Text> </VStack>

8. HStack

Arranges child elements horizontally.

HStack Node Example

<HStack gap="16" alignItems="center" justifyContent="start"> <Text>A</Text> <Text>B</Text> </HStack>
AttributeValues
gapnumber (gap between children)
alignItemsstart / center / end / stretch
justifyContentstart / center / end / spaceBetween / spaceAround / spaceEvenly
flexWrapnowrap / wrap / wrapReverse

Note: Child elements of HStack have flexShrink=1 by default (same as CSS Flexbox), so percentage-based widths combined with gap will shrink automatically to fit within the parent.

Tip: An empty <HStack /> renders nothing and can be used as a transparent spacer. Combined with grow="1", it works like CSS <div style="flex:1"></div> to push siblings apart.

<HStack w="600"> <Text>Left</Text> <HStack grow="1" /> <Text>Right</Text> </HStack>

9. Chart

A node for drawing charts. Supports bar charts, line charts, pie charts, area charts, doughnut charts, and radar charts.

Chart Node Example

<Chart chartType="bar" w="500" h="300" showLegend="true" chartColors='["0088CC","00AA00"]'> <ChartSeries name="Sales"> <ChartDataPoint label="Jan" value="100" /> <ChartDataPoint label="Feb" value="150" /> </ChartSeries> </Chart>
AttributeValues
chartTypebar / line / pie / area / doughnut / radar
showLegendboolean
showTitleboolean
titlestring
chartColorsJSON array '["hex1","hex2"]'
radarStylestandard / marker / filled (radar only)
sparklineboolean — hides legend / axes / gridlines / margins for compact display (bar / line / area, e.g. h=40)

Usage Examples:

<!-- Bar chart --> <Chart chartType="bar" w="600" h="400" showLegend="true" showTitle="true" title="Monthly Sales &amp; Profit" chartColors='["0088CC","00AA00"]'> <ChartSeries name="Sales"> <ChartDataPoint label="Jan" value="100" /> <ChartDataPoint label="Feb" value="200" /> <ChartDataPoint label="Mar" value="150" /> <ChartDataPoint label="Apr" value="300" /> </ChartSeries> <ChartSeries name="Profit"> <ChartDataPoint label="Jan" value="30" /> <ChartDataPoint label="Feb" value="60" /> <ChartDataPoint label="Mar" value="45" /> <ChartDataPoint label="Apr" value="90" /> </ChartSeries> </Chart> <!-- Pie chart --> <Chart chartType="pie" w="400" h="300" showLegend="true" chartColors='["0088CC","00AA00","FF6600","888888"]'> <ChartSeries name="Market Share"> <ChartDataPoint label="Product A" value="40" /> <ChartDataPoint label="Product B" value="30" /> <ChartDataPoint label="Product C" value="20" /> <ChartDataPoint label="Others" value="10" /> </ChartSeries> </Chart> <!-- Radar chart --> <Chart chartType="radar" w="400" h="300" showLegend="true" radarStyle="filled" chartColors='["0088CC"]'> <ChartSeries name="Skill Assessment"> <ChartDataPoint label="Technical" value="80" /> <ChartDataPoint label="Design" value="60" /> <ChartDataPoint label="PM" value="70" /> <ChartDataPoint label="Sales" value="50" /> <ChartDataPoint label="Support" value="90" /> </ChartSeries> </Chart> <!-- Sparkline (compact h=40 inline chart with no chrome) --> <Chart chartType="bar" w="200" h="40" sparkline="true" chartColors='["0088CC"]'> <ChartSeries name="Sales"> <ChartDataPoint label="Q1" value="100" /> <ChartDataPoint label="Q2" value="200" /> <ChartDataPoint label="Q3" value="150" /> <ChartDataPoint label="Q4" value="300" /> </ChartSeries> </Chart>

Sparkline mode (sparkline="true"): hides legend / axis titles / axis labels / gridlines / margins and stretches the plot area to fill the chart bounds. Designed for small inline charts (e.g. h=40) inside KPI tiles. Works best with bar / line / area.

10. Timeline

A node for creating timeline/roadmap visualizations. Supports horizontal and vertical layouts.

Timeline Node Example

<Timeline direction="horizontal" w="1000" h="120"> <TimelineItem date="Q1" title="Phase 1" description="Foundation" color="4CAF50" /> <TimelineItem date="Q2" title="Phase 2" description="Development" color="2196F3" /> </Timeline>
AttributeValues
directionhorizontal / vertical
dateColorhex (date text color, default: 64748B)
titleColorhex (title text color, default: 1E293B)
descriptionColorhex (description text color, default: 64748B)
connectorColorhex (axis line color, default: E2E8F0)
connectorGradientlinear-gradient(<angle>deg, <color> <pos>%, ...) — applies a linear gradient to the connector line
useColorForDatetrue / false — when true, each item’s date text uses that item’s color (default: false)
fontFamilyfont family name applied to all text (date / title / description). default: Noto Sans JP

<TimelineItem>: date (required) title (required) description color dateColor

  • dateColor (per-item) overrides both Timeline.dateColor and useColorForDate.
  • fontFamily changes the rendered font face only. Internal layout measurement still assumes the default label sizes (the bundled Noto Sans JP metrics), so very wide / very tall fonts may overflow within the same w / h. Pick a larger w / h if labels clip.

Usage Examples:

<!-- Horizontal roadmap --> <Timeline direction="horizontal" w="1000" h="120"> <TimelineItem date="2025/Q1" title="Phase 1" description="Foundation" color="4CAF50" /> <TimelineItem date="2025/Q2" title="Phase 2" description="Development" color="2196F3" /> <TimelineItem date="2025/Q3" title="Phase 3" description="Testing" color="FF9800" /> <TimelineItem date="2025/Q4" title="Phase 4" description="Release" color="E91E63" /> </Timeline> <!-- Vertical project plan --> <Timeline direction="vertical" w="400" h="300"> <TimelineItem date="Week 1" title="Planning" /> <TimelineItem date="Week 2-3" title="Development" /> <TimelineItem date="Week 4" title="Release" /> </Timeline>

11. Matrix

A node for creating 2x2 matrix/positioning maps. Commonly used for cost-effectiveness analysis, impact-effort prioritization, etc.

Matrix Node Example

<Matrix w="600" h="500"> <MatrixAxes x="Cost" y="Effect" /> <MatrixQuadrants topLeft="Quick Wins" topRight="Strategic" bottomLeft="Low Priority" bottomRight="Avoid" /> <MatrixItem label="Initiative A" x="0.2" y="0.8" color="4CAF50" /> <MatrixItem label="Initiative B" x="0.7" y="0.6" /> </Matrix>
  • Coordinates: (0,0)=bottom-left, (1,1)=top-right (mathematical coordinate system)
  • <Matrix>: axisLabelColor (default 64748B) quadrantLabelColor (default 94A3B8) itemLabelColor (default 1E293B) — text colors
  • <MatrixAxes>: x y (axis labels, required)
  • <MatrixQuadrants>: topLeft topRight bottomLeft bottomRight
  • <MatrixItem>: label x y (required) color textColor (overrides itemLabelColor)

Usage Examples:

<!-- Cost-Effectiveness Matrix --> <Matrix w="600" h="500"> <MatrixAxes x="Cost" y="Effect" /> <MatrixQuadrants topLeft="Low Cost / High Effect (Priority)" topRight="High Cost / High Effect (Consider)" bottomLeft="Low Cost / Low Effect (Low Priority)" bottomRight="High Cost / Low Effect (Avoid)" /> <MatrixItem label="Initiative A" x="0.2" y="0.8" color="4CAF50" /> <MatrixItem label="Initiative B" x="0.7" y="0.6" color="2196F3" /> <MatrixItem label="Initiative C" x="0.3" y="0.3" color="FF9800" /> <MatrixItem label="Initiative D" x="0.8" y="0.2" color="E91E63" /> </Matrix> <!-- Simple Impact-Effort Matrix (without quadrant labels) --> <Matrix w="500" h="400"> <MatrixAxes x="Effort" y="Impact" /> <MatrixItem label="Quick Win" x="0.15" y="0.85" /> <MatrixItem label="Major Project" x="0.75" y="0.75" /> <MatrixItem label="Fill-In" x="0.25" y="0.25" /> <MatrixItem label="Time Sink" x="0.85" y="0.15" /> </Matrix>

12. Tree

A node for creating tree structures such as organization charts, decision trees, and hierarchical diagrams.

Tree Node Example

<Tree layout="vertical" nodeShape="roundRect" w="600" h="400"> <TreeItem label="CEO" color="1D4ED8"> <TreeItem label="CTO" color="0EA5E9"> <TreeItem label="Engineer A" /> </TreeItem> <TreeItem label="CFO" color="16A34A" /> </TreeItem> </Tree>
AttributeValues
layoutvertical / horizontal
nodeShaperect / roundRect / ellipse
textColorhex (node label text color, default: FFFFFF)
nodeWidthnumber (default: 120)
nodeHeightnumber (default: 40)
levelGapnumber (default: 60)
siblingGapnumber (default: 20)
connectorStyleconnectorStyle.color="333" connectorStyle.width="2"

<TreeItem> can be nested recursively. The root must have exactly one <TreeItem>. Attributes: label (required) color textColor (overrides the Tree-level textColor).

Usage Examples:

<!-- Vertical Organization Chart --> <Tree layout="vertical" nodeShape="roundRect" w="600" h="400" connectorStyle.color="333333" connectorStyle.width="2"> <TreeItem label="CEO" color="1D4ED8"> <TreeItem label="CTO" color="0EA5E9"> <TreeItem label="Engineer A" /> <TreeItem label="Engineer B" /> </TreeItem> <TreeItem label="CFO" color="16A34A"> <TreeItem label="Accountant" /> </TreeItem> </TreeItem> </Tree> <!-- Horizontal Decision Tree --> <Tree layout="horizontal" nodeShape="rect" w="600" h="300"> <TreeItem label="Start"> <TreeItem label="Option A"> <TreeItem label="Result 1" /> <TreeItem label="Result 2" /> </TreeItem> <TreeItem label="Option B"> <TreeItem label="Result 3" /> </TreeItem> </TreeItem> </Tree>

13. Flow

A node for creating flowcharts. Supports various node shapes and automatic layout.

Flow Node Example

<Flow direction="horizontal" w="500" h="300"> <FlowNode id="start" shape="flowChartTerminator" text="Start" color="4CAF50" /> <FlowNode id="process" shape="flowChartProcess" text="Process" /> <FlowNode id="decision" shape="flowChartDecision" text="OK?" color="FF9800" /> <FlowNode id="end" shape="flowChartTerminator" text="End" color="E91E63" /> <FlowConnection from="start" to="process" /> <FlowConnection from="process" to="decision" /> <FlowConnection from="decision" to="end" label="Yes" /> </Flow>
AttributeValues
directionhorizontal / vertical
nodeWidthnumber (default: 120)
nodeHeightnumber (default: 60)
nodeGapnumber (default: 80)
connectorStyleconnectorStyle.color="hex" connectorStyle.width="2" connectorStyle.arrowType="arrow" connectorStyle.labelColor="hex"

<FlowNode> attributes:

AttributeValues
idstring (required) — unique node identifier
shapeflowChartTerminator / flowChartProcess / flowChartDecision / flowChartInputOutput / flowChartDocument / flowChartPredefinedProcess / flowChartConnector / flowChartPreparation / flowChartManualInput / flowChartManualOperation / flowChartDelay / flowChartMagneticDisk
textstring (required) — display text
colorhex color (e.g. "4CAF50") — node fill color
textColorhex color (e.g. "FFFFFF") — text color
widthnumber — individual node width (overrides nodeWidth)
heightnumber — individual node height (overrides nodeHeight)

<FlowConnection>: from to (required) label color labelColor (label text color; overrides connectorStyle.labelColor, default: 64748B)

Usage Examples:

<!-- Simple vertical flowchart --> <Flow direction="vertical" w="400" h="300"> <FlowNode id="start" shape="flowChartTerminator" text="Start" color="4CAF50" /> <FlowNode id="process" shape="flowChartProcess" text="Process" /> <FlowNode id="decision" shape="flowChartDecision" text="OK?" color="FF9800" /> <FlowNode id="end" shape="flowChartTerminator" text="End" color="E91E63" /> <FlowConnection from="start" to="process" /> <FlowConnection from="process" to="decision" /> <FlowConnection from="decision" to="end" label="Yes" /> </Flow> <!-- Horizontal flowchart --> <Flow direction="horizontal" w="600" h="200"> <FlowNode id="input" shape="flowChartInputOutput" text="Input" /> <FlowNode id="validate" shape="flowChartProcess" text="Validate" /> <FlowNode id="save" shape="flowChartProcess" text="Save" /> <FlowNode id="output" shape="flowChartInputOutput" text="Output" /> <FlowConnection from="input" to="validate" /> <FlowConnection from="validate" to="save" /> <FlowConnection from="save" to="output" /> </Flow>

14. ProcessArrow

A node for creating chevron-style process diagrams. Commonly used for visualizing sequential steps in a workflow.

ProcessArrow Node Example

<ProcessArrow direction="horizontal" w="1000" h="80"> <ProcessArrowStep label="Planning" color="4472C4" /> <ProcessArrowStep label="Design" color="5B9BD5" /> <ProcessArrowStep label="Development" color="70AD47" /> <ProcessArrowStep label="Release" color="ED7D31" /> </ProcessArrow>
AttributeValues
directionhorizontal / vertical
itemWidthnumber (default: 150)
itemHeightnumber (default: 80)
gapnumber (default: -(itemHeight×0.35), negative for overlap)
fontSizenumber (default: 14)
bold italic strikeboolean
underlinetrue / underline.style="wavy" underline.color="FF0000"
highlighthex (highlight color)
fontFamilystring (default: Noto Sans JP)

<ProcessArrowStep>: label (required) color (default: 4472C4) textColor (default: FFFFFF)

Usage Examples:

<!-- Horizontal process arrow with colors --> <ProcessArrow direction="horizontal" w="1000" h="80"> <ProcessArrowStep label="Planning" color="4472C4" /> <ProcessArrowStep label="Design" color="5B9BD5" /> <ProcessArrowStep label="Development" color="70AD47" /> <ProcessArrowStep label="Testing" color="FFC000" /> <ProcessArrowStep label="Release" color="ED7D31" /> </ProcessArrow> <!-- Vertical process arrow --> <ProcessArrow direction="vertical" w="200" h="250"> <ProcessArrowStep label="Phase 1" color="4CAF50" /> <ProcessArrowStep label="Phase 2" color="2196F3" /> <ProcessArrowStep label="Phase 3" color="9C27B0" /> </ProcessArrow> <!-- Custom styling --> <ProcessArrow direction="horizontal" w="600" h="80" itemWidth="180" itemHeight="70" fontSize="16" bold="true"> <ProcessArrowStep label="Input" color="2196F3" /> <ProcessArrowStep label="Process" color="00BCD4" /> <ProcessArrowStep label="Output" color="009688" /> </ProcessArrow>

15. Pyramid

A node for creating pyramid diagrams. Used for visualizing hierarchies, priorities, and layered concepts like Maslow’s hierarchy.

Pyramid Node Example

<Pyramid direction="up" w="600" h="300"> <PyramidLevel label="Strategy" color="E91E63" /> <PyramidLevel label="Tactics" color="9C27B0" /> <PyramidLevel label="Execution" color="673AB7" /> </Pyramid>
AttributeValues
directionup (default) / down
fontSizenumber (default: 14)
boldboolean
fontFamilystring (default: Noto Sans JP)

<PyramidLevel>: label (required) color (default: 4472C4) textColor (default: FFFFFF)

  • direction="up": First level is the top (narrowest), last level is the base (widest).
  • direction="down": First level is the top (widest), last level is the bottom (narrowest).

Usage Examples:

<!-- Basic pyramid (up direction) --> <Pyramid direction="up" w="600" h="300"> <PyramidLevel label="Vision" color="1D4ED8" /> <PyramidLevel label="Strategy" color="2563EB" /> <PyramidLevel label="Operations" color="3B82F6" /> </Pyramid> <!-- Inverted pyramid --> <Pyramid direction="down" w="600" h="300"> <PyramidLevel label="Wide" color="4472C4" /> <PyramidLevel label="Medium" color="5B9BD5" /> <PyramidLevel label="Narrow" color="70AD47" /> </Pyramid> <!-- Maslow's hierarchy with custom text colors --> <Pyramid direction="up" w="800" h="400" fontSize="16" bold="true"> <PyramidLevel label="Self-actualization" color="F44336" textColor="FFFFFF" /> <PyramidLevel label="Esteem" color="FF9800" textColor="333333" /> <PyramidLevel label="Love/Belonging" color="FFEB3B" textColor="333333" /> <PyramidLevel label="Safety" color="4CAF50" textColor="FFFFFF" /> <PyramidLevel label="Physiological" color="2196F3" textColor="FFFFFF" /> </Pyramid>

16. Line

A node for drawing lines and arrows. Uses absolute coordinates (x1, y1, x2, y2) for start and end points.

Line Node Example

<Line x1="100" y1="100" x2="300" y2="100" color="333333" lineWidth="2" endArrow="true" />
AttributeValues
x1 y1 x2 y2number (absolute coordinates, required)
colorhex (default: 000000)
lineWidthnumber (default: 1)
dashTypesolid / dash / dashDot / lgDash / sysDash etc.
beginArrow / endArrowtrue / endArrow.type="triangle" (type: none/arrow/triangle/diamond/oval/stealth)

Note: Line nodes use absolute coordinates on the slide and are not affected by Yoga layout calculations.

Usage Examples:

<!-- Simple horizontal line --> <Line x1="100" y1="100" x2="300" y2="100" color="333333" lineWidth="2" /> <!-- Arrow pointing right --> <Line x1="100" y1="150" x2="300" y2="150" color="333333" lineWidth="2" endArrow="true" /> <!-- Bidirectional arrow --> <Line x1="100" y1="200" x2="300" y2="200" color="333333" lineWidth="2" beginArrow="true" endArrow="true" /> <!-- Diagonal line with arrow (bottom-right direction) --> <Line x1="100" y1="100" x2="250" y2="200" color="1D4ED8" lineWidth="2" endArrow="true" /> <!-- Dashed line --> <Line x1="100" y1="250" x2="300" y2="250" color="333333" lineWidth="2" dashType="dash" /> <!-- Custom arrow type (diamond) --> <Line x1="100" y1="300" x2="300" y2="300" color="1D4ED8" lineWidth="2" endArrow.type="diamond" />

17. Layer

A container for absolute positioning of child elements. Child elements are positioned using x and y coordinates relative to the layer’s top-left corner.

Layer Node Example

<Layer w="600" h="400"> <Shape shapeType="roundRect" x="50" y="50" w="120" h="80" fill.color="1D4ED8" text="A" color="FFFFFF" /> <Line x1="170" y1="90" x2="300" y2="90" endArrow="true" /> </Layer>
  • Child elements can have x y attributes (relative to layer’s top-left corner, defaults to 0).
  • Drawing order follows document order (later elements are drawn on top).
  • Layer itself participates in Flexbox layout (can be placed in VStack/HStack).
  • Layers can be nested.

Usage Examples:

<!-- Basic absolute positioning with overlapping shapes --> <Layer w="600" h="400" backgroundColor="F0F4F8"> <!-- Back shape (drawn first) --> <Shape shapeType="rect" x="50" y="50" w="120" h="100" fill.color="1D4ED8" text="Back" color="FFFFFF" /> <!-- Front shape (drawn on top) --> <Shape shapeType="rect" x="100" y="80" w="120" h="100" fill.color="DC2626" text="Front" color="FFFFFF" /> </Layer> <!-- Layer with VStack children for free-form layout --> <Layer w="800" h="300" backgroundColor="F8FAFC"> <VStack x="20" y="20" w="200" gap="8" padding="12" backgroundColor="FFFFFF"> <Text fontSize="14" bold="true">Left Column</Text> <Text fontSize="12">Content A</Text> </VStack> <VStack x="300" y="20" w="200" gap="8" padding="12" backgroundColor="FFFFFF"> <Text fontSize="14" bold="true">Right Column</Text> <Text fontSize="12">Content B</Text> </VStack> </Layer> <!-- Connection diagram with lines --> <Layer w="800" h="200" backgroundColor="F8FAFC"> <Shape shapeType="roundRect" x="50" y="60" w="150" h="80" fill.color="1D4ED8" text="Service A" color="FFFFFF" /> <Shape shapeType="roundRect" x="350" y="60" w="150" h="80" fill.color="16A34A" text="Service B" color="FFFFFF" /> <Line x1="200" y1="100" x2="350" y2="100" color="333333" lineWidth="2" endArrow="true" /> <Text x="240" y="70" fontSize="10">API Call</Text> </Layer> <!-- Nested layers --> <Layer w="600" h="150" backgroundColor="E3F2FD"> <Text x="10" y="10" fontSize="12" bold="true">Outer Layer</Text> <Layer x="50" y="40" w="200" h="80" backgroundColor="FFF3E0"> <Text x="10" y="30" fontSize="11">Inner Layer</Text> </Layer> </Layer>

18. Icon

A node for displaying icons from the Lucide icon library. Icons are rendered as PNG images at the specified size and color.

Icon Node Example

<Icon name="cpu" size="32" color="#1D4ED8" /> <Icon name="cpu" variant="circle-filled" bgColor="#E8F0FE" color="#1D4ED8" />
AttributeValues
nameicon name (required)
sizenumber (default: 24, in px)
colorhex color (default: #000000)
variantcircle-filled, circle-outlined, square-filled, square-outlined
bgColorhex color for the background shape (default: #E0E0E0 when variant is set)
glowglow.size="8" glow.opacity="0.5" glow.color="FF3399" — applied to the background shape (variant required, ignored on bare icons)
outlineoutline.size="2" outline.color="0088CC" — applied to the background shape (variant required, overrides the variant default line)
rotatenumber (degrees clockwise, render-only)

Icon Effects (glow / outline):

glow and outline are applied to the background shape created by variant. They are not applied to the PNG icon glyph itself (the glyph is rasterized and PowerPoint native effects cannot be added afterwards), so both are no-ops when variant is not set. Typical use is glowing badge dots, timeline markers, and outlined chips.

<!-- Glowing badge dot --> <Icon name="star" size="16" variant="circle-filled" bgColor="3B82F6" glow.size="10" glow.color="3B82F6" /> <!-- Outlined badge --> <Icon name="info" size="18" variant="circle-outlined" color="1D4ED8" outline.size="2" outline.color="1D4ED8" />

All Lucide icons  are available. Below are common examples:

Common Icons (49):

CategoryIcons
Technologycpu, database, cloud, server, code, terminal, wifi, globe
Peopleuser, users, contact
Businessbriefcase, building, bar-chart, line-chart, pie-chart, trending-up
Communicationmail, message-square, phone, video
Actionsearch, settings, filter, download, upload, share
Statuscheck, alert-triangle, info, shield, lock, unlock
Contentfile, folder, image, calendar, clock, bookmark
Navigationarrow-right, arrow-left, arrow-up, arrow-down, external-link
Otherstar, heart, zap, target, lightbulb

19. Svg

A node for rendering inline SVG graphics. SVGs are rasterized to PNG at the specified size.

Svg Node Example

<Svg w="32" h="32" color="#1D4ED8"> <svg viewBox="0 0 24 24"> <path d="M12 2L2 22h20z" fill="none" stroke-width="2"/> </svg> </Svg>
AttributeValues
wnumber (default: 24, width in px)
hnumber (default: 24, height in px)
colorhex color

A <svg> child element is required.

When color is specified, it sets stroke and fill="none" on the root <svg> element. If child elements within the SVG have explicit stroke or fill attributes, those take precedence over the root-level values.

20. Arrow

A node for drawing connectors between elements referenced by their id attribute. Unlike Line (which requires manual coordinates), Arrow automatically connects two nodes by ID.

<Layer w="1280" h="720"> <Shape id="a" x="100" y="100" w="120" h="40" shapeType="rect">A</Shape> <Shape id="b" x="100" y="200" w="120" h="40" shapeType="rect">B</Shape> <Arrow x="0" y="0" from="a" to="b" endArrow="true" /> </Layer>
AttributeValues
fromstring (id of the source node, required)
tostring (id of the destination node, required)
colorhex (default: 000000)
lineWidthnumber (default: 1)
dashTypesolid / dash / dashDot / lgDash / sysDash etc.
beginArrow / endArrowtrue / endArrow.type="triangle" (type: none/arrow/triangle/diamond/oval/stealth)

The connector draws a straight line between the center points of the from and to nodes.

If either ID is not found on the slide, a ARROW_REF_NOT_FOUND diagnostic is emitted (build succeeds, connector is omitted).

Usage Example:

<Layer w="1280" h="720"> <Shape id="web" x="100" y="120" w="160" h="60" shapeType="roundRect" fill.color="1D4ED8" color="FFFFFF">Web App</Shape> <Shape id="api" x="100" y="260" w="160" h="60" shapeType="roundRect" fill.color="16A34A" color="FFFFFF">API</Shape> <Shape id="db" x="100" y="400" w="160" h="60" shapeType="roundRect" fill.color="DC2626" color="FFFFFF">DB</Shape> <!-- Connectors --> <Arrow x="0" y="0" from="web" to="api" endArrow="true" /> <Arrow x="0" y="0" from="api" to="db" endArrow="true" /> <!-- Bidirectional with style --> <Arrow x="0" y="0" from="api" to="web" beginArrow="true" endArrow="true" color="333333" lineWidth="2" dashType="dash" /> </Layer>
Last updated on