# pom XML Reference A compact reference for the pom XML format, designed to be pasted into LLM prompts. ## Basics - Slide size: `{ w: 1280, h: 720 }` (px) - Colors: 6-digit hex (no `#` prefix) e.g. `FF0000` - Attribute values are written as strings. Numbers and booleans are auto-converted - Nested object attributes use dot notation (e.g. `fill.color="1D4ED8"`) ## Common Attributes (All Nodes) | Attribute | Type | Description | | ----------------- | ---------------------------------------------------------- | ------------------------------------------ | | `w` | number / `"max"` / `"50%"` | Width | | `h` | number / `"max"` / `"50%"` | Height | | `minW` `maxW` | number | Min / max width | | `minH` `maxH` | number | Min / max height | | `padding` | number / `padding.top="8" padding.bottom="8"` | Padding | | `backgroundColor` | hex | Background color | | `backgroundImage` | `backgroundImage.src="url" backgroundImage.sizing="cover"` | Background image | | `border` | `border.color="333" border.width="1"` | Border | | `borderRadius` | number | Border radius (px) | | `opacity` | 0-1 | Background opacity | | `margin` | number / `margin.top="8" margin.bottom="8"` | Margin | | `zIndex` | number | Stacking order (higher = on top) | | `position` | `relative` / `absolute` | Positioning mode | | `top` | number | Top offset (when using position) | | `right` | number | Right offset (when using position) | | `bottom` | number | Bottom offset (when using position) | | `left` | number | Left offset (when using position) | | `alignSelf` | `auto` / `start` / `center` / `end` / `stretch` | Override parent's alignItems for this node | ## Layout Nodes ### VStack / HStack Arranges children vertically (VStack) / horizontally (HStack). ```xml A B ``` | Attribute | Values | | ---------------- | --------------------------------------------------------------------------- | | `gap` | number (spacing between children) | | `alignItems` | `start` / `center` / `end` / `stretch` | | `justifyContent` | `start` / `center` / `end` / `spaceBetween` / `spaceAround` / `spaceEvenly` | | `flexWrap` | `nowrap` / `wrap` / `wrapReverse` | | `shadow` | `shadow.type="outer" shadow.blur="4" shadow.offset="2" shadow.color="000"` | > **Note:** Children of VStack / HStack default to `flexShrink=1` (same behavior as CSS Flexbox). Even when combining `%` widths with `gap`, children automatically shrink to fit within the parent. ### Box A container that holds exactly one child. Used for adding padding or fixed sizing. ```xml Content ``` | Attribute | Type | Description | | --------- | -------------------------------------------------------------------------- | ----------- | | `shadow` | `shadow.type="outer" shadow.blur="4" shadow.offset="2" shadow.color="000"` | Shadow | ### Layer Positions children using absolute coordinates. Children require `x` and `y`. Source order determines stacking. ```xml ``` ## Content Nodes ### Text ```xml Title ``` | Attribute | Type / Values | | ------------------------ | ---------------------------------------------------------- | | `fontSize` | number (default: 24) | | `color` | hex (text color) | | `textAlign` | `left` / `center` / `right` | | `bold` `italic` `strike` | `true` / `false` | | `underline` | `true` / `underline.style="wavy" underline.color="FF0000"` | | `highlight` | hex (highlight color) | | `fontFamily` | string (default: `Noto Sans JP`) | | `lineHeight` | number (default: 1.3) | Font size guide: Title 28-40 / Heading 18-24 / Body 13-16 / Caption 10-12 ### Ul (Bullet List) ```xml ``` | Attribute | Type / Values | | ------------------------ | -------------------------------- | | `fontSize` | number (default: 24) | | `color` | hex (text color) | | `textAlign` | `left` / `center` / `right` | | `bold` `italic` `strike` | `true` / `false` | | `fontFamily` | string (default: `Noto Sans JP`) | | `lineHeight` | number (default: 1.3) | Li attributes (override parent styles): `bold`, `italic`, `strike`, `underline`, `highlight`, `color`, `fontSize`, `fontFamily` ### Ol (Numbered List) All Ul attributes plus: ```xml
  1. Item A
  2. Item B
