@financial-times/content-tree 0.10.0 → 0.12.0-beta.2
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/README.md +15 -0
- package/SPEC.md +76 -24
- package/content-tree.d.ts +136 -12
- package/package.json +1 -1
- package/schemas/body-tree.schema.json +193 -76
- package/schemas/content-tree.schema.json +192 -76
- package/schemas/transit-tree.schema.json +192 -76
package/README.md
CHANGED
|
@@ -198,6 +198,21 @@ A single semantic change to the content tree is usually split across multiple pu
|
|
|
198
198
|
|
|
199
199
|
Before making a release you will also need to raise a pull request to increment the package.json version number, this should be made in its own PR so that at least one member of each team can approve it. Please get sign-off in the [#dynamic-storytelling-team](https://financialtimes.enterprise.slack.com/archives/C035P5DCHMH) slack channel and share this PR there. Releases are then made via GitHub Releases: they must include a SemVer tag `vX.Y.Z` which matches the one within the package json. The release notes should be completed to communicate what changed in the release. Cutting a release will trigger CI to publish to npm for JS consumers. Go consumers can depend on the new git tag as the module version.
|
|
200
200
|
|
|
201
|
+
### Beta releases
|
|
202
|
+
|
|
203
|
+
If you want to make a beta release from a branch before you merge into main, you can do this with the following steps:
|
|
204
|
+
|
|
205
|
+
* set your release as `v0.0.0-beta.0` where `0` is whatever version number you are setting
|
|
206
|
+
* in Github, go into https://github.com/Financial-Times/content-tree/releases and press the Draft a new release button
|
|
207
|
+
* when drafting the new release
|
|
208
|
+
* set the tag to the same as you have for your beta
|
|
209
|
+
* set the target to the branch that you want to release from
|
|
210
|
+
* set the Release title to the version number
|
|
211
|
+
* fill in release notes as normal
|
|
212
|
+
* check the Pre-release option under Release label
|
|
213
|
+
* Press the Publish release button
|
|
214
|
+
|
|
215
|
+
|
|
201
216
|
## License
|
|
202
217
|
|
|
203
218
|
This software is published by the Financial Times under the [MIT licence](mit).
|
package/SPEC.md
CHANGED
|
@@ -343,28 +343,29 @@ interface Blockquote extends Parent {
|
|
|
343
343
|
|
|
344
344
|
```ts
|
|
345
345
|
type StoryBlock =
|
|
346
|
-
|
|
|
347
|
-
| Flourish
|
|
346
|
+
| AcastPodcast
|
|
348
347
|
| BigNumber
|
|
348
|
+
| Carousel
|
|
349
|
+
| ClipSet
|
|
349
350
|
| CustomCodeComponent
|
|
351
|
+
| Definition
|
|
352
|
+
| Flourish
|
|
353
|
+
| ImagePair
|
|
354
|
+
| ImageSet
|
|
355
|
+
| InfoBox
|
|
356
|
+
| InfoPair
|
|
357
|
+
| InNumbers
|
|
350
358
|
| Layout
|
|
351
359
|
| Pullquote
|
|
352
|
-
| ScrollyBlock
|
|
353
|
-
| ClipSet
|
|
354
|
-
| Table
|
|
355
360
|
| Recommended
|
|
356
361
|
| RecommendedList
|
|
362
|
+
| ScrollyBlock
|
|
363
|
+
| Table
|
|
364
|
+
| Timeline
|
|
357
365
|
| Tweet
|
|
358
366
|
| Video
|
|
359
|
-
| YoutubeVideo
|
|
360
367
|
| VimeoVideo
|
|
361
|
-
|
|
362
|
-
| Timeline
|
|
363
|
-
| ImagePair
|
|
364
|
-
| InNumbers
|
|
365
|
-
| Definition
|
|
366
|
-
| InfoBox
|
|
367
|
-
| InfoPair
|
|
368
|
+
| YoutubeVideo
|
|
368
369
|
```
|
|
369
370
|
|
|
370
371
|
`StoryBlock` nodes are things that can be inserted into an article body.
|
|
@@ -804,7 +805,7 @@ interface LayoutImage extends Node {
|
|
|
804
805
|
type TableColumnSettings = {
|
|
805
806
|
hideOnMobile: boolean
|
|
806
807
|
sortable: boolean
|
|
807
|
-
sortType
|
|
808
|
+
sortType?: 'text' | 'number' | 'date' | 'currency' | 'percent'
|
|
808
809
|
}
|
|
809
810
|
|
|
810
811
|
type TableLayoutWidth = Extract<LayoutWidth,
|
|
@@ -814,6 +815,11 @@ type TableLayoutWidth = Extract<LayoutWidth,
|
|
|
814
815
|
| 'inset-right'
|
|
815
816
|
| 'full-bleed'>
|
|
816
817
|
|
|
818
|
+
type TableChildren =
|
|
819
|
+
| [TableCaption, TableBody, TableFooter?]
|
|
820
|
+
| [TableBody, TableFooter?]
|
|
821
|
+
| [TableCaption, TableHeader, TableBody, TableFooter?]
|
|
822
|
+
| [TableHeader, TableBody, TableFooter?]
|
|
817
823
|
|
|
818
824
|
interface TableCaption extends Parent {
|
|
819
825
|
type: 'table-caption'
|
|
@@ -828,6 +834,11 @@ interface TableCell extends Parent {
|
|
|
828
834
|
children: Phrasing[]
|
|
829
835
|
}
|
|
830
836
|
|
|
837
|
+
interface TableHeader extends Parent {
|
|
838
|
+
type: 'table-header'
|
|
839
|
+
children: TableRow[]
|
|
840
|
+
}
|
|
841
|
+
|
|
831
842
|
interface TableRow extends Parent {
|
|
832
843
|
type: 'table-row'
|
|
833
844
|
children: TableCell[]
|
|
@@ -850,14 +861,14 @@ interface Table extends Parent {
|
|
|
850
861
|
layoutWidth: TableLayoutWidth
|
|
851
862
|
collapseAfterHowManyRows?: number
|
|
852
863
|
responsiveStyle: 'overflow' | 'flat' | 'scroll'
|
|
853
|
-
children: [TableCaption, TableBody, TableFooter] | [TableCaption, TableBody] | [TableBody, TableFooter] | [TableBody]
|
|
854
864
|
columnSettings: TableColumnSettings[]
|
|
865
|
+
children: TableChildren
|
|
855
866
|
}
|
|
856
867
|
```
|
|
857
868
|
|
|
858
869
|
**Table** represents 2d data.
|
|
859
870
|
|
|
860
|
-
### CustomCodeComponent
|
|
871
|
+
### `CustomCodeComponent`
|
|
861
872
|
|
|
862
873
|
```ts
|
|
863
874
|
type CustomCodeComponentAttributes = {
|
|
@@ -887,7 +898,7 @@ interface CustomCodeComponent extends Node {
|
|
|
887
898
|
- The basic interface in Spark to make reference to this system above (eg. the git repo URL or a public S3 bucket), and provide some data for it if necessary. This will be the Custom Component storyblock.
|
|
888
899
|
- The data Spark receives from entering a specific ID will be used to render dynamic fields (the `attributes`).
|
|
889
900
|
|
|
890
|
-
### ImagePair
|
|
901
|
+
### `ImagePair`
|
|
891
902
|
|
|
892
903
|
```ts
|
|
893
904
|
interface ImagePair extends Parent {
|
|
@@ -898,7 +909,7 @@ interface ImagePair extends Parent {
|
|
|
898
909
|
|
|
899
910
|
**ImagePair** is a set of two images
|
|
900
911
|
|
|
901
|
-
### Timeline
|
|
912
|
+
### `Timeline`
|
|
902
913
|
|
|
903
914
|
```ts
|
|
904
915
|
/**
|
|
@@ -923,7 +934,7 @@ interface TimelineEvent extends Parent {
|
|
|
923
934
|
}
|
|
924
935
|
```
|
|
925
936
|
|
|
926
|
-
### InNumbers
|
|
937
|
+
### `InNumbers`
|
|
927
938
|
|
|
928
939
|
```ts
|
|
929
940
|
/**
|
|
@@ -946,7 +957,7 @@ interface InNumbers extends Parent {
|
|
|
946
957
|
}
|
|
947
958
|
```
|
|
948
959
|
|
|
949
|
-
### Card
|
|
960
|
+
### `Card`
|
|
950
961
|
|
|
951
962
|
```ts
|
|
952
963
|
/** Allowed children for a card
|
|
@@ -963,7 +974,7 @@ interface Card extends Parent {
|
|
|
963
974
|
}
|
|
964
975
|
```
|
|
965
976
|
|
|
966
|
-
### InfoBox
|
|
977
|
+
### `InfoBox`
|
|
967
978
|
|
|
968
979
|
```ts
|
|
969
980
|
/**
|
|
@@ -981,7 +992,7 @@ interface InfoBox extends Parent {
|
|
|
981
992
|
}
|
|
982
993
|
```
|
|
983
994
|
|
|
984
|
-
### InfoPair
|
|
995
|
+
### `InfoPair`
|
|
985
996
|
|
|
986
997
|
```ts
|
|
987
998
|
/**
|
|
@@ -995,9 +1006,50 @@ interface InfoPair extends Parent {
|
|
|
995
1006
|
}
|
|
996
1007
|
```
|
|
997
1008
|
|
|
1009
|
+
### Carousels
|
|
998
1010
|
|
|
1011
|
+
#### `CarouselCard`
|
|
1012
|
+
```ts
|
|
1013
|
+
interface CarouselCard extends Node {
|
|
1014
|
+
type: "carousel-card"
|
|
1015
|
+
image: ImageSet
|
|
1016
|
+
title?: string
|
|
1017
|
+
copy: Paragraph[]
|
|
1018
|
+
additionalInfo?: string
|
|
1019
|
+
}
|
|
1020
|
+
```
|
|
1021
|
+
**CarouselCard** is a single item in a carousel
|
|
999
1022
|
|
|
1023
|
+
#### `CarouselChildren`
|
|
1024
|
+
```ts
|
|
1025
|
+
/**
|
|
1026
|
+
* @maxItems 10
|
|
1027
|
+
* @minItems 4
|
|
1028
|
+
* @sparkRepeater true
|
|
1029
|
+
*/
|
|
1030
|
+
type CarouselChildren = CarouselCard[]
|
|
1031
|
+
```
|
|
1032
|
+
**CarouselChildren** the array of carousel cards that make up a carousel
|
|
1000
1033
|
|
|
1034
|
+
#### `CarouselHeading`
|
|
1035
|
+
```ts
|
|
1036
|
+
interface CarouselHeading extends Node {
|
|
1037
|
+
type: "carousel-heading"
|
|
1038
|
+
title: string
|
|
1039
|
+
standfirst?: string
|
|
1040
|
+
}
|
|
1041
|
+
```
|
|
1042
|
+
**CarouselHeading** is the main header for a carousel component
|
|
1001
1043
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1044
|
+
#### `Carousel`
|
|
1045
|
+
```ts
|
|
1046
|
+
/**
|
|
1047
|
+
* @sparkGenerateStoryBlock true
|
|
1048
|
+
*/
|
|
1049
|
+
interface Carousel extends Parent {
|
|
1050
|
+
type: "carousel"
|
|
1051
|
+
heading?: CarouselHeading
|
|
1052
|
+
children: CarouselChildren
|
|
1053
|
+
}
|
|
1054
|
+
```
|
|
1055
|
+
**Carousel** is the main container for a carousel component
|
package/content-tree.d.ts
CHANGED
|
@@ -95,7 +95,7 @@ export declare namespace ContentTree {
|
|
|
95
95
|
type: "blockquote";
|
|
96
96
|
children: (Paragraph | Phrasing)[];
|
|
97
97
|
}
|
|
98
|
-
type StoryBlock =
|
|
98
|
+
type StoryBlock = AcastPodcast | BigNumber | Carousel | ClipSet | CustomCodeComponent | Definition | Flourish | ImagePair | ImageSet | InfoBox | InfoPair | InNumbers | Layout | Pullquote | Recommended | RecommendedList | ScrollyBlock | Table | Timeline | Tweet | Video | VimeoVideo | YoutubeVideo;
|
|
99
99
|
interface Pullquote extends Node {
|
|
100
100
|
type: "pullquote";
|
|
101
101
|
text: string;
|
|
@@ -305,9 +305,10 @@ export declare namespace ContentTree {
|
|
|
305
305
|
type TableColumnSettings = {
|
|
306
306
|
hideOnMobile: boolean;
|
|
307
307
|
sortable: boolean;
|
|
308
|
-
sortType
|
|
308
|
+
sortType?: 'text' | 'number' | 'date' | 'currency' | 'percent';
|
|
309
309
|
};
|
|
310
310
|
type TableLayoutWidth = Extract<LayoutWidth, 'auto' | 'full-grid' | 'inset-left' | 'inset-right' | 'full-bleed'>;
|
|
311
|
+
type TableChildren = [TableCaption, TableBody, TableFooter?] | [TableBody, TableFooter?] | [TableCaption, TableHeader, TableBody, TableFooter?] | [TableHeader, TableBody, TableFooter?];
|
|
311
312
|
interface TableCaption extends Parent {
|
|
312
313
|
type: 'table-caption';
|
|
313
314
|
children: Phrasing[];
|
|
@@ -319,6 +320,10 @@ export declare namespace ContentTree {
|
|
|
319
320
|
rowSpan?: number;
|
|
320
321
|
children: Phrasing[];
|
|
321
322
|
}
|
|
323
|
+
interface TableHeader extends Parent {
|
|
324
|
+
type: 'table-header';
|
|
325
|
+
children: TableRow[];
|
|
326
|
+
}
|
|
322
327
|
interface TableRow extends Parent {
|
|
323
328
|
type: 'table-row';
|
|
324
329
|
children: TableCell[];
|
|
@@ -338,8 +343,8 @@ export declare namespace ContentTree {
|
|
|
338
343
|
layoutWidth: TableLayoutWidth;
|
|
339
344
|
collapseAfterHowManyRows?: number;
|
|
340
345
|
responsiveStyle: 'overflow' | 'flat' | 'scroll';
|
|
341
|
-
children: [TableCaption, TableBody, TableFooter] | [TableCaption, TableBody] | [TableBody, TableFooter] | [TableBody];
|
|
342
346
|
columnSettings: TableColumnSettings[];
|
|
347
|
+
children: TableChildren;
|
|
343
348
|
}
|
|
344
349
|
type CustomCodeComponentAttributes = {
|
|
345
350
|
[key: string]: string | boolean | undefined;
|
|
@@ -434,6 +439,32 @@ export declare namespace ContentTree {
|
|
|
434
439
|
title?: string;
|
|
435
440
|
children: [Card, Card];
|
|
436
441
|
}
|
|
442
|
+
interface CarouselCard extends Node {
|
|
443
|
+
type: "carousel-card";
|
|
444
|
+
image: ImageSet;
|
|
445
|
+
title?: string;
|
|
446
|
+
copy: Paragraph[];
|
|
447
|
+
additionalInfo?: string;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* @maxItems 10
|
|
451
|
+
* @minItems 4
|
|
452
|
+
* @sparkRepeater true
|
|
453
|
+
*/
|
|
454
|
+
type CarouselChildren = CarouselCard[];
|
|
455
|
+
interface CarouselHeading extends Node {
|
|
456
|
+
type: "carousel-heading";
|
|
457
|
+
title: string;
|
|
458
|
+
standfirst?: string;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* @sparkGenerateStoryBlock true
|
|
462
|
+
*/
|
|
463
|
+
interface Carousel extends Parent {
|
|
464
|
+
type: "carousel";
|
|
465
|
+
heading?: CarouselHeading;
|
|
466
|
+
children: CarouselChildren;
|
|
467
|
+
}
|
|
437
468
|
namespace full {
|
|
438
469
|
type AssetFormat = "desktop" | "mobile" | "square" | "square-ftedit" | "standard" | "wide" | "standard-inline";
|
|
439
470
|
type LayoutWidth = "auto" | "in-line" | "inset-left" | "inset-right" | "full-bleed" | "full-grid" | "mid-grid" | "full-width";
|
|
@@ -531,7 +562,7 @@ export declare namespace ContentTree {
|
|
|
531
562
|
type: "blockquote";
|
|
532
563
|
children: (Paragraph | Phrasing)[];
|
|
533
564
|
}
|
|
534
|
-
type StoryBlock =
|
|
565
|
+
type StoryBlock = AcastPodcast | BigNumber | Carousel | ClipSet | CustomCodeComponent | Definition | Flourish | ImagePair | ImageSet | InfoBox | InfoPair | InNumbers | Layout | Pullquote | Recommended | RecommendedList | ScrollyBlock | Table | Timeline | Tweet | Video | VimeoVideo | YoutubeVideo;
|
|
535
566
|
interface Pullquote extends Node {
|
|
536
567
|
type: "pullquote";
|
|
537
568
|
text: string;
|
|
@@ -741,9 +772,10 @@ export declare namespace ContentTree {
|
|
|
741
772
|
type TableColumnSettings = {
|
|
742
773
|
hideOnMobile: boolean;
|
|
743
774
|
sortable: boolean;
|
|
744
|
-
sortType
|
|
775
|
+
sortType?: 'text' | 'number' | 'date' | 'currency' | 'percent';
|
|
745
776
|
};
|
|
746
777
|
type TableLayoutWidth = Extract<LayoutWidth, 'auto' | 'full-grid' | 'inset-left' | 'inset-right' | 'full-bleed'>;
|
|
778
|
+
type TableChildren = [TableCaption, TableBody, TableFooter?] | [TableBody, TableFooter?] | [TableCaption, TableHeader, TableBody, TableFooter?] | [TableHeader, TableBody, TableFooter?];
|
|
747
779
|
interface TableCaption extends Parent {
|
|
748
780
|
type: 'table-caption';
|
|
749
781
|
children: Phrasing[];
|
|
@@ -755,6 +787,10 @@ export declare namespace ContentTree {
|
|
|
755
787
|
rowSpan?: number;
|
|
756
788
|
children: Phrasing[];
|
|
757
789
|
}
|
|
790
|
+
interface TableHeader extends Parent {
|
|
791
|
+
type: 'table-header';
|
|
792
|
+
children: TableRow[];
|
|
793
|
+
}
|
|
758
794
|
interface TableRow extends Parent {
|
|
759
795
|
type: 'table-row';
|
|
760
796
|
children: TableCell[];
|
|
@@ -774,8 +810,8 @@ export declare namespace ContentTree {
|
|
|
774
810
|
layoutWidth: TableLayoutWidth;
|
|
775
811
|
collapseAfterHowManyRows?: number;
|
|
776
812
|
responsiveStyle: 'overflow' | 'flat' | 'scroll';
|
|
777
|
-
children: [TableCaption, TableBody, TableFooter] | [TableCaption, TableBody] | [TableBody, TableFooter] | [TableBody];
|
|
778
813
|
columnSettings: TableColumnSettings[];
|
|
814
|
+
children: TableChildren;
|
|
779
815
|
}
|
|
780
816
|
type CustomCodeComponentAttributes = {
|
|
781
817
|
[key: string]: string | boolean | undefined;
|
|
@@ -870,6 +906,32 @@ export declare namespace ContentTree {
|
|
|
870
906
|
title?: string;
|
|
871
907
|
children: [Card, Card];
|
|
872
908
|
}
|
|
909
|
+
interface CarouselCard extends Node {
|
|
910
|
+
type: "carousel-card";
|
|
911
|
+
image: ImageSet;
|
|
912
|
+
title?: string;
|
|
913
|
+
copy: Paragraph[];
|
|
914
|
+
additionalInfo?: string;
|
|
915
|
+
}
|
|
916
|
+
/**
|
|
917
|
+
* @maxItems 10
|
|
918
|
+
* @minItems 4
|
|
919
|
+
* @sparkRepeater true
|
|
920
|
+
*/
|
|
921
|
+
type CarouselChildren = CarouselCard[];
|
|
922
|
+
interface CarouselHeading extends Node {
|
|
923
|
+
type: "carousel-heading";
|
|
924
|
+
title: string;
|
|
925
|
+
standfirst?: string;
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* @sparkGenerateStoryBlock true
|
|
929
|
+
*/
|
|
930
|
+
interface Carousel extends Parent {
|
|
931
|
+
type: "carousel";
|
|
932
|
+
heading?: CarouselHeading;
|
|
933
|
+
children: CarouselChildren;
|
|
934
|
+
}
|
|
873
935
|
}
|
|
874
936
|
namespace transit {
|
|
875
937
|
type AssetFormat = "desktop" | "mobile" | "square" | "square-ftedit" | "standard" | "wide" | "standard-inline";
|
|
@@ -968,7 +1030,7 @@ export declare namespace ContentTree {
|
|
|
968
1030
|
type: "blockquote";
|
|
969
1031
|
children: (Paragraph | Phrasing)[];
|
|
970
1032
|
}
|
|
971
|
-
type StoryBlock =
|
|
1033
|
+
type StoryBlock = AcastPodcast | BigNumber | Carousel | ClipSet | CustomCodeComponent | Definition | Flourish | ImagePair | ImageSet | InfoBox | InfoPair | InNumbers | Layout | Pullquote | Recommended | RecommendedList | ScrollyBlock | Table | Timeline | Tweet | Video | VimeoVideo | YoutubeVideo;
|
|
972
1034
|
interface Pullquote extends Node {
|
|
973
1035
|
type: "pullquote";
|
|
974
1036
|
text: string;
|
|
@@ -1159,9 +1221,10 @@ export declare namespace ContentTree {
|
|
|
1159
1221
|
type TableColumnSettings = {
|
|
1160
1222
|
hideOnMobile: boolean;
|
|
1161
1223
|
sortable: boolean;
|
|
1162
|
-
sortType
|
|
1224
|
+
sortType?: 'text' | 'number' | 'date' | 'currency' | 'percent';
|
|
1163
1225
|
};
|
|
1164
1226
|
type TableLayoutWidth = Extract<LayoutWidth, 'auto' | 'full-grid' | 'inset-left' | 'inset-right' | 'full-bleed'>;
|
|
1227
|
+
type TableChildren = [TableCaption, TableBody, TableFooter?] | [TableBody, TableFooter?] | [TableCaption, TableHeader, TableBody, TableFooter?] | [TableHeader, TableBody, TableFooter?];
|
|
1165
1228
|
interface TableCaption extends Parent {
|
|
1166
1229
|
type: 'table-caption';
|
|
1167
1230
|
children: Phrasing[];
|
|
@@ -1173,6 +1236,10 @@ export declare namespace ContentTree {
|
|
|
1173
1236
|
rowSpan?: number;
|
|
1174
1237
|
children: Phrasing[];
|
|
1175
1238
|
}
|
|
1239
|
+
interface TableHeader extends Parent {
|
|
1240
|
+
type: 'table-header';
|
|
1241
|
+
children: TableRow[];
|
|
1242
|
+
}
|
|
1176
1243
|
interface TableRow extends Parent {
|
|
1177
1244
|
type: 'table-row';
|
|
1178
1245
|
children: TableCell[];
|
|
@@ -1192,8 +1259,8 @@ export declare namespace ContentTree {
|
|
|
1192
1259
|
layoutWidth: TableLayoutWidth;
|
|
1193
1260
|
collapseAfterHowManyRows?: number;
|
|
1194
1261
|
responsiveStyle: 'overflow' | 'flat' | 'scroll';
|
|
1195
|
-
children: [TableCaption, TableBody, TableFooter] | [TableCaption, TableBody] | [TableBody, TableFooter] | [TableBody];
|
|
1196
1262
|
columnSettings: TableColumnSettings[];
|
|
1263
|
+
children: TableChildren;
|
|
1197
1264
|
}
|
|
1198
1265
|
type CustomCodeComponentAttributes = {
|
|
1199
1266
|
[key: string]: string | boolean | undefined;
|
|
@@ -1280,6 +1347,32 @@ export declare namespace ContentTree {
|
|
|
1280
1347
|
title?: string;
|
|
1281
1348
|
children: [Card, Card];
|
|
1282
1349
|
}
|
|
1350
|
+
interface CarouselCard extends Node {
|
|
1351
|
+
type: "carousel-card";
|
|
1352
|
+
image: ImageSet;
|
|
1353
|
+
title?: string;
|
|
1354
|
+
copy: Paragraph[];
|
|
1355
|
+
additionalInfo?: string;
|
|
1356
|
+
}
|
|
1357
|
+
/**
|
|
1358
|
+
* @maxItems 10
|
|
1359
|
+
* @minItems 4
|
|
1360
|
+
* @sparkRepeater true
|
|
1361
|
+
*/
|
|
1362
|
+
type CarouselChildren = CarouselCard[];
|
|
1363
|
+
interface CarouselHeading extends Node {
|
|
1364
|
+
type: "carousel-heading";
|
|
1365
|
+
title: string;
|
|
1366
|
+
standfirst?: string;
|
|
1367
|
+
}
|
|
1368
|
+
/**
|
|
1369
|
+
* @sparkGenerateStoryBlock true
|
|
1370
|
+
*/
|
|
1371
|
+
interface Carousel extends Parent {
|
|
1372
|
+
type: "carousel";
|
|
1373
|
+
heading?: CarouselHeading;
|
|
1374
|
+
children: CarouselChildren;
|
|
1375
|
+
}
|
|
1283
1376
|
}
|
|
1284
1377
|
namespace loose {
|
|
1285
1378
|
type AssetFormat = "desktop" | "mobile" | "square" | "square-ftedit" | "standard" | "wide" | "standard-inline";
|
|
@@ -1378,7 +1471,7 @@ export declare namespace ContentTree {
|
|
|
1378
1471
|
type: "blockquote";
|
|
1379
1472
|
children: (Paragraph | Phrasing)[];
|
|
1380
1473
|
}
|
|
1381
|
-
type StoryBlock =
|
|
1474
|
+
type StoryBlock = AcastPodcast | BigNumber | Carousel | ClipSet | CustomCodeComponent | Definition | Flourish | ImagePair | ImageSet | InfoBox | InfoPair | InNumbers | Layout | Pullquote | Recommended | RecommendedList | ScrollyBlock | Table | Timeline | Tweet | Video | VimeoVideo | YoutubeVideo;
|
|
1382
1475
|
interface Pullquote extends Node {
|
|
1383
1476
|
type: "pullquote";
|
|
1384
1477
|
text: string;
|
|
@@ -1588,9 +1681,10 @@ export declare namespace ContentTree {
|
|
|
1588
1681
|
type TableColumnSettings = {
|
|
1589
1682
|
hideOnMobile: boolean;
|
|
1590
1683
|
sortable: boolean;
|
|
1591
|
-
sortType
|
|
1684
|
+
sortType?: 'text' | 'number' | 'date' | 'currency' | 'percent';
|
|
1592
1685
|
};
|
|
1593
1686
|
type TableLayoutWidth = Extract<LayoutWidth, 'auto' | 'full-grid' | 'inset-left' | 'inset-right' | 'full-bleed'>;
|
|
1687
|
+
type TableChildren = [TableCaption, TableBody, TableFooter?] | [TableBody, TableFooter?] | [TableCaption, TableHeader, TableBody, TableFooter?] | [TableHeader, TableBody, TableFooter?];
|
|
1594
1688
|
interface TableCaption extends Parent {
|
|
1595
1689
|
type: 'table-caption';
|
|
1596
1690
|
children: Phrasing[];
|
|
@@ -1602,6 +1696,10 @@ export declare namespace ContentTree {
|
|
|
1602
1696
|
rowSpan?: number;
|
|
1603
1697
|
children: Phrasing[];
|
|
1604
1698
|
}
|
|
1699
|
+
interface TableHeader extends Parent {
|
|
1700
|
+
type: 'table-header';
|
|
1701
|
+
children: TableRow[];
|
|
1702
|
+
}
|
|
1605
1703
|
interface TableRow extends Parent {
|
|
1606
1704
|
type: 'table-row';
|
|
1607
1705
|
children: TableCell[];
|
|
@@ -1621,8 +1719,8 @@ export declare namespace ContentTree {
|
|
|
1621
1719
|
layoutWidth: TableLayoutWidth;
|
|
1622
1720
|
collapseAfterHowManyRows?: number;
|
|
1623
1721
|
responsiveStyle: 'overflow' | 'flat' | 'scroll';
|
|
1624
|
-
children: [TableCaption, TableBody, TableFooter] | [TableCaption, TableBody] | [TableBody, TableFooter] | [TableBody];
|
|
1625
1722
|
columnSettings: TableColumnSettings[];
|
|
1723
|
+
children: TableChildren;
|
|
1626
1724
|
}
|
|
1627
1725
|
type CustomCodeComponentAttributes = {
|
|
1628
1726
|
[key: string]: string | boolean | undefined;
|
|
@@ -1717,5 +1815,31 @@ export declare namespace ContentTree {
|
|
|
1717
1815
|
title?: string;
|
|
1718
1816
|
children: [Card, Card];
|
|
1719
1817
|
}
|
|
1818
|
+
interface CarouselCard extends Node {
|
|
1819
|
+
type: "carousel-card";
|
|
1820
|
+
image: ImageSet;
|
|
1821
|
+
title?: string;
|
|
1822
|
+
copy: Paragraph[];
|
|
1823
|
+
additionalInfo?: string;
|
|
1824
|
+
}
|
|
1825
|
+
/**
|
|
1826
|
+
* @maxItems 10
|
|
1827
|
+
* @minItems 4
|
|
1828
|
+
* @sparkRepeater true
|
|
1829
|
+
*/
|
|
1830
|
+
type CarouselChildren = CarouselCard[];
|
|
1831
|
+
interface CarouselHeading extends Node {
|
|
1832
|
+
type: "carousel-heading";
|
|
1833
|
+
title: string;
|
|
1834
|
+
standfirst?: string;
|
|
1835
|
+
}
|
|
1836
|
+
/**
|
|
1837
|
+
* @sparkGenerateStoryBlock true
|
|
1838
|
+
*/
|
|
1839
|
+
interface Carousel extends Parent {
|
|
1840
|
+
type: "carousel";
|
|
1841
|
+
heading?: CarouselHeading;
|
|
1842
|
+
children: CarouselChildren;
|
|
1843
|
+
}
|
|
1720
1844
|
}
|
|
1721
1845
|
}
|