@openpresentation/opf 0.10.1 → 0.11.0

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.
Files changed (70) hide show
  1. package/dist/{catalogs-DoVmvDr7.d.ts → catalogs-atkOF4Vy.d.ts} +2 -2
  2. package/dist/catalogs.d.ts +2 -2
  3. package/dist/catalogs.js +1 -1
  4. package/dist/{chunk-TU7I3KSB.js → chunk-6FU2KICU.js} +306 -306
  5. package/dist/{chunk-ZIL7MGZU.js → chunk-CHKJ4QHQ.js} +223 -73
  6. package/dist/{chunk-EWJNRHXA.js → chunk-EQHZ3ZO4.js} +3 -3
  7. package/dist/{chunk-PQJRDNA6.js → chunk-FTWNWFIV.js} +72 -1
  8. package/dist/{chunk-FHGJX5QK.js → chunk-FWA5XB45.js} +33 -12
  9. package/dist/{chunk-D3GQIREP.js → chunk-GN52EE3P.js} +133 -12
  10. package/dist/composition-Tv9Wm3Oh.d.ts +691 -0
  11. package/dist/composition.d.ts +1 -676
  12. package/dist/composition.js +1 -1
  13. package/dist/docs.js +38 -8
  14. package/dist/examples.d.ts +1 -1
  15. package/dist/index.d.ts +65 -4
  16. package/dist/index.js +204 -6
  17. package/dist/lint.d.ts +3 -3
  18. package/dist/lint.js +5 -5
  19. package/dist/pagination.d.ts +2 -2
  20. package/dist/pagination.js +5 -5
  21. package/dist/{presentation-BMTdX6O1.d.ts → presentation-Ct42Mitb.d.ts} +51 -8
  22. package/dist/repo-readme.js +1 -1
  23. package/dist/{schemas-BYe5y8-i.d.ts → schemas-CiVmUT2p.d.ts} +6 -0
  24. package/dist/schemas.d.ts +1 -1
  25. package/dist/schemas.js +1 -1
  26. package/dist/spec/catalogs/narratives/board-meeting.json +21 -21
  27. package/dist/spec/catalogs/narratives/business-narrative.json +8 -8
  28. package/dist/spec/catalogs/narratives/business-review.json +12 -12
  29. package/dist/spec/catalogs/narratives/capacity-planning.json +8 -8
  30. package/dist/spec/catalogs/narratives/challenge-resolution.json +7 -7
  31. package/dist/spec/catalogs/narratives/classic-story.json +7 -7
  32. package/dist/spec/catalogs/narratives/company-intro.json +9 -9
  33. package/dist/spec/catalogs/narratives/conference-talk.json +1 -1
  34. package/dist/spec/catalogs/narratives/early-startup-pitch.json +12 -12
  35. package/dist/spec/catalogs/narratives/educate.json +9 -9
  36. package/dist/spec/catalogs/narratives/employee-review.json +8 -8
  37. package/dist/spec/catalogs/narratives/failure-analysis.json +10 -10
  38. package/dist/spec/catalogs/narratives/focus.json +12 -12
  39. package/dist/spec/catalogs/narratives/golden-circle.json +1 -1
  40. package/dist/spec/catalogs/narratives/innovation.json +9 -9
  41. package/dist/spec/catalogs/narratives/justice.json +11 -11
  42. package/dist/spec/catalogs/narratives/marketing-strategy.json +11 -11
  43. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +8 -8
  44. package/dist/spec/catalogs/narratives/performance-review.json +11 -11
  45. package/dist/spec/catalogs/narratives/persuade.json +7 -7
  46. package/dist/spec/catalogs/narratives/persuasive-sales.json +8 -8
  47. package/dist/spec/catalogs/narratives/pitch-deck.json +3 -3
  48. package/dist/spec/catalogs/narratives/problem-solution.json +2 -2
  49. package/dist/spec/catalogs/narratives/product-launch.json +10 -10
  50. package/dist/spec/catalogs/narratives/project-proposal.json +10 -10
  51. package/dist/spec/catalogs/narratives/qbr.json +3 -3
  52. package/dist/spec/catalogs/narratives/rags-to-riches.json +7 -7
  53. package/dist/spec/catalogs/narratives/reveal.json +8 -8
  54. package/dist/spec/catalogs/narratives/scqa.json +1 -1
  55. package/dist/spec/catalogs/narratives/status-update.json +6 -6
  56. package/dist/spec/catalogs/narratives/strategic-advisory.json +7 -7
  57. package/dist/spec/catalogs/narratives/strategic-narrative.json +1 -1
  58. package/dist/spec/catalogs/narratives/survey-analysis.json +10 -10
  59. package/dist/spec/catalogs/narratives/survival-story.json +10 -10
  60. package/dist/spec/catalogs/narratives/transformation-arc.json +1 -1
  61. package/dist/spec/catalogs/narratives/trend-analysis.json +7 -7
  62. package/dist/spec/catalogs/narratives/underdog-victory.json +8 -8
  63. package/dist/spec/catalogs/narratives/venture-pitch.json +12 -12
  64. package/dist/spec/catalogs/narratives/weekly-progress.json +10 -10
  65. package/dist/spec/openapi.yaml +5 -0
  66. package/dist/spec/schemas/opf.schema.json +83 -12
  67. package/dist/types.d.ts +3 -3
  68. package/dist/validator.d.ts +7 -4
  69. package/dist/validator.js +4 -4
  70. package/package.json +1 -1
