@openpresentation/opf 0.18.4 → 0.19.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 (760) hide show
  1. package/README.md +18 -17
  2. package/dist/browser.js +17 -19
  3. package/dist/{catalog-refs-BSfGELpt.d.ts → catalog-refs-CSHevLn1.d.ts} +1 -1
  4. package/dist/{chunk-KA3ZPFVT.js → chunk-65GDO6TJ.js} +96 -40
  5. package/dist/{chunk-JCOSZTOI.js → chunk-A6COIVTD.js} +7 -2
  6. package/dist/{chunk-ZCFSDSUX.js → chunk-AK4UXIRP.js} +1 -1
  7. package/dist/{chunk-MSFE2HUK.js → chunk-FGUQHD37.js} +16 -13
  8. package/dist/{chunk-GVOLSWAJ.js → chunk-GRN3U5JT.js} +5 -5
  9. package/dist/{chunk-TRELE6I6.js → chunk-HBFRNOP4.js} +1 -1
  10. package/dist/{chunk-R7KIASS4.js → chunk-LRPSMQ62.js} +1 -1
  11. package/dist/chunk-OOT5AY4V.js +16 -0
  12. package/dist/{chunk-FO3WGS4R.js → chunk-OVBGGGKO.js} +25 -16
  13. package/dist/{chunk-2PEWUUBR.js → chunk-R5T4H4ZV.js} +350 -314
  14. package/dist/{chunk-L5YACLWK.js → chunk-SEUJIS55.js} +2 -2
  15. package/dist/{chunk-ECP7QPGK.js → chunk-SIQWYDFF.js} +6 -6
  16. package/dist/chunk-UJSAR6GF.js +181 -0
  17. package/dist/{chunk-IM337HP5.js → chunk-V3RGXJJS.js} +4 -5
  18. package/dist/{chunk-WHHLGDCQ.js → chunk-WHKFIFN7.js} +1 -1
  19. package/dist/{chunk-K5EG3UMS.js → chunk-XWMKAJSS.js} +46 -17
  20. package/dist/{chunk-PNINP5IF.js → chunk-YAHPQRVU.js} +1 -1
  21. package/dist/{chunk-MBU42S5Y.js → chunk-ZPCKGGI6.js} +1152 -273
  22. package/dist/{composition-C-OoqvAr.d.ts → composition-DilAHoWM.d.ts} +385 -99
  23. package/dist/composition.d.ts +2 -2
  24. package/dist/composition.js +1 -2
  25. package/dist/conversion-NJQHH4QW.js +19 -0
  26. package/dist/{conversion-BxZbBd_0.d.ts → conversion-k9l5pQsq.d.ts} +11 -11
  27. package/dist/convert.d.ts +3 -3
  28. package/dist/convert.js +7 -9
  29. package/dist/data.d.ts +1 -1
  30. package/dist/data.js +2 -3
  31. package/dist/{deck-report-DiDf_Vew.d.ts → deck-report-D19fyuNu.d.ts} +3 -3
  32. package/dist/deck.d.ts +6 -6
  33. package/dist/deck.js +10 -12
  34. package/dist/diff.js +5 -7
  35. package/dist/docs.js +25 -19
  36. package/dist/examples.d.ts +1 -1
  37. package/dist/examples.js +23853 -20994
  38. package/dist/format.js +2 -2
  39. package/dist/index.d.ts +22 -21
  40. package/dist/index.js +23 -26
  41. package/dist/markdown.d.ts +4 -4
  42. package/dist/markdown.js +7 -9
  43. package/dist/node-engine.d.ts +26 -9
  44. package/dist/node-engine.js +22 -23
  45. package/dist/{pagination-BaUjDrTz.d.ts → pagination-BNj5UQn5.d.ts} +3 -3
  46. package/dist/pagination.d.ts +3 -3
  47. package/dist/pagination.js +4 -6
  48. package/dist/patch.js +4 -6
  49. package/dist/{presentation-81rNihF0.d.ts → presentation-B_e2Djga.d.ts} +35 -19
  50. package/dist/repo-readme.js +1 -1
  51. package/dist/schemas.d.ts +2 -18
  52. package/dist/schemas.js +1 -1
  53. package/dist/spec/README.md +12 -19
  54. package/dist/spec/reference/engine-vocabularies.json +1 -1
  55. package/dist/spec/schemas/catalog-index.schema.json +3 -3
  56. package/dist/spec/schemas/catalog-manifest.schema.json +1 -1
  57. package/dist/spec/schemas/chart-type.schema.json +2 -2
  58. package/dist/spec/schemas/language.schema.json +1 -1
  59. package/dist/spec/schemas/layout-preview-index.schema.json +25 -11
  60. package/dist/spec/schemas/layout.schema.json +193 -272
  61. package/dist/spec/schemas/opf.schema.json +63 -18
  62. package/dist/spec/schemas/social-platform.schema.json +1 -1
  63. package/dist/spec/schemas/theme.schema.json +60 -0
  64. package/dist/spec-files.d.ts +2 -2
  65. package/dist/spec-files.js +1 -1
  66. package/dist/types.d.ts +115 -40
  67. package/dist/{validation-types-PbGDrNUr.d.ts → validation-types-CWhPuYUt.d.ts} +2 -2
  68. package/dist/validator-Cse-AD32.d.ts +73 -0
  69. package/dist/validator.d.ts +6 -60
  70. package/dist/validator.js +3 -5
  71. package/dist/yaml.d.ts +4 -4
  72. package/dist/yaml.js +7 -9
  73. package/package.json +6 -9
  74. package/dist/catalog-schemas-CinPh5WA.d.ts +0 -12
  75. package/dist/catalog.d.ts +0 -91
  76. package/dist/catalog.js +0 -3
  77. package/dist/chunk-HXHOZ7AH.js +0 -4937
  78. package/dist/chunk-SPFV27O5.js +0 -210
  79. package/dist/chunk-TRDXRRQK.js +0 -17
  80. package/dist/chunk-WCG3THTD.js +0 -23712
  81. package/dist/conversion-SHYVL7FC.js +0 -21
  82. package/dist/spec/catalogs/audiences/academic.json +0 -24
  83. package/dist/spec/catalogs/audiences/all-hands.json +0 -25
  84. package/dist/spec/catalogs/audiences/board.json +0 -24
  85. package/dist/spec/catalogs/audiences/candidates.json +0 -23
  86. package/dist/spec/catalogs/audiences/customer.json +0 -25
  87. package/dist/spec/catalogs/audiences/engineering-team.json +0 -23
  88. package/dist/spec/catalogs/audiences/executive.json +0 -24
  89. package/dist/spec/catalogs/audiences/general-public.json +0 -25
  90. package/dist/spec/catalogs/audiences/index.json +0 -105
  91. package/dist/spec/catalogs/audiences/internal-team.json +0 -25
  92. package/dist/spec/catalogs/audiences/investor.json +0 -25
  93. package/dist/spec/catalogs/audiences/marketing.json +0 -25
  94. package/dist/spec/catalogs/audiences/media.json +0 -24
  95. package/dist/spec/catalogs/audiences/partner.json +0 -25
  96. package/dist/spec/catalogs/audiences/regulatory.json +0 -25
  97. package/dist/spec/catalogs/audiences/sales.json +0 -25
  98. package/dist/spec/catalogs/audiences/technical.json +0 -25
  99. package/dist/spec/catalogs/chart-types/100pct-stacked-area.json +0 -21
  100. package/dist/spec/catalogs/chart-types/100pct-stacked-bar.json +0 -22
  101. package/dist/spec/catalogs/chart-types/100pct-stacked-column.json +0 -22
  102. package/dist/spec/catalogs/chart-types/area.json +0 -20
  103. package/dist/spec/catalogs/chart-types/bar.json +0 -22
  104. package/dist/spec/catalogs/chart-types/box-and-whisker.json +0 -21
  105. package/dist/spec/catalogs/chart-types/column.json +0 -22
  106. package/dist/spec/catalogs/chart-types/combo.json +0 -37
  107. package/dist/spec/catalogs/chart-types/doughnut.json +0 -20
  108. package/dist/spec/catalogs/chart-types/filled-radar.json +0 -21
  109. package/dist/spec/catalogs/chart-types/funnel.json +0 -21
  110. package/dist/spec/catalogs/chart-types/histogram.json +0 -21
  111. package/dist/spec/catalogs/chart-types/index.json +0 -171
  112. package/dist/spec/catalogs/chart-types/line-with-markers.json +0 -21
  113. package/dist/spec/catalogs/chart-types/line.json +0 -20
  114. package/dist/spec/catalogs/chart-types/pareto.json +0 -22
  115. package/dist/spec/catalogs/chart-types/pie.json +0 -20
  116. package/dist/spec/catalogs/chart-types/radar-with-markers.json +0 -21
  117. package/dist/spec/catalogs/chart-types/radar.json +0 -21
  118. package/dist/spec/catalogs/chart-types/scatter.json +0 -21
  119. package/dist/spec/catalogs/chart-types/stacked-area.json +0 -21
  120. package/dist/spec/catalogs/chart-types/stacked-bar.json +0 -22
  121. package/dist/spec/catalogs/chart-types/stacked-column.json +0 -22
  122. package/dist/spec/catalogs/chart-types/stacked-line-with-markers.json +0 -22
  123. package/dist/spec/catalogs/chart-types/stacked-line.json +0 -21
  124. package/dist/spec/catalogs/chart-types/treemap.json +0 -21
  125. package/dist/spec/catalogs/chart-types/waterfall.json +0 -21
  126. package/dist/spec/catalogs/chart-types/world.json +0 -21
  127. package/dist/spec/catalogs/color-schemes/black-and-white.json +0 -26
  128. package/dist/spec/catalogs/color-schemes/bold-red.json +0 -26
  129. package/dist/spec/catalogs/color-schemes/boost.json +0 -26
  130. package/dist/spec/catalogs/color-schemes/burnt-orange.json +0 -26
  131. package/dist/spec/catalogs/color-schemes/cool-horizon.json +0 -26
  132. package/dist/spec/catalogs/color-schemes/corporate-blue.json +0 -26
  133. package/dist/spec/catalogs/color-schemes/deep-purple.json +0 -26
  134. package/dist/spec/catalogs/color-schemes/forest-green.json +0 -26
  135. package/dist/spec/catalogs/color-schemes/golden-yellow.json +0 -26
  136. package/dist/spec/catalogs/color-schemes/index.json +0 -79
  137. package/dist/spec/catalogs/color-schemes/luxury.json +0 -26
  138. package/dist/spec/catalogs/color-schemes/pastel-red.json +0 -26
  139. package/dist/spec/catalogs/color-schemes/slate-gray.json +0 -26
  140. package/dist/spec/catalogs/color-schemes/steel-blue.json +0 -26
  141. package/dist/spec/catalogs/color-schemes/vibes.json +0 -26
  142. package/dist/spec/catalogs/font-schemes/angsana-new.json +0 -15
  143. package/dist/spec/catalogs/font-schemes/aparajita.json +0 -16
  144. package/dist/spec/catalogs/font-schemes/aptos.json +0 -13
  145. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +0 -15
  146. package/dist/spec/catalogs/font-schemes/arial.json +0 -13
  147. package/dist/spec/catalogs/font-schemes/batang.json +0 -15
  148. package/dist/spec/catalogs/font-schemes/bookman.json +0 -13
  149. package/dist/spec/catalogs/font-schemes/calibri.json +0 -13
  150. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +0 -13
  151. package/dist/spec/catalogs/font-schemes/consolas.json +0 -14
  152. package/dist/spec/catalogs/font-schemes/constantia.json +0 -13
  153. package/dist/spec/catalogs/font-schemes/courier-new.json +0 -14
  154. package/dist/spec/catalogs/font-schemes/daunpenh.json +0 -15
  155. package/dist/spec/catalogs/font-schemes/david.json +0 -15
  156. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +0 -15
  157. package/dist/spec/catalogs/font-schemes/fangsong.json +0 -15
  158. package/dist/spec/catalogs/font-schemes/garamond.json +0 -13
  159. package/dist/spec/catalogs/font-schemes/gautami.json +0 -15
  160. package/dist/spec/catalogs/font-schemes/georgia.json +0 -13
  161. package/dist/spec/catalogs/font-schemes/gisha.json +0 -16
  162. package/dist/spec/catalogs/font-schemes/grandview.json +0 -13
  163. package/dist/spec/catalogs/font-schemes/gungsuh.json +0 -15
  164. package/dist/spec/catalogs/font-schemes/impact.json +0 -13
  165. package/dist/spec/catalogs/font-schemes/index.json +0 -454
  166. package/dist/spec/catalogs/font-schemes/kalinga.json +0 -15
  167. package/dist/spec/catalogs/font-schemes/kartika.json +0 -15
  168. package/dist/spec/catalogs/font-schemes/khmer-ui.json +0 -15
  169. package/dist/spec/catalogs/font-schemes/latha.json +0 -15
  170. package/dist/spec/catalogs/font-schemes/lucida-sans.json +0 -13
  171. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +0 -15
  172. package/dist/spec/catalogs/font-schemes/mangal.json +0 -17
  173. package/dist/spec/catalogs/font-schemes/meiryo.json +0 -15
  174. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +0 -15
  175. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +0 -18
  176. package/dist/spec/catalogs/font-schemes/mingliu.json +0 -15
  177. package/dist/spec/catalogs/font-schemes/miriam.json +0 -15
  178. package/dist/spec/catalogs/font-schemes/montserrat.json +0 -13
  179. package/dist/spec/catalogs/font-schemes/ms-mincho.json +0 -15
  180. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +0 -15
  181. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +0 -15
  182. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +0 -16
  183. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +0 -17
  184. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +0 -15
  185. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +0 -16
  186. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +0 -16
  187. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +0 -15
  188. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +0 -15
  189. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +0 -15
  190. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +0 -15
  191. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +0 -15
  192. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +0 -15
  193. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +0 -15
  194. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +0 -15
  195. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +0 -15
  196. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +0 -15
  197. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +0 -15
  198. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +0 -15
  199. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +0 -18
  200. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +0 -15
  201. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +0 -15
  202. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +0 -15
  203. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +0 -15
  204. package/dist/spec/catalogs/font-schemes/noto-sans.json +0 -18
  205. package/dist/spec/catalogs/font-schemes/nyala.json +0 -15
  206. package/dist/spec/catalogs/font-schemes/open-sans.json +0 -13
  207. package/dist/spec/catalogs/font-schemes/pmingliu.json +0 -15
  208. package/dist/spec/catalogs/font-schemes/poppins.json +0 -13
  209. package/dist/spec/catalogs/font-schemes/pt-serif.json +0 -13
  210. package/dist/spec/catalogs/font-schemes/raavi.json +0 -15
  211. package/dist/spec/catalogs/font-schemes/raleway.json +0 -13
  212. package/dist/spec/catalogs/font-schemes/roboto.json +0 -13
  213. package/dist/spec/catalogs/font-schemes/rockwell.json +0 -13
  214. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +0 -17
  215. package/dist/spec/catalogs/font-schemes/seaford.json +0 -13
  216. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +0 -13
  217. package/dist/spec/catalogs/font-schemes/segoe-ui.json +0 -13
  218. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +0 -16
  219. package/dist/spec/catalogs/font-schemes/shruti.json +0 -15
  220. package/dist/spec/catalogs/font-schemes/simsun.json +0 -15
  221. package/dist/spec/catalogs/font-schemes/skeena.json +0 -13
  222. package/dist/spec/catalogs/font-schemes/sylfaen.json +0 -16
  223. package/dist/spec/catalogs/font-schemes/tahoma.json +0 -13
  224. package/dist/spec/catalogs/font-schemes/tenorite.json +0 -13
  225. package/dist/spec/catalogs/font-schemes/times-new-roman.json +0 -13
  226. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +0 -17
  227. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +0 -13
  228. package/dist/spec/catalogs/font-schemes/tunga.json +0 -15
  229. package/dist/spec/catalogs/font-schemes/verdana.json +0 -13
  230. package/dist/spec/catalogs/font-schemes/vrinda.json +0 -15
  231. package/dist/spec/catalogs/font-schemes/yu-gothic.json +0 -15
  232. package/dist/spec/catalogs/languages/afrikaans.json +0 -12
  233. package/dist/spec/catalogs/languages/albanian.json +0 -12
  234. package/dist/spec/catalogs/languages/amharic.json +0 -12
  235. package/dist/spec/catalogs/languages/arabic.json +0 -12
  236. package/dist/spec/catalogs/languages/armenian.json +0 -12
  237. package/dist/spec/catalogs/languages/aymara.json +0 -12
  238. package/dist/spec/catalogs/languages/azerbaijani.json +0 -12
  239. package/dist/spec/catalogs/languages/bengali.json +0 -12
  240. package/dist/spec/catalogs/languages/berber-latin.json +0 -12
  241. package/dist/spec/catalogs/languages/bosnian-latin.json +0 -12
  242. package/dist/spec/catalogs/languages/bulgarian.json +0 -12
  243. package/dist/spec/catalogs/languages/catalan.json +0 -12
  244. package/dist/spec/catalogs/languages/cebuano.json +0 -12
  245. package/dist/spec/catalogs/languages/chinese-simplified.json +0 -12
  246. package/dist/spec/catalogs/languages/chinese-traditional.json +0 -12
  247. package/dist/spec/catalogs/languages/chittagonian.json +0 -12
  248. package/dist/spec/catalogs/languages/croatian.json +0 -12
  249. package/dist/spec/catalogs/languages/czech.json +0 -12
  250. package/dist/spec/catalogs/languages/danish.json +0 -12
  251. package/dist/spec/catalogs/languages/dutch.json +0 -12
  252. package/dist/spec/catalogs/languages/english-au.json +0 -12
  253. package/dist/spec/catalogs/languages/english-ca.json +0 -12
  254. package/dist/spec/catalogs/languages/english-gb.json +0 -12
  255. package/dist/spec/catalogs/languages/english-in.json +0 -12
  256. package/dist/spec/catalogs/languages/english-us.json +0 -12
  257. package/dist/spec/catalogs/languages/english.json +0 -12
  258. package/dist/spec/catalogs/languages/estonian.json +0 -12
  259. package/dist/spec/catalogs/languages/filipino.json +0 -12
  260. package/dist/spec/catalogs/languages/finnish.json +0 -12
  261. package/dist/spec/catalogs/languages/french.json +0 -12
  262. package/dist/spec/catalogs/languages/fulfulde.json +0 -12
  263. package/dist/spec/catalogs/languages/galician.json +0 -12
  264. package/dist/spec/catalogs/languages/georgian.json +0 -12
  265. package/dist/spec/catalogs/languages/german.json +0 -12
  266. package/dist/spec/catalogs/languages/greek.json +0 -12
  267. package/dist/spec/catalogs/languages/gujarati.json +0 -12
  268. package/dist/spec/catalogs/languages/hausa.json +0 -12
  269. package/dist/spec/catalogs/languages/hebrew.json +0 -12
  270. package/dist/spec/catalogs/languages/hindi.json +0 -12
  271. package/dist/spec/catalogs/languages/hungarian.json +0 -12
  272. package/dist/spec/catalogs/languages/igbo.json +0 -12
  273. package/dist/spec/catalogs/languages/index.json +0 -567
  274. package/dist/spec/catalogs/languages/indonesian.json +0 -12
  275. package/dist/spec/catalogs/languages/italian.json +0 -12
  276. package/dist/spec/catalogs/languages/japanese.json +0 -12
  277. package/dist/spec/catalogs/languages/kannada.json +0 -12
  278. package/dist/spec/catalogs/languages/kazakh.json +0 -12
  279. package/dist/spec/catalogs/languages/khmer.json +0 -12
  280. package/dist/spec/catalogs/languages/kinyarwanda.json +0 -12
  281. package/dist/spec/catalogs/languages/korean.json +0 -12
  282. package/dist/spec/catalogs/languages/kurmanji.json +0 -12
  283. package/dist/spec/catalogs/languages/latvian.json +0 -12
  284. package/dist/spec/catalogs/languages/lithuanian.json +0 -12
  285. package/dist/spec/catalogs/languages/macedonian.json +0 -12
  286. package/dist/spec/catalogs/languages/malagasy.json +0 -12
  287. package/dist/spec/catalogs/languages/malay.json +0 -12
  288. package/dist/spec/catalogs/languages/malayalam.json +0 -12
  289. package/dist/spec/catalogs/languages/maori.json +0 -12
  290. package/dist/spec/catalogs/languages/marathi.json +0 -12
  291. package/dist/spec/catalogs/languages/mongolian.json +0 -12
  292. package/dist/spec/catalogs/languages/nepali.json +0 -12
  293. package/dist/spec/catalogs/languages/norwegian.json +0 -12
  294. package/dist/spec/catalogs/languages/odia.json +0 -12
  295. package/dist/spec/catalogs/languages/oromo.json +0 -12
  296. package/dist/spec/catalogs/languages/pashto.json +0 -12
  297. package/dist/spec/catalogs/languages/persian.json +0 -12
  298. package/dist/spec/catalogs/languages/polish.json +0 -12
  299. package/dist/spec/catalogs/languages/portuguese.json +0 -12
  300. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +0 -12
  301. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +0 -12
  302. package/dist/spec/catalogs/languages/romanian.json +0 -12
  303. package/dist/spec/catalogs/languages/russian.json +0 -12
  304. package/dist/spec/catalogs/languages/serbian-cyrillic.json +0 -12
  305. package/dist/spec/catalogs/languages/serbian-latin.json +0 -12
  306. package/dist/spec/catalogs/languages/shona.json +0 -12
  307. package/dist/spec/catalogs/languages/slovak.json +0 -12
  308. package/dist/spec/catalogs/languages/slovenian.json +0 -12
  309. package/dist/spec/catalogs/languages/somali.json +0 -12
  310. package/dist/spec/catalogs/languages/spanish.json +0 -12
  311. package/dist/spec/catalogs/languages/swahili.json +0 -12
  312. package/dist/spec/catalogs/languages/swedish.json +0 -12
  313. package/dist/spec/catalogs/languages/tagalog.json +0 -12
  314. package/dist/spec/catalogs/languages/tajik.json +0 -12
  315. package/dist/spec/catalogs/languages/tamil.json +0 -12
  316. package/dist/spec/catalogs/languages/telugu.json +0 -12
  317. package/dist/spec/catalogs/languages/thai.json +0 -12
  318. package/dist/spec/catalogs/languages/turkish.json +0 -12
  319. package/dist/spec/catalogs/languages/ukrainian.json +0 -12
  320. package/dist/spec/catalogs/languages/urdu.json +0 -12
  321. package/dist/spec/catalogs/languages/uzbek-latin.json +0 -12
  322. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +0 -12
  323. package/dist/spec/catalogs/languages/xhosa.json +0 -12
  324. package/dist/spec/catalogs/languages/yoruba.json +0 -12
  325. package/dist/spec/catalogs/languages/zulu.json +0 -12
  326. package/dist/spec/catalogs/layouts/action-plan.json +0 -29
  327. package/dist/spec/catalogs/layouts/agenda.json +0 -28
  328. package/dist/spec/catalogs/layouts/appendix-index.json +0 -30
  329. package/dist/spec/catalogs/layouts/architecture-stack.json +0 -29
  330. package/dist/spec/catalogs/layouts/assumptions-dependencies.json +0 -29
  331. package/dist/spec/catalogs/layouts/before-after.json +0 -35
  332. package/dist/spec/catalogs/layouts/benchmark-target-table.json +0 -29
  333. package/dist/spec/catalogs/layouts/blank.json +0 -16
  334. package/dist/spec/catalogs/layouts/bullet-list.json +0 -32
  335. package/dist/spec/catalogs/layouts/business-model-canvas.json +0 -94
  336. package/dist/spec/catalogs/layouts/capability-map.json +0 -80
  337. package/dist/spec/catalogs/layouts/case-study.json +0 -29
  338. package/dist/spec/catalogs/layouts/chapter-recap.json +0 -28
  339. package/dist/spec/catalogs/layouts/chart-1x-title-center.json +0 -30
  340. package/dist/spec/catalogs/layouts/chart-1x.json +0 -34
  341. package/dist/spec/catalogs/layouts/chart-2x-title-center.json +0 -36
  342. package/dist/spec/catalogs/layouts/chart-2x-vertical-title-left.json +0 -37
  343. package/dist/spec/catalogs/layouts/chart-2x.json +0 -65
  344. package/dist/spec/catalogs/layouts/chart-3x-bottom-vertical-title-left.json +0 -52
  345. package/dist/spec/catalogs/layouts/chart-3x-left-title-center.json +0 -51
  346. package/dist/spec/catalogs/layouts/chart-3x-left.json +0 -46
  347. package/dist/spec/catalogs/layouts/chart-3x-right-title-center.json +0 -51
  348. package/dist/spec/catalogs/layouts/chart-3x-right.json +0 -46
  349. package/dist/spec/catalogs/layouts/chart-3x-title-center.json +0 -39
  350. package/dist/spec/catalogs/layouts/chart-3x-top-vertical-title-left.json +0 -52
  351. package/dist/spec/catalogs/layouts/chart-3x.json +0 -83
  352. package/dist/spec/catalogs/layouts/circular-lifecycle.json +0 -29
  353. package/dist/spec/catalogs/layouts/code-1x.json +0 -29
  354. package/dist/spec/catalogs/layouts/comparison.json +0 -35
  355. package/dist/spec/catalogs/layouts/competitive-landscape.json +0 -30
  356. package/dist/spec/catalogs/layouts/customer-journey.json +0 -30
  357. package/dist/spec/catalogs/layouts/customer-logos.json +0 -32
  358. package/dist/spec/catalogs/layouts/dashboard.json +0 -67
  359. package/dist/spec/catalogs/layouts/data-visualization.json +0 -39
  360. package/dist/spec/catalogs/layouts/decision-tree.json +0 -30
  361. package/dist/spec/catalogs/layouts/detailed-data-table.json +0 -35
  362. package/dist/spec/catalogs/layouts/ecosystem-map.json +0 -30
  363. package/dist/spec/catalogs/layouts/executive-decision.json +0 -32
  364. package/dist/spec/catalogs/layouts/executive-summary.json +0 -32
  365. package/dist/spec/catalogs/layouts/extract/canonical.json +0 -575
  366. package/dist/spec/catalogs/layouts/faq.json +0 -29
  367. package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +0 -29
  368. package/dist/spec/catalogs/layouts/forecast-scenario.json +0 -39
  369. package/dist/spec/catalogs/layouts/funnel-pyramid.json +0 -32
  370. package/dist/spec/catalogs/layouts/gantt-project-plan.json +0 -32
  371. package/dist/spec/catalogs/layouts/geographic-map.json +0 -30
  372. package/dist/spec/catalogs/layouts/heatmap-cohort.json +0 -32
  373. package/dist/spec/catalogs/layouts/hub-and-spoke.json +0 -29
  374. package/dist/spec/catalogs/layouts/icon-grid.json +0 -30
  375. package/dist/spec/catalogs/layouts/image-1x-crop-title-center.json +0 -32
  376. package/dist/spec/catalogs/layouts/image-1x-crop-title-left.json +0 -32
  377. package/dist/spec/catalogs/layouts/image-1x-crop.json +0 -27
  378. package/dist/spec/catalogs/layouts/image-1x-fit-title-center.json +0 -32
  379. package/dist/spec/catalogs/layouts/image-1x.json +0 -32
  380. package/dist/spec/catalogs/layouts/image-2x-crop-title-center.json +0 -38
  381. package/dist/spec/catalogs/layouts/image-2x-crop-vertical-title-left.json +0 -39
  382. package/dist/spec/catalogs/layouts/image-2x-crop-vertical.json +0 -34
  383. package/dist/spec/catalogs/layouts/image-2x-crop.json +0 -33
  384. package/dist/spec/catalogs/layouts/image-2x-fit-title-center.json +0 -38
  385. package/dist/spec/catalogs/layouts/image-2x-fit-vertical-title-left.json +0 -39
  386. package/dist/spec/catalogs/layouts/image-2x-fit-vertical.json +0 -34
  387. package/dist/spec/catalogs/layouts/image-2x.json +0 -63
  388. package/dist/spec/catalogs/layouts/image-3x-crop-title-center.json +0 -41
  389. package/dist/spec/catalogs/layouts/image-3x-crop-vertical-title-left.json +0 -42
  390. package/dist/spec/catalogs/layouts/image-3x-crop-vertical.json +0 -37
  391. package/dist/spec/catalogs/layouts/image-3x-crop.json +0 -36
  392. package/dist/spec/catalogs/layouts/image-3x-fit-title-center.json +0 -41
  393. package/dist/spec/catalogs/layouts/image-3x-fit-vertical-title-left.json +0 -42
  394. package/dist/spec/catalogs/layouts/image-3x-fit-vertical.json +0 -37
  395. package/dist/spec/catalogs/layouts/image-3x-fit.json +0 -36
  396. package/dist/spec/catalogs/layouts/image-3x.json +0 -81
  397. package/dist/spec/catalogs/layouts/image-focus.json +0 -30
  398. package/dist/spec/catalogs/layouts/image-only-1x-crop-title-center.json +0 -31
  399. package/dist/spec/catalogs/layouts/image-only-1x-fit-title-center.json +0 -31
  400. package/dist/spec/catalogs/layouts/image-only-2x-crop-title-center.json +0 -37
  401. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical-title-left.json +0 -38
  402. package/dist/spec/catalogs/layouts/image-only-2x-crop-vertical.json +0 -33
  403. package/dist/spec/catalogs/layouts/image-only-2x-fit-title-center.json +0 -37
  404. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical-title-left.json +0 -38
  405. package/dist/spec/catalogs/layouts/image-only-2x-fit-vertical.json +0 -33
  406. package/dist/spec/catalogs/layouts/image-only-3x-crop-title-center.json +0 -40
  407. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical-title-left.json +0 -41
  408. package/dist/spec/catalogs/layouts/image-only-3x-crop-vertical.json +0 -36
  409. package/dist/spec/catalogs/layouts/image-only-3x-crop.json +0 -35
  410. package/dist/spec/catalogs/layouts/image-only-3x-fit-title-center.json +0 -40
  411. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical-title-left.json +0 -41
  412. package/dist/spec/catalogs/layouts/image-only-3x-fit-vertical.json +0 -36
  413. package/dist/spec/catalogs/layouts/image-only-3x-fit.json +0 -35
  414. package/dist/spec/catalogs/layouts/index.json +0 -1399
  415. package/dist/spec/catalogs/layouts/key-takeaway.json +0 -25
  416. package/dist/spec/catalogs/layouts/kpi-scorecard.json +0 -83
  417. package/dist/spec/catalogs/layouts/list-1x-box-title-center.json +0 -32
  418. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-center.json +0 -33
  419. package/dist/spec/catalogs/layouts/list-1x-box-vertical-title-left.json +0 -33
  420. package/dist/spec/catalogs/layouts/list-1x-box-vertical.json +0 -28
  421. package/dist/spec/catalogs/layouts/list-1x-box.json +0 -27
  422. package/dist/spec/catalogs/layouts/list-1x-itemimage-title-center.json +0 -32
  423. package/dist/spec/catalogs/layouts/list-1x-itemimage-vertical-title-center.json +0 -33
  424. package/dist/spec/catalogs/layouts/list-1x-title-center.json +0 -31
  425. package/dist/spec/catalogs/layouts/list-1x-vertical-title-center.json +0 -32
  426. package/dist/spec/catalogs/layouts/list-1x.json +0 -29
  427. package/dist/spec/catalogs/layouts/list-2x-box-title-center.json +0 -38
  428. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-center.json +0 -39
  429. package/dist/spec/catalogs/layouts/list-2x-box-vertical-title-left.json +0 -39
  430. package/dist/spec/catalogs/layouts/list-2x-box-vertical.json +0 -34
  431. package/dist/spec/catalogs/layouts/list-2x-box.json +0 -33
  432. package/dist/spec/catalogs/layouts/list-2x-itemimage-title-center.json +0 -38
  433. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-center.json +0 -39
  434. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical-title-left.json +0 -39
  435. package/dist/spec/catalogs/layouts/list-2x-itemimage-vertical.json +0 -34
  436. package/dist/spec/catalogs/layouts/list-2x-title-center.json +0 -37
  437. package/dist/spec/catalogs/layouts/list-2x-vertical-title-center.json +0 -38
  438. package/dist/spec/catalogs/layouts/list-2x-vertical-title-left.json +0 -38
  439. package/dist/spec/catalogs/layouts/list-2x-vertical.json +0 -33
  440. package/dist/spec/catalogs/layouts/list-2x.json +0 -35
  441. package/dist/spec/catalogs/layouts/list-3x-box-title-center.json +0 -41
  442. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-center.json +0 -42
  443. package/dist/spec/catalogs/layouts/list-3x-box-vertical-title-left.json +0 -42
  444. package/dist/spec/catalogs/layouts/list-3x-box-vertical.json +0 -37
  445. package/dist/spec/catalogs/layouts/list-3x-box.json +0 -36
  446. package/dist/spec/catalogs/layouts/list-3x-itemimage-title-center.json +0 -41
  447. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-center.json +0 -42
  448. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical-title-left.json +0 -42
  449. package/dist/spec/catalogs/layouts/list-3x-itemimage-vertical.json +0 -37
  450. package/dist/spec/catalogs/layouts/list-3x-itemimage.json +0 -36
  451. package/dist/spec/catalogs/layouts/list-3x-title-center.json +0 -40
  452. package/dist/spec/catalogs/layouts/list-3x-vertical-title-center.json +0 -41
  453. package/dist/spec/catalogs/layouts/list-3x-vertical-title-left.json +0 -41
  454. package/dist/spec/catalogs/layouts/list-3x-vertical.json +0 -36
  455. package/dist/spec/catalogs/layouts/list-3x.json +0 -38
  456. package/dist/spec/catalogs/layouts/list-4x-box-title-center.json +0 -45
  457. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-center.json +0 -45
  458. package/dist/spec/catalogs/layouts/list-4x-box-vertical-title-left.json +0 -45
  459. package/dist/spec/catalogs/layouts/list-4x-box-vertical.json +0 -40
  460. package/dist/spec/catalogs/layouts/list-4x-box.json +0 -40
  461. package/dist/spec/catalogs/layouts/list-4x-itemimage-title-center.json +0 -45
  462. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-center.json +0 -45
  463. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical-title-left.json +0 -45
  464. package/dist/spec/catalogs/layouts/list-4x-itemimage-vertical.json +0 -40
  465. package/dist/spec/catalogs/layouts/list-4x-title-center.json +0 -44
  466. package/dist/spec/catalogs/layouts/list-4x-vertical-title-center.json +0 -44
  467. package/dist/spec/catalogs/layouts/list-4x-vertical-title-left.json +0 -44
  468. package/dist/spec/catalogs/layouts/list-4x-vertical.json +0 -39
  469. package/dist/spec/catalogs/layouts/list-4x.json +0 -42
  470. package/dist/spec/catalogs/layouts/list-5x-box-title-center.json +0 -48
  471. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-center.json +0 -50
  472. package/dist/spec/catalogs/layouts/list-5x-box-vertical-title-left.json +0 -50
  473. package/dist/spec/catalogs/layouts/list-5x-box-vertical.json +0 -45
  474. package/dist/spec/catalogs/layouts/list-5x-box.json +0 -43
  475. package/dist/spec/catalogs/layouts/list-5x-itemimage-title-center.json +0 -48
  476. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-center.json +0 -48
  477. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical-title-left.json +0 -48
  478. package/dist/spec/catalogs/layouts/list-5x-itemimage-vertical.json +0 -43
  479. package/dist/spec/catalogs/layouts/list-5x-title-center.json +0 -47
  480. package/dist/spec/catalogs/layouts/list-5x-vertical-title-center.json +0 -47
  481. package/dist/spec/catalogs/layouts/list-5x-vertical-title-left.json +0 -47
  482. package/dist/spec/catalogs/layouts/list-5x-vertical.json +0 -42
  483. package/dist/spec/catalogs/layouts/list-5x.json +0 -45
  484. package/dist/spec/catalogs/layouts/list-6x-box-title-center.json +0 -51
  485. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-center.json +0 -53
  486. package/dist/spec/catalogs/layouts/list-6x-box-vertical-title-left.json +0 -53
  487. package/dist/spec/catalogs/layouts/list-6x-box-vertical.json +0 -48
  488. package/dist/spec/catalogs/layouts/list-6x-box.json +0 -46
  489. package/dist/spec/catalogs/layouts/list-6x-itemimage-title-center.json +0 -51
  490. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-center.json +0 -51
  491. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical-title-left.json +0 -51
  492. package/dist/spec/catalogs/layouts/list-6x-itemimage-vertical.json +0 -46
  493. package/dist/spec/catalogs/layouts/list-6x-title-center.json +0 -50
  494. package/dist/spec/catalogs/layouts/list-6x-vertical-title-center.json +0 -50
  495. package/dist/spec/catalogs/layouts/list-6x-vertical-title-left.json +0 -50
  496. package/dist/spec/catalogs/layouts/list-6x-vertical.json +0 -45
  497. package/dist/spec/catalogs/layouts/list-6x.json +0 -48
  498. package/dist/spec/catalogs/layouts/logic-tree.json +0 -98
  499. package/dist/spec/catalogs/layouts/market-size.json +0 -53
  500. package/dist/spec/catalogs/layouts/matrix-quadrant.json +0 -42
  501. package/dist/spec/catalogs/layouts/media-1x.json +0 -29
  502. package/dist/spec/catalogs/layouts/network-dependency-map.json +0 -30
  503. package/dist/spec/catalogs/layouts/number-1x-box-title-center.json +0 -30
  504. package/dist/spec/catalogs/layouts/number-1x-box.json +0 -25
  505. package/dist/spec/catalogs/layouts/number-1x-title-center.json +0 -29
  506. package/dist/spec/catalogs/layouts/number-1x.json +0 -28
  507. package/dist/spec/catalogs/layouts/number-2x-box-title-center.json +0 -36
  508. package/dist/spec/catalogs/layouts/number-2x-box.json +0 -31
  509. package/dist/spec/catalogs/layouts/number-2x-title-center.json +0 -35
  510. package/dist/spec/catalogs/layouts/number-2x.json +0 -34
  511. package/dist/spec/catalogs/layouts/number-3x-box-title-center.json +0 -39
  512. package/dist/spec/catalogs/layouts/number-3x-box.json +0 -34
  513. package/dist/spec/catalogs/layouts/number-3x-title-center.json +0 -38
  514. package/dist/spec/catalogs/layouts/number-3x.json +0 -37
  515. package/dist/spec/catalogs/layouts/number-4x-box-title-center.json +0 -43
  516. package/dist/spec/catalogs/layouts/number-4x-box.json +0 -38
  517. package/dist/spec/catalogs/layouts/number-4x-title-center.json +0 -42
  518. package/dist/spec/catalogs/layouts/number-4x.json +0 -41
  519. package/dist/spec/catalogs/layouts/number-5x-box-title-center.json +0 -46
  520. package/dist/spec/catalogs/layouts/number-5x-box.json +0 -41
  521. package/dist/spec/catalogs/layouts/number-5x-title-center.json +0 -45
  522. package/dist/spec/catalogs/layouts/number-5x.json +0 -44
  523. package/dist/spec/catalogs/layouts/number-6x-box-title-center.json +0 -49
  524. package/dist/spec/catalogs/layouts/number-6x-box.json +0 -44
  525. package/dist/spec/catalogs/layouts/number-6x-title-center.json +0 -48
  526. package/dist/spec/catalogs/layouts/number-6x.json +0 -47
  527. package/dist/spec/catalogs/layouts/one-column-explainer.json +0 -29
  528. package/dist/spec/catalogs/layouts/org-chart.json +0 -86
  529. package/dist/spec/catalogs/layouts/persona-grid.json +0 -30
  530. package/dist/spec/catalogs/layouts/photo-grid.json +0 -43
  531. package/dist/spec/catalogs/layouts/pricing-table.json +0 -29
  532. package/dist/spec/catalogs/layouts/process-flow.json +0 -29
  533. package/dist/spec/catalogs/layouts/product-feature.json +0 -30
  534. package/dist/spec/catalogs/layouts/pros-cons.json +0 -35
  535. package/dist/spec/catalogs/layouts/qa-discussion.json +0 -30
  536. package/dist/spec/catalogs/layouts/quote-1x.json +0 -23
  537. package/dist/spec/catalogs/layouts/quote-highlight.json +0 -29
  538. package/dist/spec/catalogs/layouts/raci-matrix.json +0 -29
  539. package/dist/spec/catalogs/layouts/risk-heatmap.json +0 -29
  540. package/dist/spec/catalogs/layouts/roadmap.json +0 -29
  541. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +0 -30
  542. package/dist/spec/catalogs/layouts/section-divider.json +0 -28
  543. package/dist/spec/catalogs/layouts/single-message-statement.json +0 -25
  544. package/dist/spec/catalogs/layouts/stats-metrics.json +0 -39
  545. package/dist/spec/catalogs/layouts/status-rag.json +0 -29
  546. package/dist/spec/catalogs/layouts/swimlane-process.json +0 -30
  547. package/dist/spec/catalogs/layouts/swot-analysis.json +0 -42
  548. package/dist/spec/catalogs/layouts/table-1x.json +0 -29
  549. package/dist/spec/catalogs/layouts/team-bio.json +0 -30
  550. package/dist/spec/catalogs/layouts/testimonial-grid.json +0 -38
  551. package/dist/spec/catalogs/layouts/text-1x-box-title-center.json +0 -31
  552. package/dist/spec/catalogs/layouts/text-1x-box-title-left.json +0 -31
  553. package/dist/spec/catalogs/layouts/text-1x-center-box-title-center.json +0 -31
  554. package/dist/spec/catalogs/layouts/text-1x-center-box-title-left.json +0 -31
  555. package/dist/spec/catalogs/layouts/text-1x-center-box.json +0 -26
  556. package/dist/spec/catalogs/layouts/text-1x-center-title-center.json +0 -30
  557. package/dist/spec/catalogs/layouts/text-1x-center-title-left.json +0 -30
  558. package/dist/spec/catalogs/layouts/text-1x-center.json +0 -25
  559. package/dist/spec/catalogs/layouts/text-1x-left-box.json +0 -26
  560. package/dist/spec/catalogs/layouts/text-1x-title-center.json +0 -30
  561. package/dist/spec/catalogs/layouts/text-1x.json +0 -23
  562. package/dist/spec/catalogs/layouts/text-2x-box-title-center.json +0 -37
  563. package/dist/spec/catalogs/layouts/text-2x-box-vertical-title-left.json +0 -37
  564. package/dist/spec/catalogs/layouts/text-2x-center-box-title-center.json +0 -37
  565. package/dist/spec/catalogs/layouts/text-2x-center-box-vertical-title-left.json +0 -37
  566. package/dist/spec/catalogs/layouts/text-2x-center-box.json +0 -32
  567. package/dist/spec/catalogs/layouts/text-2x-center-title-center.json +0 -36
  568. package/dist/spec/catalogs/layouts/text-2x-center-vertical-title-left.json +0 -36
  569. package/dist/spec/catalogs/layouts/text-2x-center.json +0 -31
  570. package/dist/spec/catalogs/layouts/text-2x-left-box.json +0 -32
  571. package/dist/spec/catalogs/layouts/text-2x-title-center.json +0 -36
  572. package/dist/spec/catalogs/layouts/text-2x-vertical-title-left.json +0 -36
  573. package/dist/spec/catalogs/layouts/text-2x.json +0 -29
  574. package/dist/spec/catalogs/layouts/text-3x-box-title-center.json +0 -40
  575. package/dist/spec/catalogs/layouts/text-3x-box-vertical-title-left.json +0 -41
  576. package/dist/spec/catalogs/layouts/text-3x-center-box-title-center.json +0 -40
  577. package/dist/spec/catalogs/layouts/text-3x-center-box-vertical-title-left.json +0 -41
  578. package/dist/spec/catalogs/layouts/text-3x-center-box.json +0 -35
  579. package/dist/spec/catalogs/layouts/text-3x-center-title-center.json +0 -39
  580. package/dist/spec/catalogs/layouts/text-3x-center-vertical-title-left.json +0 -40
  581. package/dist/spec/catalogs/layouts/text-3x-center.json +0 -34
  582. package/dist/spec/catalogs/layouts/text-3x-left-box.json +0 -35
  583. package/dist/spec/catalogs/layouts/text-3x-left.json +0 -34
  584. package/dist/spec/catalogs/layouts/text-3x-title-center.json +0 -39
  585. package/dist/spec/catalogs/layouts/text-3x-vertical-title-left.json +0 -40
  586. package/dist/spec/catalogs/layouts/text-3x.json +0 -32
  587. package/dist/spec/catalogs/layouts/thank-you-cta.json +0 -28
  588. package/dist/spec/catalogs/layouts/three-column.json +0 -39
  589. package/dist/spec/catalogs/layouts/timeline-1x.json +0 -23
  590. package/dist/spec/catalogs/layouts/timeline.json +0 -32
  591. package/dist/spec/catalogs/layouts/title-center-box.json +0 -27
  592. package/dist/spec/catalogs/layouts/title-center-image-bottom.json +0 -34
  593. package/dist/spec/catalogs/layouts/title-center-image-top.json +0 -34
  594. package/dist/spec/catalogs/layouts/title-center.json +0 -26
  595. package/dist/spec/catalogs/layouts/title-left-image-bottom.json +0 -34
  596. package/dist/spec/catalogs/layouts/title-left-image-left.json +0 -34
  597. package/dist/spec/catalogs/layouts/title-left-image-right.json +0 -34
  598. package/dist/spec/catalogs/layouts/title-left-image-top.json +0 -34
  599. package/dist/spec/catalogs/layouts/title-slide.json +0 -28
  600. package/dist/spec/catalogs/layouts/title-subtitle.json +0 -23
  601. package/dist/spec/catalogs/layouts/title.json +0 -20
  602. package/dist/spec/catalogs/layouts/two-column.json +0 -36
  603. package/dist/spec/catalogs/layouts/venn-overlap.json +0 -29
  604. package/dist/spec/catalogs/layouts/waterfall-bridge.json +0 -39
  605. package/dist/spec/catalogs/layouts/wheel-radial.json +0 -29
  606. package/dist/spec/catalogs/manifest.json +0 -111
  607. package/dist/spec/catalogs/narratives/board-meeting.json +0 -192
  608. package/dist/spec/catalogs/narratives/business-narrative.json +0 -87
  609. package/dist/spec/catalogs/narratives/business-review.json +0 -119
  610. package/dist/spec/catalogs/narratives/capacity-planning.json +0 -88
  611. package/dist/spec/catalogs/narratives/challenge-resolution.json +0 -80
  612. package/dist/spec/catalogs/narratives/change-story.json +0 -64
  613. package/dist/spec/catalogs/narratives/classic-story.json +0 -78
  614. package/dist/spec/catalogs/narratives/company-intro.json +0 -96
  615. package/dist/spec/catalogs/narratives/conference-talk.json +0 -54
  616. package/dist/spec/catalogs/narratives/data-story.json +0 -65
  617. package/dist/spec/catalogs/narratives/early-startup-pitch.json +0 -119
  618. package/dist/spec/catalogs/narratives/educate.json +0 -95
  619. package/dist/spec/catalogs/narratives/employee-review.json +0 -87
  620. package/dist/spec/catalogs/narratives/failure-analysis.json +0 -104
  621. package/dist/spec/catalogs/narratives/focus.json +0 -120
  622. package/dist/spec/catalogs/narratives/golden-circle.json +0 -50
  623. package/dist/spec/catalogs/narratives/heros-journey.json +0 -64
  624. package/dist/spec/catalogs/narratives/index.json +0 -1041
  625. package/dist/spec/catalogs/narratives/innovation.json +0 -96
  626. package/dist/spec/catalogs/narratives/justice.json +0 -112
  627. package/dist/spec/catalogs/narratives/marketing-strategy.json +0 -111
  628. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +0 -87
  629. package/dist/spec/catalogs/narratives/performance-review.json +0 -111
  630. package/dist/spec/catalogs/narratives/persuade.json +0 -94
  631. package/dist/spec/catalogs/narratives/persuasive-sales.json +0 -87
  632. package/dist/spec/catalogs/narratives/pitch-deck.json +0 -107
  633. package/dist/spec/catalogs/narratives/problem-solution.json +0 -61
  634. package/dist/spec/catalogs/narratives/product-launch.json +0 -104
  635. package/dist/spec/catalogs/narratives/project-proposal.json +0 -104
  636. package/dist/spec/catalogs/narratives/pyramid-principle.json +0 -48
  637. package/dist/spec/catalogs/narratives/qbr.json +0 -85
  638. package/dist/spec/catalogs/narratives/rags-to-riches.json +0 -80
  639. package/dist/spec/catalogs/narratives/reveal.json +0 -87
  640. package/dist/spec/catalogs/narratives/scqa.json +0 -55
  641. package/dist/spec/catalogs/narratives/situation-complication-resolution.json +0 -56
  642. package/dist/spec/catalogs/narratives/sparkline.json +0 -56
  643. package/dist/spec/catalogs/narratives/star-method.json +0 -56
  644. package/dist/spec/catalogs/narratives/status-update.json +0 -72
  645. package/dist/spec/catalogs/narratives/strategic-advisory.json +0 -85
  646. package/dist/spec/catalogs/narratives/strategic-narrative.json +0 -61
  647. package/dist/spec/catalogs/narratives/survey-analysis.json +0 -104
  648. package/dist/spec/catalogs/narratives/survival-story.json +0 -103
  649. package/dist/spec/catalogs/narratives/transformation-arc.json +0 -50
  650. package/dist/spec/catalogs/narratives/trend-analysis.json +0 -79
  651. package/dist/spec/catalogs/narratives/underdog-victory.json +0 -87
  652. package/dist/spec/catalogs/narratives/venture-pitch.json +0 -109
  653. package/dist/spec/catalogs/narratives/vision-roadmap.json +0 -65
  654. package/dist/spec/catalogs/narratives/weekly-progress.json +0 -103
  655. package/dist/spec/catalogs/narratives/what-so-what-now-what.json +0 -48
  656. package/dist/spec/catalogs/purposes/align.json +0 -16
  657. package/dist/spec/catalogs/purposes/decide.json +0 -16
  658. package/dist/spec/catalogs/purposes/educate.json +0 -16
  659. package/dist/spec/catalogs/purposes/index.json +0 -63
  660. package/dist/spec/catalogs/purposes/inform.json +0 -16
  661. package/dist/spec/catalogs/purposes/persuade.json +0 -16
  662. package/dist/spec/catalogs/purposes/pitch.json +0 -16
  663. package/dist/spec/catalogs/purposes/plan.json +0 -16
  664. package/dist/spec/catalogs/purposes/report.json +0 -16
  665. package/dist/spec/catalogs/purposes/sell.json +0 -16
  666. package/dist/spec/catalogs/social-platforms/bluesky.json +0 -14
  667. package/dist/spec/catalogs/social-platforms/facebook.json +0 -14
  668. package/dist/spec/catalogs/social-platforms/github.json +0 -15
  669. package/dist/spec/catalogs/social-platforms/index.json +0 -69
  670. package/dist/spec/catalogs/social-platforms/instagram.json +0 -13
  671. package/dist/spec/catalogs/social-platforms/linkedin.json +0 -15
  672. package/dist/spec/catalogs/social-platforms/mastodon.json +0 -14
  673. package/dist/spec/catalogs/social-platforms/threads.json +0 -13
  674. package/dist/spec/catalogs/social-platforms/tiktok.json +0 -14
  675. package/dist/spec/catalogs/social-platforms/x.json +0 -14
  676. package/dist/spec/catalogs/social-platforms/youtube.json +0 -14
  677. package/dist/spec/catalogs/themes/bold.json +0 -13
  678. package/dist/spec/catalogs/themes/classic.json +0 -13
  679. package/dist/spec/catalogs/themes/dark.json +0 -13
  680. package/dist/spec/catalogs/themes/index.json +0 -33
  681. package/dist/spec/catalogs/themes/minimal.json +0 -13
  682. package/dist/spec/catalogs/tones/authoritative.json +0 -31
  683. package/dist/spec/catalogs/tones/casual.json +0 -31
  684. package/dist/spec/catalogs/tones/conversational.json +0 -31
  685. package/dist/spec/catalogs/tones/formal.json +0 -31
  686. package/dist/spec/catalogs/tones/index.json +0 -51
  687. package/dist/spec/catalogs/tones/inspirational.json +0 -31
  688. package/dist/spec/catalogs/tones/persuasive.json +0 -32
  689. package/dist/spec/catalogs/tones/technical.json +0 -31
  690. package/dist/spec/previews/layouts/action-plan.html +0 -1
  691. package/dist/spec/previews/layouts/agenda.html +0 -1
  692. package/dist/spec/previews/layouts/appendix-index.html +0 -1
  693. package/dist/spec/previews/layouts/architecture-stack.html +0 -1
  694. package/dist/spec/previews/layouts/assumptions-dependencies.html +0 -1
  695. package/dist/spec/previews/layouts/before-after.html +0 -1
  696. package/dist/spec/previews/layouts/benchmark-target-table.html +0 -1
  697. package/dist/spec/previews/layouts/bullet-list.html +0 -1
  698. package/dist/spec/previews/layouts/business-model-canvas.html +0 -1
  699. package/dist/spec/previews/layouts/capability-map.html +0 -1
  700. package/dist/spec/previews/layouts/case-study.html +0 -1
  701. package/dist/spec/previews/layouts/chapter-recap.html +0 -1
  702. package/dist/spec/previews/layouts/circular-lifecycle.html +0 -1
  703. package/dist/spec/previews/layouts/comparison.html +0 -1
  704. package/dist/spec/previews/layouts/competitive-landscape.html +0 -1
  705. package/dist/spec/previews/layouts/customer-journey.html +0 -1
  706. package/dist/spec/previews/layouts/customer-logos.html +0 -1
  707. package/dist/spec/previews/layouts/dashboard.html +0 -1
  708. package/dist/spec/previews/layouts/data-visualization.html +0 -1
  709. package/dist/spec/previews/layouts/decision-tree.html +0 -1
  710. package/dist/spec/previews/layouts/detailed-data-table.html +0 -1
  711. package/dist/spec/previews/layouts/ecosystem-map.html +0 -1
  712. package/dist/spec/previews/layouts/executive-decision.html +0 -1
  713. package/dist/spec/previews/layouts/executive-summary.html +0 -1
  714. package/dist/spec/previews/layouts/faq.html +0 -1
  715. package/dist/spec/previews/layouts/feature-comparison-matrix.html +0 -1
  716. package/dist/spec/previews/layouts/forecast-scenario.html +0 -1
  717. package/dist/spec/previews/layouts/funnel-pyramid.html +0 -1
  718. package/dist/spec/previews/layouts/gantt-project-plan.html +0 -1
  719. package/dist/spec/previews/layouts/geographic-map.html +0 -1
  720. package/dist/spec/previews/layouts/heatmap-cohort.html +0 -1
  721. package/dist/spec/previews/layouts/hub-and-spoke.html +0 -1
  722. package/dist/spec/previews/layouts/icon-grid.html +0 -1
  723. package/dist/spec/previews/layouts/image-focus.html +0 -1
  724. package/dist/spec/previews/layouts/index.json +0 -357
  725. package/dist/spec/previews/layouts/key-takeaway.html +0 -1
  726. package/dist/spec/previews/layouts/kpi-scorecard.html +0 -1
  727. package/dist/spec/previews/layouts/logic-tree.html +0 -1
  728. package/dist/spec/previews/layouts/market-size.html +0 -1
  729. package/dist/spec/previews/layouts/matrix-quadrant.html +0 -1
  730. package/dist/spec/previews/layouts/network-dependency-map.html +0 -1
  731. package/dist/spec/previews/layouts/one-column-explainer.html +0 -1
  732. package/dist/spec/previews/layouts/org-chart.html +0 -1
  733. package/dist/spec/previews/layouts/persona-grid.html +0 -1
  734. package/dist/spec/previews/layouts/photo-grid.html +0 -1
  735. package/dist/spec/previews/layouts/pricing-table.html +0 -1
  736. package/dist/spec/previews/layouts/process-flow.html +0 -1
  737. package/dist/spec/previews/layouts/product-feature.html +0 -1
  738. package/dist/spec/previews/layouts/pros-cons.html +0 -1
  739. package/dist/spec/previews/layouts/qa-discussion.html +0 -1
  740. package/dist/spec/previews/layouts/quote-highlight.html +0 -1
  741. package/dist/spec/previews/layouts/raci-matrix.html +0 -1
  742. package/dist/spec/previews/layouts/risk-heatmap.html +0 -1
  743. package/dist/spec/previews/layouts/roadmap.html +0 -1
  744. package/dist/spec/previews/layouts/screenshot-walkthrough.html +0 -1
  745. package/dist/spec/previews/layouts/section-divider.html +0 -1
  746. package/dist/spec/previews/layouts/single-message-statement.html +0 -1
  747. package/dist/spec/previews/layouts/stats-metrics.html +0 -1
  748. package/dist/spec/previews/layouts/status-rag.html +0 -1
  749. package/dist/spec/previews/layouts/swimlane-process.html +0 -1
  750. package/dist/spec/previews/layouts/swot-analysis.html +0 -1
  751. package/dist/spec/previews/layouts/team-bio.html +0 -1
  752. package/dist/spec/previews/layouts/testimonial-grid.html +0 -1
  753. package/dist/spec/previews/layouts/thank-you-cta.html +0 -1
  754. package/dist/spec/previews/layouts/three-column.html +0 -1
  755. package/dist/spec/previews/layouts/timeline.html +0 -1
  756. package/dist/spec/previews/layouts/title-slide.html +0 -1
  757. package/dist/spec/previews/layouts/two-column.html +0 -1
  758. package/dist/spec/previews/layouts/venn-overlap.html +0 -1
  759. package/dist/spec/previews/layouts/waterfall-bridge.html +0 -1
  760. package/dist/spec/previews/layouts/wheel-radial.html +0 -1
