@openpresentation/opf 0.11.2 → 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.
- package/dist/{catalogs-DJ-B5ZyD.d.ts → catalogs-CUClB3nl.d.ts} +202 -5
- package/dist/catalogs.d.ts +1 -1
- package/dist/catalogs.js +1 -1
- package/dist/{chunk-K7IWYODS.js → chunk-57NWIYX3.js} +17 -4
- package/dist/{chunk-7LF37SG3.js → chunk-AEUSVEUY.js} +4915 -1640
- package/dist/{chunk-SDETQV7Y.js → chunk-HJL64ETN.js} +505 -0
- package/dist/{chunk-DJRZMGKY.js → chunk-JCXHSTSM.js} +142 -67
- package/dist/{chunk-LTSDDBNW.js → chunk-JTXCMVVP.js} +245 -10
- package/dist/{chunk-KZ6BT5UG.js → chunk-RXNFDGPC.js} +5 -5
- package/dist/{chunk-SMYEM3HV.js → chunk-UDPSGTZI.js} +2 -2
- package/dist/docs.js +21 -15
- package/dist/examples.d.ts +1 -1
- package/dist/font-policy.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +9 -9
- package/dist/lint.d.ts +2 -2
- package/dist/lint.js +4 -4
- package/dist/pagination.js +4 -4
- package/dist/{presentation-bceTClm8.d.ts → presentation-Cn6vTOCP.d.ts} +13 -13
- package/dist/repo-readme.js +1 -1
- package/dist/schemas.js +1 -1
- package/dist/spec/README.md +3 -2
- package/dist/spec/catalogs/audiences/index.json +2 -0
- package/dist/spec/catalogs/chart-types/box-and-whisker.json +101 -49
- package/dist/spec/catalogs/chart-types/histogram.json +130 -108
- package/dist/spec/catalogs/chart-types/index.json +2 -0
- package/dist/spec/catalogs/chart-types/pareto.json +22 -106
- package/dist/spec/catalogs/color-schemes/black-and-white.json +10 -1
- package/dist/spec/catalogs/color-schemes/bold-red.json +10 -1
- package/dist/spec/catalogs/color-schemes/boost.json +10 -1
- package/dist/spec/catalogs/color-schemes/burnt-orange.json +10 -1
- package/dist/spec/catalogs/color-schemes/cool-horizon.json +10 -1
- package/dist/spec/catalogs/color-schemes/corporate-blue.json +10 -1
- package/dist/spec/catalogs/color-schemes/deep-purple.json +10 -1
- package/dist/spec/catalogs/color-schemes/forest-green.json +10 -1
- package/dist/spec/catalogs/color-schemes/golden-yellow.json +10 -1
- package/dist/spec/catalogs/color-schemes/index.json +2 -0
- package/dist/spec/catalogs/color-schemes/luxury.json +10 -1
- package/dist/spec/catalogs/color-schemes/pastel-red.json +10 -1
- package/dist/spec/catalogs/color-schemes/slate-gray.json +10 -1
- package/dist/spec/catalogs/color-schemes/steel-blue.json +10 -1
- package/dist/spec/catalogs/color-schemes/vibes.json +10 -1
- package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -1
- package/dist/spec/catalogs/font-schemes/aparajita.json +2 -1
- package/dist/spec/catalogs/font-schemes/aptos.json +2 -1
- package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -1
- package/dist/spec/catalogs/font-schemes/arial.json +2 -1
- package/dist/spec/catalogs/font-schemes/batang.json +2 -1
- package/dist/spec/catalogs/font-schemes/bookman.json +2 -1
- package/dist/spec/catalogs/font-schemes/calibri.json +2 -1
- package/dist/spec/catalogs/font-schemes/century-schoolbook.json +2 -1
- package/dist/spec/catalogs/font-schemes/consolas.json +2 -1
- package/dist/spec/catalogs/font-schemes/constantia.json +2 -1
- package/dist/spec/catalogs/font-schemes/courier-new.json +2 -1
- package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -1
- package/dist/spec/catalogs/font-schemes/david.json +2 -1
- package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -1
- package/dist/spec/catalogs/font-schemes/fangsong.json +2 -1
- package/dist/spec/catalogs/font-schemes/garamond.json +2 -1
- package/dist/spec/catalogs/font-schemes/gautami.json +2 -1
- package/dist/spec/catalogs/font-schemes/georgia.json +2 -1
- package/dist/spec/catalogs/font-schemes/gisha.json +2 -1
- package/dist/spec/catalogs/font-schemes/grandview.json +2 -1
- package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -1
- package/dist/spec/catalogs/font-schemes/impact.json +2 -1
- package/dist/spec/catalogs/font-schemes/index.json +236 -234
- package/dist/spec/catalogs/font-schemes/kalinga.json +2 -1
- package/dist/spec/catalogs/font-schemes/kartika.json +2 -1
- package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -1
- package/dist/spec/catalogs/font-schemes/latha.json +2 -1
- package/dist/spec/catalogs/font-schemes/lucida-sans.json +2 -1
- package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -1
- package/dist/spec/catalogs/font-schemes/mangal.json +2 -1
- package/dist/spec/catalogs/font-schemes/meiryo.json +2 -1
- package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -1
- package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +2 -1
- package/dist/spec/catalogs/font-schemes/mingliu.json +2 -1
- package/dist/spec/catalogs/font-schemes/miriam.json +2 -1
- package/dist/spec/catalogs/font-schemes/montserrat.json +2 -1
- package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -1
- package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -1
- package/dist/spec/catalogs/font-schemes/noto-sans.json +2 -1
- package/dist/spec/catalogs/font-schemes/nyala.json +2 -1
- package/dist/spec/catalogs/font-schemes/open-sans.json +2 -1
- package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -1
- package/dist/spec/catalogs/font-schemes/poppins.json +2 -1
- package/dist/spec/catalogs/font-schemes/pt-serif.json +2 -1
- package/dist/spec/catalogs/font-schemes/raavi.json +2 -1
- package/dist/spec/catalogs/font-schemes/raleway.json +2 -1
- package/dist/spec/catalogs/font-schemes/roboto.json +2 -1
- package/dist/spec/catalogs/font-schemes/rockwell.json +2 -1
- package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +2 -1
- package/dist/spec/catalogs/font-schemes/seaford.json +2 -1
- package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +2 -1
- package/dist/spec/catalogs/font-schemes/segoe-ui.json +2 -1
- package/dist/spec/catalogs/font-schemes/shonar-bangla.json +2 -1
- package/dist/spec/catalogs/font-schemes/shruti.json +2 -1
- package/dist/spec/catalogs/font-schemes/simsun.json +2 -1
- package/dist/spec/catalogs/font-schemes/skeena.json +2 -1
- package/dist/spec/catalogs/font-schemes/sylfaen.json +2 -1
- package/dist/spec/catalogs/font-schemes/tahoma.json +2 -1
- package/dist/spec/catalogs/font-schemes/tenorite.json +2 -1
- package/dist/spec/catalogs/font-schemes/times-new-roman.json +2 -1
- package/dist/spec/catalogs/font-schemes/traditional-arabic.json +2 -1
- package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +2 -1
- package/dist/spec/catalogs/font-schemes/tunga.json +2 -1
- package/dist/spec/catalogs/font-schemes/verdana.json +2 -1
- package/dist/spec/catalogs/font-schemes/vrinda.json +2 -1
- package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -1
- package/dist/spec/catalogs/languages/index.json +2 -0
- package/dist/spec/catalogs/layouts/action-plan.json +35 -0
- package/dist/spec/catalogs/layouts/agenda.json +35 -0
- package/dist/spec/catalogs/layouts/appendix-index.json +38 -0
- package/dist/spec/catalogs/layouts/architecture-stack.json +35 -0
- package/dist/spec/catalogs/layouts/assumptions-dependencies.json +35 -0
- package/dist/spec/catalogs/layouts/before-after.json +41 -0
- package/dist/spec/catalogs/layouts/benchmark-target-table.json +35 -0
- package/dist/spec/catalogs/layouts/bullet-list.json +38 -0
- package/dist/spec/catalogs/layouts/business-model-canvas.json +35 -0
- package/dist/spec/catalogs/layouts/capability-map.json +35 -0
- package/dist/spec/catalogs/layouts/case-study.json +35 -0
- package/dist/spec/catalogs/layouts/chapter-recap.json +35 -0
- package/dist/spec/catalogs/layouts/circular-lifecycle.json +35 -0
- package/dist/spec/catalogs/layouts/comparison.json +41 -0
- package/dist/spec/catalogs/layouts/competitive-landscape.json +35 -0
- package/dist/spec/catalogs/layouts/customer-journey.json +35 -0
- package/dist/spec/catalogs/layouts/customer-logos.json +38 -0
- package/dist/spec/catalogs/layouts/dashboard.json +41 -0
- package/dist/spec/catalogs/layouts/data-visualization.json +45 -0
- package/dist/spec/catalogs/layouts/decision-tree.json +35 -0
- package/dist/spec/catalogs/layouts/detailed-data-table.json +41 -0
- package/dist/spec/catalogs/layouts/ecosystem-map.json +35 -0
- package/dist/spec/catalogs/layouts/executive-decision.json +38 -0
- package/dist/spec/catalogs/layouts/executive-summary.json +38 -0
- package/dist/spec/catalogs/layouts/faq.json +35 -0
- package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +35 -0
- package/dist/spec/catalogs/layouts/forecast-scenario.json +45 -0
- package/dist/spec/catalogs/layouts/funnel-pyramid.json +38 -0
- package/dist/spec/catalogs/layouts/gantt-project-plan.json +38 -0
- package/dist/spec/catalogs/layouts/geographic-map.json +35 -0
- package/dist/spec/catalogs/layouts/heatmap-cohort.json +38 -0
- package/dist/spec/catalogs/layouts/hub-and-spoke.json +35 -0
- package/dist/spec/catalogs/layouts/icon-grid.json +35 -0
- package/dist/spec/catalogs/layouts/image-focus.json +35 -0
- package/dist/spec/catalogs/layouts/index.json +352 -0
- package/dist/spec/catalogs/layouts/key-takeaway.json +32 -0
- package/dist/spec/catalogs/layouts/kpi-scorecard.json +44 -0
- package/dist/spec/catalogs/layouts/logic-tree.json +35 -0
- package/dist/spec/catalogs/layouts/market-size.json +35 -0
- package/dist/spec/catalogs/layouts/matrix-quadrant.json +48 -0
- package/dist/spec/catalogs/layouts/network-dependency-map.json +35 -0
- package/dist/spec/catalogs/layouts/one-column-explainer.json +35 -0
- package/dist/spec/catalogs/layouts/org-chart.json +45 -0
- package/dist/spec/catalogs/layouts/persona-grid.json +35 -0
- package/dist/spec/catalogs/layouts/photo-grid.json +48 -0
- package/dist/spec/catalogs/layouts/pricing-table.json +35 -0
- package/dist/spec/catalogs/layouts/process-flow.json +35 -0
- package/dist/spec/catalogs/layouts/product-feature.json +35 -0
- package/dist/spec/catalogs/layouts/pros-cons.json +41 -0
- package/dist/spec/catalogs/layouts/qa-discussion.json +38 -0
- package/dist/spec/catalogs/layouts/quote-highlight.json +35 -0
- package/dist/spec/catalogs/layouts/raci-matrix.json +35 -0
- package/dist/spec/catalogs/layouts/risk-heatmap.json +35 -0
- package/dist/spec/catalogs/layouts/roadmap.json +35 -0
- package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +35 -0
- package/dist/spec/catalogs/layouts/section-divider.json +35 -0
- package/dist/spec/catalogs/layouts/single-message-statement.json +32 -0
- package/dist/spec/catalogs/layouts/stats-metrics.json +45 -0
- package/dist/spec/catalogs/layouts/status-rag.json +35 -0
- package/dist/spec/catalogs/layouts/swimlane-process.json +35 -0
- package/dist/spec/catalogs/layouts/swot-analysis.json +48 -0
- package/dist/spec/catalogs/layouts/team-bio.json +35 -0
- package/dist/spec/catalogs/layouts/testimonial-grid.json +44 -0
- package/dist/spec/catalogs/layouts/thank-you-cta.json +35 -0
- package/dist/spec/catalogs/layouts/three-column.json +45 -0
- package/dist/spec/catalogs/layouts/timeline.json +38 -0
- package/dist/spec/catalogs/layouts/title-slide.json +35 -0
- package/dist/spec/catalogs/layouts/two-column.json +42 -0
- package/dist/spec/catalogs/layouts/venn-overlap.json +35 -0
- package/dist/spec/catalogs/layouts/waterfall-bridge.json +45 -0
- package/dist/spec/catalogs/layouts/wheel-radial.json +35 -0
- package/dist/spec/catalogs/manifest.json +111 -0
- package/dist/spec/catalogs/narratives/index.json +746 -144
- package/dist/spec/catalogs/purposes/index.json +2 -0
- package/dist/spec/catalogs/social-platforms/index.json +2 -1
- package/dist/spec/catalogs/themes/index.json +10 -8
- package/dist/spec/catalogs/tones/index.json +2 -0
- package/dist/spec/reference/font-policy.json +5 -5
- package/dist/spec/schemas/audience.schema.json +21 -0
- package/dist/spec/schemas/catalog-index.schema.json +40 -3
- package/dist/spec/schemas/catalog-manifest.schema.json +83 -0
- package/dist/spec/schemas/chart-type.schema.json +5 -0
- package/dist/spec/schemas/color-scheme.schema.json +21 -0
- package/dist/spec/schemas/font-scheme.schema.json +21 -0
- package/dist/spec/schemas/language.schema.json +21 -0
- package/dist/spec/schemas/layout.schema.json +21 -0
- package/dist/spec/schemas/narrative.schema.json +21 -0
- package/dist/spec/schemas/opf.schema.json +5 -5
- package/dist/spec/schemas/purpose.schema.json +21 -0
- package/dist/spec/schemas/social-platform.schema.json +26 -5
- package/dist/spec/schemas/theme.schema.json +21 -0
- package/dist/spec/schemas/tone.schema.json +21 -0
- package/dist/spec-files.d.ts +2 -2
- package/dist/spec-files.js +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/validator.d.ts +2 -2
- package/dist/validator.js +3 -3
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-index/v1",
|
|
3
|
+
"kind": "purposes",
|
|
3
4
|
"version": "1",
|
|
4
5
|
"description": "Catalog of presentation purposes available in the openpresentation.org catalog. Each entry is a lightweight summary; full purpose records live in the per-id JSON files alongside this index. Purposes are referenced from OPF documents via purpose.",
|
|
6
|
+
"contentSha256": "43d9ba617491fe1d98b527d24032d5da9bc6763a01b0ea41da421c5ec27e649c",
|
|
5
7
|
"records": [
|
|
6
8
|
{
|
|
7
9
|
"id": "inform",
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-index/v1",
|
|
3
|
+
"kind": "social-platforms",
|
|
3
4
|
"version": "1",
|
|
4
5
|
"description": "Catalog of social-media platforms available in the openpresentation.org catalog. Each entry is a lightweight summary; full platform records live in the per-id JSON files alongside this index. The property keys of any Socials object on Organization or Speaker resolve to ids in this catalog.",
|
|
6
|
+
"contentSha256": "22292ed144ac3caf37a86c9e644f9b648cda51ed670cbc3c0ed64915d251b375",
|
|
5
7
|
"records": [
|
|
6
8
|
{
|
|
7
9
|
"id": "linkedin",
|
|
@@ -65,4 +67,3 @@
|
|
|
65
67
|
}
|
|
66
68
|
]
|
|
67
69
|
}
|
|
68
|
-
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-index/v1",
|
|
3
|
+
"kind": "themes",
|
|
3
4
|
"version": "1",
|
|
4
5
|
"description": "Catalog of themes available in the openpresentation.org catalog. Each entry is a lightweight summary; full theme records live in the per-id JSON files alongside this index.",
|
|
6
|
+
"contentSha256": "5af95e3e353857bb49a2c303e66b99d74d884210070baac0b68291aad90fa8d5",
|
|
5
7
|
"records": [
|
|
6
8
|
{
|
|
7
|
-
"id": "
|
|
8
|
-
"name": "
|
|
9
|
-
"description": "A
|
|
10
|
-
"file": "
|
|
9
|
+
"id": "minimal",
|
|
10
|
+
"name": "Minimal",
|
|
11
|
+
"description": "A clean, minimalistic theme with a focus on simplicity and readability. Ideal for professional, straightforward presentations.",
|
|
12
|
+
"file": "minimal.json"
|
|
11
13
|
},
|
|
12
14
|
{
|
|
13
15
|
"id": "classic",
|
|
@@ -22,10 +24,10 @@
|
|
|
22
24
|
"file": "dark.json"
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
|
-
"id": "
|
|
26
|
-
"name": "
|
|
27
|
-
"description": "A
|
|
28
|
-
"file": "
|
|
27
|
+
"id": "bold",
|
|
28
|
+
"name": "Bold",
|
|
29
|
+
"description": "A vibrant, high-energy theme with bold colors and a dynamic, attention-grabbing style. Great for presentations that need to stand out.",
|
|
30
|
+
"file": "bold.json"
|
|
29
31
|
}
|
|
30
32
|
]
|
|
31
33
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openpresentation.org/schema/opf-catalog-index/v1",
|
|
3
|
+
"kind": "tones",
|
|
3
4
|
"version": "1",
|
|
4
5
|
"description": "Catalog of presentation tones available in the openpresentation.org catalog. Each entry is a lightweight summary; full tone records (voice cues, anti-patterns, sample phrases) live in the per-id JSON files alongside this index. Tones are referenced from OPF documents via tone.",
|
|
6
|
+
"contentSha256": "b5a8d0933f494d09cd3b9a399c8de2032c43d253fcf432974135e841fcc9e703",
|
|
5
7
|
"records": [
|
|
6
8
|
{
|
|
7
9
|
"id": "formal",
|
|
@@ -928,8 +928,8 @@
|
|
|
928
928
|
"compatibility": "visual",
|
|
929
929
|
"measured": {
|
|
930
930
|
"replacement": "Source Sans 3",
|
|
931
|
-
"meanAbsWidthDelta": 0.
|
|
932
|
-
"meanWidthDelta": 0.
|
|
931
|
+
"meanAbsWidthDelta": 0.0158,
|
|
932
|
+
"meanWidthDelta": 0.0152,
|
|
933
933
|
"maxAbsWidthDelta": 0.0521,
|
|
934
934
|
"styles": 4,
|
|
935
935
|
"reference": "Corbel 6.01"
|
|
@@ -1357,9 +1357,9 @@
|
|
|
1357
1357
|
"compatibility": "visual",
|
|
1358
1358
|
"measured": {
|
|
1359
1359
|
"replacement": "Source Sans 3",
|
|
1360
|
-
"meanAbsWidthDelta": 0.
|
|
1361
|
-
"meanWidthDelta": 0.
|
|
1362
|
-
"maxAbsWidthDelta": 0.
|
|
1360
|
+
"meanAbsWidthDelta": 0.0511,
|
|
1361
|
+
"meanWidthDelta": 0.0039,
|
|
1362
|
+
"maxAbsWidthDelta": 0.1459,
|
|
1363
1363
|
"styles": 4,
|
|
1364
1364
|
"reference": "Gill Sans MT 1.65"
|
|
1365
1365
|
}
|
|
@@ -48,6 +48,27 @@
|
|
|
48
48
|
"Regulators"
|
|
49
49
|
]
|
|
50
50
|
},
|
|
51
|
+
"deprecation": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"required": ["replacedBy"],
|
|
55
|
+
"description": "Present when this audience 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 audience 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 audience — who they are and what they care about.",
|
|
@@ -2,15 +2,37 @@
|
|
|
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. 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`, `durationRange`). This schema describes
|
|
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`, `durationRange`). 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
|
+
"patternProperties": {
|
|
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."
|
|
12
|
+
}
|
|
13
|
+
},
|
|
9
14
|
"properties": {
|
|
10
15
|
"$schema": {
|
|
11
16
|
"type": "string",
|
|
12
17
|
"const": "https://openpresentation.org/schema/opf-catalog-index/v1"
|
|
13
18
|
},
|
|
19
|
+
"kind": {
|
|
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.",
|
|
22
|
+
"enum": [
|
|
23
|
+
"audiences",
|
|
24
|
+
"chart-types",
|
|
25
|
+
"color-schemes",
|
|
26
|
+
"font-schemes",
|
|
27
|
+
"languages",
|
|
28
|
+
"layouts",
|
|
29
|
+
"narratives",
|
|
30
|
+
"purposes",
|
|
31
|
+
"social-platforms",
|
|
32
|
+
"themes",
|
|
33
|
+
"tones"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
14
36
|
"version": {
|
|
15
37
|
"type": "string",
|
|
16
38
|
"description": "Index format version, as a string.",
|
|
@@ -20,6 +42,11 @@
|
|
|
20
42
|
"type": "string",
|
|
21
43
|
"description": "Human-readable description of what this catalog kind holds and how entries are ordered."
|
|
22
44
|
},
|
|
45
|
+
"contentSha256": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "SHA-256 (lowercase hex) of the canonical JSON of the full records this index lists, in index order, with every top-level `x-*` member removed. Canonical JSON sorts object keys and has no insignificant whitespace. Lets a consumer prove it holds exactly the published content.",
|
|
48
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
49
|
+
},
|
|
23
50
|
"records": {
|
|
24
51
|
"type": "array",
|
|
25
52
|
"description": "Ordered list of lightweight record summaries. Order defines the catalog's canonical/display order; full record data lives in the sibling JSON file named by `file`.",
|
|
@@ -35,8 +62,8 @@
|
|
|
35
62
|
"properties": {
|
|
36
63
|
"id": {
|
|
37
64
|
"type": "string",
|
|
38
|
-
"description": "Stable identifier, matching the `id` field inside the record file named by `file`.",
|
|
39
|
-
"pattern": "^[a-
|
|
65
|
+
"description": "Stable identifier, matching the `id` field inside the record file named by `file`. Lowercase kebab-case; chart-type ids may start with a digit (e.g. '100pct-stacked-bar').",
|
|
66
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
40
67
|
},
|
|
41
68
|
"name": {
|
|
42
69
|
"type": "string",
|
|
@@ -46,6 +73,16 @@
|
|
|
46
73
|
"type": "string",
|
|
47
74
|
"description": "Filename of the full record, relative to this index file's directory.",
|
|
48
75
|
"pattern": "^[^/]+\\.json$"
|
|
76
|
+
},
|
|
77
|
+
"deprecated": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"const": true,
|
|
80
|
+
"description": "Present on the entry of a record that carries `deprecation`. Pickers and default listings hide deprecated entries; the id keeps resolving."
|
|
81
|
+
},
|
|
82
|
+
"replacedBy": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "The deprecated record's `deprecation.replacedBy`, repeated so a picker can offer the replacement without loading the record.",
|
|
85
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
49
86
|
}
|
|
50
87
|
}
|
|
51
88
|
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openpresentation.org/schema/opf-catalog-manifest/v1",
|
|
4
|
+
"title": "Catalog Snapshot Manifest",
|
|
5
|
+
"description": "Shape of `spec/catalogs/manifest.json`, which pins the bundled catalogs to 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
|
+
"type": "object",
|
|
7
|
+
"required": ["$schema", "description", "publisher", "source", "kinds"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"$schema": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "https://openpresentation.org/schema/opf-catalog-manifest/v1"
|
|
13
|
+
},
|
|
14
|
+
"description": {
|
|
15
|
+
"type": "string"
|
|
16
|
+
},
|
|
17
|
+
"publisher": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Base URL of the default-catalog publisher. Each kind is published at `<publisher>/<kind>/index.json`.",
|
|
20
|
+
"format": "uri"
|
|
21
|
+
},
|
|
22
|
+
"source": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"description": "The published catalog files the snapshot was taken from.",
|
|
25
|
+
"required": ["repository", "commit", "path"],
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"properties": {
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Git repository of the publisher.",
|
|
31
|
+
"format": "uri"
|
|
32
|
+
},
|
|
33
|
+
"commit": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Full commit SHA of the publisher checkout whose published files the snapshot matches."
|
|
36
|
+
},
|
|
37
|
+
"path": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Directory in that repository holding `<kind>/index.json` and `<kind>/<id>.json`."
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"kinds": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"description": "One entry per catalog kind, keyed by the kind's URL segment.",
|
|
46
|
+
"additionalProperties": { "$ref": "#/$defs/KindEntry" }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"$defs": {
|
|
50
|
+
"KindEntry": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"required": ["mode", "records", "contentSha256", "gallery"],
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"properties": {
|
|
55
|
+
"mode": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "'mirror': the snapshot holds every published record. 'subset': the snapshot keeps its existing ids (their content comes from the publisher) while the publisher also serves records that are not reconciled for bundling yet.",
|
|
58
|
+
"enum": ["mirror", "subset"]
|
|
59
|
+
},
|
|
60
|
+
"records": {
|
|
61
|
+
"type": "integer",
|
|
62
|
+
"description": "Number of records bundled for this kind.",
|
|
63
|
+
"minimum": 0
|
|
64
|
+
},
|
|
65
|
+
"contentSha256": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "contentSha256 of the bundled records, as defined by the catalog index schema.",
|
|
68
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
69
|
+
},
|
|
70
|
+
"gallery": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"description": "The published catalog for this kind at the pinned commit.",
|
|
73
|
+
"required": ["records", "contentSha256"],
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"properties": {
|
|
76
|
+
"records": { "type": "integer", "minimum": 0 },
|
|
77
|
+
"contentSha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
"description": "Schema for chart-type records in the pptx.gallery catalog. The bundled catalog holds one record per chart type that Aspose.Slides officially supports (see mappings.renderers[\"aspose-slides\"].chartType). Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
|
+
"patternProperties": {
|
|
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."
|
|
11
|
+
}
|
|
12
|
+
},
|
|
8
13
|
"required": [
|
|
9
14
|
"$schema",
|
|
10
15
|
"id",
|
|
@@ -36,6 +36,27 @@
|
|
|
36
36
|
"Forest Green"
|
|
37
37
|
]
|
|
38
38
|
},
|
|
39
|
+
"deprecation": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["replacedBy"],
|
|
43
|
+
"description": "Present when this color scheme 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 color scheme 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 palette — what mood it evokes and where to use it.",
|
|
@@ -40,6 +40,27 @@
|
|
|
40
40
|
"Microsoft Yahei"
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
|
+
"deprecation": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": false,
|
|
46
|
+
"required": ["replacedBy"],
|
|
47
|
+
"description": "Present when this font scheme 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.",
|
|
48
|
+
"properties": {
|
|
49
|
+
"replacedBy": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
52
|
+
"description": "Id of the non-deprecated font scheme record that documents should reference instead."
|
|
53
|
+
},
|
|
54
|
+
"reason": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Why the record is deprecated."
|
|
57
|
+
},
|
|
58
|
+
"removal": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "Package version in which the record is scheduled for removal from the bundled catalog, if any."
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
43
64
|
"major": {
|
|
44
65
|
"type": "string",
|
|
45
66
|
"description": "Heading (major) font family — mirrors the OOXML majorFont entry.",
|
|
@@ -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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
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"
|