@openpresentation/opf 0.11.1 → 0.11.3

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 (235) hide show
  1. package/dist/{catalogs-DJ-B5ZyD.d.ts → catalogs-CUClB3nl.d.ts} +202 -5
  2. package/dist/catalogs.d.ts +1 -1
  3. package/dist/catalogs.js +1 -1
  4. package/dist/{chunk-BP6WMSSS.js → chunk-57NWIYX3.js} +17 -4
  5. package/dist/{chunk-7LF37SG3.js → chunk-AEUSVEUY.js} +4915 -1640
  6. package/dist/{chunk-6UPHKXI5.js → chunk-BVLWFMDX.js} +40 -4
  7. package/dist/{chunk-SDETQV7Y.js → chunk-HJL64ETN.js} +505 -0
  8. package/dist/{chunk-M4GTWRK7.js → chunk-JCXHSTSM.js} +143 -68
  9. package/dist/{chunk-LTSDDBNW.js → chunk-JTXCMVVP.js} +245 -10
  10. package/dist/{chunk-NPYN4TZ5.js → chunk-RXNFDGPC.js} +113 -38
  11. package/dist/{chunk-KWIOQ3QR.js → chunk-UDPSGTZI.js} +3 -3
  12. package/dist/composition.js +1 -1
  13. package/dist/docs.js +23 -17
  14. package/dist/examples.d.ts +1 -1
  15. package/dist/font-policy.d.ts +4 -0
  16. package/dist/font-policy.js +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.js +11 -11
  19. package/dist/lint.d.ts +2 -2
  20. package/dist/lint.js +5 -5
  21. package/dist/pagination.js +5 -5
  22. package/dist/{presentation-bceTClm8.d.ts → presentation-Cn6vTOCP.d.ts} +13 -13
  23. package/dist/repo-readme.js +1 -1
  24. package/dist/schemas.js +1 -1
  25. package/dist/spec/README.md +3 -2
  26. package/dist/spec/catalogs/audiences/index.json +2 -0
  27. package/dist/spec/catalogs/chart-types/box-and-whisker.json +101 -49
  28. package/dist/spec/catalogs/chart-types/histogram.json +130 -108
  29. package/dist/spec/catalogs/chart-types/index.json +2 -0
  30. package/dist/spec/catalogs/chart-types/pareto.json +22 -106
  31. package/dist/spec/catalogs/color-schemes/black-and-white.json +10 -1
  32. package/dist/spec/catalogs/color-schemes/bold-red.json +10 -1
  33. package/dist/spec/catalogs/color-schemes/boost.json +10 -1
  34. package/dist/spec/catalogs/color-schemes/burnt-orange.json +10 -1
  35. package/dist/spec/catalogs/color-schemes/cool-horizon.json +10 -1
  36. package/dist/spec/catalogs/color-schemes/corporate-blue.json +10 -1
  37. package/dist/spec/catalogs/color-schemes/deep-purple.json +10 -1
  38. package/dist/spec/catalogs/color-schemes/forest-green.json +10 -1
  39. package/dist/spec/catalogs/color-schemes/golden-yellow.json +10 -1
  40. package/dist/spec/catalogs/color-schemes/index.json +2 -0
  41. package/dist/spec/catalogs/color-schemes/luxury.json +10 -1
  42. package/dist/spec/catalogs/color-schemes/pastel-red.json +10 -1
  43. package/dist/spec/catalogs/color-schemes/slate-gray.json +10 -1
  44. package/dist/spec/catalogs/color-schemes/steel-blue.json +10 -1
  45. package/dist/spec/catalogs/color-schemes/vibes.json +10 -1
  46. package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -1
  47. package/dist/spec/catalogs/font-schemes/aparajita.json +2 -1
  48. package/dist/spec/catalogs/font-schemes/aptos.json +2 -1
  49. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -1
  50. package/dist/spec/catalogs/font-schemes/arial.json +2 -1
  51. package/dist/spec/catalogs/font-schemes/batang.json +2 -1
  52. package/dist/spec/catalogs/font-schemes/bookman.json +2 -1
  53. package/dist/spec/catalogs/font-schemes/calibri.json +2 -1
  54. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +2 -1
  55. package/dist/spec/catalogs/font-schemes/consolas.json +2 -1
  56. package/dist/spec/catalogs/font-schemes/constantia.json +2 -1
  57. package/dist/spec/catalogs/font-schemes/courier-new.json +2 -1
  58. package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -1
  59. package/dist/spec/catalogs/font-schemes/david.json +2 -1
  60. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -1
  61. package/dist/spec/catalogs/font-schemes/fangsong.json +2 -1
  62. package/dist/spec/catalogs/font-schemes/garamond.json +2 -1
  63. package/dist/spec/catalogs/font-schemes/gautami.json +2 -1
  64. package/dist/spec/catalogs/font-schemes/georgia.json +2 -1
  65. package/dist/spec/catalogs/font-schemes/gisha.json +2 -1
  66. package/dist/spec/catalogs/font-schemes/grandview.json +2 -1
  67. package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -1
  68. package/dist/spec/catalogs/font-schemes/impact.json +2 -1
  69. package/dist/spec/catalogs/font-schemes/index.json +236 -234
  70. package/dist/spec/catalogs/font-schemes/kalinga.json +2 -1
  71. package/dist/spec/catalogs/font-schemes/kartika.json +2 -1
  72. package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -1
  73. package/dist/spec/catalogs/font-schemes/latha.json +2 -1
  74. package/dist/spec/catalogs/font-schemes/lucida-sans.json +2 -1
  75. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -1
  76. package/dist/spec/catalogs/font-schemes/mangal.json +2 -1
  77. package/dist/spec/catalogs/font-schemes/meiryo.json +2 -1
  78. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -1
  79. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +2 -1
  80. package/dist/spec/catalogs/font-schemes/mingliu.json +2 -1
  81. package/dist/spec/catalogs/font-schemes/miriam.json +2 -1
  82. package/dist/spec/catalogs/font-schemes/montserrat.json +2 -1
  83. package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -1
  84. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -1
  85. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -1
  86. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +2 -1
  87. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +2 -1
  88. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -1
  89. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +2 -1
  90. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +2 -1
  91. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -1
  92. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -1
  93. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -1
  94. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -1
  95. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -1
  96. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -1
  97. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -1
  98. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -1
  99. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -1
  100. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -1
  101. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -1
  102. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -1
  103. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +2 -1
  104. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -1
  105. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -1
  106. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -1
  107. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -1
  108. package/dist/spec/catalogs/font-schemes/noto-sans.json +2 -1
  109. package/dist/spec/catalogs/font-schemes/nyala.json +2 -1
  110. package/dist/spec/catalogs/font-schemes/open-sans.json +2 -1
  111. package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -1
  112. package/dist/spec/catalogs/font-schemes/poppins.json +2 -1
  113. package/dist/spec/catalogs/font-schemes/pt-serif.json +2 -1
  114. package/dist/spec/catalogs/font-schemes/raavi.json +2 -1
  115. package/dist/spec/catalogs/font-schemes/raleway.json +2 -1
  116. package/dist/spec/catalogs/font-schemes/roboto.json +2 -1
  117. package/dist/spec/catalogs/font-schemes/rockwell.json +2 -1
  118. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +2 -1
  119. package/dist/spec/catalogs/font-schemes/seaford.json +2 -1
  120. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +2 -1
  121. package/dist/spec/catalogs/font-schemes/segoe-ui.json +2 -1
  122. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +2 -1
  123. package/dist/spec/catalogs/font-schemes/shruti.json +2 -1
  124. package/dist/spec/catalogs/font-schemes/simsun.json +2 -1
  125. package/dist/spec/catalogs/font-schemes/skeena.json +2 -1
  126. package/dist/spec/catalogs/font-schemes/sylfaen.json +2 -1
  127. package/dist/spec/catalogs/font-schemes/tahoma.json +2 -1
  128. package/dist/spec/catalogs/font-schemes/tenorite.json +2 -1
  129. package/dist/spec/catalogs/font-schemes/times-new-roman.json +2 -1
  130. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +2 -1
  131. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +2 -1
  132. package/dist/spec/catalogs/font-schemes/tunga.json +2 -1
  133. package/dist/spec/catalogs/font-schemes/verdana.json +2 -1
  134. package/dist/spec/catalogs/font-schemes/vrinda.json +2 -1
  135. package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -1
  136. package/dist/spec/catalogs/languages/index.json +2 -0
  137. package/dist/spec/catalogs/layouts/action-plan.json +35 -0
  138. package/dist/spec/catalogs/layouts/agenda.json +35 -0
  139. package/dist/spec/catalogs/layouts/appendix-index.json +38 -0
  140. package/dist/spec/catalogs/layouts/architecture-stack.json +35 -0
  141. package/dist/spec/catalogs/layouts/assumptions-dependencies.json +35 -0
  142. package/dist/spec/catalogs/layouts/before-after.json +41 -0
  143. package/dist/spec/catalogs/layouts/benchmark-target-table.json +35 -0
  144. package/dist/spec/catalogs/layouts/bullet-list.json +38 -0
  145. package/dist/spec/catalogs/layouts/business-model-canvas.json +35 -0
  146. package/dist/spec/catalogs/layouts/capability-map.json +35 -0
  147. package/dist/spec/catalogs/layouts/case-study.json +35 -0
  148. package/dist/spec/catalogs/layouts/chapter-recap.json +35 -0
  149. package/dist/spec/catalogs/layouts/circular-lifecycle.json +35 -0
  150. package/dist/spec/catalogs/layouts/comparison.json +41 -0
  151. package/dist/spec/catalogs/layouts/competitive-landscape.json +35 -0
  152. package/dist/spec/catalogs/layouts/customer-journey.json +35 -0
  153. package/dist/spec/catalogs/layouts/customer-logos.json +38 -0
  154. package/dist/spec/catalogs/layouts/dashboard.json +41 -0
  155. package/dist/spec/catalogs/layouts/data-visualization.json +45 -0
  156. package/dist/spec/catalogs/layouts/decision-tree.json +35 -0
  157. package/dist/spec/catalogs/layouts/detailed-data-table.json +41 -0
  158. package/dist/spec/catalogs/layouts/ecosystem-map.json +35 -0
  159. package/dist/spec/catalogs/layouts/executive-decision.json +38 -0
  160. package/dist/spec/catalogs/layouts/executive-summary.json +38 -0
  161. package/dist/spec/catalogs/layouts/faq.json +35 -0
  162. package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +35 -0
  163. package/dist/spec/catalogs/layouts/forecast-scenario.json +45 -0
  164. package/dist/spec/catalogs/layouts/funnel-pyramid.json +38 -0
  165. package/dist/spec/catalogs/layouts/gantt-project-plan.json +38 -0
  166. package/dist/spec/catalogs/layouts/geographic-map.json +35 -0
  167. package/dist/spec/catalogs/layouts/heatmap-cohort.json +38 -0
  168. package/dist/spec/catalogs/layouts/hub-and-spoke.json +35 -0
  169. package/dist/spec/catalogs/layouts/icon-grid.json +35 -0
  170. package/dist/spec/catalogs/layouts/image-focus.json +35 -0
  171. package/dist/spec/catalogs/layouts/index.json +352 -0
  172. package/dist/spec/catalogs/layouts/key-takeaway.json +32 -0
  173. package/dist/spec/catalogs/layouts/kpi-scorecard.json +44 -0
  174. package/dist/spec/catalogs/layouts/logic-tree.json +35 -0
  175. package/dist/spec/catalogs/layouts/market-size.json +35 -0
  176. package/dist/spec/catalogs/layouts/matrix-quadrant.json +48 -0
  177. package/dist/spec/catalogs/layouts/network-dependency-map.json +35 -0
  178. package/dist/spec/catalogs/layouts/one-column-explainer.json +35 -0
  179. package/dist/spec/catalogs/layouts/org-chart.json +45 -0
  180. package/dist/spec/catalogs/layouts/persona-grid.json +35 -0
  181. package/dist/spec/catalogs/layouts/photo-grid.json +48 -0
  182. package/dist/spec/catalogs/layouts/pricing-table.json +35 -0
  183. package/dist/spec/catalogs/layouts/process-flow.json +35 -0
  184. package/dist/spec/catalogs/layouts/product-feature.json +35 -0
  185. package/dist/spec/catalogs/layouts/pros-cons.json +41 -0
  186. package/dist/spec/catalogs/layouts/qa-discussion.json +38 -0
  187. package/dist/spec/catalogs/layouts/quote-highlight.json +35 -0
  188. package/dist/spec/catalogs/layouts/raci-matrix.json +35 -0
  189. package/dist/spec/catalogs/layouts/risk-heatmap.json +35 -0
  190. package/dist/spec/catalogs/layouts/roadmap.json +35 -0
  191. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +35 -0
  192. package/dist/spec/catalogs/layouts/section-divider.json +35 -0
  193. package/dist/spec/catalogs/layouts/single-message-statement.json +32 -0
  194. package/dist/spec/catalogs/layouts/stats-metrics.json +45 -0
  195. package/dist/spec/catalogs/layouts/status-rag.json +35 -0
  196. package/dist/spec/catalogs/layouts/swimlane-process.json +35 -0
  197. package/dist/spec/catalogs/layouts/swot-analysis.json +48 -0
  198. package/dist/spec/catalogs/layouts/team-bio.json +35 -0
  199. package/dist/spec/catalogs/layouts/testimonial-grid.json +44 -0
  200. package/dist/spec/catalogs/layouts/thank-you-cta.json +35 -0
  201. package/dist/spec/catalogs/layouts/three-column.json +45 -0
  202. package/dist/spec/catalogs/layouts/timeline.json +38 -0
  203. package/dist/spec/catalogs/layouts/title-slide.json +35 -0
  204. package/dist/spec/catalogs/layouts/two-column.json +42 -0
  205. package/dist/spec/catalogs/layouts/venn-overlap.json +35 -0
  206. package/dist/spec/catalogs/layouts/waterfall-bridge.json +45 -0
  207. package/dist/spec/catalogs/layouts/wheel-radial.json +35 -0
  208. package/dist/spec/catalogs/manifest.json +111 -0
  209. package/dist/spec/catalogs/narratives/index.json +746 -144
  210. package/dist/spec/catalogs/purposes/index.json +2 -0
  211. package/dist/spec/catalogs/social-platforms/index.json +2 -1
  212. package/dist/spec/catalogs/themes/index.json +10 -8
  213. package/dist/spec/catalogs/tones/index.json +2 -0
  214. package/dist/spec/reference/font-policy.json +113 -38
  215. package/dist/spec/reference/font-policy.schema.json +10 -0
  216. package/dist/spec/schemas/audience.schema.json +21 -0
  217. package/dist/spec/schemas/catalog-index.schema.json +40 -3
  218. package/dist/spec/schemas/catalog-manifest.schema.json +83 -0
  219. package/dist/spec/schemas/chart-type.schema.json +5 -0
  220. package/dist/spec/schemas/color-scheme.schema.json +21 -0
  221. package/dist/spec/schemas/font-scheme.schema.json +21 -0
  222. package/dist/spec/schemas/language.schema.json +21 -0
  223. package/dist/spec/schemas/layout.schema.json +21 -0
  224. package/dist/spec/schemas/narrative.schema.json +21 -0
  225. package/dist/spec/schemas/opf.schema.json +5 -5
  226. package/dist/spec/schemas/purpose.schema.json +21 -0
  227. package/dist/spec/schemas/social-platform.schema.json +26 -5
  228. package/dist/spec/schemas/theme.schema.json +21 -0
  229. package/dist/spec/schemas/tone.schema.json +21 -0
  230. package/dist/spec-files.d.ts +2 -2
  231. package/dist/spec-files.js +1 -1
  232. package/dist/types.d.ts +2 -2
  233. package/dist/validator.d.ts +2 -2
  234. package/dist/validator.js +4 -4
  235. package/package.json +1 -1
