@openpresentation/opf 0.1.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 (424) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -0
  3. package/dist/catalogs.d.ts +33933 -0
  4. package/dist/catalogs.js +19113 -0
  5. package/dist/catalogs.js.map +1 -0
  6. package/dist/index.d.ts +4 -0
  7. package/dist/index.js +25815 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/schemas.d.ts +12361 -0
  10. package/dist/schemas.js +6266 -0
  11. package/dist/schemas.js.map +1 -0
  12. package/dist/spec/catalogs/audiences/all-hands.json +23 -0
  13. package/dist/spec/catalogs/audiences/board.json +22 -0
  14. package/dist/spec/catalogs/audiences/candidates.json +23 -0
  15. package/dist/spec/catalogs/audiences/customers.json +23 -0
  16. package/dist/spec/catalogs/audiences/engineering-team.json +23 -0
  17. package/dist/spec/catalogs/audiences/executives.json +23 -0
  18. package/dist/spec/catalogs/audiences/index.json +67 -0
  19. package/dist/spec/catalogs/audiences/investors.json +23 -0
  20. package/dist/spec/catalogs/audiences/marketing-team.json +23 -0
  21. package/dist/spec/catalogs/audiences/regulators.json +23 -0
  22. package/dist/spec/catalogs/audiences/sales-team.json +23 -0
  23. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +90 -0
  24. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +102 -0
  25. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +78 -0
  26. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +90 -0
  27. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +102 -0
  28. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +78 -0
  29. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +99 -0
  30. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +100 -0
  31. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +122 -0
  32. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +83 -0
  33. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +99 -0
  34. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +89 -0
  35. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +107 -0
  36. package/dist/spec/catalogs/chart-types/area.json +77 -0
  37. package/dist/spec/catalogs/chart-types/australia.json +70 -0
  38. package/dist/spec/catalogs/chart-types/bar.json +67 -0
  39. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +130 -0
  40. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +162 -0
  41. package/dist/spec/catalogs/chart-types/box-and-whisker.json +98 -0
  42. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +88 -0
  43. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +100 -0
  44. package/dist/spec/catalogs/chart-types/bullet-bar.json +76 -0
  45. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +88 -0
  46. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +100 -0
  47. package/dist/spec/catalogs/chart-types/bullet-column.json +76 -0
  48. package/dist/spec/catalogs/chart-types/canada.json +80 -0
  49. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +83 -0
  50. package/dist/spec/catalogs/chart-types/clustered-column.json +89 -0
  51. package/dist/spec/catalogs/chart-types/column.json +71 -0
  52. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +98 -0
  53. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +123 -0
  54. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +148 -0
  55. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +173 -0
  56. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +198 -0
  57. package/dist/spec/catalogs/chart-types/dot-plot.json +73 -0
  58. package/dist/spec/catalogs/chart-types/doughnut.json +57 -0
  59. package/dist/spec/catalogs/chart-types/dumbbell.json +119 -0
  60. package/dist/spec/catalogs/chart-types/filled-radar.json +70 -0
  61. package/dist/spec/catalogs/chart-types/funnel.json +64 -0
  62. package/dist/spec/catalogs/chart-types/histogram.json +145 -0
  63. package/dist/spec/catalogs/chart-types/index.json +843 -0
  64. package/dist/spec/catalogs/chart-types/line-2x.json +99 -0
  65. package/dist/spec/catalogs/chart-types/line-3x.json +121 -0
  66. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +143 -0
  67. package/dist/spec/catalogs/chart-types/line-with-high-low.json +143 -0
  68. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +100 -0
  69. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +122 -0
  70. package/dist/spec/catalogs/chart-types/line-with-markers.json +78 -0
  71. package/dist/spec/catalogs/chart-types/line.json +77 -0
  72. package/dist/spec/catalogs/chart-types/pareto.json +163 -0
  73. package/dist/spec/catalogs/chart-types/pie.json +57 -0
  74. package/dist/spec/catalogs/chart-types/radar-with-markers.json +70 -0
  75. package/dist/spec/catalogs/chart-types/radar.json +70 -0
  76. package/dist/spec/catalogs/chart-types/scatter.json +91 -0
  77. package/dist/spec/catalogs/chart-types/sparkline-2x.json +137 -0
  78. package/dist/spec/catalogs/chart-types/sparkline-3x.json +173 -0
  79. package/dist/spec/catalogs/chart-types/sparkline-4x.json +209 -0
  80. package/dist/spec/catalogs/chart-types/sparkline-5x.json +245 -0
  81. package/dist/spec/catalogs/chart-types/sparkline-6x.json +281 -0
  82. package/dist/spec/catalogs/chart-types/sparkline.json +101 -0
  83. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +100 -0
  84. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +122 -0
  85. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +83 -0
  86. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +99 -0
  87. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +89 -0
  88. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +107 -0
  89. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +100 -0
  90. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +122 -0
  91. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +101 -0
  92. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +123 -0
  93. package/dist/spec/catalogs/chart-types/treemap-2x.json +95 -0
  94. package/dist/spec/catalogs/chart-types/treemap-3x.json +116 -0
  95. package/dist/spec/catalogs/chart-types/treemap.json +66 -0
  96. package/dist/spec/catalogs/chart-types/united-kindom.json +62 -0
  97. package/dist/spec/catalogs/chart-types/united-states.json +76 -0
  98. package/dist/spec/catalogs/chart-types/waterfall.json +70 -0
  99. package/dist/spec/catalogs/chart-types/world.json +82 -0
  100. package/dist/spec/catalogs/color-schemes/black-and-white.json +17 -0
  101. package/dist/spec/catalogs/color-schemes/bold-red.json +17 -0
  102. package/dist/spec/catalogs/color-schemes/boost.json +17 -0
  103. package/dist/spec/catalogs/color-schemes/burnt-orange.json +17 -0
  104. package/dist/spec/catalogs/color-schemes/cool-horizon.json +17 -0
  105. package/dist/spec/catalogs/color-schemes/corporate-blue.json +17 -0
  106. package/dist/spec/catalogs/color-schemes/deep-purple.json +17 -0
  107. package/dist/spec/catalogs/color-schemes/forest-green.json +17 -0
  108. package/dist/spec/catalogs/color-schemes/golden-yellow.json +17 -0
  109. package/dist/spec/catalogs/color-schemes/index.json +77 -0
  110. package/dist/spec/catalogs/color-schemes/luxury.json +17 -0
  111. package/dist/spec/catalogs/color-schemes/pastel-red.json +17 -0
  112. package/dist/spec/catalogs/color-schemes/slate-gray.json +17 -0
  113. package/dist/spec/catalogs/color-schemes/steel-blue.json +17 -0
  114. package/dist/spec/catalogs/color-schemes/vibes.json +17 -0
  115. package/dist/spec/catalogs/font-schemes/angsana-new.json +14 -0
  116. package/dist/spec/catalogs/font-schemes/aparajita.json +15 -0
  117. package/dist/spec/catalogs/font-schemes/aptos.json +12 -0
  118. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +14 -0
  119. package/dist/spec/catalogs/font-schemes/arial.json +12 -0
  120. package/dist/spec/catalogs/font-schemes/batang.json +14 -0
  121. package/dist/spec/catalogs/font-schemes/bookman.json +12 -0
  122. package/dist/spec/catalogs/font-schemes/calibri.json +12 -0
  123. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +12 -0
  124. package/dist/spec/catalogs/font-schemes/consolas.json +12 -0
  125. package/dist/spec/catalogs/font-schemes/constantia.json +12 -0
  126. package/dist/spec/catalogs/font-schemes/courier-new.json +12 -0
  127. package/dist/spec/catalogs/font-schemes/daunpenh.json +14 -0
  128. package/dist/spec/catalogs/font-schemes/david.json +14 -0
  129. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +14 -0
  130. package/dist/spec/catalogs/font-schemes/fangsong.json +14 -0
  131. package/dist/spec/catalogs/font-schemes/garamond.json +12 -0
  132. package/dist/spec/catalogs/font-schemes/gautami.json +14 -0
  133. package/dist/spec/catalogs/font-schemes/georgia.json +12 -0
  134. package/dist/spec/catalogs/font-schemes/gisha.json +15 -0
  135. package/dist/spec/catalogs/font-schemes/grandview.json +12 -0
  136. package/dist/spec/catalogs/font-schemes/gungsuh.json +14 -0
  137. package/dist/spec/catalogs/font-schemes/impact.json +12 -0
  138. package/dist/spec/catalogs/font-schemes/index.json +452 -0
  139. package/dist/spec/catalogs/font-schemes/kalinga.json +14 -0
  140. package/dist/spec/catalogs/font-schemes/kartika.json +14 -0
  141. package/dist/spec/catalogs/font-schemes/khmer-ui.json +14 -0
  142. package/dist/spec/catalogs/font-schemes/latha.json +14 -0
  143. package/dist/spec/catalogs/font-schemes/lucida-sans.json +12 -0
  144. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +14 -0
  145. package/dist/spec/catalogs/font-schemes/mangal.json +17 -0
  146. package/dist/spec/catalogs/font-schemes/meiryo.json +14 -0
  147. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +14 -0
  148. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +17 -0
  149. package/dist/spec/catalogs/font-schemes/mingliu.json +14 -0
  150. package/dist/spec/catalogs/font-schemes/miriam.json +14 -0
  151. package/dist/spec/catalogs/font-schemes/montserrat.json +12 -0
  152. package/dist/spec/catalogs/font-schemes/ms-mincho.json +14 -0
  153. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +14 -0
  154. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +14 -0
  155. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +15 -0
  156. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +16 -0
  157. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +14 -0
  158. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +15 -0
  159. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +15 -0
  160. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +14 -0
  161. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +14 -0
  162. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +14 -0
  163. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +14 -0
  164. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +14 -0
  165. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +14 -0
  166. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +14 -0
  167. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +14 -0
  168. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +14 -0
  169. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +14 -0
  170. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +14 -0
  171. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +14 -0
  172. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +17 -0
  173. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +14 -0
  174. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +14 -0
  175. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +14 -0
  176. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +14 -0
  177. package/dist/spec/catalogs/font-schemes/noto-sans.json +17 -0
  178. package/dist/spec/catalogs/font-schemes/nyala.json +14 -0
  179. package/dist/spec/catalogs/font-schemes/open-sans.json +12 -0
  180. package/dist/spec/catalogs/font-schemes/pmingliu.json +14 -0
  181. package/dist/spec/catalogs/font-schemes/poppins.json +12 -0
  182. package/dist/spec/catalogs/font-schemes/pt-serif.json +12 -0
  183. package/dist/spec/catalogs/font-schemes/raavi.json +14 -0
  184. package/dist/spec/catalogs/font-schemes/raleway.json +12 -0
  185. package/dist/spec/catalogs/font-schemes/roboto.json +12 -0
  186. package/dist/spec/catalogs/font-schemes/rockwell.json +12 -0
  187. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +16 -0
  188. package/dist/spec/catalogs/font-schemes/seaford.json +12 -0
  189. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +12 -0
  190. package/dist/spec/catalogs/font-schemes/segoe-ui.json +12 -0
  191. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +15 -0
  192. package/dist/spec/catalogs/font-schemes/shruti.json +14 -0
  193. package/dist/spec/catalogs/font-schemes/simsun.json +14 -0
  194. package/dist/spec/catalogs/font-schemes/skeena.json +12 -0
  195. package/dist/spec/catalogs/font-schemes/sylfaen.json +15 -0
  196. package/dist/spec/catalogs/font-schemes/tahoma.json +12 -0
  197. package/dist/spec/catalogs/font-schemes/tenorite.json +12 -0
  198. package/dist/spec/catalogs/font-schemes/times-new-roman.json +12 -0
  199. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +16 -0
  200. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +12 -0
  201. package/dist/spec/catalogs/font-schemes/tunga.json +14 -0
  202. package/dist/spec/catalogs/font-schemes/verdana.json +12 -0
  203. package/dist/spec/catalogs/font-schemes/vrinda.json +14 -0
  204. package/dist/spec/catalogs/font-schemes/yu-gothic.json +14 -0
  205. package/dist/spec/catalogs/languages/afrikaans.json +9 -0
  206. package/dist/spec/catalogs/languages/albanian.json +9 -0
  207. package/dist/spec/catalogs/languages/amharic.json +9 -0
  208. package/dist/spec/catalogs/languages/arabic.json +9 -0
  209. package/dist/spec/catalogs/languages/armenian.json +9 -0
  210. package/dist/spec/catalogs/languages/aymara.json +9 -0
  211. package/dist/spec/catalogs/languages/azerbaijani.json +9 -0
  212. package/dist/spec/catalogs/languages/bengali.json +9 -0
  213. package/dist/spec/catalogs/languages/berber-latin.json +9 -0
  214. package/dist/spec/catalogs/languages/bosnian-latin.json +9 -0
  215. package/dist/spec/catalogs/languages/bulgarian.json +9 -0
  216. package/dist/spec/catalogs/languages/catalan.json +9 -0
  217. package/dist/spec/catalogs/languages/cebuano.json +9 -0
  218. package/dist/spec/catalogs/languages/chinese-simplified.json +9 -0
  219. package/dist/spec/catalogs/languages/chinese-traditional.json +9 -0
  220. package/dist/spec/catalogs/languages/chittagonian.json +9 -0
  221. package/dist/spec/catalogs/languages/croatian.json +9 -0
  222. package/dist/spec/catalogs/languages/czech.json +9 -0
  223. package/dist/spec/catalogs/languages/danish.json +9 -0
  224. package/dist/spec/catalogs/languages/dutch.json +9 -0
  225. package/dist/spec/catalogs/languages/english-au.json +9 -0
  226. package/dist/spec/catalogs/languages/english-ca.json +9 -0
  227. package/dist/spec/catalogs/languages/english-gb.json +9 -0
  228. package/dist/spec/catalogs/languages/english-in.json +9 -0
  229. package/dist/spec/catalogs/languages/english-us.json +9 -0
  230. package/dist/spec/catalogs/languages/english.json +9 -0
  231. package/dist/spec/catalogs/languages/estonian.json +9 -0
  232. package/dist/spec/catalogs/languages/filipino.json +9 -0
  233. package/dist/spec/catalogs/languages/finnish.json +9 -0
  234. package/dist/spec/catalogs/languages/french.json +9 -0
  235. package/dist/spec/catalogs/languages/fulfulde.json +9 -0
  236. package/dist/spec/catalogs/languages/galician.json +9 -0
  237. package/dist/spec/catalogs/languages/georgian.json +9 -0
  238. package/dist/spec/catalogs/languages/german.json +9 -0
  239. package/dist/spec/catalogs/languages/greek.json +9 -0
  240. package/dist/spec/catalogs/languages/gujarati.json +9 -0
  241. package/dist/spec/catalogs/languages/hausa.json +9 -0
  242. package/dist/spec/catalogs/languages/hebrew.json +9 -0
  243. package/dist/spec/catalogs/languages/hindi.json +9 -0
  244. package/dist/spec/catalogs/languages/hungarian.json +9 -0
  245. package/dist/spec/catalogs/languages/igbo.json +9 -0
  246. package/dist/spec/catalogs/languages/index.json +565 -0
  247. package/dist/spec/catalogs/languages/indonesian.json +9 -0
  248. package/dist/spec/catalogs/languages/italian.json +9 -0
  249. package/dist/spec/catalogs/languages/japanese.json +9 -0
  250. package/dist/spec/catalogs/languages/kannada.json +9 -0
  251. package/dist/spec/catalogs/languages/kazakh.json +9 -0
  252. package/dist/spec/catalogs/languages/khmer.json +9 -0
  253. package/dist/spec/catalogs/languages/kinyarwanda.json +9 -0
  254. package/dist/spec/catalogs/languages/korean.json +9 -0
  255. package/dist/spec/catalogs/languages/kurmanji.json +9 -0
  256. package/dist/spec/catalogs/languages/latvian.json +9 -0
  257. package/dist/spec/catalogs/languages/lithuanian.json +9 -0
  258. package/dist/spec/catalogs/languages/macedonian.json +9 -0
  259. package/dist/spec/catalogs/languages/malagasy.json +9 -0
  260. package/dist/spec/catalogs/languages/malay.json +9 -0
  261. package/dist/spec/catalogs/languages/malayalam.json +9 -0
  262. package/dist/spec/catalogs/languages/maori.json +9 -0
  263. package/dist/spec/catalogs/languages/marathi.json +9 -0
  264. package/dist/spec/catalogs/languages/mongolian.json +9 -0
  265. package/dist/spec/catalogs/languages/nepali.json +9 -0
  266. package/dist/spec/catalogs/languages/norwegian.json +9 -0
  267. package/dist/spec/catalogs/languages/odia.json +9 -0
  268. package/dist/spec/catalogs/languages/oromo.json +9 -0
  269. package/dist/spec/catalogs/languages/pashto.json +9 -0
  270. package/dist/spec/catalogs/languages/persian.json +9 -0
  271. package/dist/spec/catalogs/languages/polish.json +9 -0
  272. package/dist/spec/catalogs/languages/portuguese.json +9 -0
  273. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +9 -0
  274. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +9 -0
  275. package/dist/spec/catalogs/languages/romanian.json +9 -0
  276. package/dist/spec/catalogs/languages/russian.json +9 -0
  277. package/dist/spec/catalogs/languages/serbian-cyrillic.json +9 -0
  278. package/dist/spec/catalogs/languages/serbian-latin.json +9 -0
  279. package/dist/spec/catalogs/languages/shona.json +9 -0
  280. package/dist/spec/catalogs/languages/slovak.json +9 -0
  281. package/dist/spec/catalogs/languages/slovenian.json +9 -0
  282. package/dist/spec/catalogs/languages/somali.json +9 -0
  283. package/dist/spec/catalogs/languages/spanish.json +9 -0
  284. package/dist/spec/catalogs/languages/swahili.json +9 -0
  285. package/dist/spec/catalogs/languages/swedish.json +9 -0
  286. package/dist/spec/catalogs/languages/tagalog.json +9 -0
  287. package/dist/spec/catalogs/languages/tajik.json +9 -0
  288. package/dist/spec/catalogs/languages/tamil.json +9 -0
  289. package/dist/spec/catalogs/languages/telugu.json +9 -0
  290. package/dist/spec/catalogs/languages/thai.json +9 -0
  291. package/dist/spec/catalogs/languages/turkish.json +9 -0
  292. package/dist/spec/catalogs/languages/ukrainian.json +9 -0
  293. package/dist/spec/catalogs/languages/urdu.json +9 -0
  294. package/dist/spec/catalogs/languages/uzbek-latin.json +9 -0
  295. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +9 -0
  296. package/dist/spec/catalogs/languages/xhosa.json +9 -0
  297. package/dist/spec/catalogs/languages/yoruba.json +9 -0
  298. package/dist/spec/catalogs/languages/zulu.json +9 -0
  299. package/dist/spec/catalogs/layouts/blank.json +6 -0
  300. package/dist/spec/catalogs/layouts/chart-1x.json +16 -0
  301. package/dist/spec/catalogs/layouts/chart-2x.json +22 -0
  302. package/dist/spec/catalogs/layouts/chart-3x.json +28 -0
  303. package/dist/spec/catalogs/layouts/code-1x.json +16 -0
  304. package/dist/spec/catalogs/layouts/extract/canonical.json +487 -0
  305. package/dist/spec/catalogs/layouts/image-1x.json +16 -0
  306. package/dist/spec/catalogs/layouts/image-2x.json +22 -0
  307. package/dist/spec/catalogs/layouts/image-3x.json +28 -0
  308. package/dist/spec/catalogs/layouts/image-bleed.json +10 -0
  309. package/dist/spec/catalogs/layouts/index.json +147 -0
  310. package/dist/spec/catalogs/layouts/list-1x.json +13 -0
  311. package/dist/spec/catalogs/layouts/list-2x.json +16 -0
  312. package/dist/spec/catalogs/layouts/list-3x.json +19 -0
  313. package/dist/spec/catalogs/layouts/list-4x.json +22 -0
  314. package/dist/spec/catalogs/layouts/list-5x.json +25 -0
  315. package/dist/spec/catalogs/layouts/list-6x.json +28 -0
  316. package/dist/spec/catalogs/layouts/media-1x.json +16 -0
  317. package/dist/spec/catalogs/layouts/number-1x.json +13 -0
  318. package/dist/spec/catalogs/layouts/number-2x.json +16 -0
  319. package/dist/spec/catalogs/layouts/number-3x.json +19 -0
  320. package/dist/spec/catalogs/layouts/number-4x.json +22 -0
  321. package/dist/spec/catalogs/layouts/number-5x.json +25 -0
  322. package/dist/spec/catalogs/layouts/number-6x.json +28 -0
  323. package/dist/spec/catalogs/layouts/table-1x.json +16 -0
  324. package/dist/spec/catalogs/layouts/text-1x.json +13 -0
  325. package/dist/spec/catalogs/layouts/text-2x.json +16 -0
  326. package/dist/spec/catalogs/layouts/text-3x.json +19 -0
  327. package/dist/spec/catalogs/layouts/title-subtitle.json +13 -0
  328. package/dist/spec/catalogs/layouts/title.json +10 -0
  329. package/dist/spec/catalogs/narratives/board-meeting.json +192 -0
  330. package/dist/spec/catalogs/narratives/business-narrative.json +87 -0
  331. package/dist/spec/catalogs/narratives/business-review.json +119 -0
  332. package/dist/spec/catalogs/narratives/capacity-planning.json +88 -0
  333. package/dist/spec/catalogs/narratives/challenge-resolution.json +80 -0
  334. package/dist/spec/catalogs/narratives/classic-story.json +78 -0
  335. package/dist/spec/catalogs/narratives/company-intro.json +96 -0
  336. package/dist/spec/catalogs/narratives/conference-talk.json +54 -0
  337. package/dist/spec/catalogs/narratives/early-startup-pitch.json +119 -0
  338. package/dist/spec/catalogs/narratives/educate.json +95 -0
  339. package/dist/spec/catalogs/narratives/employee-review.json +87 -0
  340. package/dist/spec/catalogs/narratives/failure-analysis.json +104 -0
  341. package/dist/spec/catalogs/narratives/focus.json +120 -0
  342. package/dist/spec/catalogs/narratives/golden-circle.json +50 -0
  343. package/dist/spec/catalogs/narratives/index.json +358 -0
  344. package/dist/spec/catalogs/narratives/innovation.json +96 -0
  345. package/dist/spec/catalogs/narratives/justice.json +112 -0
  346. package/dist/spec/catalogs/narratives/marketing-strategy.json +111 -0
  347. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +87 -0
  348. package/dist/spec/catalogs/narratives/performance-review.json +111 -0
  349. package/dist/spec/catalogs/narratives/persuade.json +94 -0
  350. package/dist/spec/catalogs/narratives/persuasive-sales.json +87 -0
  351. package/dist/spec/catalogs/narratives/pitch-deck.json +107 -0
  352. package/dist/spec/catalogs/narratives/problem-solution.json +61 -0
  353. package/dist/spec/catalogs/narratives/product-launch.json +104 -0
  354. package/dist/spec/catalogs/narratives/project-proposal.json +104 -0
  355. package/dist/spec/catalogs/narratives/qbr.json +85 -0
  356. package/dist/spec/catalogs/narratives/rags-to-riches.json +80 -0
  357. package/dist/spec/catalogs/narratives/reveal.json +87 -0
  358. package/dist/spec/catalogs/narratives/scqa.json +55 -0
  359. package/dist/spec/catalogs/narratives/status-update.json +72 -0
  360. package/dist/spec/catalogs/narratives/strategic-advisory.json +85 -0
  361. package/dist/spec/catalogs/narratives/strategic-narrative.json +61 -0
  362. package/dist/spec/catalogs/narratives/survey-analysis.json +104 -0
  363. package/dist/spec/catalogs/narratives/survival-story.json +103 -0
  364. package/dist/spec/catalogs/narratives/transformation-arc.json +50 -0
  365. package/dist/spec/catalogs/narratives/trend-analysis.json +79 -0
  366. package/dist/spec/catalogs/narratives/underdog-victory.json +87 -0
  367. package/dist/spec/catalogs/narratives/venture-pitch.json +109 -0
  368. package/dist/spec/catalogs/narratives/weekly-progress.json +103 -0
  369. package/dist/spec/catalogs/purposes/align.json +16 -0
  370. package/dist/spec/catalogs/purposes/decide.json +16 -0
  371. package/dist/spec/catalogs/purposes/educate.json +16 -0
  372. package/dist/spec/catalogs/purposes/index.json +61 -0
  373. package/dist/spec/catalogs/purposes/inform.json +16 -0
  374. package/dist/spec/catalogs/purposes/persuade.json +16 -0
  375. package/dist/spec/catalogs/purposes/pitch.json +16 -0
  376. package/dist/spec/catalogs/purposes/plan.json +16 -0
  377. package/dist/spec/catalogs/purposes/report.json +16 -0
  378. package/dist/spec/catalogs/purposes/sell.json +16 -0
  379. package/dist/spec/catalogs/social-platforms/bluesky.json +14 -0
  380. package/dist/spec/catalogs/social-platforms/facebook.json +14 -0
  381. package/dist/spec/catalogs/social-platforms/github.json +15 -0
  382. package/dist/spec/catalogs/social-platforms/index.json +68 -0
  383. package/dist/spec/catalogs/social-platforms/instagram.json +13 -0
  384. package/dist/spec/catalogs/social-platforms/linkedin.json +15 -0
  385. package/dist/spec/catalogs/social-platforms/mastodon.json +14 -0
  386. package/dist/spec/catalogs/social-platforms/threads.json +13 -0
  387. package/dist/spec/catalogs/social-platforms/tiktok.json +14 -0
  388. package/dist/spec/catalogs/social-platforms/x.json +14 -0
  389. package/dist/spec/catalogs/social-platforms/youtube.json +14 -0
  390. package/dist/spec/catalogs/themes/bold.json +13 -0
  391. package/dist/spec/catalogs/themes/classic.json +13 -0
  392. package/dist/spec/catalogs/themes/dark.json +13 -0
  393. package/dist/spec/catalogs/themes/index.json +31 -0
  394. package/dist/spec/catalogs/themes/minimal.json +13 -0
  395. package/dist/spec/catalogs/tones/authoritative.json +31 -0
  396. package/dist/spec/catalogs/tones/casual.json +31 -0
  397. package/dist/spec/catalogs/tones/conversational.json +31 -0
  398. package/dist/spec/catalogs/tones/formal.json +31 -0
  399. package/dist/spec/catalogs/tones/index.json +49 -0
  400. package/dist/spec/catalogs/tones/inspirational.json +31 -0
  401. package/dist/spec/catalogs/tones/persuasive.json +32 -0
  402. package/dist/spec/catalogs/tones/technical.json +31 -0
  403. package/dist/spec/openapi.yaml +776 -0
  404. package/dist/spec/reference/engine-defaults.json +35 -0
  405. package/dist/spec/schemas/audience.schema.json +156 -0
  406. package/dist/spec/schemas/chart-type.schema.json +537 -0
  407. package/dist/spec/schemas/color-scheme.schema.json +200 -0
  408. package/dist/spec/schemas/font-scheme.schema.json +174 -0
  409. package/dist/spec/schemas/language.schema.json +158 -0
  410. package/dist/spec/schemas/layout.schema.json +280 -0
  411. package/dist/spec/schemas/narrative.schema.json +207 -0
  412. package/dist/spec/schemas/opf.schema.json +2537 -0
  413. package/dist/spec/schemas/purpose.schema.json +92 -0
  414. package/dist/spec/schemas/social-platform.schema.json +184 -0
  415. package/dist/spec/schemas/theme.schema.json +168 -0
  416. package/dist/spec/schemas/tone.schema.json +146 -0
  417. package/dist/types.d.ts +1102 -0
  418. package/dist/types.js +3 -0
  419. package/dist/types.js.map +1 -0
  420. package/dist/validator-Be5EzqAt.d.ts +2700 -0
  421. package/dist/validator.d.ts +3 -0
  422. package/dist/validator.js +6694 -0
  423. package/dist/validator.js.map +1 -0
  424. package/package.json +80 -0
