#!/bin/bash
# Generate a visually stunning presentation: "The Art of Design"
# Deep gradient backgrounds, geometric accents, clean typography
# NOTE: intentionally NO `set -e`. Like the SDK twin's doc.batch, this script
# tolerates forward-compat 'UNSUPPORTED props' warnings (officecli exit 2) and
# keeps building so the full document is produced.
OUT="$(dirname "$0")/presentation.pptx"
rm -f "$OUT"
officecli create "$OUT"
officecli open "$OUT"
# Slide dimensions: 12192000 x 6858000 EMU (16:9)
###############################################################################
# SLIDE 1 — Title Slide
###############################################################################
echo " -> Slide 1: Title"
officecli add "$OUT" / --type slide
# Full-bleed dark gradient background
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld" --action prepend --xml '
'
# Decorative circle — top right (large, semi-transparent teal)
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Decorative circle — bottom left (lavender)
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Gradient accent line
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Main title
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
The Art of Design
'
# Subtitle
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
Crafting Beautiful Experiences
SIMPLICITY · ELEGANCE · FUNCTION
'
# Diamond accent
officecli raw-set "$OUT" /slide[1] --xpath "//p:cSld/p:spTree" --action append --xml '
'
###############################################################################
# SLIDE 2 — Three Pillars
###############################################################################
echo " -> Slide 2: Three Pillars"
officecli add "$OUT" / --type slide
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld" --action prepend --xml '
'
# Section title
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld/p:spTree" --action append --xml '
Three Pillars of Great Design
'
# Subtitle
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld/p:spTree" --action append --xml '
Every exceptional design is built upon these core principles
'
# Card 1 — Simplicity
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld/p:spTree" --action append --xml '
○
Simplicity
Less is more. Strip away the unnecessary to let the essential shine through.
'
# Card 2 — Hierarchy
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld/p:spTree" --action append --xml '
△
Hierarchy
Guide the eye with size, color, and space. Create a clear visual flow.
'
# Card 3 — Harmony
officecli raw-set "$OUT" /slide[2] --xpath "//p:cSld/p:spTree" --action append --xml '
◇
Harmony
Consistent color, type, and layout create a professional, cohesive experience.
'
###############################################################################
# SLIDE 3 — Data Showcase
###############################################################################
echo " -> Slide 3: Data Showcase"
officecli add "$OUT" / --type slide
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld" --action prepend --xml '
'
# Title
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
Data-Driven Design
'
# Gradient accent bar
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Stat card 1 — 98%
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
98%
User Satisfaction
'
# Stat card 2 — 2.5M
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
2.5M
Monthly Active Users
'
# Stat card 3 — 47ms
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
47ms
Avg Response Time
'
# Bottom description
officecli raw-set "$OUT" /slide[3] --xpath "//p:cSld/p:spTree" --action append --xml '
Numbers tell stories. Through thoughtful visual design, every data point
communicates its meaning at first glance.
'
###############################################################################
# SLIDE 4 — Quote Slide
###############################################################################
echo " -> Slide 4: Quote"
officecli add "$OUT" / --type slide
officecli raw-set "$OUT" /slide[4] --xpath "//p:cSld" --action prepend --xml '
'
# Large quote mark
officecli raw-set "$OUT" /slide[4] --xpath "//p:cSld/p:spTree" --action append --xml '
“
'
# Quote text
officecli raw-set "$OUT" /slide[4] --xpath "//p:cSld/p:spTree" --action append --xml '
Good design is obvious.
Great design is transparent.
'
# Attribution
officecli raw-set "$OUT" /slide[4] --xpath "//p:cSld/p:spTree" --action append --xml '
— Joe Sparano
'
# Decorative line under quote
officecli raw-set "$OUT" /slide[4] --xpath "//p:cSld/p:spTree" --action append --xml '
'
###############################################################################
# SLIDE 5 — Process / Timeline
###############################################################################
echo " -> Slide 5: Process"
officecli add "$OUT" / --type slide
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld" --action prepend --xml '
'
# Title
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld/p:spTree" --action append --xml '
Design Process
'
# Horizontal rainbow connector
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Step circles + labels
LABELS=("Research" "Ideate" "Design" "Validate")
COLORS=("00B4D8" "E0AAFF" "FFD166" "06D6A0")
XPOS=(1400000 3600000 5800000 8000000)
for i in 0 1 2 3; do
X=${XPOS[$i]}
C=${COLORS[$i]}
L=${LABELS[$i]}
N=$((i+1))
ID=$((510 + i*2))
ID2=$((511 + i*2))
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld/p:spTree" --action append --xml "
0${N}
"
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld/p:spTree" --action append --xml "
${L}
"
done
# Bottom text
officecli raw-set "$OUT" /slide[5] --xpath "//p:cSld/p:spTree" --action append --xml '
Every step is iterative. From research to validation, we refine until perfection.
'
###############################################################################
# SLIDE 6 — Closing
###############################################################################
echo " -> Slide 6: Closing"
officecli add "$OUT" / --type slide
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld" --action prepend --xml '
'
# Gradient ring
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
'
# Thank You
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
Thank You
'
# Closing subtitle
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
Design is not just what it looks like — it’s how it works.
'
# Three accent diamonds
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
'
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
'
officecli raw-set "$OUT" /slide[6] --xpath "//p:cSld/p:spTree" --action append --xml '
'
officecli close "$OUT"
echo ""
echo "=========================================="
echo "Beautiful presentation generated: $OUT"
echo "=========================================="
officecli view "$OUT" outline