@@ -37,6 +37,27 @@
37
37
  "Chinese (simplified)"
38
38
  ]
39
39
  },
40
+ "deprecation": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["replacedBy"],
44
+ "description": "Present when this language is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
45
+ "properties": {
46
+ "replacedBy": {
47
+ "type": "string",
48
+ "pattern": "^[a-z][a-z0-9-]*$",
49
+ "description": "Id of the non-deprecated language record that documents should reference instead."
50
+ },
51
+ "reason": {
52
+ "type": "string",
53
+ "description": "Why the record is deprecated."
54
+ },
55
+ "removal": {
56
+ "type": "string",
57
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
58
+ }
59
+ }
60
+ },
40
61
  "code": {
41
62
  "type": "string",
42
63
  "description": "ISO 639-3 (or 639-2) three-letter language code. Carried for engines that prefer ISO codes.",
@@ -36,6 +36,27 @@
36
36
  "Image Bleed"
37
37
  ]
38
38
  },
39
+ "deprecation": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["replacedBy"],
43
+ "description": "Present when this layout is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
44
+ "properties": {
45
+ "replacedBy": {
46
+ "type": "string",
47
+ "pattern": "^[a-z][a-z0-9-]*$",
48
+ "description": "Id of the non-deprecated layout record that documents should reference instead."
49
+ },
50
+ "reason": {
51
+ "type": "string",
52
+ "description": "Why the record is deprecated."
53
+ },
54
+ "removal": {
55
+ "type": "string",
56
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
57
+ }
58
+ }
59
+ },
39
60
  "summary": {
40
61
  "type": "string",
41
62
  "description": "One-sentence positioning of the layout — when to reach for it.",
@@ -24,6 +24,27 @@
24
24
  "type": "string",
25
25
  "description": "Human-readable template name, e.g. 'Problem → Solution'."
26
26
  },
27
+ "deprecation": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": ["replacedBy"],
31
+ "description": "Present when this narrative is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
32
+ "properties": {
33
+ "replacedBy": {
34
+ "type": "string",
35
+ "pattern": "^[a-z][a-z0-9-]*$",
36
+ "description": "Id of the non-deprecated narrative record that documents should reference instead."
37
+ },
38
+ "reason": {
39
+ "type": "string",
40
+ "description": "Why the record is deprecated."
41
+ },
42
+ "removal": {
43
+ "type": "string",
44
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
45
+ }
46
+ }
47
+ },
27
48
  "summary": {
28
49
  "type": "string",
29
50
  "description": "One-sentence description of when and why to use this narrative."
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf/v1",
4
4
  "title": "Presentation",
5
- "description": "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry, and content color fields (rich-text runs, styled table cells) accept hex values, color-scheme slot/role names, or 'var:<id>' references into the top-level variables map.",
5
+ "description": "Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity.\n\nFields that reference catalog records (narrative, language, tone, audience, purpose, design.theme / design.theme.id, design.colorScheme / design.colorScheme.id, design.fontScheme / design.fontScheme.id, Slide.layout, Chart.type, Organization.socials / Speaker.socials) resolve through the catalog system: inline 'catalogs.<kind>.records[]' on the document → 'catalogs.<kind>.source' on the document → engine defaults → the default catalog at https://www.pptx.gallery/<kind>. The default catalog is published by pptx.gallery: the index at https://www.pptx.gallery/<kind>/index.json (also GET https://www.pptx.gallery/<kind> with Accept: application/json) and each record at https://www.pptx.gallery/<kind>/<id>.json. Engines resolve it from the pinned snapshot bundled in @openpresentation/opf (spec/catalogs, pinned by spec/catalogs/manifest.json) and never fetch it at run time; fetching a document's catalogs.<kind>.source is an explicit opt-in by the caller. Every reference resolves to the catalog record's 'id' field. When an OPF document omits a reference entirely, the engine falls back to engine defaults (see /spec/reference/engine-defaults.json for a reference example). The defaults file is engine configuration; it is not part of the OPF document contract and has no JSON Schema.\n\nMost catalog references accept the bare 'id' as a string for the common case (e.g. narrative = 'classic-story', design.colorScheme = 'cool-horizon'). Audience, purpose, tone, design, and language object forms use 'id' as a base catalog reference plus inline overrides. Asset references use 'asset:<id>' strings that point into the top-level assets registry, and content color fields (rich-text runs, styled table cells) accept hex values, color-scheme slot/role names, or 'var:<id>' references into the top-level variables map.",
6
6
  "type": "object",
7
7
  "required": ["slides"],
8
8
  "additionalProperties": false,
@@ -634,7 +634,7 @@
634
634
  },