@@ -26,7 +26,7 @@
26
26
  "description": "Start at the bottom. Describe the humble beginning, the constraint, the moment before anything had been built. Concrete details — a place, a year, a feeling — earn the audience's investment in what follows.",
27
27
  "instructions": "Humble beginning",
28
28
  "slideType": "text",
29
- "layoutHint": "text-1x-left"
29
+ "layoutHint": "text-1x"
30
30
  },
31
31
  {
32
32
  "id": "inspiration",
@@ -34,7 +34,7 @@
34
34
  "description": "Show the moment the protagonist found their calling. A conversation, a customer, a problem they couldn't unsee. The inspiration is the engine that pushes the rest of the story uphill.",
35
35
  "instructions": "Discover true calling",
36
36
  "slideType": "text",
37
- "layoutHint": "text-1x-left"
37
+ "layoutHint": "text-1x"
38
38
  },
39
39
  {
40
40
  "id": "opportunity",
@@ -42,7 +42,7 @@
42
42
  "description": "Reveal the chance the protagonist took. Why this and not something safer? Make the choice visible — opportunities only count when there was something else they passed up to grab them.",
43
43
  "instructions": "Spot golden chance",
44
44
  "slideType": "text",
45
- "layoutHint": "text-1x-left"
45
+ "layoutHint": "text-1x"
46
46
  },
47
47
  {
48
48
  "id": "adversity",
@@ -50,7 +50,7 @@
50
50
  "description": "Walk through the hardest stretch. Concrete failures, near-misses, moments of doubt. Resist the temptation to skip past the pain — the audience trusts the win more when the loss was real.",
51
51
  "instructions": "Face hardest struggles",
52
52
  "slideType": "text",
53
- "layoutHint": "text-1x-left"
53
+ "layoutHint": "text-1x"
54
54
  },
55
55
  {
56
56
  "id": "overcoming",
@@ -58,7 +58,7 @@
58
58
  "description": "Show how the obstacles got beaten. What changed, what was learned, what hard call was made. The transition from 'rags' to 'riches' should feel earned, not granted.",
59
59
  "instructions": "Surmount tough obstacles",
60
60
  "slideType": "text",
61
- "layoutHint": "text-1x-left"
61
+ "layoutHint": "text-1x"
62
62
  },
63
63
  {
64
64
  "id": "impactful-change",
@@ -66,13 +66,13 @@
66
66
  "description": "Describe the moment the world tipped. The customer who said yes, the product that broke through, the metric that turned. One concrete transformation lands harder than a montage.",
67
67
  "instructions": "Alter the status quo",
68
68
  "slideType": "text",
69
- "layoutHint": "text-1x-left"
69
+ "layoutHint": "text-1x"
70
70
  },
71
71
  {
72
72
  "id": "lasting-legacy",
73
73
  "name": "Lasting Legacy",
74
74
  "description": "Close on what the journey means for those who come next. The lesson, the people changed, the work that endures. Leave the audience with a takeaway that outlives the story.",
75
- "layoutHint": "title-left",
75
+ "layoutHint": "title",
76
76
  "instructions": "Create enduring effect",
77
77
  "slideType": "text"
78
78
  }