``` | Attribute | Type / Values | | --------------- | ------------------------------------------------------- | | `numberType` | `alphaLcPeriod` / `alphaUcPeriod` / `arabicParenR` etc. | | `numberStartAt` | number (start number, default: 1) | ### Image ```xml ``` | Attribute | Type / Values | | --------- | ------------------------------------------------------------------------------------------------------------------------ | | `src` | string (URL / path / base64) | | `sizing` | `'{"type":"contain"}' ` / `'{"type":"cover"}'` / `'{"type":"crop","x":0,"y":0,"w":100,"h":100}'` | | `shadow` | `shadow.type="outer" shadow.blur="4" shadow.offset="2" shadow.color="000"` (shared by Image, Box, Shape, VStack, HStack) | ### Icon Displays an icon from the Lucide icon library (1,900+ icons available). ```xml ``` | Attribute | Type / Values | | --------- | ------------------------------------------------------------------------ | | `name` | Lucide icon name (required). See examples below | | `size` | number (default: 24, in px) | | `color` | hex color (`#` prefix optional, default: `#000000`) | | `variant` | `circle-filled`, `circle-outlined`, `square-filled`, `square-outlined` | | `bgColor` | hex color for background shape (`#` prefix optional, default: `#E0E0E0`) | All Lucide v0.577.0 icons are available. Icon names use kebab-case. Common examples by category: - **Technology**: `cpu`, `database`, `cloud`, `server`, `code`, `terminal`, `wifi`, `globe`, `monitor`, `smartphone`, `laptop`, `hard-drive`, `circuit-board`, `microchip`, `binary`, `braces`, `git-branch`, `github`, `container` - **Business**: `briefcase`, `building`, `building-2`, `factory`, `landmark`, `wallet`, `credit-card`, `receipt`, `banknote`, `coins`, `piggy-bank`, `hand-coins`, `calculator`, `stamp` - **Charts & Data**: `bar-chart`, `bar-chart-2`, `bar-chart-3`, `line-chart`, `pie-chart`, `trending-up`, `trending-down`, `activity`, `gauge`, `presentation` - **Communication**: `mail`, `message-square`, `message-circle`, `phone`, `video`, `at-sign`, `send`, `inbox`, `megaphone`, `bell`, `rss` - **People**: `user`, `users`, `contact`, `user-plus`, `user-check`, `user-x`, `person-standing`, `baby`, `accessibility` - **Arrows & Navigation**: `arrow-right`, `arrow-left`, `arrow-up`, `arrow-down`, `chevron-right`, `chevron-left`, `chevron-up`, `chevron-down`, `move`, `corner-down-right`, `external-link`, `redo`, `undo` - **Actions**: `search`, `settings`, `filter`, `download`, `upload`, `share`, `copy`, `scissors`, `trash`, `edit`, `plus`, `minus`, `refresh-cw`, `rotate-cw`, `save`, `log-in`, `log-out`, `power` - **Status & Alerts**: `check`, `check-circle`, `x`, `x-circle`, `alert-triangle`, `alert-circle`, `info`, `help-circle`, `ban`, `thumbs-up`, `thumbs-down` - **Security**: `shield`, `shield-check`, `lock`, `unlock`, `key`, `fingerprint`, `scan`, `eye`, `eye-off` - **Files & Folders**: `file`, `file-text`, `file-code`, `file-spreadsheet`, `folder`, `folder-open`, `archive`, `paperclip`, `clipboard` - **Media**: `image`, `camera`, `film`, `music`, `volume-2`, `mic`, `play`, `pause`, `skip-forward`, `skip-back` - **Time**: `calendar`, `clock`, `timer`, `hourglass`, `alarm-clock`, `calendar-check`, `calendar-plus` - **Shapes & Symbols**: `star`, `heart`, `zap`, `target`, `lightbulb`, `flag`, `bookmark`, `award`, `crown`, `gem`, `flame`, `snowflake`, `sun`, `moon`, `cloud-rain` - **Layout & UI**: `layout`, `grid`, `list`, `table`, `columns`, `rows`, `sidebar`, `panel-left`, `panel-right`, `maximize`, `minimize`, `menu` - **Maps & Travel**: `map`, `map-pin`, `compass`, `navigation`, `plane`, `car`, `truck`, `train`, `ship`, `bike`, `bus` - **Health & Science**: `heart-pulse`, `thermometer`, `pill`, `syringe`, `microscope`, `dna`, `atom`, `flask-conical`, `beaker` - **Food & Nature**: `apple`, `cherry`, `grape`, `leaf`, `trees`, `flower`, `sprout`, `mountain`, `waves` For the full icon list, see https://lucide.dev/icons/ (use the icon name in kebab-case as the `name` attribute). ### Shape ```xml ``` | Attribute | Type / Values | | --------------- | --------------------------------------------------------------------------------------------------------- | | `shapeType` | Shape type (178 types total — see below) | | `text` | string (text inside shape) | | `fill` | `fill.color="hex" fill.transparency="0.5"` | | `line` | `line.color="hex" line.width="2" line.dashType="dash"` | | `shadow` | `shadow.type="outer" shadow.blur="4" shadow.offset="2" shadow.color="000"` | | Text attributes | `fontSize` `color` `textAlign` `bold` `italic` `underline` `strike` `highlight` `fontFamily` `lineHeight` | **Full shapeType list:** 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` ### Line ```xml ``` | Attribute | Type / Values | | ------------------------- | ------------------------------------------------------------------------------------- | | `x1` `y1` `x2` `y2` | number (absolute coordinates, required) | | `color` | hex (default: `000000`) | | `lineWidth` | number (default: 1) | | `dashType` | `solid` / `dash` / `dashDot` / `lgDash` / `sysDash` etc. | | `beginArrow` / `endArrow` | `true` / `endArrow.type="triangle"` (types: none/arrow/triangle/diamond/oval/stealth) | ## Data Visualization Nodes ### Table ```xml Name Score Alice 95
``` - ``: `width` (omit for equal distribution) - ``: `height` (omit to use `defaultRowHeight`, default 32) - ``: text content + `fontSize` `color` `bold` `italic` `underline` `strike` `highlight` `textAlign` `backgroundColor` `colspan` `rowspan` ### Chart ```xml ``` | Attribute | Type / Values | | ------------- | ------------------------------------------------------ | | `chartType` | `bar` / `line` / `pie` / `area` / `doughnut` / `radar` | | `showLegend` | boolean | | `showTitle` | boolean | | `title` | string | | `chartColors` | JSON array `'["hex1","hex2"]'` | | `radarStyle` | `standard` / `marker` / `filled` (radar only) | ### Timeline ```xml ``` | Attribute | Values | | ----------- | ------------------------- | | `direction` | `horizontal` / `vertical` | ``: `date` (required) `title` (required) `description` `color` ### Matrix ```xml ``` - Coordinates: (0,0) = bottom-left, (1,1) = top-right (mathematical coordinate system) - ``: `x` `y` (axis labels, required) - ``: `topLeft` `topRight` `bottomLeft` `bottomRight` - ``: `label` `x` `y` (required) `color` ### Tree ```xml ``` | Attribute | Type / Values | | ---------------- | ----------------------------------------------------- | | `layout` | `vertical` / `horizontal` | | `nodeShape` | `rect` / `roundRect` / `ellipse` | | `nodeWidth` | number (default: 120) | | `nodeHeight` | number (default: 40) | | `levelGap` | number (default: 60) | | `siblingGap` | number (default: 20) | | `connectorStyle` | `connectorStyle.color="333" connectorStyle.width="2"` | `` can be recursively nested. Only one root allowed. ### Flow ```xml ``` | Attribute | Type / Values | | ---------------- | -------------------------------------------------------------------------------------- | | `direction` | `horizontal` / `vertical` | | `nodeWidth` | number (default: 120) | | `nodeHeight` | number (default: 60) | | `nodeGap` | number (default: 80) | | `connectorStyle` | `connectorStyle.color="hex" connectorStyle.width="2" connectorStyle.arrowType="arrow"` | `` attributes: | Attribute | Type / Values | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string (required) — Unique node identifier | | `shape` | `flowChartTerminator` / `flowChartProcess` / `flowChartDecision` / `flowChartInputOutput` / `flowChartDocument` / `flowChartPredefinedProcess` / `flowChartConnector` / `flowChartPreparation` / `flowChartManualInput` / `flowChartManualOperation` / `flowChartDelay` / `flowChartMagneticDisk` | | `text` | string (required) — Display text | | `color` | hex color (e.g. `"4CAF50"`) — Node fill color | | `textColor` | hex color (e.g. `"FFFFFF"`) — Text color | | `width` | number — Individual node width (overrides `nodeWidth`) | | `height` | number — Individual node height (overrides `nodeHeight`) | ``: `from` `to` (required) `label` `color` ### ProcessArrow ```xml ``` | Attribute | Type / Values | | ------------------------ | ---------------------------------------------------------- | | `direction` | `horizontal` / `vertical` | | `itemWidth` | number (default: 150) | | `itemHeight` | number (default: 80) | | `gap` | number (default: -(itemHeight×0.35), negative for overlap) | | `fontSize` | number (default: 14) | | `bold` `italic` `strike` | boolean | | `underline` | `true` / `underline.style="wavy" underline.color="FF0000"` | | `highlight` | hex (highlight color) | ``: `label` (required) `color` (default: `4472C4`) `textColor` (default: `FFFFFF`) ### Pyramid ```xml ``` | Attribute | Type / Values | | ----------- | ----------------------- | | `direction` | `up` (default) / `down` | | `fontSize` | number (default: 14) | | `bold` | boolean | ``: `label` (required) `color` (default: `4472C4`) `textColor` (default: `FFFFFF`) - `direction="up"`: First PyramidLevel is the apex (narrowest), last is the base (widest) - `direction="down"`: First PyramidLevel is the top (widest), last is the bottom (narrowest) ## Child Element Tag Reference | Parent Node | Child Tags | Mapped Property | | ---------------- | --------------------------------------------------- | ---------------------------- | | `` | `` > `` | `data` | | `` | ``, `` > `` | `columns`, `rows` | | `` | `` | `items` | | `` | ``, ``, `` | `axes`, `quadrants`, `items` | | `` | `` (recursive) | `data` | | `` | ``, `` | `nodes`, `connections` | | `` | `` | `steps` | | `` | `` | `levels` | When the same property is specified via both attributes (JSON string) and child elements, child elements take precedence. ## Slide Patterns ### Basic Structure ```xml Title Body text ``` ### Two-Column Layout ```xml Title Left column Right column ``` ## Notes - Colors do not need `#` prefix (`FF0000`) - `alignItems` / `justifyContent` use `start` / `end` (not `left` / `right`) - `Box` accepts exactly one child (not an array) - Property names are `w` / `h` (not `width` / `height`) - Children of `Layer` require `x` and `y` - `Tree` must have exactly one root ``