@json-to-office/shared 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -454,7 +454,36 @@ interface PptxSlideContentComponentDescriptor<TName extends string = string, TPr
454
454
  readonly hasChildren: false;
455
455
  readonly category: 'content';
456
456
  readonly description: string;
457
+ /**
458
+ * Force `props` to stay required even though the props schema accepts `{}`.
459
+ *
460
+ * Only for components whose content requirement is real but inexpressible in
461
+ * a single TypeBox object — see `pptxComponentRequiresProps`.
462
+ */
463
+ readonly propsRequired?: boolean;
457
464
  }
465
+ /**
466
+ * Whether a PPTX component must carry a `props` key.
467
+ *
468
+ * The default answer is the props schema's own: a schema that accepts `{}`
469
+ * demands nothing, so the key adds nothing and may be omitted (this mirrors
470
+ * `demandsProps` in shared-docx). Two components override it, because their
471
+ * content requirement is a rule a single TypeBox object cannot state: `text`
472
+ * needs exactly one of `text`/`runs` and `image` exactly one of
473
+ * `path`/`base64`/`svg`, so both leave every field optional and are still
474
+ * unrenderable empty. Declaring it here rather than in each consumer is what
475
+ * keeps the published schema and the runtime validator asking for the same
476
+ * key — they both call this.
477
+ *
478
+ * The override is what the published schema has always said for both, so it is
479
+ * the runtime that moved to meet it. Reading the schema's own answer instead
480
+ * would have loosened the published contract on `image` — a change to what
481
+ * agents are told, made to fix a disagreement about what they are told.
482
+ */
483
+ declare function pptxComponentRequiresProps(component: {
484
+ readonly propsSchema: TSchema;
485
+ readonly propsRequired?: boolean;
486
+ }): boolean;
458
487
  /**
459
488
  * Single source of truth for PPTX leaf content, in public schema order.
460
489
  */
@@ -538,6 +567,7 @@ declare const PPTX_SLIDE_CONTENT_COMPONENTS: readonly [{
538
567
  }>;
539
568
  readonly hasChildren: false;
540
569
  readonly category: "content";
570
+ readonly propsRequired: true;
541
571
  readonly description: "Text element - displays text with formatting, positioning and styling options.";
542
572
  }, {
543
573
  readonly name: "image";
@@ -579,6 +609,7 @@ declare const PPTX_SLIDE_CONTENT_COMPONENTS: readonly [{
579
609
  }>;
580
610
  readonly hasChildren: false;
581
611
  readonly category: "content";
612
+ readonly propsRequired: true;
582
613
  readonly description: "Image element - displays images from file path, URL, or base64 data.";
583
614
  }, {
584
615
  readonly name: "shape";
@@ -914,7 +945,82 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
914
945
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
915
946
  }>>;
916
947
  style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"title" | "subtitle" | "heading1" | "heading2" | "heading3" | "body" | "caption">[]>>;
917
- }>;
948
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
949
+ text: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
950
+ runs: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TObject<{
951
+ text: _sinclair_typebox.TString;
952
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
953
+ bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
954
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
955
+ italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
956
+ underline: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TBoolean, _sinclair_typebox.TObject<{
957
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sng">, _sinclair_typebox.TLiteral<"dbl">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dotted">]>>;
958
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
959
+ }>]>>;
960
+ strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
961
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
962
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
963
+ superscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
964
+ subscript: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
965
+ charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
966
+ breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
967
+ }>>>;
968
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
969
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
970
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
971
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
972
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
973
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
974
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
975
+ bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
976
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
977
+ italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
978
+ underline: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TBoolean, _sinclair_typebox.TObject<{
979
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"sng">, _sinclair_typebox.TLiteral<"dbl">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dotted">]>>;
980
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
981
+ }>]>>;
982
+ strike: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
983
+ language: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
984
+ align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
985
+ valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
986
+ breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
987
+ bullet: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TBoolean, _sinclair_typebox.TObject<{
988
+ type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"bullet">, _sinclair_typebox.TLiteral<"number">]>>;
989
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
990
+ startAt: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
991
+ }>]>>;
992
+ margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
993
+ rotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
994
+ shadow: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
995
+ type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"outer">, _sinclair_typebox.TLiteral<"inner">]>>;
996
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, ...(_sinclair_typebox.TLiteral<"text" | "primary" | "secondary" | "accent" | "background" | "text2" | "background2" | "accent4" | "accent5" | "accent6"> | _sinclair_typebox.TLiteral<"accent1" | "accent2" | "accent3" | "tx1" | "tx2" | "bg1" | "bg2">)[]]>>;
997
+ blur: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
998
+ offset: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
999
+ angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1000
+ opacity: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1001
+ }>>;
1002
+ fill: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1003
+ color: _sinclair_typebox.TString;
1004
+ transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1005
+ }>>;
1006
+ hyperlink: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1007
+ url: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1008
+ slide: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1009
+ tooltip: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1010
+ }>>;
1011
+ lineSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1012
+ lineSpacingMultiple: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1013
+ charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1014
+ paraSpaceBefore: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1015
+ paraSpaceAfter: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1016
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1017
+ column: _sinclair_typebox.TNumber;
1018
+ row: _sinclair_typebox.TNumber;
1019
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1020
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1021
+ }>>;
1022
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"title" | "subtitle" | "heading1" | "heading2" | "heading3" | "body" | "caption">[]>>;
1023
+ }>>;
918
1024
  }>, _sinclair_typebox.TObject<{
919
1025
  name: _sinclair_typebox.TLiteral<"image">;
920
1026
  id: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
@@ -954,7 +1060,42 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
954
1060
  columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
955
1061
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
956
1062
  }>>;