@@ -25,7 +25,7 @@
25
25
  "description": "Open with a personal experience that establishes why the topic matters to you. Specificity earns intimacy; intimacy earns the audience's permission to be moved.",
26
26
  "instructions": "Share personal experiences to connect with the audience",
27
27
  "slideType": "text",
28
- "layoutHint": "text-1x-left"
28
+ "layoutHint": "text-1x"
29
29
  },
30
30
  {
31
31
  "id": "research-exposition",
@@ -33,7 +33,7 @@
33
33
  "description": "Lay out the scientific or empirical data that backs the premise. Be rigorous but not academic — the audience needs to understand the evidence well enough to defend it later.",
34
34
  "instructions": "Unravel scientific data backing the premise",
35
35
  "slideType": "text",
36
- "layoutHint": "text-1x-left"
36
+ "layoutHint": "text-1x"
37
37
  },
38
38
  {
39
39
  "id": "real-life-anecdote",
@@ -41,7 +41,7 @@
41
41
  "description": "Illustrate the research with a story from the field. Make the abstract finding feel like something that happens to people the audience could imagine being.",
42
42
  "instructions": "Illustrate with stories to make the point relatable",
43
43
  "slideType": "text",
44
- "layoutHint": "text-1x-left"
44
+ "layoutHint": "text-1x"
45
45
  },
46
46
  {
47
47
  "id": "critical-insights",
@@ -49,7 +49,7 @@
49
49
  "description": "Summarize the two or three findings the audience must walk away with. Distill them into language a non-specialist could repeat without distortion.",
50
50
  "instructions": "Summarize key points",
51
51
  "slideType": "text",
52
- "layoutHint": "text-1x-left"
52
+ "layoutHint": "text-1x"
53
53
  },
54
54
  {
55
55
  "id": "break-stereotypes",
@@ -57,7 +57,7 @@
57
57
  "description": "Question redundant norms or beliefs the research undermines. Be specific about what's being challenged so the audience knows what to update.",
58
58
  "instructions": "Question redundant norms and belief systems",
59
59
  "slideType": "text",
60
- "layoutHint": "text-1x-left"
60
+ "layoutHint": "text-1x"
61
61
  },
62
62
  {
63
63
  "id": "empowering-advice",
@@ -65,7 +65,7 @@
65
65
  "description": "Translate the insights into a small, actionable practice. The advice should be doable today, not only next quarter — the goal is movement, not aspiration.",
66
66
  "instructions": "Motivational message to act upon",
67
67
  "slideType": "text",
68
- "layoutHint": "text-1x-left"
68
+ "layoutHint": "text-1x"
69
69
  },
70
70
  {
71
71
  "id": "authenticity",
@@ -73,13 +73,13 @@
73
73
  "description": "Speak honestly about your own struggle with the topic. Vulnerability, used with restraint, is what turns research into a felt truth.",
74
74
  "instructions": "Honest and real communication to demonstrate authenticity",
75
75
  "slideType": "text",
76
- "layoutHint": "text-1x-left"
76
+ "layoutHint": "text-1x"
77
77
  },
78
78
  {
79
79
  "id": "close-with-impact",
80
80
  "name": "Close With Impact",
81
81
  "description": "End on a motivational high — the line, image, or invitation you want to follow the audience out of the room. Close the talk where it began, transformed.",
82
- "layoutHint": "title-left",
82
+ "layoutHint": "title",
83
83
  "instructions": "End on a motivational high",
84
84
  "slideType": "text"
85
85
  }
@@ -39,7 +39,7 @@
39
39
  "id": "answer",
40
40
  "name": "Answer",
41
41
  "description": "Deliver the recommendation in a single sentence, up front. No arguments yet, no caveats — just the conclusion the rest of the deck will defend. This is the apex of the Minto pyramid; everything that follows supports it.",
42
- "layoutHint": "title-left"
42
+ "layoutHint": "title"
43
43
  },
44
44
  {
45
45
  "id": "key-arguments",
@@ -24,7 +24,7 @@
24
24
  "id": "headline",
25
25
  "name": "Headline",
26
26
  "description": "Open with the single most important sentence the audience needs to know — on track, off track, or shifted. The headline replaces 'how's it going' with a clear answer.",
27
- "layoutHint": "title-left",
27
+ "layoutHint": "title",
28
28
  "instructions": "Title & date",
29
29
  "slideType": "text"
30
30
  },