@@ -0,0 +1,119 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "business-review",
4
+ "name": "Business Review",
5
+ "summary": "Full-loop review of recent activities to identify achievements, address challenges, and plan improvements. Goes deeper than a status update — closer to a customer-facing or partner-facing relationship review.",
6
+ "audienceFit": [
7
+ "customers",
8
+ "partners",
9
+ "stakeholders",
10
+ "leadership"
11
+ ],
12
+ "durationRange": {
13
+ "minMinutes": 30,
14
+ "maxMinutes": 90
15
+ },
16
+ "tags": [
17
+ "customer-relationship",
18
+ "review",
19
+ "operations"
20
+ ],
21
+ "beats": [
22
+ {
23
+ "id": "logo",
24
+ "name": "Logo",
25
+ "description": "Cover slide with logos and the review period. Establishes brand identity and signals the level of formality the rest of the deck will hold to.",
26
+ "layoutHint": "title-left",
27
+ "instructions": "Identity & representation",
28
+ "slideType": "text"
29
+ },
30
+ {
31
+ "id": "opening",
32
+ "name": "Opening",
33
+ "description": "Frame the meeting context and the goals for the next hour. What you'll cover, what decisions you want, what you don't intend to relitigate.",
34
+ "instructions": "Meeting context & goals",
35
+ "slideType": "text",
36
+ "layoutHint": "text-1x-left"
37
+ },
38
+ {
39
+ "id": "review",
40
+ "name": "Review",
41
+ "description": "Outline the recent activities in scope: launches, projects, programs. Just enough scope-setting that the rest of the deck has shared vocabulary.",
42
+ "instructions": "Outline recent activities",
43
+ "slideType": "text",
44
+ "layoutHint": "text-1x-left"
45
+ },
46
+ {
47
+ "id": "successes",
48
+ "name": "Successes",
49
+ "description": "Recognize the achievements in the review window. Lead with outcomes the audience cares about, not effort. Specific moves earn more credibility than aggregate progress.",
50
+ "instructions": "Recognize achievements",
51
+ "slideType": "text",
52
+ "layoutHint": "text-1x-left"
53
+ },
54
+ {
55
+ "id": "challenges",
56
+ "name": "Challenges",
57
+ "description": "Address the problems faced honestly. What didn't work, what's still hard. Naming challenges in front of the audience earns more trust than letting them ask.",
58
+ "instructions": "Address problems faced",
59
+ "slideType": "text",
60
+ "layoutHint": "text-1x-left"
61
+ },
62
+ {
63
+ "id": "solutions",
64
+ "name": "Solutions",
65
+ "description": "Discuss the fixes already implemented. Pair each with the result it produced, or, if it's still in flight, with the leading indicator you're watching.",
66
+ "instructions": "Discuss implemented fixes",
67
+ "slideType": "text",
68
+ "layoutHint": "text-1x-left"
69
+ },
70
+ {
71
+ "id": "outcome",
72
+ "name": "Outcome",
73
+ "description": "Display the results achieved across the review window. Let the data carry the slide; supporting commentary should explain context, not inflate the numbers.",
74
+ "instructions": "Display results achieved",
75
+ "slideType": "text",
76
+ "layoutHint": "text-1x-left"
77
+ },
78
+ {
79
+ "id": "insights",
80
+ "name": "Insights",
81
+ "description": "Highlight the key learnings. What was confirmed, what surprised you, what the audience should take away. Insights are the slides people quote in follow-on meetings.",
82
+ "instructions": "Highlight key learnings",
83
+ "slideType": "text",
84
+ "layoutHint": "text-1x-left"
85
+ },
86
+ {
87
+ "id": "future-strategy",
88
+ "name": "Future Strategy",
89
+ "description": "Define the next steps and the strategic direction that follows from the review. Specific enough to sequence; flexible enough to adapt.",
90
+ "instructions": "Define next steps",
91
+ "slideType": "text",
92
+ "layoutHint": "text-1x-left"
93
+ },
94
+ {
95
+ "id": "feedback",
96
+ "name": "Feedback",
97
+ "description": "Capture audience thoughts. Two or three explicit prompts where you want input or alignment. The strength of a relationship review is in the conversation it provokes.",
98
+ "instructions": "Capture audience thoughts",
99
+ "slideType": "text",
100
+ "layoutHint": "text-1x-left"
101
+ },
102
+ {
103
+ "id": "next-review",
104
+ "name": "Next Review",
105
+ "description": "Plan for follow-up: when the next review happens, what evidence you'll bring, what decisions are deferred until then. Continuity is the point of the cadence.",
106
+ "instructions": "Plan for follow-up",
107
+ "slideType": "text",
108
+ "layoutHint": "text-1x-left"
109
+ },
110
+ {
111
+ "id": "closing",
112
+ "name": "Closing",
113
+ "description": "Recap and express optimism about the path forward. Close with the next concrete step and the people responsible for it.",
114
+ "layoutHint": "title-left",
115
+ "instructions": "Recap and express optimism",
116
+ "slideType": "text"
117
+ }
118
+ ]
119
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "capacity-planning",
4
+ "name": "Capacity Planning",
5
+ "summary": "Workforce and operational capacity-planning arc: kickoff, urgency, current state, projection, tactics, implementation, revision, conclusion. For decks where leadership must decide whether the organization has enough resources to meet upcoming demand.",
6
+ "audienceFit": [
7
+ "leadership",
8
+ "operations",
9
+ "hr-partners",
10
+ "finance"
11
+ ],
12
+ "durationRange": {
13
+ "minMinutes": 20,
14
+ "maxMinutes": 45
15
+ },
16
+ "tags": [
17
+ "workforce",
18
+ "operations",
19
+ "planning",
20
+ "resource-management"
21
+ ],
22
+ "beats": [
23
+ {
24
+ "id": "kickoff",
25
+ "name": "Kickoff",
26
+ "description": "Introduce what the planning exercise covers and the decision you need from the audience. Frame the time horizon and the resources in scope so the rest of the deck stays bounded.",
27
+ "layoutHint": "title-center",
28
+ "instructions": "Introduce the topic",
29
+ "slideType": "text"
30
+ },
31
+ {
32
+ "id": "urgency",
33
+ "name": "Urgency",
34
+ "description": "Show why this is the right moment to plan capacity. Pipeline shifts, hiring freezes, operational stress signals. Urgency turns capacity from an annual ritual into a decision the audience leans into.",
35
+ "instructions": "Show needs",
36
+ "slideType": "text",
37
+ "layoutHint": "text-1x-left"
38
+ },
39
+ {
40
+ "id": "situation",
41
+ "name": "Situation",
42
+ "description": "Highlight the current resource picture: people, tools, infrastructure, vendor capacity. Show utilization, not just headcount. The audience should know where slack and stress live today.",
43
+ "instructions": "Highlight current resources",
44
+ "slideType": "text",
45
+ "layoutHint": "text-1x-left"
46
+ },
47
+ {
48
+ "id": "projection",
49
+ "name": "Projection",
50
+ "description": "Predict future demand under your base case and a sensitivity case. Tie demand to specific drivers — pipeline, launches, seasonality — so the audience can challenge the assumptions, not just the totals.",
51
+ "instructions": "Predict future demands",
52
+ "slideType": "text",
53
+ "layoutHint": "text-1x-left"
54
+ },
55
+ {
56
+ "id": "tactics",
57
+ "name": "Tactics",
58
+ "description": "Suggest the strategies for closing any gap: hiring, automation, outsourcing, prioritization. Each tactic should map to a specific demand driver and a defensible cost.",
59
+ "instructions": "Suggest coping strategies",
60
+ "slideType": "text",
61
+ "layoutHint": "text-1x-left"
62
+ },
63
+ {
64
+ "id": "implementation",
65
+ "name": "Implementation",
66
+ "description": "Discuss how the plan gets deployed. Sequencing, owners, dependencies, lead times. Capacity decisions slip the most when the rollout isn't planned with the same rigor as the sizing.",
67
+ "instructions": "Discuss deployment plans",
68
+ "slideType": "text",
69
+ "layoutHint": "text-1x-left"
70
+ },
71
+ {
72
+ "id": "revision",
73
+ "name": "Revision",
74
+ "description": "Define the leading indicators that would trigger a re-plan, and the cadence of review. Capacity plans age fast; show the audience how the plan stays alive.",
75
+ "instructions": "Evaluate and adjust",
76
+ "slideType": "text",
77
+ "layoutHint": "text-1x-left"
78
+ },
79
+ {
80
+ "id": "conclusion",
81
+ "name": "Conclusion",
82
+ "description": "Wrap up with the specific recommendations and the decisions you need today. End with the next checkpoint and what evidence will be on the table at it.",
83
+ "layoutHint": "title-left",
84
+ "instructions": "Wrap-up & recommendations",
85
+ "slideType": "text"
86
+ }
87
+ ]
88
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "challenge-resolution",
4
+ "name": "Challenge → Resolution",
5
+ "summary": "Identify a current business challenge, trace its origins, and recommend an actionable resolution. Useful for management consulting, internal strategy memos, and any deck where the audience needs a clear path from problem to plan.",
6
+ "audienceFit": [
7
+ "executives",
8
+ "managers",
9
+ "stakeholders",
10
+ "internal-teams"
11
+ ],
12
+ "durationRange": {
13
+ "minMinutes": 10,
14
+ "maxMinutes": 30
15
+ },
16
+ "tags": [
17
+ "management",
18
+ "strategy",
19
+ "consulting",
20
+ "advisory"
21
+ ],
22
+ "beats": [
23
+ {
24
+ "id": "hook",
25
+ "name": "Hook",
26
+ "description": "Open with a specific, visible signal of the challenge — a metric heading the wrong way, a customer story, a competitive event. The hook should make the audience nod that yes, this matters.",
27
+ "instructions": "Capture audience attention",
28
+ "slideType": "text",
29
+ "layoutHint": "text-1x-left"
30
+ },
31
+ {
32
+ "id": "dilemma",
33
+ "name": "Dilemma",
34
+ "description": "State the challenge plainly. What is failing, who is feeling it, and why has it now risen to a level that demands a decision? The dilemma must feel real, not academic.",
35
+ "instructions": "Present the problem",
36
+ "slideType": "text",
37
+ "layoutHint": "text-1x-left"
38
+ },
39
+ {
40
+ "id": "backdrop",
41
+ "name": "Backdrop",
42
+ "description": "Provide the context behind the dilemma: how it formed, what's been tried, what constraints exist. Just enough history that the audience trusts your diagnosis without drowning in detail.",
43
+ "instructions": "Provide context",
44
+ "slideType": "text",
45
+ "layoutHint": "text-1x-left"
46
+ },
47
+ {
48
+ "id": "remedy",
49
+ "name": "Remedy",
50
+ "description": "Propose the resolution. Lead with the recommendation, then sketch the approach. Be opinionated — vague remedies invite vague responses.",
51
+ "instructions": "Propose a solution",
52
+ "slideType": "text",
53
+ "layoutHint": "text-1x-left"
54
+ },
55
+ {
56
+ "id": "evidence",
57
+ "name": "Evidence",
58
+ "description": "Demonstrate why the remedy will work. Comparable cases, supporting data, or pilot results. Choose evidence that addresses the audience's most likely objection, not the one easiest to answer.",
59
+ "instructions": "Demonstrate success",
60
+ "slideType": "text",
61
+ "layoutHint": "text-1x-left"
62
+ },
63
+ {
64
+ "id": "motivate",
65
+ "name": "Motivate",
66
+ "description": "Make the case for acting now. Quantify the cost of delay and the upside of decisive action. Help the audience picture the room a quarter from now if they say yes.",
67
+ "instructions": "Encourage action",
68
+ "slideType": "text",
69
+ "layoutHint": "text-1x-left"
70
+ },
71
+ {
72
+ "id": "conclusion",
73
+ "name": "Conclusion",
74
+ "description": "Recap the challenge, the remedy, and the specific decision you need from the audience. End with a clear ask, not a summary slide.",
75
+ "layoutHint": "title-left",
76
+ "instructions": "Recap and end powerfully",
77
+ "slideType": "text"
78
+ }
79
+ ]
80
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "classic-story",
4
+ "name": "Classic Story",
5
+ "summary": "Movie-style narrative arc applied to any topic: open the scene, introduce the villain, raise the stakes, send in the hero, deliver the plan, and close with hope. A versatile go-to when you need to make information feel like a story.",
6
+ "audienceFit": [
7
+ "general-audience",
8
+ "customers",
9
+ "internal-teams"
10
+ ],
11
+ "durationRange": {
12
+ "minMinutes": 5,
13
+ "maxMinutes": 30
14
+ },
15
+ "tags": [
16
+ "storytelling",
17
+ "general",
18
+ "engagement"
19
+ ],
20
+ "beats": [
21
+ {
22
+ "id": "opening",
23
+ "name": "Opening",
24
+ "description": "Capture attention with a vivid moment, image, or question that sets the world of the story. The audience should immediately know what kind of room they're in. Avoid agendas — the opening is the first scene, not a preamble.",
25
+ "instructions": "Capture audience attention",
26
+ "slideType": "text",
27
+ "layoutHint": "text-1x-left"
28
+ },
29
+ {
30
+ "id": "context",
31
+ "name": "Context",
32
+ "description": "Establish what's normal in this world before anything goes wrong. Just enough background for the audience to feel the stakes when the villain shows up. Keep it tight; backstory is fuel, not the engine.",
33
+ "instructions": "Give background & importance",
34
+ "slideType": "text",
35
+ "layoutHint": "text-1x-left"
36
+ },
37
+ {
38
+ "id": "villain",
39
+ "name": "Villain",
40
+ "description": "Introduce the antagonist — a problem, a competitor, a market force, an inertia. Give it a face and a name where you can. The clearer the villain, the more the audience cares about how the story turns out.",
41
+ "instructions": "Introduce problem",
42
+ "slideType": "text",
43
+ "layoutHint": "text-1x-left"
44
+ },
45
+ {
46
+ "id": "despair",
47
+ "name": "Despair",
48
+ "description": "Show what's at risk if the villain wins. Emphasize the human or business cost of inaction. Don't rush past this beat — the discomfort here is what makes the resolution land.",
49
+ "instructions": "Emphasize negative impact",
50
+ "slideType": "text",
51
+ "layoutHint": "text-1x-left"
52
+ },
53
+ {
54
+ "id": "hero",
55
+ "name": "Hero",
56
+ "description": "Reveal the hero of the story. Often this is the audience themselves, your team, or your product. Frame the hero by what they uniquely bring to the fight, not by their résumé.",
57
+ "instructions": "Present solution",
58
+ "slideType": "text",
59
+ "layoutHint": "text-1x-left"
60
+ },
61
+ {
62
+ "id": "plan",
63
+ "name": "Plan",
64
+ "description": "Walk through how the hero defeats the villain. Concrete, sequential, credible. Generic plans signal weak heroes; specific plans earn belief that the ending you're promising is reachable.",
65
+ "instructions": "Detail implementation",
66
+ "slideType": "text",
67
+ "layoutHint": "text-1x-left"
68
+ },
69
+ {
70
+ "id": "closing",
71
+ "name": "Closing",
72
+ "description": "End with the resolution and the lesson. Show what the world looks like after the villain loses, and leave the audience with the feeling — and the line — they'll repeat afterwards.",
73
+ "layoutHint": "title-left",
74
+ "instructions": "Inspire & conclude",
75
+ "slideType": "text"
76
+ }
77
+ ]
78
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "company-intro",
4
+ "name": "Company Intro",
5
+ "summary": "Standard company-overview deck: who you are, what's distinctive about you, who you serve, and why they win. Built for first-touch sales meetings, partner intros, and 'about us' decks attached to outbound emails.",
6
+ "audienceFit": [
7
+ "prospects",
8
+ "partners",
9
+ "press",
10
+ "candidates"
11
+ ],
12
+ "durationRange": {
13
+ "minMinutes": 10,
14
+ "maxMinutes": 30
15
+ },
16
+ "tags": [
17
+ "overview",
18
+ "go-to-market",
19
+ "marketing",
20
+ "intro"
21
+ ],
22
+ "beats": [
23
+ {
24
+ "id": "logo",
25
+ "name": "Logo",
26
+ "description": "Cover slide with the logo, tagline, and a single line of positioning. Set the visual tone — confident, branded, uncluttered.",
27
+ "layoutHint": "title-left",
28
+ "instructions": "Establish brand identity",
29
+ "slideType": "text"
30
+ },
31
+ {
32
+ "id": "about",
33
+ "name": "About",
34
+ "description": "Capture the company in three or four lines: what you do, who you do it for, and how long you've been at it. Avoid jargon; an outsider should grok the business in fifteen seconds.",
35
+ "instructions": "Capture attention",
36
+ "slideType": "text",
37
+ "layoutHint": "text-1x-left"
38
+ },
39
+ {
40
+ "id": "competitive-advantage",
41
+ "name": "Competitive Advantage",
42
+ "description": "State the one or two things you do that the alternatives can't. Frame it as a structural advantage, not a feature list. The audience should leave able to repeat the differentiator in their own words.",
43
+ "instructions": "Stand out",
44
+ "slideType": "text",
45
+ "layoutHint": "text-1x-left"
46
+ },
47
+ {
48
+ "id": "company-story",
49
+ "name": "Company Story",
50
+ "description": "Share the founding insight or origin moment — why this company exists, told as a short story. Specific people, specific problems, a specific 'aha.' Story beats biography.",
51
+ "instructions": "Share origin",
52
+ "slideType": "text",
53
+ "layoutHint": "text-1x-left"
54
+ },
55
+ {
56
+ "id": "offerings",
57
+ "name": "Offerings",
58
+ "description": "Map the products and services into a coherent picture. Show how they fit together rather than listing them flat. The shape of the portfolio is itself a message.",
59
+ "instructions": "Highlight products/services",
60
+ "slideType": "text",
61
+ "layoutHint": "text-1x-left"
62
+ },
63
+ {
64
+ "id": "ideal-customer",
65
+ "name": "Ideal Customer",
66
+ "description": "Define who you serve best. Industry, size, role, situation. Specificity here helps the audience self-select and signals you understand the customer well enough to be choosy.",
67
+ "instructions": "Define target market",
68
+ "slideType": "text",
69
+ "layoutHint": "text-1x-left"
70
+ },
71
+ {
72
+ "id": "key-benefits",
73
+ "name": "Key Benefits",
74
+ "description": "Translate offerings into three to five customer outcomes. Lead with the result, not the mechanism. Each benefit should answer 'what becomes easier or better for me?'",
75
+ "instructions": "Emphasize value",
76
+ "slideType": "text",
77
+ "layoutHint": "text-1x-left"
78
+ },
79
+ {
80
+ "id": "success-story",
81
+ "name": "Success Story",
82
+ "description": "Tell one named customer's story with concrete before/after metrics. A single specific story is more persuasive than a logo grid; pick one that mirrors the audience you're presenting to.",
83
+ "instructions": "Showcase satisfied customer",
84
+ "slideType": "text",
85
+ "layoutHint": "text-1x-left"
86
+ },
87
+ {
88
+ "id": "closing-cta",
89
+ "name": "Closing & CTA",
90
+ "description": "Close with one line of why now and one specific next step — a discovery call, a pilot, a partner program. End with contact info that's easy to act on without searching.",
91
+ "layoutHint": "title-left",
92
+ "instructions": "Encourage action",
93
+ "slideType": "text"
94
+ }
95
+ ]
96
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "conference-talk",
4
+ "name": "Conference Talk",
5
+ "summary": "Stage-talk arc for a 15–45 minute conference or industry-event session: hook the room, promise a payoff, deliver evidence, expose the underlying mechanism, show how to apply it, and end with a memorable recap. Engineered for audiences that came to learn something they can use Monday.",
6
+ "audienceFit": [
7
+ "practitioners",
8
+ "general-audience",
9
+ "industry-peers"
10
+ ],
11
+ "durationRange": {
12
+ "minMinutes": 15,
13
+ "maxMinutes": 45
14
+ },
15
+ "tags": [
16
+ "talk",
17
+ "conference",
18
+ "keynote",
19
+ "education"
20
+ ],
21
+ "beats": [
22
+ {
23
+ "id": "hook",
24
+ "name": "Hook",
25
+ "description": "Earn the first sixty seconds with a story, surprising claim, or vivid moment. Make the audience curious enough to put their phones down. Avoid agendas, bios, and 'today I'm going to talk about' openings — those are filler that competes with your real opening."
26
+ },
27
+ {
28
+ "id": "promise",
29
+ "name": "Promise",
30
+ "description": "Tell the audience exactly what they'll know, feel, or be able to do by the end of the talk. A clear promise sets the implicit contract for the next thirty minutes and lets you redirect attention later when needed."
31
+ },
32
+ {
33
+ "id": "evidence",
34
+ "name": "Evidence",
35
+ "description": "Deliver the substantive case for your promise. Data, examples, demonstrations, or strong stories — whatever a skeptical attendee would need to update their beliefs. This is the densest section of the talk; pace and visualize accordingly."
36
+ },
37
+ {
38
+ "id": "mechanism",
39
+ "name": "Mechanism",
40
+ "description": "Reveal the underlying principle or framework that explains why the evidence holds. The mechanism is what audiences quote later — the moment of 'oh, that's why.' Keep it crisp and namable."
41
+ },
42
+ {
43
+ "id": "application",
44
+ "name": "Application",
45
+ "description": "Show the audience how to use the mechanism in their own work. Concrete, specific, low-friction first steps. The talk earns its keep here — abstract insight without an applied path is forgotten by lunch."
46
+ },
47
+ {
48
+ "id": "recap",
49
+ "name": "Recap",
50
+ "description": "Restate the promise, the mechanism, and the call to action in a single short slide. Give the audience the line they'll repeat to a colleague and the one image that will stick with them after the lights come up.",
51
+ "layoutHint": "title-left"
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "$schema": "https://openpresentation.org/schema/opf-narrative/v1",
3
+ "id": "early-startup-pitch",
4
+ "name": "Early-Stage Startup Pitch",
5
+ "summary": "Seed and pre-seed pitch arc tuned for vision-heavy stories where revenue and traction are still thin. Anchors the narrative in market change, founder insight, and credible early signal — not metrics yet.",
6
+ "audienceFit": [
7
+ "seed-investors",
8
+ "angels",
9
+ "advisors"
10
+ ],
11
+ "durationRange": {
12
+ "minMinutes": 10,
13
+ "maxMinutes": 20
14
+ },
15
+ "tags": [
16
+ "startup",
17
+ "fundraising",
18
+ "seed",
19
+ "pitch"
20
+ ],
21
+ "beats": [
22
+ {
23
+ "id": "logo",
24
+ "name": "Logo",
25
+ "description": "Cover slide with the company name, logo, and one-line positioning. Simple, branded, confident.",
26
+ "layoutHint": "title-left",
27
+ "instructions": "Establish presence",
28
+ "slideType": "text"
29
+ },
30
+ {
31
+ "id": "monumental-change",
32
+ "name": "Monumental Change",
33
+ "description": "Open by naming a large, undeniable shift in the world. Tech, regulatory, behavioral. The shift is the reason this company exists — investors should feel its weight before they hear about the product.",
34
+ "instructions": "Highlight market transformation",
35
+ "slideType": "text",
36
+ "layoutHint": "text-1x-left"
37
+ },
38
+ {
39
+ "id": "past-struggle",
40
+ "name": "Past Struggle",
41
+ "description": "Show what the world tried to do about the problem before the shift, and why those approaches fell short. Honest credit to predecessors makes the new game more credible.",
42
+ "instructions": "Emphasize previous challenges",
43
+ "slideType": "text",
44
+ "layoutHint": "text-1x-left"
45
+ },
46
+ {
47
+ "id": "innovative-breakthrough",
48
+ "name": "Innovative Breakthrough",
49
+ "description": "Present the founding insight or breakthrough that makes a new approach possible. This is the 'secret' the company is built on — name it plainly.",
50
+ "instructions": "Present innovative solution",
51
+ "slideType": "text",
52
+ "layoutHint": "text-1x-left"
53
+ },
54
+ {
55
+ "id": "unique-offering",
56
+ "name": "Unique Offering",
57
+ "description": "Detail the product or service. Lead with the customer-visible thing they touch; the architecture can wait. Show why this offering is structurally different from the past struggle.",
58
+ "instructions": "Detail product or service",
59
+ "slideType": "text",
60
+ "layoutHint": "text-1x-left"
61
+ },
62
+ {
63
+ "id": "costly-issues",
64
+ "name": "Costly Issues",
65
+ "description": "Quantify the pain customers experience without your offering. Time, dollars, opportunity cost. Specific numbers convert sympathy into urgency.",
66
+ "instructions": "Quantify problems faced",
67
+ "slideType": "text",
68
+ "layoutHint": "text-1x-left"
69
+ },
70
+ {
71
+ "id": "effective-solutions",
72
+ "name": "Effective Solutions",
73
+ "description": "Demonstrate the customer outcome your offering produces. Before/after numbers from early users, even small N. Early-stage pitches are won by leading indicators, not by trailing ones.",
74
+ "instructions": "Demonstrate benefits",
75
+ "slideType": "text",
76
+ "layoutHint": "text-1x-left"
77
+ },
78
+ {
79
+ "id": "unit-economics",
80
+ "name": "Unit Economics",
81
+ "description": "Explain the financial model. Cost to acquire, gross margin, payback. Investors don't expect maturity — they expect that you've thought about it.",
82
+ "instructions": "Explain financial model",
83
+ "slideType": "text",
84
+ "layoutHint": "text-1x-left"
85
+ },
86
+ {
87
+ "id": "talented-team",
88
+ "name": "Talented Team",
89
+ "description": "Introduce the founders and key early hires. Show why this team uniquely sees and can execute on this opportunity. Insight beats résumé at the seed stage.",
90
+ "instructions": "Introduce key players",
91
+ "slideType": "text",
92
+ "layoutHint": "text-1x-left"
93
+ },
94
+ {
95
+ "id": "traction",
96
+ "name": "Traction",
97
+ "description": "Showcase the early signal: pilots, design partners, waitlist, retention data, anything credible. Frame it honestly — investors at this stage discount inflation aggressively.",
98
+ "instructions": "Showcase accomplishments",
99
+ "slideType": "text",
100
+ "layoutHint": "text-1x-left"
101
+ },
102
+ {
103
+ "id": "investment-opportunity",
104
+ "name": "Investment Opportunity",
105
+ "description": "Detail the round size, structure, and use of funds. Tie the raise to specific milestones it takes the company to. Specificity here signals operational maturity.",
106
+ "instructions": "Detail funding needs",
107
+ "slideType": "text",
108
+ "layoutHint": "text-1x-left"
109
+ },
110
+ {
111
+ "id": "closing-logo",
112
+ "name": "Closing Logo",
113
+ "description": "Close on the brand and contact info. Leave the room with the line you most want repeated when the partner pitches you to the rest of the firm.",
114
+ "layoutHint": "title-left",
115
+ "instructions": "Leave a lasting impression",
116
+ "slideType": "text"
117
+ }
118
+ ]
119
+ }