957
- }>;
1063
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1064
+ path: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1065
+ base64: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1066
+ svg: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1067
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1068
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1069
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1070
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1071
+ sizing: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1072
+ type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"contain">, _sinclair_typebox.TLiteral<"cover">, _sinclair_typebox.TLiteral<"crop">]>;
1073
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1074
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1075
+ }>>;
1076
+ rotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1077
+ rounding: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1078
+ shadow: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1079
+ type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"outer">, _sinclair_typebox.TLiteral<"inner">]>>;
1080
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, ...(_sinclair_typebox.TLiteral<"text" | "primary" | "secondary" | "accent" | "background" | "text2" | "background2" | "accent4" | "accent5" | "accent6"> | _sinclair_typebox.TLiteral<"accent1" | "accent2" | "accent3" | "tx1" | "tx2" | "bg1" | "bg2">)[]]>>;
1081
+ blur: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1082
+ offset: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1083
+ angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1084
+ opacity: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1085
+ }>>;
1086
+ hyperlink: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1087
+ url: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1088
+ slide: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1089
+ tooltip: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1090
+ }>>;
1091
+ alt: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1092
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1093
+ column: _sinclair_typebox.TNumber;
1094
+ row: _sinclair_typebox.TNumber;
1095
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1096
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1097
+ }>>;
1098
+ }>>;
958
1099
  }>, _sinclair_typebox.TObject<{
959
1100
  name: _sinclair_typebox.TLiteral<"shape">;
960
1101
  id: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
@@ -1031,7 +1172,79 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
1031
1172
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1032
1173
  }>>;
1033
1174
  style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"title" | "subtitle" | "heading1" | "heading2" | "heading3" | "body" | "caption">[]>>;