@@ -34,7 +34,7 @@
34
34
  "description": "State the objective for the period and what was promised. One slide, three lines. Frames the rest of the update so progress is read against a clear bar.",
35
35
  "instructions": "Summary/objectives",
36
36
  "slideType": "text",
37
- "layoutHint": "text-1x-left"
37
+ "layoutHint": "text-1x"
38
38
  },
39
39
  {
40
40
  "id": "progress",
@@ -42,7 +42,7 @@
42
42
  "description": "Walk through the actions taken since the last update. Specific, attributable, dated. Avoid effort theater — list outcomes and material moves, not activity for its own sake.",
43
43
  "instructions": "Explain actions taken",
44
44
  "slideType": "text",
45
- "layoutHint": "text-1x-left"
45
+ "layoutHint": "text-1x"
46
46
  },
47
47
  {
48
48
  "id": "results",
@@ -50,7 +50,7 @@
50
50
  "description": "Show the outcomes those actions produced. Metrics, customer signals, decisions made. Keep the comparison crisp — versus plan, versus last period, versus benchmark.",
51
51
  "instructions": "Show outcomes",
52
52
  "slideType": "text",
53
- "layoutHint": "text-1x-left"
53
+ "layoutHint": "text-1x"
54
54
  },
55
55
  {
56
56
  "id": "action-plan",
@@ -58,13 +58,13 @@
58
58
  "description": "Outline the next steps and who owns them. Be specific about the next decision point and what would have to happen to slip the schedule.",
59
59
  "instructions": "Outline next steps",
60
60
  "slideType": "text",
61
- "layoutHint": "text-1x-left"
61
+ "layoutHint": "text-1x"
62
62
  },
63
63
  {
64
64
  "id": "feedback",
65
65
  "name": "Feedback",
66
66
  "description": "Invite the audience to weigh in: where you'd like input, where you need a decision, where help would unblock you. End the update with an open hand, not a closed file.",
67
- "layoutHint": "title-left",
67
+ "layoutHint": "title",
68
68
  "instructions": "Ask for response",
69
69
  "slideType": "text"
70
70
  }
@@ -24,7 +24,7 @@
24
24
  "id": "title",
25
25
  "name": "Title",
26
26
  "description": "Open with a one-line summary statement that captures the recommendation, not the topic. The title slide is the headline of the entire engagement — make it specific enough that someone reading only this slide already understands the position.",
27
- "layoutHint": "title-left",
27
+ "layoutHint": "title",
28
28
  "instructions": "Brief summary sentence",
29
29
  "slideType": "text"
30
30
  },
@@ -39,7 +39,7 @@
39
39
  "description": "Deliver the recommendation in a single sentence. No arguments yet, no caveats. The answer is the apex of the pyramid; the rest of the deck supports it.",
40
40
  "instructions": "A solution in one sentence, no arguments yet",
41
41
  "slideType": "text",
42
- "layoutHint": "text-1x-left"
42
+ "layoutHint": "text-1x"
43
43
  },
44
44
  {
45
45
  "id": "arguments",
@@ -47,7 +47,7 @@
47
47
  "description": "Preview the three top-level arguments that defend the answer. One slide naming all three so the audience knows where the deck is going. Each argument should be a complete claim, not a topic.",
48
48
  "instructions": "Support the solution",
49
49
  "slideType": "text",
50
- "layoutHint": "text-1x-left"
50
+ "layoutHint": "text-1x"
51
51
  },
52
52
  {
53
53
  "id": "argument-1",
@@ -55,7 +55,7 @@
55
55
  "description": "Develop the first argument with supporting data, examples, and reasoning. Lead with the claim, then the evidence — Minto-style. The slide should stand alone if pulled out.",
56
56
  "instructions": "First key point",
57
57
  "slideType": "text",
58
- "layoutHint": "text-1x-left"
58
+ "layoutHint": "text-1x"
59
59
  },
60
60
  {
61
61
  "id": "argument-2",
@@ -63,7 +63,7 @@
63
63
  "description": "Develop the second argument the same way. Vary the type of evidence — quantitative, qualitative, comparative — so the audience hears the case from multiple angles.",
64
64
  "instructions": "Second key point",
65
65
  "slideType": "text",
66
- "layoutHint": "text-1x-left"
66
+ "layoutHint": "text-1x"
67
67
  },