635
635
  "Socials": {
636
636
  "type": "object",
637
- "description": "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern, handle prefix, brand color, and themed icons used by renderers.\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.",
637
+ "description": "Social media handles or URLs, keyed by platform id from the 'socialPlatforms' catalog. Each value is a string — either a full URL or a platform handle (e.g., '@acme'). The catalog record for each platform carries the URL pattern and handle prefix that engines use to render and link the profile URL, plus brand color and themed icons as catalog metadata for authoring UIs (engines render the profile URL, not icons or brand colors).\n\nKeys resolve to the 'id' of a 'socialPlatforms' catalog record. Resolution order: inline catalogs.socialPlatforms.records[] → catalogs.socialPlatforms.source → default catalog at https://www.pptx.gallery/social-platforms. Unknown platform keys render with engine fallbacks (the raw value as text). Used both for organization and speaker records.",
638
638
  "additionalProperties": {
639
639
  "type": "string",
640
640
  "description": "Handle or URL for the platform identified by the property key."
@@ -2997,7 +2997,7 @@
2997
2997
  },
2998
2998
  "Catalogs": {
2999
2999
  "type": "object",
3000
- "description": "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.",
3000
+ "description": "Catalog overrides for the in-document references. Every property is optional. The default catalog for a kind lives at https://www.pptx.gallery/<kind> (e.g. https://www.pptx.gallery/narratives, https://www.pptx.gallery/themes). pptx.gallery is its canonical publisher: GET https://www.pptx.gallery/<kind>/index.json (or https://www.pptx.gallery/<kind> with Accept: application/json) returns a catalog index (https://openpresentation.org/schema/opf-catalog-index/v1) and https://www.pptx.gallery/<kind>/<id>.json returns one record that validates against the kind's companion schema; publisher metadata sits in top-level 'x-*' members that consumers ignore. Engines resolve the default catalog from the pinned snapshot bundled in @openpresentation/opf (spec/catalogs, pinned to a publisher commit and content hash by spec/catalogs/manifest.json), so resolution is deterministic offline and in the cloud; they do not fetch pptx.gallery at run time. For each kind, declaring a 'source' replaces the default registry and/or 'records' adds inline records that take precedence over anything fetched from a source.\n\nResolution order for any reference (e.g. narrative, design.theme): inline catalogs.<kind>.records[] → catalogs.<kind>.source → default catalog at https://www.pptx.gallery/<kind>. Every reference resolves to the catalog record's 'id' field. References that are themselves URLs or 'pkg:' references skip the catalog lookup and resolve directly.",
3001
3001
  "properties": {
3002
3002
  "narratives": {
3003
3003
  "$ref": "#/$defs/CatalogEntry",
@@ -3059,7 +3059,7 @@
3059
3059
  "description": "Ordered search path of sources. The engine tries each in order; first match wins. The default catalog for the kind is appended implicitly at the end."
3060
3060
  }
3061
3061
  ],
3062
- "description": "Single source or an ordered search path of sources. When omitted, the engine falls back to https://www.pptx.gallery/<kind>."
3062
+ "description": "Single source or an ordered search path of sources. When omitted, the engine falls back to the default catalog at https://www.pptx.gallery/<kind>, resolved from its bundled snapshot. Fetching a declared source is an explicit opt-in: the engine or its caller performs that fetch."
3063
3063
  },
3064
3064
  "records": {
3065
3065
  "type": "array",
@@ -3070,7 +3070,7 @@
3070
3070
  },
3071
3071
  "CatalogSource": {
3072
3072
  "type": "string",
3073
- "description": "Catalog source location. Accepts:\n- A bare URL pointing at a catalog directory (e.g. 'https://acme.com/decks/narratives'); record ids resolve to '<base>/<id>.json'.\n- A URL pointing at an index file (e.g. 'https://acme.com/decks/narratives/index.json'); records are resolved relative to the index file's directory and the index entries describe what's available.\n- A package reference of the form 'pkg:<package>[/<subpath>]'; resolved through a locally-installed package on the engine's package path.",
3073
+ "description": "Catalog source location. Accepts:\n- A bare URL pointing at a catalog directory (e.g. 'https://acme.com/decks/narratives'); record ids resolve to '<base>/<id>.json'.\n- A URL pointing at an index file (e.g. 'https://acme.com/decks/narratives/index.json'); records are resolved relative to the index file's directory and the index entries describe what's available. Index files follow https://openpresentation.org/schema/opf-catalog-index/v1; the default catalog's index is https://www.pptx.gallery/<kind>/index.json.\n- A package reference of the form 'pkg:<package>[/<subpath>]'; resolved through a locally-installed package on the engine's package path.",
3074
3074
  "examples": [
3075
3075
  "https://www.pptx.gallery/narratives",
3076
3076
  "https://acme.com/decks/narratives/index.json",
@@ -26,6 +26,27 @@
26
26
  "description": "Human-readable purpose name shown in pickers.",
27
27
  "examples": ["Inform", "Drive a Decision", "Align", "Persuade"]
28
28
  },
29
+ "deprecation": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": ["replacedBy"],
33
+ "description": "Present when this purpose is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
34
+ "properties": {
35
+ "replacedBy": {
36
+ "type": "string",
37
+ "pattern": "^[a-z][a-z0-9-]*$",
38
+ "description": "Id of the non-deprecated purpose record that documents should reference instead."
39
+ },
40
+ "reason": {
41
+ "type": "string",
42
+ "description": "Why the record is deprecated."
43
+ },
44
+ "removal": {
45
+ "type": "string",
46
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
47
+ }
48
+ }
49
+ },
29
50
  "summary": {
30
51
  "type": "string",
31
52
  "description": "One-sentence positioning of the purpose — what this deck is trying to accomplish."
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-social-platform/v1",
4
4
  "title": "Social Platform",
5
- "description": "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and renderers use the catalog record to format URLs and pick icons. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.",
5
+ "description": "Schema for social-platform records in the pptx.gallery library. Each record describes a single social-media platform — its base URL, profile-URL pattern, handle prefix, brand color, and themed icons. Records are referenced from OPF documents indirectly: the property keys of any Socials object (Organization.socials, Speaker.socials) match record ids, and engines use the catalog record's URL patterns and handle prefix to format and link the profile URL. The brand color and the themed icons are catalog metadata for authoring UIs: engines (opf-render, opf-pptx) render the profile URL, not icons or brand colors. The engine resolves references against catalogs.socialPlatforms (inline) → catalogs.socialPlatforms.source → the default catalog at https://www.pptx.gallery/social-platforms.",
6
6
  "type": "object",
7
7
  "required": [
8
8
  "$schema",
@@ -48,6 +48,27 @@
48
48
  "Bluesky"
49
49
  ]
50
50
  },
51
+ "deprecation": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": ["replacedBy"],
55
+ "description": "Present when this social platform is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
56
+ "properties": {
57
+ "replacedBy": {
58
+ "type": "string",
59
+ "pattern": "^[a-z][a-z0-9-]*$",
60
+ "description": "Id of the non-deprecated social platform record that documents should reference instead."
61
+ },
62
+ "reason": {
63
+ "type": "string",
64
+ "description": "Why the record is deprecated."
65
+ },
66
+ "removal": {
67
+ "type": "string",
68
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
69
+ }
70
+ }
71
+ },
51
72
  "summary": {
52
73
  "type": "string",
53
74
  "description": "One-sentence positioning of the platform — what it's used for and who's on it.",
@@ -111,7 +132,7 @@
111
132
  },