1034
- }>;
1175
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1176
+ type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"rect">, _sinclair_typebox.TLiteral<"roundRect">, _sinclair_typebox.TLiteral<"ellipse">, _sinclair_typebox.TLiteral<"triangle">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"pentagon">, _sinclair_typebox.TLiteral<"hexagon">, _sinclair_typebox.TLiteral<"star5">, _sinclair_typebox.TLiteral<"star6">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"arc">, _sinclair_typebox.TLiteral<"pie">, _sinclair_typebox.TLiteral<"blockArc">, _sinclair_typebox.TLiteral<"chord">, _sinclair_typebox.TLiteral<"arrow">, _sinclair_typebox.TLiteral<"chevron">, _sinclair_typebox.TLiteral<"cloud">, _sinclair_typebox.TLiteral<"heart">, _sinclair_typebox.TLiteral<"lightning">]>;
1177
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1178
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1179
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1180
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1181
+ fill: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1182
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1183
+ transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1184
+ gradient: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1185
+ type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"linear">, _sinclair_typebox.TLiteral<"radial">]>;
1186
+ angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1187
+ stops: _sinclair_typebox.TArray<_sinclair_typebox.TObject<{
1188
+ color: _sinclair_typebox.TString;
1189
+ pos: _sinclair_typebox.TNumber;
1190
+ transparency: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1191
+ }>>;
1192
+ focus: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"topLeft">, _sinclair_typebox.TLiteral<"topRight">, _sinclair_typebox.TLiteral<"bottomLeft">, _sinclair_typebox.TLiteral<"bottomRight">]>>;
1193
+ }>>;
1194
+ pattern: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1195
+ preset: _sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"pct5" | "pct10" | "pct20" | "pct25" | "pct30" | "pct40" | "pct50" | "pct60" | "pct70" | "pct75" | "pct80" | "pct90" | "horz" | "vert" | "ltHorz" | "ltVert" | "dkHorz" | "dkVert" | "narHorz" | "narVert" | "dashHorz" | "dashVert" | "cross" | "dnDiag" | "upDiag" | "ltDnDiag" | "ltUpDiag" | "dkDnDiag" | "dkUpDiag" | "wdDnDiag" | "wdUpDiag" | "dashDnDiag" | "dashUpDiag" | "diagCross" | "smCheck" | "lgCheck" | "smGrid" | "lgGrid" | "dotGrid" | "smConfetti" | "lgConfetti" | "horzBrick" | "diagBrick" | "solidDmnd" | "openDmnd" | "dotDmnd" | "plaid" | "sphere" | "weave" | "divot" | "shingle" | "wave" | "trellis" | "zigZag">[]>;
1196
+ foreground: _sinclair_typebox.TString;
1197
+ background: _sinclair_typebox.TString;
1198
+ }>>;
1199
+ }>>;
1200
+ line: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1201
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1202
+ width: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1203
+ dashType: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"dashDot">]>>;
1204
+ }>>;
1205
+ text: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, _sinclair_typebox.TArray<_sinclair_typebox.TObject<{
1206
+ text: _sinclair_typebox.TString;
1207
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1208
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1209
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1210
+ bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1211
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1212
+ italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1213
+ breakLine: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1214
+ spaceBefore: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1215
+ spaceAfter: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1216
+ charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1217
+ }>>]>>;
1218
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1219
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1220
+ fontColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1221
+ charSpacing: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1222
+ bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1223
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1224
+ italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1225
+ align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
1226
+ valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
1227
+ rotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1228
+ angleRange: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
1229
+ flipH: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1230
+ flipV: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1231
+ shadow: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1232
+ type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"outer">, _sinclair_typebox.TLiteral<"inner">]>>;
1233
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, ...(_sinclair_typebox.TLiteral<"text" | "primary" | "secondary" | "accent" | "background" | "text2" | "background2" | "accent4" | "accent5" | "accent6"> | _sinclair_typebox.TLiteral<"accent1" | "accent2" | "accent3" | "tx1" | "tx2" | "bg1" | "bg2">)[]]>>;
1234
+ blur: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1235
+ offset: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1236
+ angle: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1237
+ opacity: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1238
+ }>>;
1239
+ rectRadius: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1240
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1241
+ column: _sinclair_typebox.TNumber;
1242
+ row: _sinclair_typebox.TNumber;
1243
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1244
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1245
+ }>>;
1246
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<_sinclair_typebox.TLiteral<"title" | "subtitle" | "heading1" | "heading2" | "heading3" | "body" | "caption">[]>>;
1247
+ }>>;
1035
1248
  }>, _sinclair_typebox.TObject<{
1036
1249
  name: _sinclair_typebox.TLiteral<"table">;
1037
1250
  id: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
@@ -1080,7 +1293,51 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
1080
1293
  columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1081
1294
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1082
1295
  }>>;