68
68
  {
69
69
  "id": "argument-3",
@@ -71,13 +71,13 @@
71
71
  "description": "Develop the third argument and walk through the supporting process or methodology. This is often where the 'how' lives — the implementation insight that makes the recommendation feel actionable.",
72
72
  "instructions": "Third key point with a process",
73
73
  "slideType": "text",
74
- "layoutHint": "text-1x-left"
74
+ "layoutHint": "text-1x"
75
75
  },
76
76
  {
77
77
  "id": "summary",
78
78
  "name": "Summary",
79
79
  "description": "Recap the answer and arguments in a single slide and point to additional resources. Close with the explicit next step you want the audience to take.",
80
- "layoutHint": "title-left",
80
+ "layoutHint": "title",
81
81
  "instructions": "Recap the answer, provide additional resources",
82
82
  "slideType": "text"
83
83
  }
@@ -55,7 +55,7 @@
55
55
  "id": "ask",
56
56
  "name": "Call to Action",
57
57
  "description": "Close with the single decision you want the audience to make. Frame it as the obvious next move given the shift, the stakes, and the new game. Make it small enough to say yes to today and large enough to start a real engagement.",
58
- "layoutHint": "title-left"
58
+ "layoutHint": "title"
59
59
  }
60
60
  ]
61
61
  }
@@ -26,7 +26,7 @@
26
26
  "description": "Open by naming the question the survey was meant to answer. Why this, why now, who commissioned it. Anchor the audience in the decision the survey is designed to inform.",
27
27
  "instructions": "Present survey topic",
28
28
  "slideType": "text",
29
- "layoutHint": "text-1x-left"
29
+ "layoutHint": "text-1x"
30
30
  },
31
31
  {
32
32
  "id": "executive-summary",
@@ -34,7 +34,7 @@
34
34
  "description": "State the top three findings in plain language on a single slide. A reader who only sees this slide should still be able to make the right call. Avoid hedging — synthesis is the point.",
35
35
  "instructions": "Summarize key findings",
36
36
  "slideType": "text",
37
- "layoutHint": "text-1x-left"
37
+ "layoutHint": "text-1x"
38
38
  },
39
39
  {
40
40
  "id": "context",
@@ -42,7 +42,7 @@
42
42
  "description": "Detail the situation behind the survey: prior knowledge, related research, the gap this work fills. Just enough to position the findings as new information rather than restated common sense.",
43
43
  "instructions": "Detail survey background",
44
44
  "slideType": "text",
45
- "layoutHint": "text-1x-left"
45
+ "layoutHint": "text-1x"
46
46
  },
47
47
  {
48
48
  "id": "data-methodology",
@@ -50,7 +50,7 @@
50
50
  "description": "Describe how the data was collected and from whom. Sample size, recruitment, instrument, timing. Be honest about limitations; methodological transparency is what gives the findings their weight.",
51
51
  "instructions": "Discuss sourcing and collection",
52
52
  "slideType": "text",
53
- "layoutHint": "text-1x-left"
53
+ "layoutHint": "text-1x"
54
54
  },
55
55
  {
56
56
  "id": "data-summary",
@@ -58,7 +58,7 @@
58
58
  "description": "Give the audience an overview of the dataset before drilling in. Demographics, response rates, distribution of key variables. Help them calibrate what 'most' and 'few' mean in this study.",
59
59
  "instructions": "Provide data overview",
60
60
  "slideType": "text",
61
- "layoutHint": "text-1x-left"
61
+ "layoutHint": "text-1x"
62
62
  },
63
63
  {
64
64
  "id": "findings",
@@ -66,7 +66,7 @@
66
66
  "description": "Present the key insights one at a time. Lead each finding with the claim, then the chart. Avoid burying the point under the visualization — captions should restate the insight in words.",
67
67
  "instructions": "Highlight key insights",
68
68
  "slideType": "text",
69
- "layoutHint": "text-1x-left"
69
+ "layoutHint": "text-1x"
70
70
  },