112
133
  "brandColor": {
113
134
  "type": "string",
114
- "description": "Brand color (hex) used for branded icon chips, link styling, or section accents.",
135
+ "description": "Brand color (hex) for branded icon chips, link styling, or section accents in authoring UIs. Catalog metadata: engines do not draw it.",
115
136
  "examples": [
116
137
  "#0A66C2",
117
138
  "#000000",
@@ -121,7 +142,7 @@
121
142
  },
122
143
  "icon": {
123
144
  "type": "string",
124
- "description": "Default icon source. Accepts an HTTPS URL, data URI, relative path, or asset reference. Used as the fallback when a themed (Light/Dark) variant isn't set.",
145
+ "description": "Default icon source. Accepts an HTTPS URL, data URI, relative path, or asset reference. Used as the fallback when a themed (Light/Dark) variant isn't set. Catalog metadata for authoring UIs: engines do not draw icons.",
125
146
  "examples": [
126
147
  "https://www.pptx.gallery/social-platforms/linkedin.svg",
127
148
  "./assets/social-platforms/linkedin.svg",
@@ -130,7 +151,7 @@
130
151
  },
131
152
  "iconLight": {
132
153
  "type": "string",
133
- "description": "Light-colored icon variant intended for rendering on dark backgrounds.",
154
+ "description": "Light-colored icon variant intended for authoring UIs that draw the icon on dark backgrounds (engines do not draw icons).",
134
155
  "examples": [
135
156
  "https://www.pptx.gallery/social-platforms/linkedin-light.svg",
136
157
  "./assets/social-platforms/linkedin-light.svg"
@@ -138,7 +159,7 @@
138
159
  },
139
160
  "iconDark": {
140
161
  "type": "string",
141
- "description": "Dark-colored icon variant intended for rendering on light backgrounds.",
162
+ "description": "Dark-colored icon variant intended for authoring UIs that draw the icon on light backgrounds (engines do not draw icons).",
142
163
  "examples": [
143
164
  "https://www.pptx.gallery/social-platforms/linkedin-dark.svg",
144
165
  "./assets/social-platforms/linkedin-dark.svg"
@@ -36,6 +36,27 @@
36
36
  "Bold"
37
37
  ]
38
38
  },
39
+ "deprecation": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["replacedBy"],
43
+ "description": "Present when this theme is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
44
+ "properties": {
45
+ "replacedBy": {
46
+ "type": "string",
47
+ "pattern": "^[a-z][a-z0-9-]*$",
48
+ "description": "Id of the non-deprecated theme record that documents should reference instead."
49
+ },
50
+ "reason": {
51
+ "type": "string",
52
+ "description": "Why the record is deprecated."
53
+ },
54
+ "removal": {
55
+ "type": "string",
56
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
57
+ }
58
+ }
59
+ },
39
60
  "summary": {
40
61
  "type": "string",
41
62
  "description": "One-sentence positioning of the theme — when to reach for it.",
@@ -42,6 +42,27 @@
42
42
  "Conversational"
43
43
  ]
44
44
  },
45
+ "deprecation": {
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "required": ["replacedBy"],
49
+ "description": "Present when this tone is deprecated, for example an alias kept for backward compatibility. Deprecated records stay resolvable so existing documents keep validating and rendering unchanged, but pickers and default listings exclude them and validators warn when a document references them. Same shape as the chart-type deprecation.",
50
+ "properties": {
51
+ "replacedBy": {
52
+ "type": "string",
53
+ "pattern": "^[a-z][a-z0-9-]*$",
54
+ "description": "Id of the non-deprecated tone record that documents should reference instead."
55
+ },
56
+ "reason": {
57
+ "type": "string",
58
+ "description": "Why the record is deprecated."
59
+ },
60
+ "removal": {
61
+ "type": "string",
62
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
63
+ }
64
+ }
65
+ },
45
66
  "summary": {
46
67
  "type": "string",
47
68
  "description": "One-sentence positioning of the tone — when to reach for it.",
@@ -1,7 +1,7 @@
1
1
  /** Path of a file under `spec/`, relative to the spec root. */
2
- type SpecFilePath = "README.md" | "catalogs/audiences/academic.json" | "catalogs/audiences/all-hands.json" | "catalogs/audiences/board.json" | "catalogs/audiences/candidates.json" | "catalogs/audiences/customer.json" | "catalogs/audiences/customers.json" | "catalogs/audiences/engineering-team.json" | "catalogs/audiences/executive.json" | "catalogs/audiences/executives.json" | "catalogs/audiences/general-public.json" | "catalogs/audiences/index.json" | "catalogs/audiences/internal-team.json" | "catalogs/audiences/investor.json" | "catalogs/audiences/investors.json" | "catalogs/audiences/marketing-team.json" | "catalogs/audiences/marketing.json" | "catalogs/audiences/media.json" | "catalogs/audiences/partner.json" | "catalogs/audiences/regulators.json" | "catalogs/audiences/regulatory.json" | "catalogs/audiences/sales-team.json" | "catalogs/audiences/sales.json" | "catalogs/audiences/technical.json" | "catalogs/chart-types/100pct-bullet-bar-2x.json" | "catalogs/chart-types/100pct-bullet-bar-3x.json" | "catalogs/chart-types/100pct-bullet-bar.json" | "catalogs/chart-types/100pct-bullet-column-2x.json" | "catalogs/chart-types/100pct-bullet-column-3x.json" | "catalogs/chart-types/100pct-bullet-column.json" | "catalogs/chart-types/100pct-progress-bar.json" | "catalogs/chart-types/100pct-stacked-area-2x.json" | "catalogs/chart-types/100pct-stacked-area-3x.json" | "catalogs/chart-types/100pct-stacked-bar-2x.json" | "catalogs/chart-types/100pct-stacked-bar-3x.json" | "catalogs/chart-types/100pct-stacked-column-2x.json" | "catalogs/chart-types/100pct-stacked-column-3x.json" | "catalogs/chart-types/area.json" | "catalogs/chart-types/australia.json" | "catalogs/chart-types/bar.json" | "catalogs/chart-types/box-and-whisker-2x.json" | "catalogs/chart-types/box-and-whisker-3x.json" | "catalogs/chart-types/box-and-whisker.json" | "catalogs/chart-types/bullet-bar-2x.json" | "catalogs/chart-types/bullet-bar-3x.json" | "catalogs/chart-types/bullet-bar.json" | "catalogs/chart-types/bullet-column-2x.json" | "catalogs/chart-types/bullet-column-3x.json" | "catalogs/chart-types/bullet-column.json" | "catalogs/chart-types/canada.json" | "catalogs/chart-types/clustered-bar-2x.json" | "catalogs/chart-types/clustered-column.json" | "catalogs/chart-types/column.json" | "catalogs/chart-types/dot-plot-2x.json" | "catalogs/chart-types/dot-plot-3x.json" | "catalogs/chart-types/dot-plot-4x.json" | "catalogs/chart-types/dot-plot-5x.json" | "catalogs/chart-types/dot-plot-6x.json" | "catalogs/chart-types/dot-plot.json" | "catalogs/chart-types/doughnut.json" | "catalogs/chart-types/dumbbell.json" | "catalogs/chart-types/filled-radar.json" | "catalogs/chart-types/funnel.json" | "catalogs/chart-types/histogram.json" | "catalogs/chart-types/index.json" | "catalogs/chart-types/line-2x.json" | "catalogs/chart-types/line-3x.json" | "catalogs/chart-types/line-with-high-low-and-markers.json" | "catalogs/chart-types/line-with-high-low.json" | "catalogs/chart-types/line-with-markers-2x.json" | "catalogs/chart-types/line-with-markers-3x.json" | "catalogs/chart-types/line-with-markers.json" | "catalogs/chart-types/line.json" | "catalogs/chart-types/pareto.json" | "catalogs/chart-types/pie.json" | "catalogs/chart-types/radar-with-markers.json" | "catalogs/chart-types/radar.json" | "catalogs/chart-types/scatter.json" | "catalogs/chart-types/sparkline-2x.json" | "catalogs/chart-types/sparkline-3x.json" | "catalogs/chart-types/sparkline-4x.json" | "catalogs/chart-types/sparkline-5x.json" | "catalogs/chart-types/sparkline-6x.json" | "catalogs/chart-types/sparkline.json" | "catalogs/chart-types/stacked-area-2x.json" | "catalogs/chart-types/stacked-area-3x.json" | "catalogs/chart-types/stacked-bar-2x.json" | "catalogs/chart-types/stacked-bar-3x.json" | "catalogs/chart-types/stacked-column-2x.json" | "catalogs/chart-types/stacked-column-3x.json" | "catalogs/chart-types/stacked-line-2x.json" | "catalogs/chart-types/stacked-line-3x.json" | "catalogs/chart-types/stacked-line-with-markers-2x.json" | "catalogs/chart-types/stacked-line-with-markers-3x.json" | "catalogs/chart-types/treemap-2x.json" | "catalogs/chart-types/treemap-3x.json" | "catalogs/chart-types/treemap.json" | "catalogs/chart-types/united-kingdom.json" | "catalogs/chart-types/united-states.json" | "catalogs/chart-types/waterfall.json" | "catalogs/chart-types/world.json" | "catalogs/color-schemes/black-and-white.json" | "catalogs/color-schemes/bold-red.json" | "catalogs/color-schemes/boost.json" | "catalogs/color-schemes/burnt-orange.json" | "catalogs/color-schemes/cool-horizon.json" | "catalogs/color-schemes/corporate-blue.json" | "catalogs/color-schemes/deep-purple.json" | "catalogs/color-schemes/forest-green.json" | "catalogs/color-schemes/golden-yellow.json" | "catalogs/color-schemes/index.json" | "catalogs/color-schemes/luxury.json" | "catalogs/color-schemes/pastel-red.json" | "catalogs/color-schemes/slate-gray.json" | "catalogs/color-schemes/steel-blue.json" | "catalogs/color-schemes/vibes.json" | "catalogs/font-schemes/angsana-new.json" | "catalogs/font-schemes/aparajita.json" | "catalogs/font-schemes/aptos.json" | "catalogs/font-schemes/arabic-typesetting.json" | "catalogs/font-schemes/arial.json" | "catalogs/font-schemes/batang.json" | "catalogs/font-schemes/bookman.json" | "catalogs/font-schemes/calibri.json" | "catalogs/font-schemes/century-schoolbook.json" | "catalogs/font-schemes/consolas.json" | "catalogs/font-schemes/constantia.json" | "catalogs/font-schemes/courier-new.json" | "catalogs/font-schemes/daunpenh.json" | "catalogs/font-schemes/david.json" | "catalogs/font-schemes/dilleniaupc.json" | "catalogs/font-schemes/fangsong.json" | "catalogs/font-schemes/garamond.json" | "catalogs/font-schemes/gautami.json" | "catalogs/font-schemes/georgia.json" | "catalogs/font-schemes/gisha.json" | "catalogs/font-schemes/grandview.json" | "catalogs/font-schemes/gungsuh.json" | "catalogs/font-schemes/impact.json" | "catalogs/font-schemes/index.json" | "catalogs/font-schemes/kalinga.json" | "catalogs/font-schemes/kartika.json" | "catalogs/font-schemes/khmer-ui.json" | "catalogs/font-schemes/latha.json" | "catalogs/font-schemes/lucida-sans.json" | "catalogs/font-schemes/malgun-gothic.json" | "catalogs/font-schemes/mangal.json" | "catalogs/font-schemes/meiryo.json" | "catalogs/font-schemes/microsoft-jhenghei.json" | "catalogs/font-schemes/microsoft-yahei.json" | "catalogs/font-schemes/mingliu.json" | "catalogs/font-schemes/miriam.json" | "catalogs/font-schemes/montserrat.json" | "catalogs/font-schemes/ms-mincho.json" | "catalogs/font-schemes/nirmala-ui.json" | "catalogs/font-schemes/noto-naksh-arabic.json" | "catalogs/font-schemes/noto-nastaliq-urdu.json" | "catalogs/font-schemes/noto-sans-arabic.json" | "catalogs/font-schemes/noto-sans-armenian.json" | "catalogs/font-schemes/noto-sans-bengali.json" | "catalogs/font-schemes/noto-sans-devangari.json" | "catalogs/font-schemes/noto-sans-ethiopic.json" | "catalogs/font-schemes/noto-sans-georgian.json" | "catalogs/font-schemes/noto-sans-gujarati.json" | "catalogs/font-schemes/noto-sans-gurmukhi.json" | "catalogs/font-schemes/noto-sans-hebrew.json" | "catalogs/font-schemes/noto-sans-jp.json" | "catalogs/font-schemes/noto-sans-kannada.json" | "catalogs/font-schemes/noto-sans-khmer.json" | "catalogs/font-schemes/noto-sans-kr.json" | "catalogs/font-schemes/noto-sans-malayalam.json" | "catalogs/font-schemes/noto-sans-mongolian.json" | "catalogs/font-schemes/noto-sans-oriya.json" | "catalogs/font-schemes/noto-sans-sc.json" | "catalogs/font-schemes/noto-sans-tamil.json" | "catalogs/font-schemes/noto-sans-tc.json" | "catalogs/font-schemes/noto-sans-telugu.json" | "catalogs/font-schemes/noto-sans-thai.json" | "catalogs/font-schemes/noto-sans.json" | "catalogs/font-schemes/nyala.json" | "catalogs/font-schemes/open-sans.json" | "catalogs/font-schemes/pmingliu.json" | "catalogs/font-schemes/poppins.json" | "catalogs/font-schemes/pt-serif.json" | "catalogs/font-schemes/raavi.json" | "catalogs/font-schemes/raleway.json" | "catalogs/font-schemes/roboto.json" | "catalogs/font-schemes/rockwell.json" | "catalogs/font-schemes/sakkal-majalla.json" | "catalogs/font-schemes/seaford.json" | "catalogs/font-schemes/segoe-ui-light.json" | "catalogs/font-schemes/segoe-ui.json" | "catalogs/font-schemes/shonar-bangla.json" | "catalogs/font-schemes/shruti.json" | "catalogs/font-schemes/simsun.json" | "catalogs/font-schemes/skeena.json" | "catalogs/font-schemes/sylfaen.json" | "catalogs/font-schemes/tahoma.json" | "catalogs/font-schemes/tenorite.json" | "catalogs/font-schemes/times-new-roman.json" | "catalogs/font-schemes/traditional-arabic.json" | "catalogs/font-schemes/trebuchet-ms.json" | "catalogs/font-schemes/tunga.json" | "catalogs/font-schemes/verdana.json" | "catalogs/font-schemes/vrinda.json" | "catalogs/font-schemes/yu-gothic.json" | "catalogs/languages/afrikaans.json" | "catalogs/languages/albanian.json" | "catalogs/languages/amharic.json" | "catalogs/languages/arabic.json" | "catalogs/languages/armenian.json" | "catalogs/languages/aymara.json" | "catalogs/languages/azerbaijani.json" | "catalogs/languages/bengali.json" | "catalogs/languages/berber-latin.json" | "catalogs/languages/bosnian-latin.json" | "catalogs/languages/bulgarian.json" | "catalogs/languages/catalan.json" | "catalogs/languages/cebuano.json" | "catalogs/languages/chinese-simplified.json" | "catalogs/languages/chinese-traditional.json" | "catalogs/languages/chittagonian.json" | "catalogs/languages/croatian.json" | "catalogs/languages/czech.json" | "catalogs/languages/danish.json" | "catalogs/languages/dutch.json" | "catalogs/languages/english-au.json" | "catalogs/languages/english-ca.json" | "catalogs/languages/english-gb.json" | "catalogs/languages/english-in.json" | "catalogs/languages/english-us.json" | "catalogs/languages/english.json" | "catalogs/languages/estonian.json" | "catalogs/languages/filipino.json" | "catalogs/languages/finnish.json" | "catalogs/languages/french.json" | "catalogs/languages/fulfulde.json" | "catalogs/languages/galician.json" | "catalogs/languages/georgian.json" | "catalogs/languages/german.json" | "catalogs/languages/greek.json" | "catalogs/languages/gujarati.json" | "catalogs/languages/hausa.json" | "catalogs/languages/hebrew.json" | "catalogs/languages/hindi.json" | "catalogs/languages/hungarian.json" | "catalogs/languages/igbo.json" | "catalogs/languages/index.json" | "catalogs/languages/indonesian.json" | "catalogs/languages/italian.json" | "catalogs/languages/japanese.json" | "catalogs/languages/kannada.json" | "catalogs/languages/kazakh.json" | "catalogs/languages/khmer.json" | "catalogs/languages/kinyarwanda.json" | "catalogs/languages/korean.json" | "catalogs/languages/kurmanji.json" | "catalogs/languages/latvian.json" | "catalogs/languages/lithuanian.json" | "catalogs/languages/macedonian.json" | "catalogs/languages/malagasy.json" | "catalogs/languages/malay.json" | "catalogs/languages/malayalam.json" | "catalogs/languages/maori.json" | "catalogs/languages/marathi.json" | "catalogs/languages/mongolian.json" | "catalogs/languages/nepali.json" | "catalogs/languages/norwegian.json" | "catalogs/languages/odia.json" | "catalogs/languages/oromo.json" | "catalogs/languages/pashto.json" | "catalogs/languages/persian.json" | "catalogs/languages/polish.json" | "catalogs/languages/portuguese.json" | "catalogs/languages/punjabi-gurmukhi.json" | "catalogs/languages/punjabi-shahmukhi.json" | "catalogs/languages/romanian.json" | "catalogs/languages/russian.json" | "catalogs/languages/serbian-cyrillic.json" | "catalogs/languages/serbian-latin.json" | "catalogs/languages/shona.json" | "catalogs/languages/slovak.json" | "catalogs/languages/slovenian.json" | "catalogs/languages/somali.json" | "catalogs/languages/spanish.json" | "catalogs/languages/swahili.json" | "catalogs/languages/swedish.json" | "catalogs/languages/tagalog.json" | "catalogs/languages/tajik.json" | "catalogs/languages/tamil.json" | "catalogs/languages/telugu.json" | "catalogs/languages/thai.json" | "catalogs/languages/turkish.json" | "catalogs/languages/ukrainian.json" | "catalogs/languages/urdu.json" | "catalogs/languages/uzbek-latin.json" | "catalogs/languages/vietnamese-quoc-ngu.json" | "catalogs/languages/xhosa.json" | "catalogs/languages/yoruba.json" | "catalogs/languages/zulu.json" | "catalogs/layouts/blank.json" | "catalogs/layouts/chart-1x.json" | "catalogs/layouts/chart-2x.json" | "catalogs/layouts/chart-3x.json" | "catalogs/layouts/code-1x.json" | "catalogs/layouts/extract/canonical.json" | "catalogs/layouts/image-1x.json" | "catalogs/layouts/image-2x.json" | "catalogs/layouts/image-3x.json" | "catalogs/layouts/image-bleed.json" | "catalogs/layouts/index.json" | "catalogs/layouts/list-1x.json" | "catalogs/layouts/list-2x.json" | "catalogs/layouts/list-3x.json" | "catalogs/layouts/list-4x.json" | "catalogs/layouts/list-5x.json" | "catalogs/layouts/list-6x.json" | "catalogs/layouts/media-1x.json" | "catalogs/layouts/number-1x.json" | "catalogs/layouts/number-2x.json" | "catalogs/layouts/number-3x.json" | "catalogs/layouts/number-4x.json" | "catalogs/layouts/number-5x.json" | "catalogs/layouts/number-6x.json" | "catalogs/layouts/quote-1x.json" | "catalogs/layouts/table-1x.json" | "catalogs/layouts/text-1x.json" | "catalogs/layouts/text-2x.json" | "catalogs/layouts/text-3x.json" | "catalogs/layouts/timeline-1x.json" | "catalogs/layouts/title-subtitle.json" | "catalogs/layouts/title.json" | "catalogs/narratives/board-meeting.json" | "catalogs/narratives/business-narrative.json" | "catalogs/narratives/business-review.json" | "catalogs/narratives/capacity-planning.json" | "catalogs/narratives/challenge-resolution.json" | "catalogs/narratives/change-story.json" | "catalogs/narratives/classic-story.json" | "catalogs/narratives/company-intro.json" | "catalogs/narratives/conference-talk.json" | "catalogs/narratives/data-story.json" | "catalogs/narratives/early-startup-pitch.json" | "catalogs/narratives/educate.json" | "catalogs/narratives/employee-review.json" | "catalogs/narratives/failure-analysis.json" | "catalogs/narratives/focus.json" | "catalogs/narratives/golden-circle.json" | "catalogs/narratives/heros-journey.json" | "catalogs/narratives/index.json" | "catalogs/narratives/innovation.json" | "catalogs/narratives/justice.json" | "catalogs/narratives/marketing-strategy.json" | "catalogs/narratives/performance-improvement-plan.json" | "catalogs/narratives/performance-review.json" | "catalogs/narratives/persuade.json" | "catalogs/narratives/persuasive-sales.json" | "catalogs/narratives/pitch-deck.json" | "catalogs/narratives/problem-solution.json" | "catalogs/narratives/product-launch.json" | "catalogs/narratives/project-proposal.json" | "catalogs/narratives/pyramid-principle.json" | "catalogs/narratives/qbr.json" | "catalogs/narratives/rags-to-riches.json" | "catalogs/narratives/reveal.json" | "catalogs/narratives/scqa.json" | "catalogs/narratives/situation-complication-resolution.json" | "catalogs/narratives/sparkline.json" | "catalogs/narratives/star-method.json" | "catalogs/narratives/status-update.json" | "catalogs/narratives/strategic-advisory.json" | "catalogs/narratives/strategic-narrative.json" | "catalogs/narratives/survey-analysis.json" | "catalogs/narratives/survival-story.json" | "catalogs/narratives/transformation-arc.json" | "catalogs/narratives/trend-analysis.json" | "catalogs/narratives/underdog-victory.json" | "catalogs/narratives/venture-pitch.json" | "catalogs/narratives/vision-roadmap.json" | "catalogs/narratives/weekly-progress.json" | "catalogs/narratives/what-so-what-now-what.json" | "catalogs/purposes/align.json" | "catalogs/purposes/decide.json" | "catalogs/purposes/educate.json" | "catalogs/purposes/index.json" | "catalogs/purposes/inform.json" | "catalogs/purposes/persuade.json" | "catalogs/purposes/pitch.json" | "catalogs/purposes/plan.json" | "catalogs/purposes/report.json" | "catalogs/purposes/sell.json" | "catalogs/social-platforms/bluesky.json" | "catalogs/social-platforms/facebook.json" | "catalogs/social-platforms/github.json" | "catalogs/social-platforms/index.json" | "catalogs/social-platforms/instagram.json" | "catalogs/social-platforms/linkedin.json" | "catalogs/social-platforms/mastodon.json" | "catalogs/social-platforms/threads.json" | "catalogs/social-platforms/tiktok.json" | "catalogs/social-platforms/x.json" | "catalogs/social-platforms/youtube.json" | "catalogs/themes/bold.json" | "catalogs/themes/classic.json" | "catalogs/themes/dark.json" | "catalogs/themes/index.json" | "catalogs/themes/minimal.json" | "catalogs/tones/authoritative.json" | "catalogs/tones/casual.json" | "catalogs/tones/conversational.json" | "catalogs/tones/formal.json" | "catalogs/tones/index.json" | "catalogs/tones/inspirational.json" | "catalogs/tones/persuasive.json" | "catalogs/tones/technical.json" | "openapi.yaml" | "previews/layouts/action-plan.html" | "previews/layouts/agenda.html" | "previews/layouts/appendix-index.html" | "previews/layouts/architecture-stack.html" | "previews/layouts/assumptions-dependencies.html" | "previews/layouts/before-after.html" | "previews/layouts/benchmark-target-table.html" | "previews/layouts/bullet-list.html" | "previews/layouts/business-model-canvas.html" | "previews/layouts/capability-map.html" | "previews/layouts/case-study.html" | "previews/layouts/chapter-recap.html" | "previews/layouts/circular-lifecycle.html" | "previews/layouts/comparison.html" | "previews/layouts/competitive-landscape.html" | "previews/layouts/customer-journey.html" | "previews/layouts/customer-logos.html" | "previews/layouts/dashboard.html" | "previews/layouts/data-visualization.html" | "previews/layouts/decision-tree.html" | "previews/layouts/detailed-data-table.html" | "previews/layouts/ecosystem-map.html" | "previews/layouts/executive-decision.html" | "previews/layouts/executive-summary.html" | "previews/layouts/faq.html" | "previews/layouts/feature-comparison-matrix.html" | "previews/layouts/forecast-scenario.html" | "previews/layouts/funnel-pyramid.html" | "previews/layouts/gantt-project-plan.html" | "previews/layouts/geographic-map.html" | "previews/layouts/heatmap-cohort.html" | "previews/layouts/hub-and-spoke.html" | "previews/layouts/icon-grid.html" | "previews/layouts/image-focus.html" | "previews/layouts/index.json" | "previews/layouts/key-takeaway.html" | "previews/layouts/kpi-scorecard.html" | "previews/layouts/logic-tree.html" | "previews/layouts/market-size.html" | "previews/layouts/matrix-quadrant.html" | "previews/layouts/network-dependency-map.html" | "previews/layouts/one-column-explainer.html" | "previews/layouts/org-chart.html" | "previews/layouts/persona-grid.html" | "previews/layouts/photo-grid.html" | "previews/layouts/pricing-table.html" | "previews/layouts/process-flow.html" | "previews/layouts/product-feature.html" | "previews/layouts/pros-cons.html" | "previews/layouts/qa-discussion.html" | "previews/layouts/quote-highlight.html" | "previews/layouts/raci-matrix.html" | "previews/layouts/risk-heatmap.html" | "previews/layouts/roadmap.html" | "previews/layouts/screenshot-walkthrough.html" | "previews/layouts/section-divider.html" | "previews/layouts/single-message-statement.html" | "previews/layouts/stats-metrics.html" | "previews/layouts/status-rag.html" | "previews/layouts/swimlane-process.html" | "previews/layouts/swot-analysis.html" | "previews/layouts/team-bio.html" | "previews/layouts/testimonial-grid.html" | "previews/layouts/thank-you-cta.html" | "previews/layouts/three-column.html" | "previews/layouts/timeline.html" | "previews/layouts/title-slide.html" | "previews/layouts/two-column.html" | "previews/layouts/venn-overlap.html" | "previews/layouts/waterfall-bridge.html" | "previews/layouts/wheel-radial.html" | "reference/engine-defaults.json" | "reference/font-policy.json" | "reference/font-policy.schema.json" | "schemas/audience.schema.json" | "schemas/catalog-index.schema.json" | "schemas/chart-type.schema.json" | "schemas/color-scheme.schema.json" | "schemas/font-scheme.schema.json" | "schemas/language.schema.json" | "schemas/layout-preview-index.schema.json" | "schemas/layout.schema.json" | "schemas/narrative.schema.json" | "schemas/opf.schema.json" | "schemas/purpose.schema.json" | "schemas/social-platform.schema.json" | "schemas/theme.schema.json" | "schemas/tone.schema.json";
2
+ type SpecFilePath = "README.md" | "catalogs/audiences/academic.json" | "catalogs/audiences/all-hands.json" | "catalogs/audiences/board.json" | "catalogs/audiences/candidates.json" | "catalogs/audiences/customer.json" | "catalogs/audiences/customers.json" | "catalogs/audiences/engineering-team.json" | "catalogs/audiences/executive.json" | "catalogs/audiences/executives.json" | "catalogs/audiences/general-public.json" | "catalogs/audiences/index.json" | "catalogs/audiences/internal-team.json" | "catalogs/audiences/investor.json" | "catalogs/audiences/investors.json" | "catalogs/audiences/marketing-team.json" | "catalogs/audiences/marketing.json" | "catalogs/audiences/media.json" | "catalogs/audiences/partner.json" | "catalogs/audiences/regulators.json" | "catalogs/audiences/regulatory.json" | "catalogs/audiences/sales-team.json" | "catalogs/audiences/sales.json" | "catalogs/audiences/technical.json" | "catalogs/chart-types/100pct-bullet-bar-2x.json" | "catalogs/chart-types/100pct-bullet-bar-3x.json" | "catalogs/chart-types/100pct-bullet-bar.json" | "catalogs/chart-types/100pct-bullet-column-2x.json" | "catalogs/chart-types/100pct-bullet-column-3x.json" | "catalogs/chart-types/100pct-bullet-column.json" | "catalogs/chart-types/100pct-progress-bar.json" | "catalogs/chart-types/100pct-stacked-area-2x.json" | "catalogs/chart-types/100pct-stacked-area-3x.json" | "catalogs/chart-types/100pct-stacked-bar-2x.json" | "catalogs/chart-types/100pct-stacked-bar-3x.json" | "catalogs/chart-types/100pct-stacked-column-2x.json" | "catalogs/chart-types/100pct-stacked-column-3x.json" | "catalogs/chart-types/area.json" | "catalogs/chart-types/australia.json" | "catalogs/chart-types/bar.json" | "catalogs/chart-types/box-and-whisker-2x.json" | "catalogs/chart-types/box-and-whisker-3x.json" | "catalogs/chart-types/box-and-whisker.json" | "catalogs/chart-types/bullet-bar-2x.json" | "catalogs/chart-types/bullet-bar-3x.json" | "catalogs/chart-types/bullet-bar.json" | "catalogs/chart-types/bullet-column-2x.json" | "catalogs/chart-types/bullet-column-3x.json" | "catalogs/chart-types/bullet-column.json" | "catalogs/chart-types/canada.json" | "catalogs/chart-types/clustered-bar-2x.json" | "catalogs/chart-types/clustered-column.json" | "catalogs/chart-types/column.json" | "catalogs/chart-types/dot-plot-2x.json" | "catalogs/chart-types/dot-plot-3x.json" | "catalogs/chart-types/dot-plot-4x.json" | "catalogs/chart-types/dot-plot-5x.json" | "catalogs/chart-types/dot-plot-6x.json" | "catalogs/chart-types/dot-plot.json" | "catalogs/chart-types/doughnut.json" | "catalogs/chart-types/dumbbell.json" | "catalogs/chart-types/filled-radar.json" | "catalogs/chart-types/funnel.json" | "catalogs/chart-types/histogram.json" | "catalogs/chart-types/index.json" | "catalogs/chart-types/line-2x.json" | "catalogs/chart-types/line-3x.json" | "catalogs/chart-types/line-with-high-low-and-markers.json" | "catalogs/chart-types/line-with-high-low.json" | "catalogs/chart-types/line-with-markers-2x.json" | "catalogs/chart-types/line-with-markers-3x.json" | "catalogs/chart-types/line-with-markers.json" | "catalogs/chart-types/line.json" | "catalogs/chart-types/pareto.json" | "catalogs/chart-types/pie.json" | "catalogs/chart-types/radar-with-markers.json" | "catalogs/chart-types/radar.json" | "catalogs/chart-types/scatter.json" | "catalogs/chart-types/sparkline-2x.json" | "catalogs/chart-types/sparkline-3x.json" | "catalogs/chart-types/sparkline-4x.json" | "catalogs/chart-types/sparkline-5x.json" | "catalogs/chart-types/sparkline-6x.json" | "catalogs/chart-types/sparkline.json" | "catalogs/chart-types/stacked-area-2x.json" | "catalogs/chart-types/stacked-area-3x.json" | "catalogs/chart-types/stacked-bar-2x.json" | "catalogs/chart-types/stacked-bar-3x.json" | "catalogs/chart-types/stacked-column-2x.json" | "catalogs/chart-types/stacked-column-3x.json" | "catalogs/chart-types/stacked-line-2x.json" | "catalogs/chart-types/stacked-line-3x.json" | "catalogs/chart-types/stacked-line-with-markers-2x.json" | "catalogs/chart-types/stacked-line-with-markers-3x.json" | "catalogs/chart-types/treemap-2x.json" | "catalogs/chart-types/treemap-3x.json" | "catalogs/chart-types/treemap.json" | "catalogs/chart-types/united-kingdom.json" | "catalogs/chart-types/united-states.json" | "catalogs/chart-types/waterfall.json" | "catalogs/chart-types/world.json" | "catalogs/color-schemes/black-and-white.json" | "catalogs/color-schemes/bold-red.json" | "catalogs/color-schemes/boost.json" | "catalogs/color-schemes/burnt-orange.json" | "catalogs/color-schemes/cool-horizon.json" | "catalogs/color-schemes/corporate-blue.json" | "catalogs/color-schemes/deep-purple.json" | "catalogs/color-schemes/forest-green.json" | "catalogs/color-schemes/golden-yellow.json" | "catalogs/color-schemes/index.json" | "catalogs/color-schemes/luxury.json" | "catalogs/color-schemes/pastel-red.json" | "catalogs/color-schemes/slate-gray.json" | "catalogs/color-schemes/steel-blue.json" | "catalogs/color-schemes/vibes.json" | "catalogs/font-schemes/angsana-new.json" | "catalogs/font-schemes/aparajita.json" | "catalogs/font-schemes/aptos.json" | "catalogs/font-schemes/arabic-typesetting.json" | "catalogs/font-schemes/arial.json" | "catalogs/font-schemes/batang.json" | "catalogs/font-schemes/bookman.json" | "catalogs/font-schemes/calibri.json" | "catalogs/font-schemes/century-schoolbook.json" | "catalogs/font-schemes/consolas.json" | "catalogs/font-schemes/constantia.json" | "catalogs/font-schemes/courier-new.json" | "catalogs/font-schemes/daunpenh.json" | "catalogs/font-schemes/david.json" | "catalogs/font-schemes/dilleniaupc.json" | "catalogs/font-schemes/fangsong.json" | "catalogs/font-schemes/garamond.json" | "catalogs/font-schemes/gautami.json" | "catalogs/font-schemes/georgia.json" | "catalogs/font-schemes/gisha.json" | "catalogs/font-schemes/grandview.json" | "catalogs/font-schemes/gungsuh.json" | "catalogs/font-schemes/impact.json" | "catalogs/font-schemes/index.json" | "catalogs/font-schemes/kalinga.json" | "catalogs/font-schemes/kartika.json" | "catalogs/font-schemes/khmer-ui.json" | "catalogs/font-schemes/latha.json" | "catalogs/font-schemes/lucida-sans.json" | "catalogs/font-schemes/malgun-gothic.json" | "catalogs/font-schemes/mangal.json" | "catalogs/font-schemes/meiryo.json" | "catalogs/font-schemes/microsoft-jhenghei.json" | "catalogs/font-schemes/microsoft-yahei.json" | "catalogs/font-schemes/mingliu.json" | "catalogs/font-schemes/miriam.json" | "catalogs/font-schemes/montserrat.json" | "catalogs/font-schemes/ms-mincho.json" | "catalogs/font-schemes/nirmala-ui.json" | "catalogs/font-schemes/noto-naksh-arabic.json" | "catalogs/font-schemes/noto-nastaliq-urdu.json" | "catalogs/font-schemes/noto-sans-arabic.json" | "catalogs/font-schemes/noto-sans-armenian.json" | "catalogs/font-schemes/noto-sans-bengali.json" | "catalogs/font-schemes/noto-sans-devangari.json" | "catalogs/font-schemes/noto-sans-ethiopic.json" | "catalogs/font-schemes/noto-sans-georgian.json" | "catalogs/font-schemes/noto-sans-gujarati.json" | "catalogs/font-schemes/noto-sans-gurmukhi.json" | "catalogs/font-schemes/noto-sans-hebrew.json" | "catalogs/font-schemes/noto-sans-jp.json" | "catalogs/font-schemes/noto-sans-kannada.json" | "catalogs/font-schemes/noto-sans-khmer.json" | "catalogs/font-schemes/noto-sans-kr.json" | "catalogs/font-schemes/noto-sans-malayalam.json" | "catalogs/font-schemes/noto-sans-mongolian.json" | "catalogs/font-schemes/noto-sans-oriya.json" | "catalogs/font-schemes/noto-sans-sc.json" | "catalogs/font-schemes/noto-sans-tamil.json" | "catalogs/font-schemes/noto-sans-tc.json" | "catalogs/font-schemes/noto-sans-telugu.json" | "catalogs/font-schemes/noto-sans-thai.json" | "catalogs/font-schemes/noto-sans.json" | "catalogs/font-schemes/nyala.json" | "catalogs/font-schemes/open-sans.json" | "catalogs/font-schemes/pmingliu.json" | "catalogs/font-schemes/poppins.json" | "catalogs/font-schemes/pt-serif.json" | "catalogs/font-schemes/raavi.json" | "catalogs/font-schemes/raleway.json" | "catalogs/font-schemes/roboto.json" | "catalogs/font-schemes/rockwell.json" | "catalogs/font-schemes/sakkal-majalla.json" | "catalogs/font-schemes/seaford.json" | "catalogs/font-schemes/segoe-ui-light.json" | "catalogs/font-schemes/segoe-ui.json" | "catalogs/font-schemes/shonar-bangla.json" | "catalogs/font-schemes/shruti.json" | "catalogs/font-schemes/simsun.json" | "catalogs/font-schemes/skeena.json" | "catalogs/font-schemes/sylfaen.json" | "catalogs/font-schemes/tahoma.json" | "catalogs/font-schemes/tenorite.json" | "catalogs/font-schemes/times-new-roman.json" | "catalogs/font-schemes/traditional-arabic.json" | "catalogs/font-schemes/trebuchet-ms.json" | "catalogs/font-schemes/tunga.json" | "catalogs/font-schemes/verdana.json" | "catalogs/font-schemes/vrinda.json" | "catalogs/font-schemes/yu-gothic.json" | "catalogs/languages/afrikaans.json" | "catalogs/languages/albanian.json" | "catalogs/languages/amharic.json" | "catalogs/languages/arabic.json" | "catalogs/languages/armenian.json" | "catalogs/languages/aymara.json" | "catalogs/languages/azerbaijani.json" | "catalogs/languages/bengali.json" | "catalogs/languages/berber-latin.json" | "catalogs/languages/bosnian-latin.json" | "catalogs/languages/bulgarian.json" | "catalogs/languages/catalan.json" | "catalogs/languages/cebuano.json" | "catalogs/languages/chinese-simplified.json" | "catalogs/languages/chinese-traditional.json" | "catalogs/languages/chittagonian.json" | "catalogs/languages/croatian.json" | "catalogs/languages/czech.json" | "catalogs/languages/danish.json" | "catalogs/languages/dutch.json" | "catalogs/languages/english-au.json" | "catalogs/languages/english-ca.json" | "catalogs/languages/english-gb.json" | "catalogs/languages/english-in.json" | "catalogs/languages/english-us.json" | "catalogs/languages/english.json" | "catalogs/languages/estonian.json" | "catalogs/languages/filipino.json" | "catalogs/languages/finnish.json" | "catalogs/languages/french.json" | "catalogs/languages/fulfulde.json" | "catalogs/languages/galician.json" | "catalogs/languages/georgian.json" | "catalogs/languages/german.json" | "catalogs/languages/greek.json" | "catalogs/languages/gujarati.json" | "catalogs/languages/hausa.json" | "catalogs/languages/hebrew.json" | "catalogs/languages/hindi.json" | "catalogs/languages/hungarian.json" | "catalogs/languages/igbo.json" | "catalogs/languages/index.json" | "catalogs/languages/indonesian.json" | "catalogs/languages/italian.json" | "catalogs/languages/japanese.json" | "catalogs/languages/kannada.json" | "catalogs/languages/kazakh.json" | "catalogs/languages/khmer.json" | "catalogs/languages/kinyarwanda.json" | "catalogs/languages/korean.json" | "catalogs/languages/kurmanji.json" | "catalogs/languages/latvian.json" | "catalogs/languages/lithuanian.json" | "catalogs/languages/macedonian.json" | "catalogs/languages/malagasy.json" | "catalogs/languages/malay.json" | "catalogs/languages/malayalam.json" | "catalogs/languages/maori.json" | "catalogs/languages/marathi.json" | "catalogs/languages/mongolian.json" | "catalogs/languages/nepali.json" | "catalogs/languages/norwegian.json" | "catalogs/languages/odia.json" | "catalogs/languages/oromo.json" | "catalogs/languages/pashto.json" | "catalogs/languages/persian.json" | "catalogs/languages/polish.json" | "catalogs/languages/portuguese.json" | "catalogs/languages/punjabi-gurmukhi.json" | "catalogs/languages/punjabi-shahmukhi.json" | "catalogs/languages/romanian.json" | "catalogs/languages/russian.json" | "catalogs/languages/serbian-cyrillic.json" | "catalogs/languages/serbian-latin.json" | "catalogs/languages/shona.json" | "catalogs/languages/slovak.json" | "catalogs/languages/slovenian.json" | "catalogs/languages/somali.json" | "catalogs/languages/spanish.json" | "catalogs/languages/swahili.json" | "catalogs/languages/swedish.json" | "catalogs/languages/tagalog.json" | "catalogs/languages/tajik.json" | "catalogs/languages/tamil.json" | "catalogs/languages/telugu.json" | "catalogs/languages/thai.json" | "catalogs/languages/turkish.json" | "catalogs/languages/ukrainian.json" | "catalogs/languages/urdu.json" | "catalogs/languages/uzbek-latin.json" | "catalogs/languages/vietnamese-quoc-ngu.json" | "catalogs/languages/xhosa.json" | "catalogs/languages/yoruba.json" | "catalogs/languages/zulu.json" | "catalogs/layouts/action-plan.json" | "catalogs/layouts/agenda.json" | "catalogs/layouts/appendix-index.json" | "catalogs/layouts/architecture-stack.json" | "catalogs/layouts/assumptions-dependencies.json" | "catalogs/layouts/before-after.json" | "catalogs/layouts/benchmark-target-table.json" | "catalogs/layouts/blank.json" | "catalogs/layouts/bullet-list.json" | "catalogs/layouts/business-model-canvas.json" | "catalogs/layouts/capability-map.json" | "catalogs/layouts/case-study.json" | "catalogs/layouts/chapter-recap.json" | "catalogs/layouts/chart-1x.json" | "catalogs/layouts/chart-2x.json" | "catalogs/layouts/chart-3x.json" | "catalogs/layouts/circular-lifecycle.json" | "catalogs/layouts/code-1x.json" | "catalogs/layouts/comparison.json" | "catalogs/layouts/competitive-landscape.json" | "catalogs/layouts/customer-journey.json" | "catalogs/layouts/customer-logos.json" | "catalogs/layouts/dashboard.json" | "catalogs/layouts/data-visualization.json" | "catalogs/layouts/decision-tree.json" | "catalogs/layouts/detailed-data-table.json" | "catalogs/layouts/ecosystem-map.json" | "catalogs/layouts/executive-decision.json" | "catalogs/layouts/executive-summary.json" | "catalogs/layouts/extract/canonical.json" | "catalogs/layouts/faq.json" | "catalogs/layouts/feature-comparison-matrix.json" | "catalogs/layouts/forecast-scenario.json" | "catalogs/layouts/funnel-pyramid.json" | "catalogs/layouts/gantt-project-plan.json" | "catalogs/layouts/geographic-map.json" | "catalogs/layouts/heatmap-cohort.json" | "catalogs/layouts/hub-and-spoke.json" | "catalogs/layouts/icon-grid.json" | "catalogs/layouts/image-1x.json" | "catalogs/layouts/image-2x.json" | "catalogs/layouts/image-3x.json" | "catalogs/layouts/image-bleed.json" | "catalogs/layouts/image-focus.json" | "catalogs/layouts/index.json" | "catalogs/layouts/key-takeaway.json" | "catalogs/layouts/kpi-scorecard.json" | "catalogs/layouts/list-1x.json" | "catalogs/layouts/list-2x.json" | "catalogs/layouts/list-3x.json" | "catalogs/layouts/list-4x.json" | "catalogs/layouts/list-5x.json" | "catalogs/layouts/list-6x.json" | "catalogs/layouts/logic-tree.json" | "catalogs/layouts/market-size.json" | "catalogs/layouts/matrix-quadrant.json" | "catalogs/layouts/media-1x.json" | "catalogs/layouts/network-dependency-map.json" | "catalogs/layouts/number-1x.json" | "catalogs/layouts/number-2x.json" | "catalogs/layouts/number-3x.json" | "catalogs/layouts/number-4x.json" | "catalogs/layouts/number-5x.json" | "catalogs/layouts/number-6x.json" | "catalogs/layouts/one-column-explainer.json" | "catalogs/layouts/org-chart.json" | "catalogs/layouts/persona-grid.json" | "catalogs/layouts/photo-grid.json" | "catalogs/layouts/pricing-table.json" | "catalogs/layouts/process-flow.json" | "catalogs/layouts/product-feature.json" | "catalogs/layouts/pros-cons.json" | "catalogs/layouts/qa-discussion.json" | "catalogs/layouts/quote-1x.json" | "catalogs/layouts/quote-highlight.json" | "catalogs/layouts/raci-matrix.json" | "catalogs/layouts/risk-heatmap.json" | "catalogs/layouts/roadmap.json" | "catalogs/layouts/screenshot-walkthrough.json" | "catalogs/layouts/section-divider.json" | "catalogs/layouts/single-message-statement.json" | "catalogs/layouts/stats-metrics.json" | "catalogs/layouts/status-rag.json" | "catalogs/layouts/swimlane-process.json" | "catalogs/layouts/swot-analysis.json" | "catalogs/layouts/table-1x.json" | "catalogs/layouts/team-bio.json" | "catalogs/layouts/testimonial-grid.json" | "catalogs/layouts/text-1x.json" | "catalogs/layouts/text-2x.json" | "catalogs/layouts/text-3x.json" | "catalogs/layouts/thank-you-cta.json" | "catalogs/layouts/three-column.json" | "catalogs/layouts/timeline-1x.json" | "catalogs/layouts/timeline.json" | "catalogs/layouts/title-slide.json" | "catalogs/layouts/title-subtitle.json" | "catalogs/layouts/title.json" | "catalogs/layouts/two-column.json" | "catalogs/layouts/venn-overlap.json" | "catalogs/layouts/waterfall-bridge.json" | "catalogs/layouts/wheel-radial.json" | "catalogs/manifest.json" | "catalogs/narratives/board-meeting.json" | "catalogs/narratives/business-narrative.json" | "catalogs/narratives/business-review.json" | "catalogs/narratives/capacity-planning.json" | "catalogs/narratives/challenge-resolution.json" | "catalogs/narratives/change-story.json" | "catalogs/narratives/classic-story.json" | "catalogs/narratives/company-intro.json" | "catalogs/narratives/conference-talk.json" | "catalogs/narratives/data-story.json" | "catalogs/narratives/early-startup-pitch.json" | "catalogs/narratives/educate.json" | "catalogs/narratives/employee-review.json" | "catalogs/narratives/failure-analysis.json" | "catalogs/narratives/focus.json" | "catalogs/narratives/golden-circle.json" | "catalogs/narratives/heros-journey.json" | "catalogs/narratives/index.json" | "catalogs/narratives/innovation.json" | "catalogs/narratives/justice.json" | "catalogs/narratives/marketing-strategy.json" | "catalogs/narratives/performance-improvement-plan.json" | "catalogs/narratives/performance-review.json" | "catalogs/narratives/persuade.json" | "catalogs/narratives/persuasive-sales.json" | "catalogs/narratives/pitch-deck.json" | "catalogs/narratives/problem-solution.json" | "catalogs/narratives/product-launch.json" | "catalogs/narratives/project-proposal.json" | "catalogs/narratives/pyramid-principle.json" | "catalogs/narratives/qbr.json" | "catalogs/narratives/rags-to-riches.json" | "catalogs/narratives/reveal.json" | "catalogs/narratives/scqa.json" | "catalogs/narratives/situation-complication-resolution.json" | "catalogs/narratives/sparkline.json" | "catalogs/narratives/star-method.json" | "catalogs/narratives/status-update.json" | "catalogs/narratives/strategic-advisory.json" | "catalogs/narratives/strategic-narrative.json" | "catalogs/narratives/survey-analysis.json" | "catalogs/narratives/survival-story.json" | "catalogs/narratives/transformation-arc.json" | "catalogs/narratives/trend-analysis.json" | "catalogs/narratives/underdog-victory.json" | "catalogs/narratives/venture-pitch.json" | "catalogs/narratives/vision-roadmap.json" | "catalogs/narratives/weekly-progress.json" | "catalogs/narratives/what-so-what-now-what.json" | "catalogs/purposes/align.json" | "catalogs/purposes/decide.json" | "catalogs/purposes/educate.json" | "catalogs/purposes/index.json" | "catalogs/purposes/inform.json" | "catalogs/purposes/persuade.json" | "catalogs/purposes/pitch.json" | "catalogs/purposes/plan.json" | "catalogs/purposes/report.json" | "catalogs/purposes/sell.json" | "catalogs/social-platforms/bluesky.json" | "catalogs/social-platforms/facebook.json" | "catalogs/social-platforms/github.json" | "catalogs/social-platforms/index.json" | "catalogs/social-platforms/instagram.json" | "catalogs/social-platforms/linkedin.json" | "catalogs/social-platforms/mastodon.json" | "catalogs/social-platforms/threads.json" | "catalogs/social-platforms/tiktok.json" | "catalogs/social-platforms/x.json" | "catalogs/social-platforms/youtube.json" | "catalogs/themes/bold.json" | "catalogs/themes/classic.json" | "catalogs/themes/dark.json" | "catalogs/themes/index.json" | "catalogs/themes/minimal.json" | "catalogs/tones/authoritative.json" | "catalogs/tones/casual.json" | "catalogs/tones/conversational.json" | "catalogs/tones/formal.json" | "catalogs/tones/index.json" | "catalogs/tones/inspirational.json" | "catalogs/tones/persuasive.json" | "catalogs/tones/technical.json" | "openapi.yaml" | "previews/layouts/action-plan.html" | "previews/layouts/agenda.html" | "previews/layouts/appendix-index.html" | "previews/layouts/architecture-stack.html" | "previews/layouts/assumptions-dependencies.html" | "previews/layouts/before-after.html" | "previews/layouts/benchmark-target-table.html" | "previews/layouts/bullet-list.html" | "previews/layouts/business-model-canvas.html" | "previews/layouts/capability-map.html" | "previews/layouts/case-study.html" | "previews/layouts/chapter-recap.html" | "previews/layouts/circular-lifecycle.html" | "previews/layouts/comparison.html" | "previews/layouts/competitive-landscape.html" | "previews/layouts/customer-journey.html" | "previews/layouts/customer-logos.html" | "previews/layouts/dashboard.html" | "previews/layouts/data-visualization.html" | "previews/layouts/decision-tree.html" | "previews/layouts/detailed-data-table.html" | "previews/layouts/ecosystem-map.html" | "previews/layouts/executive-decision.html" | "previews/layouts/executive-summary.html" | "previews/layouts/faq.html" | "previews/layouts/feature-comparison-matrix.html" | "previews/layouts/forecast-scenario.html" | "previews/layouts/funnel-pyramid.html" | "previews/layouts/gantt-project-plan.html" | "previews/layouts/geographic-map.html" | "previews/layouts/heatmap-cohort.html" | "previews/layouts/hub-and-spoke.html" | "previews/layouts/icon-grid.html" | "previews/layouts/image-focus.html" | "previews/layouts/index.json" | "previews/layouts/key-takeaway.html" | "previews/layouts/kpi-scorecard.html" | "previews/layouts/logic-tree.html" | "previews/layouts/market-size.html" | "previews/layouts/matrix-quadrant.html" | "previews/layouts/network-dependency-map.html" | "previews/layouts/one-column-explainer.html" | "previews/layouts/org-chart.html" | "previews/layouts/persona-grid.html" | "previews/layouts/photo-grid.html" | "previews/layouts/pricing-table.html" | "previews/layouts/process-flow.html" | "previews/layouts/product-feature.html" | "previews/layouts/pros-cons.html" | "previews/layouts/qa-discussion.html" | "previews/layouts/quote-highlight.html" | "previews/layouts/raci-matrix.html" | "previews/layouts/risk-heatmap.html" | "previews/layouts/roadmap.html" | "previews/layouts/screenshot-walkthrough.html" | "previews/layouts/section-divider.html" | "previews/layouts/single-message-statement.html" | "previews/layouts/stats-metrics.html" | "previews/layouts/status-rag.html" | "previews/layouts/swimlane-process.html" | "previews/layouts/swot-analysis.html" | "previews/layouts/team-bio.html" | "previews/layouts/testimonial-grid.html" | "previews/layouts/thank-you-cta.html" | "previews/layouts/three-column.html" | "previews/layouts/timeline.html" | "previews/layouts/title-slide.html" | "previews/layouts/two-column.html" | "previews/layouts/venn-overlap.html" | "previews/layouts/waterfall-bridge.html" | "previews/layouts/wheel-radial.html" | "reference/engine-defaults.json" | "reference/font-policy.json" | "reference/font-policy.schema.json" | "schemas/audience.schema.json" | "schemas/catalog-index.schema.json" | "schemas/catalog-manifest.schema.json" | "schemas/chart-type.schema.json" | "schemas/color-scheme.schema.json" | "schemas/font-scheme.schema.json" | "schemas/language.schema.json" | "schemas/layout-preview-index.schema.json" | "schemas/layout.schema.json" | "schemas/narrative.schema.json" | "schemas/opf.schema.json" | "schemas/purpose.schema.json" | "schemas/social-platform.schema.json" | "schemas/theme.schema.json" | "schemas/tone.schema.json";
3
3
  /** Category of a bundled spec file. */
4
- type SpecFileKind = "spec" | "catalogRecord" | "catalogIndex" | "openapi" | "reference" | "schema";
4
+ type SpecFileKind = "spec" | "catalogRecord" | "catalogIndex" | "catalogManifest" | "openapi" | "reference" | "schema";
5
5
  /** One entry per file shipped under `@openpresentation/opf/spec/`. */
6
6
  interface SpecFileEntry {
7
7
  readonly path: SpecFilePath;
@@ -1 +1 @@
1
- export { specFileEntries, specFileKinds, specFilePaths } from './chunk-SDETQV7Y.js';
1
+ export { specFileEntries, specFileKinds, specFilePaths } from './chunk-HJL64ETN.js';
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { P as Presentation } from './presentation-bceTClm8.js';
2
- export { A as Audience, C as CatalogKind, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone } from './catalogs-DJ-B5ZyD.js';
1
+ export { P as Presentation } from './presentation-Cn6vTOCP.js';
2
+ export { A as Audience, C as CatalogKind, e as ChartType, f as ColorScheme, F as FontScheme, L as Language, g as Layout, N as Narrative, P as Purpose, S as SocialPlatform, T as Theme, h as Tone } from './catalogs-CUClB3nl.js';
3
3
  export { a as SchemaName } from './schemas-X_NniU4A.js';
4
4
  export { ValidationIssue, ValidationResult } from './validator.js';
@@ -1,5 +1,5 @@
1
- import { P as Presentation } from './presentation-bceTClm8.js';
2
- import { C as CatalogKind } from './catalogs-DJ-B5ZyD.js';
1
+ import { P as Presentation } from './presentation-Cn6vTOCP.js';
2
+ import { C as CatalogKind } from './catalogs-CUClB3nl.js';
3
3
  import { a as SchemaName, m as JsonSchema } from './schemas-X_NniU4A.js';
4
4
 
5
5
  declare const promotedRegionKeys: readonly ["left", "center", "right", "left+center", "center+right", "left+center+right", "top", "middle", "bottom", "top+middle", "middle+bottom", "top+middle+bottom", "top:left", "top:center", "top:right", "top:left+center", "top:center+right", "top:left+center+right", "middle:left", "middle:center", "middle:right", "middle:left+center", "middle:center+right", "middle:left+center+right", "bottom:left", "bottom:center", "bottom:right", "bottom:left+center", "bottom:center+right", "bottom:left+center+right", "top+middle:left", "top+middle:center", "top+middle:right", "top+middle:left+center", "top+middle:center+right", "top+middle:left+center+right", "middle+bottom:left", "middle+bottom:center", "middle+bottom:right", "middle+bottom:left+center", "middle+bottom:center+right", "middle+bottom:left+center+right", "top+middle+bottom:left", "top+middle+bottom:center", "top+middle+bottom:right", "top+middle+bottom:left+center", "top+middle+bottom:center+right", "top+middle+bottom:left+center+right"];
package/dist/validator.js CHANGED
@@ -1,4 +1,4 @@
1
- export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, promotedRegionKeys, validate, validateCatalogRecord, validatePresentation } from './chunk-M4GTWRK7.js';
2
- import './chunk-6UPHKXI5.js';
3
- import './chunk-LTSDDBNW.js';
4
- import './chunk-7LF37SG3.js';
1
+ export { OPFValidationError, assertValid, assertValidCatalogRecord, assertValidPresentation, promotedRegionKeys, validate, validateCatalogRecord, validatePresentation } from './chunk-JCXHSTSM.js';
2
+ import './chunk-BVLWFMDX.js';
3
+ import './chunk-JTXCMVVP.js';
4
+ import './chunk-AEUSVEUY.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openpresentation/opf",
3
- "version": "0.11.1",
3
+ "version": "0.11.3",
4
4
  "description": "Canonical Open Presentation Format schemas, catalogs, TypeScript types, and local validation.",
5
5
  "license": "MIT",
6
6
  "author": "Open Presentation",