1083
- }>;
1296
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1297
+ rows: _sinclair_typebox.TArray<_sinclair_typebox.TArray<_sinclair_typebox.TUnion<[_sinclair_typebox.TString, _sinclair_typebox.TObject<{
1298
+ text: _sinclair_typebox.TString;
1299
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1300
+ fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1301
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1302
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1303
+ bold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1304
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1305
+ italic: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1306
+ align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
1307
+ valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
1308
+ colspan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1309
+ rowspan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1310
+ margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
1311
+ }>]>>>;
1312
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1313
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1314
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1315
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1316
+ colW: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
1317
+ rowH: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
1318
+ border: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1319
+ type: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
1320
+ pt: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1321
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1322
+ }>>;
1323
+ fill: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1324
+ fontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1325
+ fontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1326
+ fontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1327
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1328
+ align: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"left">, _sinclair_typebox.TLiteral<"center">, _sinclair_typebox.TLiteral<"right">]>>;
1329
+ valign: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"top">, _sinclair_typebox.TLiteral<"middle">, _sinclair_typebox.TLiteral<"bottom">]>>;
1330
+ autoPage: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1331
+ autoPageRepeatHeader: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1332
+ margin: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TArray<_sinclair_typebox.TNumber>]>>;
1333
+ borderRadius: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1334
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1335
+ column: _sinclair_typebox.TNumber;
1336
+ row: _sinclair_typebox.TNumber;
1337
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1338
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1339
+ }>>;
1340
+ }>>;
1084
1341
  }>, _sinclair_typebox.TObject<{
1085
1342
  name: _sinclair_typebox.TLiteral<"highcharts">;
1086
1343
  id: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
@@ -1109,7 +1366,31 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
1109
1366
  columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1110
1367
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1111
1368
  }>>;