71
71
  {
72
72
  "id": "data-analysis",
@@ -74,7 +74,7 @@
74
74
  "description": "Break down the data behind each finding: cross-tabs, segment splits, statistical confidence. This is the slide skeptics will scrutinize — make it scrutinizable.",
75
75
  "instructions": "Break down data",
76
76
  "slideType": "text",
77
- "layoutHint": "text-1x-left"
77
+ "layoutHint": "text-1x"
78
78
  },
79
79
  {
80
80
  "id": "implications",
@@ -82,7 +82,7 @@
82
82
  "description": "Translate findings into 'so what.' What changes for product, marketing, ops, the customer? Implications without consequences are interesting trivia, not research.",
83
83
  "instructions": "Discuss survey implications",
84
84
  "slideType": "text",
85
- "layoutHint": "text-1x-left"
85
+ "layoutHint": "text-1x"
86
86
  },
87
87
  {
88
88
  "id": "recommendations",
@@ -90,13 +90,13 @@
90
90
  "description": "Provide the actions that follow from the implications. Prioritize, attach owners, mark which require decisions. This is where research becomes useful.",
91
91
  "instructions": "Provide action plans",
92
92
  "slideType": "text",
93
- "layoutHint": "text-1x-left"
93
+ "layoutHint": "text-1x"
94
94
  },
95
95
  {
96
96
  "id": "conclusion",
97
97
  "name": "Conclusion",
98
98
  "description": "Recap the headline finding and the most important recommendation. End with the next step — a follow-on study, a workshop, a decision — so the work doesn't sit on a shelf.",
99
- "layoutHint": "title-left",
99
+ "layoutHint": "title",
100
100
  "instructions": "Recap and finalize",
101
101
  "slideType": "text"
102
102
  }
@@ -25,7 +25,7 @@
25
25
  "description": "Open in the middle of the disaster. Specific moment, specific stakes, specific damage. Drop the audience into the worst point of the story before walking them back.",
26
26
  "instructions": "Present initial disaster",
27
27
  "slideType": "text",
28
- "layoutHint": "text-1x-left"
28
+ "layoutHint": "text-1x"
29
29
  },
30
30
  {
31
31
  "id": "backstory",
@@ -33,7 +33,7 @@
33
33
  "description": "Detail the events that led up to the catastrophe. Just enough for the audience to understand how the disaster could have happened. Avoid moralizing — the story does the work.",
34
34
  "instructions": "Detail past events",
35
35
  "slideType": "text",
36
- "layoutHint": "text-1x-left"
36
+ "layoutHint": "text-1x"
37
37
  },
38
38
  {
39
39
  "id": "blueprint",
@@ -41,7 +41,7 @@
41
41
  "description": "Illustrate the recovery plan. Specific moves, specific bets, specific people. The audience should see the strategy as more than 'try hard.'",
42
42
  "instructions": "Illustrate recovery plans",
43
43
  "slideType": "text",
44
- "layoutHint": "text-1x-left"
44
+ "layoutHint": "text-1x"
45
45
  },
46
46
  {
47
47
  "id": "danger",
@@ -49,7 +49,7 @@
49
49
  "description": "Highlight the emerging threats to the recovery plan. New risks, returning ones. Tension here makes the eventual triumph credible.",
50
50
  "instructions": "Highlight emerging threats",
51
51
  "slideType": "text",
52
- "layoutHint": "text-1x-left"
52
+ "layoutHint": "text-1x"
53
53
  },
54
54
  {
55
55
  "id": "endeavor",
@@ -57,7 +57,7 @@
57
57
  "description": "Show the determined effort underway. The hours, the trade-offs, the discipline. The audience must feel the work, not just hear about it.",
58
58
  "instructions": "Show determination effort",
59
59
  "slideType": "text",
60
- "layoutHint": "text-1x-left"
60
+ "layoutHint": "text-1x"
61
61
  },
62
62
  {
63
63
  "id": "struggles",
@@ -65,7 +65,7 @@
65
65
  "description": "Showcase challenging moments along the way: the setbacks, the false starts, the hard calls. Honest setbacks make eventual success feel earned.",
66
66
  "instructions": "Showcase challenging encounters",
67
67
  "slideType": "text",
68
- "layoutHint": "text-1x-left"
68
+ "layoutHint": "text-1x"
69
69
  },