@@ -1,5 +1,5 @@
1
1
  // src/generated/repo-readme.ts
2
- var repoReadmeRaw = '# Open Presentation Format (OPF)\n\n[![npm version](https://img.shields.io/npm/v/@openpresentation/opf?label=npm)](https://www.npmjs.com/package/@openpresentation/opf)\n[![npm downloads](https://img.shields.io/npm/dw/@openpresentation/opf)](https://www.npmjs.com/package/@openpresentation/opf)\n[![license](https://img.shields.io/npm/l/@openpresentation/opf)](./LICENSE)\n\nPublic npm package: [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf) (`npm install @openpresentation/opf`).\n\nOpen Presentation Format is the portable, human-readable JSON document format for slide decks.\n\nThis repository is the canonical home for the OPF **spec**, **JSON Schemas**, **catalog presets**, examples, generated developer types, local validation tooling, and integration docs for the render/edit/convert toolkit. OpenPresentation publishes open-source code and documentation only; it does not provide hosted APIs, hosted rendering functions, queues, storage, authentication, jobs, previews, SLAs, telemetry, or managed infrastructure.\n\nFor AI agents, use the [OPF skill set](docs/agent-skills.md) for authoring, layout, presets, editing, export, and schema inspection.\n\nPublished CLI 0.18.0 installs all six skills into your project with `npx @openpresentation/cli@0.18.0 skills install`. It uses local copies, preserves existing instructions and refuses to overwrite customized skills. See the [installation and update guide](docs/agent-skills.md) for personal or agent-specific targets and source development.\n\nFor a fresh Node 24 project that installs **published** packages (not this\ncheckout), follow the [developer quickstart](docs/quickstart.md) and the\n[compatibility matrix](docs/compatibility-matrix.md).\n\nFor LLM authoring, start with [the authoring guide](docs/llm-authoring.md), [dynamic composition](docs/dynamic-composition.md), and [local ecosystem verification](docs/ecosystem-development.md).\n\n## File naming\n\nOpen Presentation Format documents are JSON files. Use `*.opf.json` for complete OPF presentation documents, for example `board-review.opf.json` or `deck.opf.json`.\n\nAvoid using bare `*.opf` for OPF JSON. The `.opf` extension is already used by other document and project formats, while `.opf.json` keeps the OPF identity and still makes the underlying JSON format clear to editors, validators, agents, and version-control tooling.\n\n## Naming and reuse\n\nThe format name is **Open Presentation Format**. The schemas, catalogs, packages, and local tooling in this repository are free and open source under the MIT license, so third-party tools may read, write, validate, render, convert, and describe support for Open Presentation Format without adopting any product-specific branding.\n\n## Why OPF\n\n`.pptx` is a zipped bundle of XML. Humans can\'t diff it, LLMs can\'t read or write it reliably, and git can\'t track it meaningfully. Every change looks like a binary blob.\n\nOPF is plain JSON. A human can open it in an editor. A model can read and write it without guessing at schema-by-example. Decks live in git like the rest of your work.\n\nThat\'s the shift that lets LLMs actually *author* decks. When the format stops fighting them, models can do the work that matters \u2014 narrative structure, persuasive framing, data analysis, chart recommendations, ruthless revision passes \u2014 instead of wrestling with `<p:sp>` tags.\n\nAnd they don\'t start from a blank canvas. [pptx.gallery](https://pptx.gallery) is the human-browsable reference for OPF catalog presets: layouts, themes, color schemes, font schemes, chart types, narratives, audiences, purposes, tones, languages, and social platforms.\n\n## Start in three steps\n\n1. **Install the coordinated published packages** on Node 24. See [the developer quickstart](docs/quickstart.md) for the current pin set: core 0.18.1, renderer 0.18.0, editor 0.18.0, PPTX 0.18.0 and CLI 0.18.0.\n2. **Author, validate, paginate, preview and export.** Copy [`docs/quickstart/developer-quickstart.opf.json`](./docs/quickstart/developer-quickstart.opf.json) and run the commands in that guide. From code, `convert("deck.opf.md", "deck.pdf")` of `@openpresentation/opf` is the simple path to a PDF, PNG, SVG or PPTX file. `validate` / `opf validate` is one local checker for format, references, accessibility, layout and content ([guide](docs/validate.md)), not visual verification.\n3. **Know the limits.** The [compatibility matrix](docs/compatibility-matrix.md) lists shipped APIs versus renderer issue 24, native PowerPoint issue 87, and other deferred work. Browse presets at [pptx.gallery](https://pptx.gallery).\n\nYour deck can live in git from the first commit. After installing dependencies and supplying referenced assets, these commands run locally without a model provider, account or hosted OPF API.\n\n## JavaScript and TypeScript\n\nThe canonical JavaScript/TypeScript package is published at [`packages/javascript`](./packages/javascript) as [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf). The schema is pre-stable (0.x \u2014 expect breaking changes between minor versions until 1.0). Its responsibility is local and format-level only:\n\n- export the canonical schemas from [`spec/`](./spec)\n- export the pinned default catalog (the pptx.gallery snapshot in [`spec/catalogs/`](./spec/catalogs)) as the opt-in `@openpresentation/opf/catalog`, for hosts to register\n- export a typed raw spec file manifest for package-addressable `spec/` content\n- generate TypeScript types, with `Presentation` as the top-level type\n- validate OPF JSON and catalog records locally\n\nIn Node (and Bun and Deno) its root also reads and writes files (`convert`, `open`, `save`) and draws them through the optional engines below; in a browser or a worker the same import is a browser-safe build with the same names, where those three reject with `node-only`. Every other entry runs in a browser. It does not generate content with AI, fetch remote catalogs, call hosted APIs, or provide managed services. Render/edit/convert packages live in separate MIT repos that depend on `@openpresentation/opf`. The format package also exposes pure composition geometry so those packages share layout behavior.\n\n## Toolkit libraries\n\nOPF is five packages. **Core** (`@openpresentation/opf`) is the format and its API: it reads and writes the text formats (JSON, YAML, Markdown) and validates, and in Node reads and writes files, through the same import. **The CLI** (`@openpresentation/cli`) is the `opf` command. **Render** (`opf-render`), **PPTX** (`opf-pptx`) and **the editor** (`opf-editor`) are the engines: drawing, PowerPoint and editing, installed as needed. The engines and the editor live in sibling repositories. See [ecosystem development](docs/ecosystem-development.md) for coordinated builds and verification, and [dynamic composition](docs/dynamic-composition.md) for portable layout rules.\n\n| Repo | Role | Boundary |\n|---|---|---|\n| `cli` (`@openpresentation/cli`, this repository) | `opf` command | Runs core\'s Node engine: reads and writes files and calls the engines below as optional peers |\n| `opf-render` | OPF to SVG/PNG/PDF | Local and embeddable rendering library |\n| `opf-editor` | WYSIWYG bindings/components | Headless editor primitives plus optional UI components |\n| `opf-pptx` | OPF to PPTX and PPTX to OPF | Pure local import/export library for browser and server use where supported |\n\nThese repos provide OSS primitives only. Downstream applications own hosting, auth, storage, collaboration, queues, previews, analytics, support, and workflow UX.\n\n## Usage\n\nInstall from npm:\n\n```sh\npnpm add @openpresentation/opf\n# or: npm install @openpresentation/opf\n```\n\nTo work on the package itself, clone this repo and build the workspace:\n\n```sh\npnpm install\npnpm build\n```\n\nUse the format package from JavaScript or TypeScript:\n\n```ts\nimport { presentation, validate } from "@openpresentation/opf";\nimport { defaultCatalog } from "@openpresentation/opf/catalog";\n\nimport type { Presentation } from "@openpresentation/opf";\n\nconst deck: Presentation = {\n name: "Quarterly Review",\n slides: [{ title: "Quarterly Review", items: ["Revenue", "Product", "Hiring"] }],\n};\n\nconst report = validate(deck);\nconsole.log(report.valid); // no finding has severity "error"\nconsole.log(report.findings); // every finding: rule id, severity, category, JSON Pointer path, message, fixes\n// Core ships no catalog records in its main entry; a host registers the catalogs it trusts.\nconsole.log(validate({ ...deck, design: { theme: "classic" } }, { catalogs: [defaultCatalog] }).valid);\nconsole.log(Object.keys(defaultCatalog.audiences).length);\n```\n\nConvert, open and save files in Node with `@openpresentation/opf`, the same import a browser uses (the engines `@openpresentation/opf-render` and `@openpresentation/opf-pptx` are optional peers, installed as needed; see [OPF files in Node](docs/node.md)):\n\n```ts\nimport * as opf from "@openpresentation/opf";\n\nawait opf.convert("deck.opf.md", "deck.pdf");\nconst deck = await opf.open("deck.opf.md");\ndeck.slides.push({ title: "Q4" });\nawait opf.save(deck, "deck.opf.md");\nconst { files } = await opf.convert(deck, { format: "pptx" }); // bytes, nothing written\n```\n\nUse focused imports when you only need one surface:\n\n```ts\nimport { presentation } from "@openpresentation/opf/schemas";\nimport { defaultCatalog } from "@openpresentation/opf/catalog";\nimport { specFileEntries } from "@openpresentation/opf/spec-files";\nimport { validate } from "@openpresentation/opf/validator";\nimport type { Presentation } from "@openpresentation/opf/types";\n```\n\nUse raw JSON when an engine or resolver needs package-addressable files:\n\n```ts\nimport presentationSchema from "@openpresentation/opf/spec/schemas/opf.schema.json" with {\n type: "json",\n};\n```\n\nUse the [installable OPF CLI](./packages/cli/README.md) to create, validate, and edit files locally:\n\n```sh\npnpm --filter @openpresentation/cli build\nnode packages/cli/dist/index.js create deck.opf.json --title "Decision brief"\nnode packages/cli/dist/index.js validate deck.opf.json\nnode packages/cli/dist/index.js edit deck.opf.json --patch changes.json --in-place\n```\n\nSee [CSV and JSON data import](./docs/data-import.md) for editable tables and charts in the editor, CLI, and package API, and [content conversions](./docs/conversions.md) for the pure converters (`@openpresentation/opf/convert`) that change a block\'s kind, nest list items, restructure a slide and split or merge slides, and [Markdown and outlines](./docs/markdown.md) for the deterministic Markdown dialect (`@openpresentation/opf/markdown`, `opf convert deck.md deck.opf.json`) that reads and writes a whole deck as text.\n\n[OPF as YAML](./docs/yaml.md) describes the strict YAML form of a deck (`@openpresentation/opf/yaml`, `opf convert deck.opf.json deck.opf.yaml`, `.opf.yaml` files in every command, editor autocomplete); JSON stays the canonical form. A deck can equally be a Markdown file, `deck.opf.md`: every command reads and writes it (see [Markdown decks in every command](./docs/markdown.md#markdown-decks-in-every-command)), and `parse` / `stringify` read and write a deck in JSON, YAML or Markdown with one call.\n\nSee [Templates and variables](./docs/templates-and-variables.md) for fillable OPF templates: typed variables, `{{id}}` tokens, `opf fill` and `resolveVariables`.\n\n## Layout\n\n| Path | Contents |\n|---|---|\n| [`spec/schemas/opf.schema.json`](./spec/schemas/opf.schema.json) | Canonical JSON Schema for top-level OPF `Presentation` documents. |\n| [`docs/how-opf-works.md`](./docs/how-opf-works.md) | Conceptual introduction: the document model, content shapes, catalog resolution, and the validation philosophy. Start here. |\n| [`docs/design-resolution.md`](./docs/design-resolution.md) | The design precedence algorithm (slide design \u2192 deck design \u2192 resolved theme \u2192 engine defaults) with worked examples. |\n| [`docs/schema-reference.md`](./docs/schema-reference.md) | Author-facing reference for top-level OPF fields and every presentation schema `$defs` object/type. |\n| [`docs/slide-sizes.md`](./docs/slide-sizes.md) | OPF\'s slide-size presets in inches, points and EMU, how they compare with PowerPoint\'s presets, and what PPTX export and import do with them. |\n| [`docs/catalog-schema-reference.md`](./docs/catalog-schema-reference.md) | Author-facing reference for every companion catalog schema. |\n| [`docs/content-payloads.md`](./docs/content-payloads.md) | Author-facing notes for slide and region content payloads, including chart and table object shapes. |\n| [`docs/footnotes-citations-captions.md`](./docs/footnotes-citations-captions.md) | Citations (`cite`), inline footnotes, the deck `references` list, captions on images, charts, tables and videos, and how every engine draws them. |\n| [`docs/examples.md`](./docs/examples.md) | Guide to the expanded scenario-oriented examples under `examples/gallery/`. |\n| [`docs/live-editor.md`](./docs/live-editor.md) | Browser canvas, live OPF editing, font loading, published packages, and current fidelity limits. |\n| [`docs/release-process.md`](./docs/release-process.md) | Maintainer runbook for tagging, trusted npm publishing, verification, and GitHub release notes. |\n| [`spec/schemas/*.schema.json`](./spec/schemas) | Companion schemas for catalog records and sub-objects. |\n| [`spec/catalogs/<catalog-kind>/`](./spec/catalogs) | The pinned snapshot of the default catalog pptx.gallery publishes (shipped as `@openpresentation/opf/catalog`). |\n| [`spec/openapi.yaml`](./spec/openapi.yaml) | Optional reference OpenAPI contract for downstream services that choose to expose OPF over HTTP. OpenPresentation does not host this API. |\n| [`examples/technical/`](./examples/technical) | Focused OPF fixtures for validator, renderer, catalog-resolution, design, content-payload, and region behavior. |\n| [`examples/gallery/`](./examples/gallery) | Broader OPF example decks organized by industry, function, education, government, presentation type, international, and design/media scenarios. |\n| [`packages/javascript/`](./packages/javascript) | Public pre-stable source for `@openpresentation/opf`. |\n| [`packages/cli/`](./packages/cli) | Installable local CLI for creating, validating, editing, and inspecting OPF. |\n| [`legacy/`](./legacy) | Tombstone for service-specific clients, CLIs, tool integrations, and workflows removed from the OpenPresentation OSS repo. |\n\n## OpenPresentation Boundary\n\nOpenPresentation defines the format, bundled presets, local validation, examples, docs, and planned local render/edit/convert libraries. It does not provide hosted functions or managed product surfaces.\n\nFuture non-JavaScript OPF packages should follow the same local-first boundary: Python and Go packages should expose schemas, types/models, catalogs, validation, and package-addressable assets. Future toolkit packages should expose embeddable library APIs with no required network calls, hosted callbacks, hidden telemetry, or managed infrastructure assumptions.\n\nThe published JavaScript package copies package-addressable OPF schemas, catalogs, reference assets, and the optional reference `spec/openapi.yaml` from `spec/`. It intentionally remains `@openpresentation/opf` instead of introducing a separate `@openpresentation/opf-spec` package so downstream imports can advance by semver-pinning one canonical package.\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n';
2
+ var repoReadmeRaw = '# Open Presentation Format (OPF)\n\n[![npm version](https://img.shields.io/npm/v/@openpresentation/opf?label=npm)](https://www.npmjs.com/package/@openpresentation/opf)\n[![npm downloads](https://img.shields.io/npm/dw/@openpresentation/opf)](https://www.npmjs.com/package/@openpresentation/opf)\n[![license](https://img.shields.io/npm/l/@openpresentation/opf)](./LICENSE)\n\nPublic npm package: [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf) (`npm install @openpresentation/opf`).\n\nOpen Presentation Format is the portable, human-readable JSON document format for slide decks.\n\nThis repository is the canonical home for the OPF **spec**, **JSON Schemas**, **catalog presets**, examples, generated developer types, local validation tooling, and integration docs for the render/edit/convert toolkit. OpenPresentation publishes open-source code and documentation only; it does not provide hosted APIs, hosted rendering functions, queues, storage, authentication, jobs, previews, SLAs, telemetry, or managed infrastructure.\n\nFor AI agents, use the [OPF skill set](docs/agent-skills.md) for authoring, layout, presets, editing, export, and schema inspection.\n\nPublished CLI 0.18.0 installs all six skills into your project with `npx @openpresentation/cli@0.18.0 skills install`. It uses local copies, preserves existing instructions and refuses to overwrite customized skills. See the [installation and update guide](docs/agent-skills.md) for personal or agent-specific targets and source development.\n\nFor a fresh Node 24 project that installs **published** packages (not this\ncheckout), follow the [developer quickstart](docs/quickstart.md) and the\n[compatibility matrix](docs/compatibility-matrix.md).\n\nFor LLM authoring, start with [the authoring guide](docs/llm-authoring.md), [dynamic composition](docs/dynamic-composition.md), and [local ecosystem verification](docs/ecosystem-development.md).\n\n## File naming\n\nOpen Presentation Format documents are JSON files. Use `*.opf.json` for complete OPF presentation documents, for example `board-review.opf.json` or `deck.opf.json`.\n\nAvoid using bare `*.opf` for OPF JSON. The `.opf` extension is already used by other document and project formats, while `.opf.json` keeps the OPF identity and still makes the underlying JSON format clear to editors, validators, agents, and version-control tooling.\n\n## Naming and reuse\n\nThe format name is **Open Presentation Format**. The schemas, catalogs, packages, and local tooling in this repository are free and open source under the MIT license, so third-party tools may read, write, validate, render, convert, and describe support for Open Presentation Format without adopting any product-specific branding.\n\n## Why OPF\n\n`.pptx` is a zipped bundle of XML. Humans can\'t diff it, LLMs can\'t read or write it reliably, and git can\'t track it meaningfully. Every change looks like a binary blob.\n\nOPF is plain JSON. A human can open it in an editor. A model can read and write it without guessing at schema-by-example. Decks live in git like the rest of your work.\n\nThat\'s the shift that lets LLMs actually *author* decks. When the format stops fighting them, models can do the work that matters \u2014 narrative structure, persuasive framing, data analysis, chart recommendations, ruthless revision passes \u2014 instead of wrestling with `<p:sp>` tags.\n\nAnd they don\'t start from a blank canvas. [pptx.gallery](https://pptx.gallery) is the human-browsable reference for OPF catalog presets: layouts, themes, color schemes, font schemes, chart types, narratives, audiences, purposes, tones, languages, and social platforms.\n\n## Start in three steps\n\n1. **Install the coordinated published packages** on Node 24. See [the developer quickstart](docs/quickstart.md) for the current pin set: core 0.18.1, renderer 0.18.0, editor 0.18.0, PPTX 0.18.0 and CLI 0.18.0.\n2. **Author, validate, paginate, preview and export.** Copy [`docs/quickstart/developer-quickstart.opf.json`](./docs/quickstart/developer-quickstart.opf.json) and run the commands in that guide. From code, `convert("deck.opf.md", "deck.pdf")` of `@openpresentation/opf` is the simple path to a PDF, PNG, SVG or PPTX file. `validate` / `opf validate` is one local checker for format, references, accessibility, layout and content ([guide](docs/validate.md)), not visual verification.\n3. **Know the limits.** The [compatibility matrix](docs/compatibility-matrix.md) lists shipped APIs versus renderer issue 24, native PowerPoint issue 87, and other deferred work. Browse presets at [pptx.gallery](https://pptx.gallery).\n\nYour deck can live in git from the first commit. After installing dependencies and supplying referenced assets, these commands run locally without a model provider, account or hosted OPF API.\n\n## JavaScript and TypeScript\n\nThe canonical JavaScript/TypeScript package is published at [`packages/javascript`](./packages/javascript) as [`@openpresentation/opf`](https://www.npmjs.com/package/@openpresentation/opf). The schema is pre-stable (0.x \u2014 expect breaking changes between minor versions until 1.0). Its responsibility is local and format-level only:\n\n- export the canonical schemas from [`spec/`](./spec)\n- register the pptx.gallery catalog of [`@openpresentation/gallery`](https://github.com/OpenPresentation/gallery) (a dependency, released on its own version line) as the Node defaults, as the CLI does; a browser host registers it itself\n- export a typed raw spec file manifest for package-addressable `spec/` content\n- generate TypeScript types, with `Presentation` as the top-level type\n- validate OPF JSON and catalog records locally\n\nIn Node (and Bun and Deno) its root also reads and writes files (`convert`, `open`, `save`) and draws them through the optional engines below; in a browser or a worker the same import is a browser-safe build with the same names, where those three reject with `node-only`. Every other entry runs in a browser. It does not generate content with AI, fetch remote catalogs, call hosted APIs, or provide managed services. Render/edit/convert packages live in separate MIT repos that depend on `@openpresentation/opf`. The format package also exposes pure composition geometry so those packages share layout behavior.\n\n## Toolkit libraries\n\nOPF is six packages. **Core** (`@openpresentation/opf`) is the format and its API: it reads and writes the text formats (JSON, YAML, Markdown) and validates, and in Node reads and writes files, through the same import. **The gallery** (`@openpresentation/gallery`) is the pptx.gallery catalog of layouts, themes, colour and font schemes and the other records, released on its own version line; core depends on it and registers it in Node. **The CLI** (`@openpresentation/cli`) is the `opf` command. **Render** (`opf-render`), **PPTX** (`opf-pptx`) and **the editor** (`opf-editor`) are the engines: drawing, PowerPoint and editing, installed as needed. The engines and the editor live in sibling repositories. See [ecosystem development](docs/ecosystem-development.md) for coordinated builds and verification, and [dynamic composition](docs/dynamic-composition.md) for portable layout rules.\n\n| Repo | Role | Boundary |\n|---|---|---|\n| `gallery` (`@openpresentation/gallery`, this repository) | The pptx.gallery catalog | Catalog records only, no runtime dependency; minor releases add records, a changed or removed record is a major release |\n| `cli` (`@openpresentation/cli`, this repository) | `opf` command | Runs core\'s Node engine: reads and writes files and calls the engines below as optional peers |\n| `opf-render` | OPF to SVG/PNG/PDF | Local and embeddable rendering library |\n| `opf-editor` | WYSIWYG bindings/components | Headless editor primitives plus optional UI components |\n| `opf-pptx` | OPF to PPTX and PPTX to OPF | Pure local import/export library for browser and server use where supported |\n\nThese repos provide OSS primitives only. Downstream applications own hosting, auth, storage, collaboration, queues, previews, analytics, support, and workflow UX.\n\n## Usage\n\nInstall from npm:\n\n```sh\npnpm add @openpresentation/opf\n# or: npm install @openpresentation/opf\n```\n\nTo work on the package itself, clone this repo and build the workspace:\n\n```sh\npnpm install\npnpm build\n```\n\nUse the format package from JavaScript or TypeScript:\n\n```ts\nimport { presentation, validate } from "@openpresentation/opf";\nimport { gallery } from "@openpresentation/gallery";\n\nimport type { Presentation } from "@openpresentation/opf";\n\nconst deck: Presentation = {\n name: "Quarterly Review",\n slides: [{ title: "Quarterly Review", items: ["Revenue", "Product", "Hiring"] }],\n};\n\nconst report = validate(deck);\nconsole.log(report.valid); // no finding has severity "error"\nconsole.log(report.findings); // every finding: rule id, severity, category, JSON Pointer path, message, fixes\n// Core ships no catalog records; in Node, validate registers the gallery when a call names no catalogs, and a host may name its own.\nconsole.log(validate({ ...deck, design: { theme: "classic" } }, { catalogs: [gallery] }).valid);\nconsole.log(Object.keys(gallery.audiences).length);\n```\n\nConvert, open and save files in Node with `@openpresentation/opf`, the same import a browser uses (the engines `@openpresentation/opf-render` and `@openpresentation/opf-pptx` are optional peers, installed as needed; see [OPF files in Node](docs/node.md)):\n\n```ts\nimport * as opf from "@openpresentation/opf";\n\nawait opf.convert("deck.opf.md", "deck.pdf");\nconst deck = await opf.open("deck.opf.md");\ndeck.slides.push({ title: "Q4" });\nawait opf.save(deck, "deck.opf.md");\nconst { files } = await opf.convert(deck, { format: "pptx" }); // bytes, nothing written\n```\n\nUse focused imports when you only need one surface:\n\n```ts\nimport { presentation } from "@openpresentation/opf/schemas";\nimport { specFileEntries } from "@openpresentation/opf/spec-files";\nimport { validate } from "@openpresentation/opf/validator";\nimport type { Presentation } from "@openpresentation/opf/types";\n```\n\nUse raw JSON when an engine or resolver needs package-addressable files:\n\n```ts\nimport presentationSchema from "@openpresentation/opf/spec/schemas/opf.schema.json" with {\n type: "json",\n};\n```\n\nUse the [installable OPF CLI](./packages/cli/README.md) to create, validate, and edit files locally:\n\n```sh\npnpm --filter @openpresentation/cli build\nnode packages/cli/dist/index.js create deck.opf.json --title "Decision brief"\nnode packages/cli/dist/index.js validate deck.opf.json\nnode packages/cli/dist/index.js edit deck.opf.json --patch changes.json --in-place\n```\n\nSee [CSV and JSON data import](./docs/data-import.md) for editable tables and charts in the editor, CLI, and package API, and [content conversions](./docs/conversions.md) for the pure converters (`@openpresentation/opf/convert`) that change a block\'s kind, nest list items, restructure a slide and split or merge slides, and [Markdown and outlines](./docs/markdown.md) for the deterministic Markdown dialect (`@openpresentation/opf/markdown`, `opf convert deck.md deck.opf.json`) that reads and writes a whole deck as text.\n\n[OPF as YAML](./docs/yaml.md) describes the strict YAML form of a deck (`@openpresentation/opf/yaml`, `opf convert deck.opf.json deck.opf.yaml`, `.opf.yaml` files in every command, editor autocomplete); JSON stays the canonical form. A deck can equally be a Markdown file, `deck.opf.md`: every command reads and writes it (see [Markdown decks in every command](./docs/markdown.md#markdown-decks-in-every-command)), and `parse` / `stringify` read and write a deck in JSON, YAML or Markdown with one call.\n\nSee [Templates and variables](./docs/templates-and-variables.md) for fillable OPF templates: typed variables, `{{id}}` tokens, `opf fill` and `resolveVariables`.\n\n## Layout\n\n| Path | Contents |\n|---|---|\n| [`spec/schemas/opf.schema.json`](./spec/schemas/opf.schema.json) | Canonical JSON Schema for top-level OPF `Presentation` documents. |\n| [`docs/how-opf-works.md`](./docs/how-opf-works.md) | Conceptual introduction: the document model, content shapes, catalog resolution, and the validation philosophy. Start here. |\n| [`docs/design-resolution.md`](./docs/design-resolution.md) | The design precedence algorithm (slide design \u2192 deck design \u2192 resolved theme \u2192 engine defaults) with worked examples. |\n| [`docs/schema-reference.md`](./docs/schema-reference.md) | Author-facing reference for top-level OPF fields and every presentation schema `$defs` object/type. |\n| [`docs/slide-sizes.md`](./docs/slide-sizes.md) | OPF\'s slide-size presets in inches, points and EMU, how they compare with PowerPoint\'s presets, and what PPTX export and import do with them. |\n| [`docs/catalog-schema-reference.md`](./docs/catalog-schema-reference.md) | Author-facing reference for every companion catalog schema. |\n| [`docs/content-payloads.md`](./docs/content-payloads.md) | Author-facing notes for slide and region content payloads, including chart and table object shapes. |\n| [`docs/footnotes-citations-captions.md`](./docs/footnotes-citations-captions.md) | Citations (`cite`), inline footnotes, the deck `references` list, captions on images, charts, tables and videos, and how every engine draws them. |\n| [`docs/examples.md`](./docs/examples.md) | Guide to the expanded scenario-oriented examples under `examples/gallery/`. |\n| [`docs/live-editor.md`](./docs/live-editor.md) | Browser canvas, live OPF editing, font loading, published packages, and current fidelity limits. |\n| [`docs/release-process.md`](./docs/release-process.md) | Maintainer runbook for tagging, trusted npm publishing, verification, and GitHub release notes. |\n| [`spec/schemas/*.schema.json`](./spec/schemas) | Companion schemas for catalog records and sub-objects. |\n| [`@openpresentation/gallery`](https://github.com/OpenPresentation/gallery) | The independently published default catalog and layout previews. |\n| [`spec/openapi.yaml`](./spec/openapi.yaml) | Optional reference OpenAPI contract for downstream services that choose to expose OPF over HTTP. OpenPresentation does not host this API. |\n| [`examples/technical/`](./examples/technical) | Focused OPF fixtures for validator, renderer, catalog-resolution, design, content-payload, and region behavior. |\n| [`examples/gallery/`](./examples/gallery) | Broader OPF example decks organized by industry, function, education, government, presentation type, international, and design/media scenarios. |\n| [`packages/javascript/`](./packages/javascript) | Public pre-stable source for `@openpresentation/opf`. |\n| [`packages/cli/`](./packages/cli) | Installable local CLI for creating, validating, editing, and inspecting OPF. |\n| [`legacy/`](./legacy) | Tombstone for service-specific clients, CLIs, tool integrations, and workflows removed from the OpenPresentation OSS repo. |\n\n## OpenPresentation Boundary\n\nOpenPresentation defines the format, bundled presets, local validation, examples, docs, and planned local render/edit/convert libraries. It does not provide hosted functions or managed product surfaces.\n\nFuture non-JavaScript OPF packages should follow the same local-first boundary: Python and Go packages should expose schemas, types/models, catalogs, validation, and package-addressable assets. Future toolkit packages should expose embeddable library APIs with no required network calls, hosted callbacks, hidden telemetry, or managed infrastructure assumptions.\n\nThe published JavaScript package copies package-addressable OPF schemas, catalogs, reference assets, and the optional reference `spec/openapi.yaml` from `spec/`. It intentionally remains `@openpresentation/opf` instead of introducing a separate `@openpresentation/opf-spec` package so downstream imports can advance by semver-pinning one canonical package.\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n';
3
3
 