1112
- }>;
1369
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1370
+ options: _sinclair_typebox.TIntersect<[_sinclair_typebox.TRecord<_sinclair_typebox.TString, _sinclair_typebox.TUnknown>, _sinclair_typebox.TObject<{
1371
+ chart: _sinclair_typebox.TObject<{
1372
+ width: _sinclair_typebox.TNumber;
1373
+ height: _sinclair_typebox.TNumber;
1374
+ }>;
1375
+ }>]>;
1376
+ scale: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1377
+ serverUrl: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1378
+ resources: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1379
+ css: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1380
+ js: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1381
+ files: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
1382
+ }>>;
1383
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1384
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1385
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1386
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1387
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1388
+ column: _sinclair_typebox.TNumber;
1389
+ row: _sinclair_typebox.TNumber;
1390
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1391
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1392
+ }>>;
1393
+ }>>;
1113
1394
  }>, _sinclair_typebox.TObject<{
1114
1395
  name: _sinclair_typebox.TLiteral<"chart">;
1115
1396
  id: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
@@ -1199,8 +1480,93 @@ declare const PptxSlideContentSchema: _sinclair_typebox.TUnion<[_sinclair_typebo
1199
1480
  columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1200
1481
  rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1201
1482
  }>>;
1202
- }>;
1483
+ }> | _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1484
+ type: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"area">, _sinclair_typebox.TLiteral<"bar">, _sinclair_typebox.TLiteral<"bar3D">, _sinclair_typebox.TLiteral<"bubble">, _sinclair_typebox.TLiteral<"doughnut">, _sinclair_typebox.TLiteral<"line">, _sinclair_typebox.TLiteral<"pie">, _sinclair_typebox.TLiteral<"radar">, _sinclair_typebox.TLiteral<"scatter">]>;
1485
+ data: _sinclair_typebox.TArray<_sinclair_typebox.TObject<{
1486
+ name: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1487
+ labels: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
1488
+ values: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
1489
+ sizes: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TNumber>>;
1490
+ }>>;
1491
+ showLegend: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1492
+ showTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1493
+ showValue: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1494
+ showPercent: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1495
+ showLabel: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1496
+ showSerName: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1497
+ title: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1498
+ titleFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1499
+ titleColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1500
+ titleFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1501
+ titleFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1502
+ chartColors: _sinclair_typebox.TOptional<_sinclair_typebox.TArray<_sinclair_typebox.TString>>;
1503
+ dataBorder: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1504
+ pt: _sinclair_typebox.TNumber;
1505
+ color: _sinclair_typebox.TString;
1506
+ }>>;
1507
+ legendPos: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"tr">]>>;
1508
+ legendFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1509
+ legendFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1510
+ legendFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1511
+ legendColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1512
+ catAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1513
+ catAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1514
+ catAxisLabelRotate: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1515
+ catAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1516
+ catAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1517
+ catAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1518
+ catAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1519
+ catGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1520
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
1521
+ size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1522
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1523
+ }>>;
1524
+ valAxisTitle: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1525
+ valAxisHidden: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1526
+ valAxisMinVal: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1527
+ valAxisMaxVal: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1528
+ valAxisLabelFormatCode: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1529
+ valAxisMajorUnit: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1530
+ valAxisLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1531
+ valAxisLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1532
+ valAxisLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1533
+ valAxisLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1534
+ valGridLine: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1535
+ style: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"solid">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">]>>;
1536
+ size: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1537
+ color: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1538
+ }>>;
1539
+ catAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1540
+ valAxisLineShow: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1541
+ barDir: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"bar">, _sinclair_typebox.TLiteral<"col">]>>;
1542
+ barGrouping: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"clustered">, _sinclair_typebox.TLiteral<"stacked">, _sinclair_typebox.TLiteral<"percentStacked">]>>;
1543
+ barGapWidthPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1544
+ barOverlapPct: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1545
+ lineSmooth: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1546
+ lineDataSymbol: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"circle">, _sinclair_typebox.TLiteral<"dash">, _sinclair_typebox.TLiteral<"diamond">, _sinclair_typebox.TLiteral<"dot">, _sinclair_typebox.TLiteral<"none">, _sinclair_typebox.TLiteral<"square">, _sinclair_typebox.TLiteral<"triangle">]>>;
1547
+ lineSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1548
+ lineDataSymbolSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1549
+ firstSliceAng: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1550
+ holeSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1551
+ radarStyle: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"standard">, _sinclair_typebox.TLiteral<"marker">, _sinclair_typebox.TLiteral<"filled">]>>;
1552
+ dataLabelColor: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1553
+ dataLabelFontSize: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1554
+ dataLabelFontFace: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
1555
+ dataLabelFontWeight: _sinclair_typebox.TOptional<_sinclair_typebox.TInteger>;
1556
+ dataLabelFontBold: _sinclair_typebox.TOptional<_sinclair_typebox.TBoolean>;
1557
+ dataLabelPosition: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"b">, _sinclair_typebox.TLiteral<"bestFit">, _sinclair_typebox.TLiteral<"ctr">, _sinclair_typebox.TLiteral<"l">, _sinclair_typebox.TLiteral<"r">, _sinclair_typebox.TLiteral<"t">, _sinclair_typebox.TLiteral<"inEnd">, _sinclair_typebox.TLiteral<"outEnd">]>>;
1558
+ x: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1559
+ y: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1560
+ w: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1561
+ h: _sinclair_typebox.TOptional<_sinclair_typebox.TUnion<[_sinclair_typebox.TNumber, _sinclair_typebox.TString]>>;
1562
+ grid: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
1563
+ column: _sinclair_typebox.TNumber;
1564
+ row: _sinclair_typebox.TNumber;
1565
+ columnSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1566
+ rowSpan: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
1567
+ }>>;
1568
+ }>>;
1203
1569
  }>]>;
1204
1570
  type PptxSlideContent = Static<typeof PptxSlideContentSchema>;
1205
1571
 