70
70
  {
71
71
  "id": "pivot",
@@ -73,7 +73,7 @@
73
73
  "description": "Highlight the strategic shift that changed the trajectory. What got reconsidered, what got dropped, what got doubled down on. The pivot is the moment the protagonist became something new.",
74
74
  "instructions": "Highlight strategy shift",
75
75
  "slideType": "text",
76
- "layoutHint": "text-1x-left"
76
+ "layoutHint": "text-1x"
77
77
  },
78
78
  {
79
79
  "id": "breakthrough",
@@ -81,7 +81,7 @@
81
81
  "description": "Emphasize the moment adversity finally broke. Concrete result, concrete date. Let the slide land — the audience came for this turn.",
82
82
  "instructions": "Emphasize overcoming adversity",
83
83
  "slideType": "text",
84
- "layoutHint": "text-1x-left"
84
+ "layoutHint": "text-1x"
85
85
  },
86
86
  {
87
87
  "id": "legacy",
@@ -89,13 +89,13 @@
89
89
  "description": "Discuss the enduring impact. What survival made possible afterward, who benefited, what was built on top. Survival stories are most powerful when they create more than they restore.",
90
90
  "instructions": "Discuss enduring impact",
91
91
  "slideType": "text",
92
- "layoutHint": "text-1x-left"
92
+ "layoutHint": "text-1x"
93
93
  },
94
94
  {
95
95
  "id": "takeaway",
96
96
  "name": "Takeaway",
97
97
  "description": "Share the lesson the audience can carry away. One transferable insight, framed for their own challenges — not a general moral.",
98
- "layoutHint": "title-left",
98
+ "layoutHint": "title",
99
99
  "instructions": "Share important lessons",
100
100
  "slideType": "text"
101
101
  }
@@ -44,7 +44,7 @@
44
44
  "id": "ask",
45
45
  "name": "Ask",
46
46
  "description": "Close with the single low-friction action that starts the audience across the bridge. Make it small enough to act on now and meaningful enough to count as commitment.",
47
- "layoutHint": "title-left"
47
+ "layoutHint": "title"
48
48
  }
49
49
  ]
50
50
  }
@@ -25,7 +25,7 @@
25
25
  "description": "Open by establishing why this trend matters now. Tie it to a decision on the table or a forecast that's about to be made. Trends without consequences are filler.",
26
26
  "instructions": "Ignite interest, establish significance",
27
27
  "slideType": "text",
28
- "layoutHint": "text-1x-left"
28
+ "layoutHint": "text-1x"
29
29
  },
30
30
  {
31
31
  "id": "historical-comparison",
@@ -33,7 +33,7 @@
33
33
  "description": "Contrast current data with the relevant past. Pick the comparison window that makes the trend visible without cherry-picking. Be honest about base effects.",
34
34
  "instructions": "Contrast current and past data",
35
35
  "slideType": "text",
36
- "layoutHint": "text-1x-left"
36
+ "layoutHint": "text-1x"
37
37
  },
38
38
  {
39
39
  "id": "pattern-identification",
@@ -41,7 +41,7 @@
41
41
  "description": "Name the recurring outcome you've spotted. Use one or two strong charts that show the pattern unambiguously. Avoid overclaiming significance from a small N.",
42
42
  "instructions": "Point out recurring outcomes",
43
43
  "slideType": "text",
44
- "layoutHint": "text-1x-left"
44
+ "layoutHint": "text-1x"
45
45
  },
46
46
  {
47
47
  "id": "future-prediction",
@@ -49,7 +49,7 @@
49
49
  "description": "Project where the trend leads if it continues. Show the forecast and the confidence interval. State the assumptions that would have to break for the prediction to fail.",
50
50
  "instructions": "Predict using established patterns",
51
51
  "slideType": "text",
52
- "layoutHint": "text-1x-left"
52
+ "layoutHint": "text-1x"
53
53
  },
54
54
  {
55
55
  "id": "action-plan",
@@ -57,7 +57,7 @@
57
57
  "description": "Translate the prediction into the strategy it implies. Specific actions, sequenced. Each action should map to a particular reading of the trend, not a generic best practice.",
58
58
  "instructions": "Strategies based on prediction",
59
59
  "slideType": "text",
60
- "layoutHint": "text-1x-left"
60
+ "layoutHint": "text-1x"
61
61
  },