4
4
  // src/repo-readme.ts
5
5
  var repoReadme = repoReadmeRaw;
package/dist/schemas.d.ts CHANGED
@@ -104,15 +104,7 @@ declare const theme: JsonSchemaDocument & {
104
104
  };
105
105
  declare const layout: JsonSchemaDocument & {
106
106
  readonly $defs: {
107
- readonly "PlaceholderEntry": JsonObject;
108
- readonly "PlaceholderGroup": JsonObject;
109
- readonly "PlaceholderGroupEntry2": JsonObject;
110
- readonly "PlaceholderGroup2": JsonObject;
111
- readonly "PlaceholderGroupEntry3": JsonObject;
112
- readonly "PlaceholderGroup3": JsonObject;
113
- readonly "GroupedPlaceholder": JsonObject;
114
- readonly "Placeholder": JsonObject;
115
- readonly "ImagePlacement": JsonObject;
107
+ readonly "Region": JsonObject;
116
108
  readonly "DesignHints": JsonObject;
117
109
  readonly "Composition": JsonObject;
118
110
  };
@@ -241,15 +233,7 @@ declare const schemas: {
241
233
  };
242
234
  readonly layout: JsonSchemaDocument & {
243
235
  readonly $defs: {
244
- readonly "PlaceholderEntry": JsonObject;
245
- readonly "PlaceholderGroup": JsonObject;
246
- readonly "PlaceholderGroupEntry2": JsonObject;
247
- readonly "PlaceholderGroup2": JsonObject;
248
- readonly "PlaceholderGroupEntry3": JsonObject;
249
- readonly "PlaceholderGroup3": JsonObject;
250
- readonly "GroupedPlaceholder": JsonObject;
251
- readonly "Placeholder": JsonObject;
252
- readonly "ImagePlacement": JsonObject;
236
+ readonly "Region": JsonObject;
253
237
  readonly "DesignHints": JsonObject;
254
238
  readonly "Composition": JsonObject;
255
239
  };
package/dist/schemas.js CHANGED
@@ -1 +1 @@
1
- export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-2PEWUUBR.js';
1
+ export { audience, chartType, colorScheme, fontScheme, language, layout, narrative, presentation, purpose, schemaEntries, schemaNames, schemas, socialPlatform, theme, tone } from './chunk-R5T4H4ZV.js';
@@ -9,37 +9,30 @@ New to the format? Read [`docs/how-opf-works.md`](../docs/how-opf-works.md) firs
9
9
  | Path | Contents |
10
10
  |---|---|
11
11
  | [`schemas/opf.schema.json`](./schemas/opf.schema.json) | Canonical JSON Schema for top-level OPF `Presentation` documents (`$id: https://openpresentation.org/schema/opf/v1`). |
12
- | [`schemas/*.schema.json`](./schemas) | Companion schemas for catalog records. Each has a stable `$id` of the form `https://openpresentation.org/schema/opf-<kind>/v1` (e.g. `opf-narrative`, `opf-theme`, `opf-chart-type`). Three schemas in this directory — `catalog-index.schema.json`, `catalog-manifest.schema.json`, and `layout-preview-index.schema.json` — describe repo-internal index and manifest files instead (see rows below); they are not OPF document or catalog-record schemas and are intentionally excluded from the package's published/typed schema surface (`schemaNames` / generated types). |
12
+ | [`schemas/*.schema.json`](./schemas) | Companion schemas for catalog records. Layouts use `https://openpresentation.org/schema/opf-layout/v2`; other companion schemas retain `$id`s of the form `https://openpresentation.org/schema/opf-<kind>/v1` (e.g. `opf-narrative`, `opf-theme`, `opf-chart-type`). Three schemas in this directory — `catalog-index.schema.json`, `catalog-manifest.schema.json`, and `layout-preview-index.schema.json` — describe repo-internal index and manifest files instead (see rows below); they are not OPF document or catalog-record schemas and are intentionally excluded from the package's published/typed schema surface (`schemaNames` / generated types). |
13
13
  | [`schemas/finding.schema.json`](./schemas/finding.schema.json) | The report format every OPF tool shares (`$id: https://openpresentation.org/schema/opf-finding/v1`): a finding is one thing a checker found at one place in a presentation, and a report lists them. `validate`, the Markdown and YAML converters, the editor's Review panel and hosted reviewers produce it. It is not a catalog-record schema, but unlike the three index schemas it is part of the published, typed schema surface (`schemaNames`, `Finding`, `FindingReport`). See [`docs/validate.md`](../docs/validate.md). |
14
- | [`catalogs/<kind>/`](./catalogs) | Bundled catalog records, one JSON file per record plus an `index.json` per kind. They are a pinned snapshot of the default catalog that pptx.gallery publishes at `https://www.pptx.gallery/<kind>/index.json`: engines resolve the default catalog from these files and never fetch it at run time. Every `index.json` validates against `schemas/catalog-index.schema.json` (`$id: https://openpresentation.org/schema/opf-catalog-index/v1`), a generic shape shared across all 11 kinds, and carries a `contentSha256` of its records. Do not edit these files by hand; change the gallery and run `scripts/sync-gallery-catalog.mjs` (see [`docs/default-catalog.md`](../docs/default-catalog.md)). RR-78: the same records are published as `@openpresentation/gallery` from [OpenPresentation/gallery](https://github.com/OpenPresentation/gallery); from OPF 0.19 core depends on that package and this directory and `previews/layouts/` go away. |
15
- | [`catalogs/manifest.json`](./catalogs/manifest.json) | Pins the snapshot: the pptx-gallery commit it came from and, per kind, `mirror`/`subset` mode, record count and content hash. Validates against `schemas/catalog-manifest.schema.json` (`$id: https://openpresentation.org/schema/opf-catalog-manifest/v1`). `check:spec` fails when the bundled records no longer match it. |
16
- | [`previews/layouts/`](./previews/layouts) | Vendored HTML previews for the **slide archetype gallery** (e.g. `swot-analysis`, `agenda`, `org-chart`) — see "Preview gallery vs. layout catalog" below. Its `index.json` validates against `schemas/layout-preview-index.schema.json` (`$id: https://openpresentation.org/schema/opf-layout-preview-index/v1`). |
14
+ | Catalog records (not in this directory) | Since OPF 0.19 (RR-78) the catalog records, their `manifest.json` and the layout previews are the `@openpresentation/gallery` package ([OpenPresentation/gallery](https://github.com/OpenPresentation/gallery)): a pinned snapshot of the default catalog pptx.gallery publishes at `https://www.pptx.gallery/<kind>/index.json`, which hosts register with `catalogs: [gallery]` and engines never fetch. Every `index.json` validates against `schemas/catalog-index.schema.json` (`$id: https://openpresentation.org/schema/opf-catalog-index/v1`), the manifest against `schemas/catalog-manifest.schema.json` and the preview index against `schemas/layout-preview-index.schema.json`; `check:spec` fails when the records no longer match the manifest. Do not edit the records by hand; change pptx.gallery and synchronize the gallery repository (see [`docs/default-catalog.md`](../docs/default-catalog.md)). |
17
15
  | [`reference/engine-defaults.json`](./reference/engine-defaults.json) | Reference example of engine-side defaults. Engine configuration, not part of the OPF document contract; it has no JSON Schema. |
18
16
  | [`openapi.yaml`](./openapi.yaml) | Optional reference OpenAPI 3.1 contract for downstream services that choose to expose OPF operations (validate, parse, convert, generate, render) over HTTP. OpenPresentation does not host this API; implementers can use it as a starting point for their own hosted or internal services. Local format tooling never needs it. |
19
17
 
20
- ## Preview gallery vs. layout catalog
18
+ ## Layout templates and previews
21
19
 
22
- `spec/catalogs/layouts/` and `spec/previews/layouts/` are two unrelated taxonomies that happen to share a directory name. Do not assume a preview id corresponds to a layout catalog id — none of them do.
20
+ The gallery package's `catalog/layouts/` contains the 28 v2 intent templates that `Slide.layout` resolves against. They define named grid areas and content regions; examples include `cover`, `text`, `chart` and `two-column`.
23
21
 
24
- - **`spec/catalogs/layouts/`** is the **structural layout catalog**: 28 records (`title`, `title-subtitle`, `text-1x`…`text-3x`, `list-1x`…`list-6x`, `chart-1x`…`chart-3x`, `image-1x`…`image-3x`, `blank`, …) that `Slide.layout` resolves against. These describe placeholder structure — how many regions a slide has and what kind of content goes where — independent of subject matter.
25
- - **`spec/previews/layouts/`** is the **slide archetype preview gallery**: 70 self-contained HTML snippets keyed by subject-matter archetype (`swot-analysis`, `agenda`, `org-chart`, `pricing-table`, `roadmap`, …), used to render picker thumbnails. These ids describe *what a slide is about*, not its structural layout, and are never used as a `Slide.layout` value.
22
+ `previews/layouts/` contains one self-contained SVG preview for each template, keyed by the same layout id. Its version-2 index names the SVG filename and exact UTF-8 byte length. Picker thumbnails therefore show the template the slide will use.
26
23
 
27
- The preview HTML files are **vendored, generated artifacts**, not hand-authored spec content. They're produced by rendering React/Tailwind components from `lib/layout-previews.tsx` in the sibling `pptx-gallery` repo via `packages/javascript/scripts/render-layout-previews.mjs`, which requires a local `../pptx-gallery` checkout (a sibling directory to this repo) to run:
28
-
29
- ```sh
30
- node --import tsx packages/javascript/scripts/render-layout-previews.mjs
31
- ```
32
-
33
- Without that sibling checkout, treat `spec/previews/layouts/*.html` and `index.json` as read-only committed output — edit the source components in `pptx-gallery` and re-render, rather than hand-editing the generated HTML here.
24
+ The gallery repository owns both records and SVG previews. `pnpm install` materializes ignored copies from the installed package under `packages/gallery/` for schema and tracker checks.
34
25
 
35
26
  ## Consuming this directory
36
27
 
37
28
  Validate a document and load catalog records without touching the files directly:
38
29
 
39
30
  ```ts
40
- import { validate, narratives } from "@openpresentation/opf";
31
+ import { validate } from "@openpresentation/opf";
32
+ import { gallery } from "@openpresentation/gallery";
41
33
 
42
- const report = validate(deck);
34
+ const report = validate(deck, { catalogs: [gallery] }); // in Node, validate(deck) registers the gallery too
35
+ const qbr = gallery.narratives.qbr;
43
36
  // report.valid — no finding has severity "error"
44
37
  // report.findings — every finding: rule id, severity, category, JSON Pointer path, message, fixes
45
38
  // report.counts — { error, warning, info }
@@ -49,10 +42,10 @@ Import the raw files when an engine, resolver, or non-JavaScript toolchain needs
49
42
 
50
43
  ```ts
51
44
  import presentationSchema from "@openpresentation/opf/spec/schemas/opf.schema.json" with { type: "json" };
52
- import qbr from "@openpresentation/opf/spec/catalogs/narratives/qbr.json" with { type: "json" };
45
+ import narrativeSchema from "@openpresentation/opf/spec/schemas/narrative.schema.json" with { type: "json" };
53
46
  ```
54
47
 
55
- The same paths work for any validator in any language: point a JSON Schema draft 2020-12 implementation at `schemas/opf.schema.json` and validate `.opf.json` files against it. Catalog records validate against their kind's companion schema.
48
+ The same paths work for any validator in any language: point a JSON Schema draft 2020-12 implementation at `schemas/opf.schema.json` and validate `.opf.json` files against it. Catalog records (pptx.gallery serves each one at `https://www.pptx.gallery/<kind>/<id>.json`) validate against their kind's companion schema.
56
49
 
57
50
  ## YAML
58
51
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "Engine vocabularies of OPF 0.15: the values an engine must understand to draw, validated directly with no catalog lookup. chartTypes are the values of chart.type; socialPlatforms are the keys of Organization.socials and Speaker.socials with the URL patterns engines link a handle with; languages are the BCP-47 tags engines know the script, base direction, OOXML language tag and default script fonts of (any other well-formed tag is accepted, with its script inferred). Labels, descriptions, icons and brand colours are catalog display metadata, published by pptx.gallery and shipped in @openpresentation/opf/catalog. Core compiles this file into its engine code (scripts/generate.mjs).",
2
+ "description": "Engine vocabularies of OPF 0.15: the values an engine must understand to draw, validated directly with no catalog lookup. chartTypes are the values of chart.type; socialPlatforms are the keys of Organization.socials and Speaker.socials with the URL patterns engines link a handle with; languages are the BCP-47 tags engines know the script, base direction, OOXML language tag and default script fonts of (any other well-formed tag is accepted, with its script inferred). Labels, descriptions, icons and brand colours are catalog display metadata, published by pptx.gallery and shipped in @openpresentation/gallery. Core compiles this file into its engine code (scripts/generate.mjs).",
3
3
  "chartTypes": [
4
4
  "100pct-stacked-area",
5
5
  "100pct-stacked-bar",
@@ -2,13 +2,13 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-catalog-index/v1",
4
4
  "title": "Catalog Index",
5
- "description": "Generic shape shared by every `spec/catalogs/<kind>/index.json` file in the OPF repo and by the default-catalog index that pptx.gallery publishes at `https://www.pptx.gallery/<kind>/index.json` (spec/catalogs is a pinned snapshot of that catalog; see docs/default-catalog.md). An index is a lightweight, ordered summary of the full-record JSON files that live alongside it: each entry names the record's stable id, a human-readable name, and the record's filename, plus whatever extra summary fields are useful for picker UIs (e.g. `summary`, `tags`, `bcp47`, `duration`). This schema describes catalog index files themselves, not OPF documents or individual catalog records — it is not part of the OPF document contract and is intentionally excluded from the package's published/typed schema surface.",
5
+ "description": "Generic shape shared by every `<kind>/index.json` file of the @openpresentation/gallery package (packages/gallery/catalog in the OPF repo) and by the default-catalog index that pptx.gallery publishes at `https://www.pptx.gallery/<kind>/index.json` (the gallery package is a pinned snapshot of that catalog; see docs/default-catalog.md). An index is a lightweight, ordered summary of the full-record JSON files that live alongside it: each entry names the record's stable id, a human-readable name, and the record's filename, plus whatever extra summary fields are useful for picker UIs (e.g. `summary`, `tags`, `bcp47`, `duration`). This schema describes catalog index files themselves, not OPF documents or individual catalog records — it is not part of the OPF document contract and is intentionally excluded from the package's published/typed schema surface.",
6
6
  "type": "object",
7
7
  "required": ["$schema", "version", "description", "records"],
8
8
  "additionalProperties": false,
9
9
  "patternProperties": {
10
10
  "^x-": {
11
- "description": "Publisher extension member, such as pptx.gallery's `x-gallery` reconciliation status. Consumers ignore top-level `x-*` members, and the pinned snapshot in spec/catalogs never carries them."
11
+ "description": "Publisher extension member, such as pptx.gallery's `x-gallery` reconciliation status. Consumers ignore top-level `x-*` members, and the pinned snapshot in @openpresentation/gallery never carries them."
12
12
  }
13
13
  },
14
14
  "properties": {
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "kind": {
20
20
  "type": "string",
21
- "description": "Catalog kind, as the URL segment of the default catalog (`https://www.pptx.gallery/<kind>`) and the `spec/catalogs/<kind>` directory name.",
21
+ "description": "Catalog kind, as the URL segment of the default catalog (`https://www.pptx.gallery/<kind>`) and the `packages/gallery/catalog/<kind>` directory name.",
22
22
  "enum": [
23
23
  "audiences",
24
24
  "chart-types",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-catalog-manifest/v1",
4
4
  "title": "Catalog Snapshot Manifest",
5
- "description": "Shape of `spec/catalogs/manifest.json`, which pins the snapshot of the default OPF catalog published by pptx.gallery (shipped as @openpresentation/opf/catalog). It records the gallery commit the snapshot came from and, per kind, how the snapshot relates to the published catalog plus a content hash of the bundled records. Written by scripts/sync-gallery-catalog.mjs and checked by scripts/check-spec-integrity.mjs; see docs/default-catalog.md. This schema describes a repo-internal file, not an OPF document or a catalog record; it is intentionally excluded from the package's published/typed schema surface.",
5
+ "description": "Shape of the `manifest.json` of the @openpresentation/gallery package (packages/gallery/catalog/manifest.json), which pins the snapshot of the default OPF catalog published by pptx.gallery. It records the gallery commit the snapshot came from and, per kind, how the snapshot relates to the published catalog plus a content hash of the bundled records. Written by scripts/sync-gallery-catalog.mjs and checked by scripts/check-spec-integrity.mjs; see docs/default-catalog.md. This schema describes a repo-internal file, not an OPF document or a catalog record; it is intentionally excluded from the package's published/typed schema surface.",
6
6
  "type": "object",
7
7
  "required": ["$schema", "description", "publisher", "source", "kinds"],
8
8
  "additionalProperties": false,
@@ -2,12 +2,12 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-chart-type/v1",
4
4
  "title": "Chart Type",
5
- "description": "Schema for chart-type records: display metadata for chart pickers (name, group, expected series, complexity) and the Open XML mapping a picker can describe. One record per chart type that Aspose.Slides officially supports (see mappings.renderers[\"aspose-slides\"].chartType), plus the column-and-line combination 'combo'. A document's chart.type is an engine vocabulary validated directly; engines never look a chart-type record up. pptx.gallery publishes these records and @openpresentation/opf/catalog ships them as catalogDisplay.chartTypes.",
5
+ "description": "Schema for chart-type records: display metadata for chart pickers (name, group, expected series, complexity) and the Open XML mapping a picker can describe. One record per chart type that Aspose.Slides officially supports (see mappings.renderers[\"aspose-slides\"].chartType), plus the column-and-line combination 'combo'. A document's chart.type is an engine vocabulary validated directly; engines never look a chart-type record up. pptx.gallery publishes these records and @openpresentation/gallery ships them as catalogDisplay.chartTypes.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "patternProperties": {
9
9
  "^x-": {
10
- "description": "Publisher extension member, such as the `x-gallery` presentation metadata that pptx.gallery adds to the records it publishes. Engines and validators ignore top-level `x-*` members, and the pinned snapshot in spec/catalogs never carries them."
10
+ "description": "Publisher extension member, such as the `x-gallery` presentation metadata that pptx.gallery adds to the records it publishes. Engines and validators ignore top-level `x-*` members, and the pinned snapshot in @openpresentation/gallery never carries them."
11
11
  }
12
12
  },
13
13
  "required": [
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-language/v1",
4
4
  "title": "Language",
5
- "description": "Schema for language records: display metadata for the language pickers of authoring tools (name, ISO code, the default font schemes a picker suggests). The document's 'language' is an engine vocabulary, a BCP-47 tag validated directly; engines never look a language record up, and their script, direction, OOXML tag and default script fonts come from spec/reference/engine-vocabularies.json. pptx.gallery publishes these records and @openpresentation/opf/catalog ships them as catalogDisplay.languages.",
5
+ "description": "Schema for language records: display metadata for the language pickers of authoring tools (name, ISO code, the default font schemes a picker suggests). The document's 'language' is an engine vocabulary, a BCP-47 tag validated directly; engines never look a language record up, and their script, direction, OOXML tag and default script fonts come from spec/reference/engine-vocabularies.json. pptx.gallery publishes these records and @openpresentation/gallery ships them as catalogDisplay.languages.",
6
6
  "type": "object",
7
7
  "required": [
8
8
  "$schema",
@@ -2,9 +2,14 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-layout-preview-index/v1",
4
4
  "title": "Layout Preview Index",
5
- "description": "Shape of `spec/previews/layouts/index.json`, the manifest for the vendored slide-archetype preview gallery under `spec/previews/layouts/`. Each record names a preview id, its self-contained HTML file, and the file's exact UTF-8 byte length. These preview ids are an archetype taxonomy (e.g. 'swot-analysis', 'org-chart') distinct from the structural layout catalog at spec/catalogs/layouts/ (e.g. 'title', 'chart-2x') — see spec/README.md. This schema describes a repo-internal index file, not an OPF document or a catalog record; it is intentionally excluded from the package's published/typed schema surface.",
5
+ "description": "Shape of previews/layouts/index.json in @openpresentation/gallery 2: one self-contained SVG preview per v2 intent layout, keyed by the matching catalog layout id. Each record names its SVG file and exact UTF-8 byte length. The gallery package owns the files; this checkout materializes ignored copies under packages/gallery/previews/layouts/. This internal index schema is excluded from the package's published/typed schema surface.",
6
6
  "type": "object",
7
- "required": ["$schema", "version", "description", "records"],
7
+ "required": [
8
+ "$schema",
9
+ "version",
10
+ "description",
11
+ "records"
12
+ ],
8
13
  "additionalProperties": false,
9
14
  "properties": {
10
15
  "$schema": {
@@ -14,7 +19,10 @@
14
19
  "version": {
15
20
  "type": "string",
16
21
  "description": "Index format version, as a string.",
17
- "examples": ["1"]
22
+ "examples": [
23
+ "2"
24
+ ],
25
+ "const": "2"
18
26
  },
19
27
  "description": {
20
28
  "type": "string",
@@ -22,31 +30,37 @@
22
30
  },
23
31
  "records": {
24
32
  "type": "array",
25
- "description": "One entry per vendored preview HTML file.",
26
- "items": { "$ref": "#/$defs/PreviewRecord" }
33
+ "description": "One entry per v2 layout and its SVG preview.",
34
+ "items": {
35
+ "$ref": "#/$defs/PreviewRecord"
36
+ }
27
37
  }
28
38
  },
29
39
  "$defs": {
30
40
  "PreviewRecord": {
31
41
  "type": "object",
32
- "description": "Summary of one vendored preview HTML file.",
33
- "required": ["id", "file", "bytes"],
42
+ "description": "One layout template preview.",
43
+ "required": [
44
+ "id",
45
+ "file",
46
+ "bytes"
47
+ ],
34
48
  "additionalProperties": false,
35
49
  "properties": {
36
50
  "id": {
37
51
  "type": "string",
38
- "description": "Slide-archetype preview id (e.g. 'swot-analysis', 'agenda', 'org-chart'). Does not correspond to a spec/catalogs/layouts/ record id.",
52
+ "description": "The matching layout record id, such as cover, chart or two-column.",
39
53
  "pattern": "^[a-z][a-z0-9-]*$"
40
54
  },
41
55
  "file": {
42
56
  "type": "string",
43
- "description": "HTML filename, relative to this index file's directory.",
44
- "pattern": "^[^/]+\\.html$"
57
+ "description": "SVG filename, relative to this index directory, using the matching layout id.",
58
+ "pattern": "^[a-z][a-z0-9-]*\\.svg$"
45
59
  },
46
60
  "bytes": {
47
61
  "type": "integer",
48
62
  "minimum": 0,
49
- "description": "Exact UTF-8 byte length of the referenced HTML file's contents."
63
+ "description": "Exact UTF-8 byte length of the referenced SVG file."
50
64
  }
51
65
  }
52
66
  }