1206
- export { ColorValueSchema, type GradientFill, GradientFillSchema, type GradientStop, GradientStopSchema, type GridPosition, GridPositionSchema, PATTERN_FILL_PRESETS, PPTX_SLIDE_CONTENT_COMPONENTS, type PatternFill, PatternFillSchema, type PptxAlignment, PptxAlignmentSchema, type PptxChartProps, PptxChartPropsSchema, type PptxHighchartsProps, PptxHighchartsPropsSchema, type PptxImageProps, PptxImagePropsSchema, type PptxSlideContent, type PptxSlideContentComponentDescriptor, type PptxSlideContentComponentName, PptxSlideContentSchema, type PptxTableProps, PptxTablePropsSchema, SEMANTIC_COLOR_ALIASES, SEMANTIC_COLOR_NAMES, STYLE_NAMES, type Shadow, ShadowSchema, type ShapeProps, ShapePropsSchema, type ShapeType, ShapeTypeSchema, type StyleName, StyleNameSchema, type TextProps, TextPropsSchema, type TextRun, TextRunSchema, type TextSegment, TextSegmentSchema, type VerticalAlignment, VerticalAlignmentSchema };
1572
+ export { ColorValueSchema, type GradientFill, GradientFillSchema, type GradientStop, GradientStopSchema, type GridPosition, GridPositionSchema, PATTERN_FILL_PRESETS, PPTX_SLIDE_CONTENT_COMPONENTS, type PatternFill, PatternFillSchema, type PptxAlignment, PptxAlignmentSchema, type PptxChartProps, PptxChartPropsSchema, type PptxHighchartsProps, PptxHighchartsPropsSchema, type PptxImageProps, PptxImagePropsSchema, type PptxSlideContent, type PptxSlideContentComponentDescriptor, type PptxSlideContentComponentName, PptxSlideContentSchema, type PptxTableProps, PptxTablePropsSchema, SEMANTIC_COLOR_ALIASES, SEMANTIC_COLOR_NAMES, STYLE_NAMES, type Shadow, ShadowSchema, type ShapeProps, ShapePropsSchema, type ShapeType, ShapeTypeSchema, type StyleName, StyleNameSchema, type TextProps, TextPropsSchema, type TextRun, TextRunSchema, type TextSegment, TextSegmentSchema, type VerticalAlignment, VerticalAlignmentSchema, pptxComponentRequiresProps };
@@ -1065,9 +1065,12 @@ var PptxHighchartsPropsSchema = Type7.Object(
1065
1065
 
1066
1066
  // src/schemas/slide-content/chart.ts
1067
1067
  import { Type as Type8 } from "@sinclair/typebox";
1068
- var PositionValue = Type8.Union([
1069
- Type8.Number(),
1070
- Type8.String({ pattern: "^\\d+(\\.\\d+)?%$" })
1068
+ var positionValue = (inches, percent) => Type8.Union([
1069
+ Type8.Number({ description: inches }),
1070
+ Type8.String({
1071
+ pattern: "^\\d+(\\.\\d+)?%$",
1072
+ description: percent
1073
+ })
1071
1074
  ]);
1072
1075
  var ChartTypeSchema = Type8.Union(
1073
1076
  [
@@ -1087,10 +1090,14 @@ var ChartDataSeriesSchema = Type8.Object(
1087
1090
  {
1088
1091
  name: Type8.Optional(Type8.String({ description: "Series name" })),
1089
1092
  labels: Type8.Optional(
1090
- Type8.Array(Type8.String(), { description: "Category labels" })
1093
+ Type8.Array(Type8.String(), {
1094
+ description: "Category labels. Needed on every series, not just the first, and the same length as `values`; a series without both `labels` and `values` drops the whole chart."
1095
+ })
1091
1096
  ),
1092
1097
  values: Type8.Optional(
1093
- Type8.Array(Type8.Number(), { description: "Data values" })
1098
+ Type8.Array(Type8.Number(), {
1099
+ description: "Data values, one per label. Needed on every series \u2014 see `labels`."
1100
+ })
1094
1101
  ),
1095
1102
  sizes: Type8.Optional(
1096
1103
  Type8.Array(Type8.Number(), {
@@ -1406,10 +1413,10 @@ var PptxChartPropsSchema = Type8.Object(
1406
1413
  )
1407
1414
  ),
1408
1415
  // Positioning
1409
- x: Type8.Optional(PositionValue),
1410
- y: Type8.Optional(PositionValue),
1411
- w: Type8.Optional(PositionValue),
1412
- h: Type8.Optional(PositionValue),
1416
+ x: Type8.Optional(positionValue("X position in inches", "X as percentage")),
1417
+ y: Type8.Optional(positionValue("Y position in inches", "Y as percentage")),
1418
+ w: Type8.Optional(positionValue("Width in inches", "Width as percentage")),
1419
+ h: Type8.Optional(positionValue("Height in inches", "Height as percentage")),
1413
1420
  grid: Type8.Optional(GridPositionSchema)
1414
1421
  },
1415
1422
  {
@@ -1419,12 +1426,20 @@ var PptxChartPropsSchema = Type8.Object(
1419
1426
  );
1420
1427
 
1421
1428
  // src/schemas/slide-content.ts
1429
+ function pptxComponentRequiresProps(component) {
1430
+ if (component.propsRequired !== void 0) return component.propsRequired;
1431
+ const schema = component.propsSchema;
1432
+ return schema.type !== "object" || (schema.required?.length ?? 0) > 0;
1433
+ }
1422
1434
  var PPTX_SLIDE_CONTENT_COMPONENTS = [
1423
1435
  {
1424
1436
  name: "text",
1425
1437
  propsSchema: TextPropsSchema,
1426
1438
  hasChildren: false,
1427
1439
  category: "content",
1440
+ // `text` XOR `runs`: both optional in the schema, one of them mandatory in
1441
+ // fact (validation/text-content-conflicts.ts rejects neither and both).
1442
+ propsRequired: true,
1428
1443
  description: "Text element - displays text with formatting, positioning and styling options."
1429
1444
  },
1430
1445
  {
@@ -1432,6 +1447,15 @@ var PPTX_SLIDE_CONTENT_COMPONENTS = [
1432
1447
  propsSchema: PptxImagePropsSchema,
1433
1448
  hasChildren: false,
1434
1449
  category: "content",
1450
+ // One of `path`/`base64`/`svg`, so same shape as `text`: a source is
1451
+ // mandatory in fact and optional in the schema. Unlike `text` this is only
1452
+ // half enforced — the missing key is caught, an empty props object is not,
1453
+ // because `image` has no analogue of validation/text-content-conflicts.ts
1454
+ // and a sourceless image is an IMAGE_NO_SOURCE warning at generation, not
1455
+ // an error. The flag is still not the guess: `image` has required `props`
1456
+ // in the published schema since it was first generated, so dropping it
1457
+ // here would loosen that contract rather than tighten the runtime.
1458
+ propsRequired: true,
1435
1459
  description: "Image element - displays images from file path, URL, or base64 data."
1436
1460
  },
1437
1461
  {
@@ -1474,7 +1498,7 @@ function createSlideContentComponentSchema(component) {
1474
1498
  description: "When false, this component is filtered out and not rendered. Defaults to true."
1475
1499
  })
1476
1500
  ),
1477
- props: component.propsSchema
1501
+ props: pptxComponentRequiresProps(component) ? component.propsSchema : Type9.Optional(component.propsSchema)
1478
1502
  },
1479
1503
  { additionalProperties: false, description: component.description }
1480
1504
  );
@@ -1518,6 +1542,7 @@ export {
1518
1542
  TextPropsSchema,
1519
1543
  TextRunSchema,
1520
1544
  TextSegmentSchema,
1521
- VerticalAlignmentSchema
1545
+ VerticalAlignmentSchema,
1546
+ pptxComponentRequiresProps
1522
1547
  };
1523
1548
  //# sourceMappingURL=slide-content.js.map