62
62
  {
63
63
  "id": "implementation",
@@ -65,13 +65,13 @@
65
65
  "description": "Walk through how the actions get executed: owners, milestones, monitoring. The audience should leave understanding what to do tomorrow, not just what to think about.",
66
66
  "instructions": "Discuss strategy execution",
67
67
  "slideType": "text",
68
- "layoutHint": "text-1x-left"
68
+ "layoutHint": "text-1x"
69
69
  },
70
70
  {
71
71
  "id": "conclusion",
72
72
  "name": "Conclusion",
73
73
  "description": "Recap the trend, the forecast, and the recommended action. End with the leading indicator you'll watch to know if the call is right.",
74
- "layoutHint": "title-left",
74
+ "layoutHint": "title",
75
75
  "instructions": "Summarize key points",
76
76
  "slideType": "text"
77
77
  }
@@ -25,7 +25,7 @@
25
25
  "description": "Establish the opening scene: who the underdog is and the world that overlooked them. Specific details make the rest of the journey feel real.",
26
26
  "instructions": "Establish opening scene",
27
27
  "slideType": "text",
28
- "layoutHint": "text-1x-left"
28
+ "layoutHint": "text-1x"
29
29
  },
30
30
  {
31
31
  "id": "struggles",
@@ -33,7 +33,7 @@
33
33
  "description": "Highlight the early setbacks. What didn't work, who said no, where the path closed up. The audience needs to feel the doubt before they can feel the win.",
34
34
  "instructions": "Highlight initial setbacks",
35
35
  "slideType": "text",
36
- "layoutHint": "text-1x-left"
36
+ "layoutHint": "text-1x"
37
37
  },
38
38
  {
39
39
  "id": "determination",
@@ -41,7 +41,7 @@
41
41
  "description": "Showcase the enduring passion that kept the underdog going. What they refused to give up on, and why. Determination, in this beat, is the only resource the underdog has.",
42
42
  "instructions": "Showcase enduring passion",
43
43
  "slideType": "text",
44
- "layoutHint": "text-1x-left"
44
+ "layoutHint": "text-1x"
45
45
  },
46
46
  {
47
47
  "id": "crisis",
@@ -49,7 +49,7 @@
49
49
  "description": "Identify the lowest point of the journey. The moment the dream nearly ended. Don't soften — the contrast with the triumph ahead depends on the depth of this slide.",
50
50
  "instructions": "Identify lowest point",
51
51
  "slideType": "text",
52
- "layoutHint": "text-1x-left"
52
+ "layoutHint": "text-1x"
53
53
  },
54
54
  {
55
55
  "id": "resolve",
@@ -57,7 +57,7 @@
57
57
  "description": "Articulate the choice the underdog made to keep going. The strong will, the small bet, the borrowed faith. Resolve is where the protagonist becomes someone the audience roots for.",
58
58
  "instructions": "Articulate strong will",
59
59
  "slideType": "text",
60
- "layoutHint": "text-1x-left"
60
+ "layoutHint": "text-1x"
61
61
  },
62
62
  {
63
63
  "id": "breakthrough",
@@ -65,7 +65,7 @@
65
65
  "description": "Show the reward of perseverance: the customer who said yes, the door that opened, the fortune that turned. The breakthrough should feel earned, not granted.",
66
66
  "instructions": "Reward of perseverance",
67
67
  "slideType": "text",
68
- "layoutHint": "text-1x-left"
68
+ "layoutHint": "text-1x"
69
69
  },
70
70
  {
71
71
  "id": "triumph",
@@ -73,13 +73,13 @@
73
73
  "description": "Reveal the ultimate success. Concrete outcomes, named milestones. The triumph is the audience's emotional payoff — let it land.",
74
74
  "instructions": "Reveal ultimate success",
75
75
  "slideType": "text",
76
- "layoutHint": "text-1x-left"
76
+ "layoutHint": "text-1x"
77
77
  },
78
78
  {
79
79
  "id": "legacy",
80
80
  "name": "Legacy",
81
81
  "description": "Share the lasting impact. What the underdog's victory makes possible for those who come after. The legacy beat is what turns a story into a lesson.",
82
- "layoutHint": "title-left",
82
+ "layoutHint": "title",
83
83
  "instructions": "Share long-lasting impact",
84
84
  "slideType": "text"
85
85
  }