@reuters-graphics/graphics-components 2.0.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. package/dist/actions/cssVariables/cssVariables.mdx +4 -5
  2. package/dist/actions/cssVariables/index.d.ts +2 -2
  3. package/dist/actions/cssVariables/index.js +14 -16
  4. package/dist/actions/resizeObserver/index.d.ts +1 -1
  5. package/dist/actions/resizeObserver/index.js +18 -20
  6. package/dist/actions/resizeObserver/resizeObserver.mdx +1 -1
  7. package/dist/app.html +11 -0
  8. package/dist/components/@types/global.d.ts +9 -7
  9. package/dist/components/AdSlot/AdScripts.svelte +15 -12
  10. package/dist/components/AdSlot/AdScripts.svelte.d.ts +16 -14
  11. package/dist/components/AdSlot/AdSlot.svelte +53 -31
  12. package/dist/components/AdSlot/AdSlot.svelte.d.ts +10 -21
  13. package/dist/components/AdSlot/{stories/docs/inline.md → InlineAd.mdx} +14 -4
  14. package/dist/components/AdSlot/InlineAd.stories.svelte +11 -14
  15. package/dist/components/AdSlot/InlineAd.stories.svelte.d.ts +17 -21
  16. package/dist/components/AdSlot/InlineAd.svelte +18 -7
  17. package/dist/components/AdSlot/InlineAd.svelte.d.ts +12 -20
  18. package/dist/components/AdSlot/{stories/docs/leaderboard.md → LeaderboardAd.mdx} +10 -0
  19. package/dist/components/AdSlot/LeaderboardAd.stories.svelte +13 -16
  20. package/dist/components/AdSlot/LeaderboardAd.stories.svelte.d.ts +17 -21
  21. package/dist/components/AdSlot/LeaderboardAd.svelte +45 -29
  22. package/dist/components/AdSlot/LeaderboardAd.svelte.d.ts +10 -19
  23. package/dist/components/AdSlot/OneTrust.svelte +39 -34
  24. package/dist/components/AdSlot/OneTrust.svelte.d.ts +16 -14
  25. package/dist/components/AdSlot/ResponsiveAd.svelte +69 -45
  26. package/dist/components/AdSlot/ResponsiveAd.svelte.d.ts +6 -18
  27. package/dist/components/AdSlot/{stories/docs/sponsorship.md → SponsorshipAd.mdx} +11 -1
  28. package/dist/components/AdSlot/SponsorshipAd.stories.svelte +11 -15
  29. package/dist/components/AdSlot/SponsorshipAd.stories.svelte.d.ts +17 -21
  30. package/dist/components/AdSlot/SponsorshipAd.svelte +21 -7
  31. package/dist/components/AdSlot/SponsorshipAd.svelte.d.ts +14 -22
  32. package/dist/components/Analytics/Analytics.mdx +73 -0
  33. package/dist/components/Analytics/Analytics.stories.svelte +11 -31
  34. package/dist/components/Analytics/Analytics.stories.svelte.d.ts +17 -21
  35. package/dist/components/Analytics/Analytics.svelte +27 -11
  36. package/dist/components/Analytics/Analytics.svelte.d.ts +14 -23
  37. package/dist/components/Article/Article.mdx +117 -0
  38. package/dist/components/Article/Article.stories.svelte +39 -40
  39. package/dist/components/Article/Article.stories.svelte.d.ts +17 -21
  40. package/dist/components/Article/Article.svelte +50 -20
  41. package/dist/components/Article/Article.svelte.d.ts +26 -34
  42. package/dist/components/BeforeAfter/BeforeAfter.mdx +111 -0
  43. package/dist/components/BeforeAfter/BeforeAfter.stories.svelte +38 -80
  44. package/dist/components/BeforeAfter/BeforeAfter.stories.svelte.d.ts +17 -30
  45. package/dist/components/BeforeAfter/BeforeAfter.svelte +240 -141
  46. package/dist/components/BeforeAfter/BeforeAfter.svelte.d.ts +60 -62
  47. package/dist/components/Block/Block.mdx +99 -0
  48. package/dist/components/Block/Block.stories.svelte +82 -72
  49. package/dist/components/Block/Block.stories.svelte.d.ts +17 -30
  50. package/dist/components/Block/Block.svelte +33 -11
  51. package/dist/components/Block/Block.svelte.d.ts +20 -25
  52. package/dist/components/BodyText/BodyText.mdx +115 -0
  53. package/dist/components/BodyText/BodyText.stories.svelte +28 -194
  54. package/dist/components/BodyText/BodyText.stories.svelte.d.ts +17 -21
  55. package/dist/components/BodyText/BodyText.svelte +14 -7
  56. package/dist/components/BodyText/BodyText.svelte.d.ts +11 -24
  57. package/dist/components/Byline/Byline.mdx +110 -0
  58. package/dist/components/Byline/Byline.stories.svelte +50 -26
  59. package/dist/components/Byline/Byline.stories.svelte.d.ts +17 -27
  60. package/dist/components/Byline/Byline.svelte +109 -43
  61. package/dist/components/Byline/Byline.svelte.d.ts +48 -48
  62. package/dist/components/DatawrapperChart/{stories/docs/component.md → DatawrapperChart.mdx} +20 -0
  63. package/dist/components/DatawrapperChart/DatawrapperChart.stories.svelte +31 -39
  64. package/dist/components/DatawrapperChart/DatawrapperChart.stories.svelte.d.ts +17 -27
  65. package/dist/components/DatawrapperChart/DatawrapperChart.svelte +94 -40
  66. package/dist/components/DatawrapperChart/DatawrapperChart.svelte.d.ts +42 -53
  67. package/dist/components/DocumentCloud/DocumentCloud.mdx +26 -0
  68. package/dist/components/DocumentCloud/DocumentCloud.stories.svelte +16 -25
  69. package/dist/components/DocumentCloud/DocumentCloud.stories.svelte.d.ts +17 -27
  70. package/dist/components/DocumentCloud/DocumentCloud.svelte +31 -10
  71. package/dist/components/DocumentCloud/DocumentCloud.svelte.d.ts +21 -30
  72. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.mdx +19 -0
  73. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.stories.svelte +11 -18
  74. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.stories.svelte.d.ts +17 -21
  75. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte +9 -4
  76. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte.d.ts +5 -17
  77. package/dist/components/EndNotes/EndNotes.mdx +67 -0
  78. package/dist/components/EndNotes/EndNotes.stories.svelte +10 -15
  79. package/dist/components/EndNotes/EndNotes.stories.svelte.d.ts +17 -21
  80. package/dist/components/EndNotes/EndNotes.svelte +30 -14
  81. package/dist/components/EndNotes/EndNotes.svelte.d.ts +19 -31
  82. package/dist/components/FeaturePhoto/FeaturePhoto.mdx +72 -0
  83. package/dist/components/FeaturePhoto/FeaturePhoto.stories.svelte +24 -49
  84. package/dist/components/FeaturePhoto/FeaturePhoto.stories.svelte.d.ts +17 -31
  85. package/dist/components/FeaturePhoto/FeaturePhoto.svelte +108 -43
  86. package/dist/components/FeaturePhoto/FeaturePhoto.svelte.d.ts +57 -58
  87. package/dist/components/Framer/Framer.mdx +19 -0
  88. package/dist/components/Framer/Framer.stories.svelte +11 -18
  89. package/dist/components/Framer/Framer.stories.svelte.d.ts +17 -21
  90. package/dist/components/Framer/Framer.svelte +97 -69
  91. package/dist/components/Framer/Framer.svelte.d.ts +8 -30
  92. package/dist/components/Framer/Resizer/index.svelte +54 -41
  93. package/dist/components/Framer/Resizer/index.svelte.d.ts +7 -28
  94. package/dist/components/Framer/Typeahead/Search.svelte +101 -0
  95. package/dist/components/Framer/Typeahead/Search.svelte.d.ts +18 -0
  96. package/dist/components/Framer/Typeahead/fuzzy.d.ts +22 -9
  97. package/dist/components/Framer/Typeahead/fuzzy.js +70 -129
  98. package/dist/components/Framer/Typeahead/index.svelte +133 -121
  99. package/dist/components/Framer/Typeahead/index.svelte.d.ts +31 -138
  100. package/dist/components/Framer/stores.d.ts +1 -1
  101. package/dist/components/Framer/stores.js +0 -1
  102. package/dist/components/Framer/stories/docs/component.md +1 -1
  103. package/dist/components/Framer/uniqNames.d.ts +1 -1
  104. package/dist/components/Framer/uniqNames.js +45 -49
  105. package/dist/components/GraphicBlock/GraphicBlock.mdx +215 -0
  106. package/dist/components/GraphicBlock/GraphicBlock.stories.svelte +80 -60
  107. package/dist/components/GraphicBlock/GraphicBlock.stories.svelte.d.ts +17 -31
  108. package/dist/components/GraphicBlock/GraphicBlock.svelte +130 -69
  109. package/dist/components/GraphicBlock/GraphicBlock.svelte.d.ts +50 -65
  110. package/dist/components/GraphicBlock/components/AriaHidden.svelte +22 -0
  111. package/dist/components/GraphicBlock/components/AriaHidden.svelte.d.ts +12 -0
  112. package/dist/components/GraphicBlock/components/TextBlock.svelte +23 -0
  113. package/dist/components/GraphicBlock/components/TextBlock.svelte.d.ts +11 -0
  114. package/dist/components/GraphicBlock/{stories → demo}/ai2svelte/ai-chart.svelte +7 -11
  115. package/dist/components/GraphicBlock/demo/ai2svelte/ai-chart.svelte.d.ts +3 -0
  116. package/dist/components/Headline/Headline.mdx +150 -0
  117. package/dist/components/Headline/Headline.stories.svelte +78 -92
  118. package/dist/components/Headline/Headline.stories.svelte.d.ts +17 -31
  119. package/dist/components/Headline/Headline.svelte +108 -49
  120. package/dist/components/Headline/Headline.svelte.d.ts +42 -53
  121. package/dist/components/Headline/{stories → demo}/graphic.svelte +8 -9
  122. package/dist/components/Headline/demo/graphic.svelte.d.ts +6 -0
  123. package/dist/components/HeroHeadline/HeroHeadline.mdx +329 -0
  124. package/dist/components/HeroHeadline/HeroHeadline.stories.svelte +264 -0
  125. package/dist/components/HeroHeadline/HeroHeadline.stories.svelte.d.ts +19 -0
  126. package/dist/components/HeroHeadline/HeroHeadline.svelte +277 -0
  127. package/dist/components/HeroHeadline/HeroHeadline.svelte.d.ts +84 -0
  128. package/dist/components/HeroHeadline/{stories → demo}/graphics/crash.svelte +8 -15
  129. package/dist/components/HeroHeadline/demo/graphics/crash.svelte.d.ts +6 -0
  130. package/dist/components/HeroHeadline/{stories → demo}/graphics/quakemap.svelte +7 -7
  131. package/dist/components/HeroHeadline/demo/graphics/quakemap.svelte.d.ts +6 -0
  132. package/dist/components/InfoBox/InfoBox.mdx +122 -0
  133. package/dist/components/InfoBox/InfoBox.stories.svelte +86 -38
  134. package/dist/components/InfoBox/InfoBox.stories.svelte.d.ts +17 -31
  135. package/dist/components/InfoBox/InfoBox.svelte +69 -21
  136. package/dist/components/InfoBox/InfoBox.svelte.d.ts +41 -45
  137. package/dist/components/PaddingReset/PaddingReset.mdx +53 -0
  138. package/dist/components/PaddingReset/PaddingReset.stories.svelte +33 -33
  139. package/dist/components/PaddingReset/PaddingReset.stories.svelte.d.ts +17 -21
  140. package/dist/components/PaddingReset/PaddingReset.svelte +17 -7
  141. package/dist/components/PaddingReset/PaddingReset.svelte.d.ts +14 -29
  142. package/dist/components/PaddingReset/shark.jpg +0 -0
  143. package/dist/components/PhotoPack/PhotoPack.mdx +125 -0
  144. package/dist/components/PhotoPack/PhotoPack.stories.svelte +69 -108
  145. package/dist/components/PhotoPack/PhotoPack.stories.svelte.d.ts +17 -31
  146. package/dist/components/PhotoPack/PhotoPack.svelte +85 -43
  147. package/dist/components/PhotoPack/PhotoPack.svelte.d.ts +32 -52
  148. package/dist/components/PhotoPack/utils.d.ts +2 -0
  149. package/dist/components/PhotoPack/utils.js +17 -0
  150. package/dist/components/PymChild/PymChild.mdx +33 -0
  151. package/dist/components/PymChild/PymChild.stories.svelte +8 -17
  152. package/dist/components/PymChild/PymChild.stories.svelte.d.ts +17 -21
  153. package/dist/components/PymChild/PymChild.svelte +16 -9
  154. package/dist/components/PymChild/PymChild.svelte.d.ts +7 -18
  155. package/dist/components/PymChild/state.svelte.d.ts +6 -0
  156. package/dist/components/PymChild/state.svelte.js +1 -0
  157. package/dist/components/ReferralBlock/ReferralBlock.mdx +44 -0
  158. package/dist/components/ReferralBlock/ReferralBlock.stories.svelte +35 -45
  159. package/dist/components/ReferralBlock/ReferralBlock.stories.svelte.d.ts +17 -35
  160. package/dist/components/ReferralBlock/ReferralBlock.svelte +113 -66
  161. package/dist/components/ReferralBlock/ReferralBlock.svelte.d.ts +36 -41
  162. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.mdx +21 -0
  163. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.stories.svelte +12 -17
  164. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.stories.svelte.d.ts +17 -21
  165. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.svelte +15 -3
  166. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.svelte.d.ts +11 -20
  167. package/dist/components/ReutersLogo/ReutersLogo.mdx +19 -0
  168. package/dist/components/ReutersLogo/ReutersLogo.stories.svelte +12 -20
  169. package/dist/components/ReutersLogo/ReutersLogo.stories.svelte.d.ts +17 -29
  170. package/dist/components/ReutersLogo/ReutersLogo.svelte +30 -19
  171. package/dist/components/ReutersLogo/ReutersLogo.svelte.d.ts +11 -20
  172. package/dist/components/SEO/SEO.mdx +80 -0
  173. package/dist/components/SEO/SEO.stories.svelte +18 -36
  174. package/dist/components/SEO/SEO.stories.svelte.d.ts +16 -22
  175. package/dist/components/SEO/SEO.svelte +151 -91
  176. package/dist/components/SEO/SEO.svelte.d.ts +53 -71
  177. package/dist/components/Scroller/Background.svelte +14 -10
  178. package/dist/components/Scroller/Background.svelte.d.ts +8 -20
  179. package/dist/components/Scroller/Embedded/Background.svelte +13 -9
  180. package/dist/components/Scroller/Embedded/Background.svelte.d.ts +7 -19
  181. package/dist/components/Scroller/Embedded/Foreground.svelte +16 -11
  182. package/dist/components/Scroller/Embedded/Foreground.svelte.d.ts +6 -18
  183. package/dist/components/Scroller/Embedded/index.svelte +18 -5
  184. package/dist/components/Scroller/Embedded/index.svelte.d.ts +8 -19
  185. package/dist/components/Scroller/Foreground.svelte +14 -9
  186. package/dist/components/Scroller/Foreground.svelte.d.ts +5 -17
  187. package/dist/components/Scroller/Scroller.mdx +279 -0
  188. package/dist/components/Scroller/Scroller.stories.svelte +107 -100
  189. package/dist/components/Scroller/Scroller.stories.svelte.d.ts +17 -38
  190. package/dist/components/Scroller/Scroller.svelte +121 -44
  191. package/dist/components/Scroller/Scroller.svelte.d.ts +66 -83
  192. package/dist/components/Scroller/ScrollerBase/index.svelte +267 -0
  193. package/dist/components/Scroller/ScrollerBase/index.svelte.d.ts +32 -0
  194. package/dist/components/Scroller/demo/components/ai2svelte/ai-foreground.svelte +118 -0
  195. package/dist/components/Scroller/demo/components/ai2svelte/ai-foreground.svelte.d.ts +6 -0
  196. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-1.svelte +4 -14
  197. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-1.svelte.d.ts +3 -0
  198. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-2.svelte +3 -3
  199. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-2.svelte.d.ts +3 -0
  200. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-3.svelte +3 -3
  201. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-3.svelte.d.ts +3 -0
  202. package/dist/components/Scroller/demo/components/ai2svelte/images/Body-issues-key-xs.png +0 -0
  203. package/dist/components/Scroller/demo/components/basic/InteractiveForeground.svelte +17 -0
  204. package/dist/components/Scroller/demo/components/basic/InteractiveForeground.svelte.d.ts +6 -0
  205. package/dist/components/Scroller/demo/components/basic/Step.svelte +16 -0
  206. package/dist/components/Scroller/demo/components/basic/Step.svelte.d.ts +6 -0
  207. package/dist/components/SearchInput/SearchInput.mdx +29 -0
  208. package/dist/components/SearchInput/SearchInput.stories.svelte +20 -15
  209. package/dist/components/SearchInput/SearchInput.stories.svelte.d.ts +17 -21
  210. package/dist/components/SearchInput/SearchInput.svelte +31 -20
  211. package/dist/components/SearchInput/SearchInput.svelte.d.ts +9 -23
  212. package/dist/components/SearchInput/components/MagnifyingGlass.svelte.d.ts +26 -0
  213. package/dist/components/SearchInput/components/X.svelte.d.ts +26 -0
  214. package/dist/components/SimpleTimeline/SimpleTimeline.mdx +119 -0
  215. package/dist/components/SimpleTimeline/SimpleTimeline.stories.svelte +28 -36
  216. package/dist/components/SimpleTimeline/SimpleTimeline.stories.svelte.d.ts +17 -29
  217. package/dist/components/SimpleTimeline/SimpleTimeline.svelte +51 -15
  218. package/dist/components/SimpleTimeline/SimpleTimeline.svelte.d.ts +34 -44
  219. package/dist/components/SiteFooter/CompanyLinks.svelte +34 -6
  220. package/dist/components/SiteFooter/CompanyLinks.svelte.d.ts +11 -24
  221. package/dist/components/SiteFooter/LegalLinks.svelte +42 -9
  222. package/dist/components/SiteFooter/LegalLinks.svelte.d.ts +18 -24
  223. package/dist/components/SiteFooter/QuickLinks.svelte +60 -15
  224. package/dist/components/SiteFooter/QuickLinks.svelte.d.ts +27 -24
  225. package/dist/components/SiteFooter/SiteFooter.mdx +45 -0
  226. package/dist/components/SiteFooter/SiteFooter.stories.svelte +11 -31
  227. package/dist/components/SiteFooter/SiteFooter.stories.svelte.d.ts +17 -21
  228. package/dist/components/SiteFooter/SiteFooter.svelte +45 -31
  229. package/dist/components/SiteFooter/SiteFooter.svelte.d.ts +9 -20
  230. package/dist/components/SiteFooter/data.json +2 -2
  231. package/dist/components/SiteFooter/svgs/Facebook.svelte +6 -2
  232. package/dist/components/SiteFooter/svgs/Facebook.svelte.d.ts +5 -24
  233. package/dist/components/SiteFooter/svgs/Graphics.svelte.d.ts +22 -21
  234. package/dist/components/SiteFooter/svgs/Instagram.svelte +6 -2
  235. package/dist/components/SiteFooter/svgs/Instagram.svelte.d.ts +5 -24
  236. package/dist/components/SiteFooter/svgs/LinkedIn.svelte +6 -2
  237. package/dist/components/SiteFooter/svgs/LinkedIn.svelte.d.ts +5 -24
  238. package/dist/components/SiteFooter/svgs/Pictures.svelte.d.ts +22 -21
  239. package/dist/components/SiteFooter/svgs/Twitter.svelte +6 -2
  240. package/dist/components/SiteFooter/svgs/Twitter.svelte.d.ts +5 -24
  241. package/dist/components/SiteFooter/svgs/Videos.svelte.d.ts +22 -21
  242. package/dist/components/SiteFooter/svgs/YouTube.svelte +6 -2
  243. package/dist/components/SiteFooter/svgs/YouTube.svelte.d.ts +5 -24
  244. package/dist/components/SiteHeader/MobileMenu/index.svelte +45 -12
  245. package/dist/components/SiteHeader/MobileMenu/index.svelte.d.ts +7 -28
  246. package/dist/components/SiteHeader/NavBar/DownArrow.svelte +7 -3
  247. package/dist/components/SiteHeader/NavBar/DownArrow.svelte.d.ts +5 -24
  248. package/dist/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte +11 -7
  249. package/dist/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte.d.ts +5 -25
  250. package/dist/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte +13 -9
  251. package/dist/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte.d.ts +5 -26
  252. package/dist/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte +1 -0
  253. package/dist/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte.d.ts +22 -21
  254. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte +10 -20
  255. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte.d.ts +4 -24
  256. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.d.ts +2 -1
  257. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js +36 -45
  258. package/dist/components/SiteHeader/NavBar/NavDropdown/index.svelte +65 -22
  259. package/dist/components/SiteHeader/NavBar/NavDropdown/index.svelte.d.ts +7 -28
  260. package/dist/components/SiteHeader/NavBar/index.svelte +46 -40
  261. package/dist/components/SiteHeader/NavBar/index.svelte.d.ts +5 -25
  262. package/dist/components/SiteHeader/NavBar/utils/index.d.ts +1 -1
  263. package/dist/components/SiteHeader/NavBar/utils/index.js +1 -2
  264. package/dist/components/SiteHeader/SiteHeader.mdx +33 -0
  265. package/dist/components/SiteHeader/SiteHeader.stories.svelte +27 -26
  266. package/dist/components/SiteHeader/SiteHeader.stories.svelte.d.ts +17 -28
  267. package/dist/components/SiteHeader/SiteHeader.svelte +64 -39
  268. package/dist/components/SiteHeader/SiteHeader.svelte.d.ts +3 -16
  269. package/dist/components/SiteHeader/scss/_grids.scss +49 -17
  270. package/dist/components/SiteHeader/svgs/Close.svelte.d.ts +22 -21
  271. package/dist/components/SiteHeader/svgs/Menu.svelte +6 -2
  272. package/dist/components/SiteHeader/svgs/Menu.svelte.d.ts +5 -24
  273. package/dist/components/SiteHeadline/SiteHeadline.mdx +66 -0
  274. package/dist/components/SiteHeadline/SiteHeadline.stories.svelte +17 -35
  275. package/dist/components/SiteHeadline/SiteHeadline.stories.svelte.d.ts +17 -36
  276. package/dist/components/SiteHeadline/SiteHeadline.svelte +59 -26
  277. package/dist/components/SiteHeadline/SiteHeadline.svelte.d.ts +31 -54
  278. package/dist/components/Spinner/Spinner.mdx +25 -0
  279. package/dist/components/Spinner/Spinner.stories.svelte +17 -25
  280. package/dist/components/Spinner/Spinner.stories.svelte.d.ts +17 -58
  281. package/dist/components/Spinner/Spinner.svelte +30 -6
  282. package/dist/components/Spinner/Spinner.svelte.d.ts +23 -30
  283. package/dist/components/Table/Table.mdx +177 -0
  284. package/dist/components/Table/Table.stories.svelte +56 -79
  285. package/dist/components/Table/Table.stories.svelte.d.ts +17 -27
  286. package/dist/components/Table/Table.svelte +201 -134
  287. package/dist/components/Table/Table.svelte.d.ts +50 -94
  288. package/dist/components/Table/components/LeftArrow.svelte.d.ts +26 -0
  289. package/dist/components/Table/{Pagination.svelte → components/Pagination.svelte} +48 -21
  290. package/dist/components/Table/components/Pagination.svelte.d.ts +21 -0
  291. package/dist/components/Table/components/RightArrow.svelte.d.ts +26 -0
  292. package/dist/components/Table/{Select.svelte → components/Select.svelte} +25 -13
  293. package/dist/components/Table/components/Select.svelte.d.ts +16 -0
  294. package/dist/components/Table/{SortArrow.svelte → components/SortArrow.svelte} +19 -4
  295. package/dist/components/Table/components/SortArrow.svelte.d.ts +16 -0
  296. package/dist/components/Table/utils.d.ts +39 -3
  297. package/dist/components/Table/utils.js +80 -26
  298. package/dist/components/Theme/@types/component.d.ts +5 -6
  299. package/dist/components/Theme/Theme.mdx +164 -0
  300. package/dist/components/Theme/Theme.stories.svelte +55 -57
  301. package/dist/components/Theme/Theme.stories.svelte.d.ts +17 -30
  302. package/dist/components/Theme/Theme.svelte +45 -11
  303. package/dist/components/Theme/Theme.svelte.d.ts +19 -28
  304. package/dist/components/Theme/demo/ThemedPage.svelte +36 -0
  305. package/dist/components/Theme/demo/ThemedPage.svelte.d.ts +26 -0
  306. package/dist/components/Theme/themes/common.d.ts +26 -1
  307. package/dist/components/Theme/themes/dark.d.ts +12 -1
  308. package/dist/components/Theme/themes/light.d.ts +12 -1
  309. package/dist/components/Theme/utils/flatten.d.ts +1 -1
  310. package/dist/components/Theme/utils/flatten.js +27 -33
  311. package/dist/components/Theme/utils/merge.d.ts +2 -1
  312. package/dist/components/Theme/utils/merge.js +16 -15
  313. package/dist/components/ToolsHeader/ToolsHeader.mdx +23 -0
  314. package/dist/components/ToolsHeader/ToolsHeader.stories.svelte +10 -16
  315. package/dist/components/ToolsHeader/ToolsHeader.stories.svelte.d.ts +17 -21
  316. package/dist/components/ToolsHeader/ToolsHeader.svelte +57 -16
  317. package/dist/components/ToolsHeader/ToolsHeader.svelte.d.ts +34 -38
  318. package/dist/components/Video/Video.mdx +155 -0
  319. package/dist/components/Video/Video.stories.svelte +72 -56
  320. package/dist/components/Video/Video.stories.svelte.d.ts +17 -21
  321. package/dist/components/Video/Video.svelte +277 -192
  322. package/dist/components/Video/Video.svelte.d.ts +53 -77
  323. package/dist/components/Video/types.d.ts +1 -0
  324. package/dist/components/Video/types.js +1 -0
  325. package/dist/components/Video/utils.d.ts +3 -0
  326. package/dist/components/Video/utils.js +13 -0
  327. package/dist/components/Visible/Visible.mdx +33 -0
  328. package/dist/components/Visible/Visible.stories.svelte +18 -22
  329. package/dist/components/Visible/Visible.stories.svelte.d.ts +17 -21
  330. package/dist/components/Visible/Visible.svelte +74 -37
  331. package/dist/components/Visible/Visible.svelte.d.ts +23 -31
  332. package/dist/docs/contributing/component-guidelines.mdx +19 -48
  333. package/dist/docs/contributing/quickstart.mdx +2 -12
  334. package/dist/docs/contributing/writing-component-stories.mdx +5 -6
  335. package/dist/docs/docs-components/ThemeBuilder/Customiser/Value.jsx +2 -1
  336. package/dist/docs/docs-components/ThemeBuilder/ThemeBuilder.jsx +1 -1
  337. package/dist/docs/guides/archieml.mdx +18 -18
  338. package/dist/docs/guides/graphics-kit.mdx +5 -5
  339. package/dist/docs/guides/svelte-components.mdx +9 -9
  340. package/dist/docs/intro.mdx +2 -2
  341. package/dist/docs/styles/intro.mdx +1 -1
  342. package/dist/docs/theming/css-variables.mdx +7 -7
  343. package/dist/docs/utils/css-to-js/index.d.ts +2 -0
  344. package/dist/docs/utils/css-to-js/index.js +388 -0
  345. package/dist/docs/utils/parseCss.d.ts +3 -3
  346. package/dist/docs/utils/parseCss.js +37 -43
  347. package/dist/index.d.ts +43 -45
  348. package/dist/index.js +5 -12
  349. package/dist/journalize.d.ts +19 -0
  350. package/dist/scss/tokens/text/mixins/_font-family.scss +2 -1
  351. package/dist/utils/index.d.ts +6 -0
  352. package/dist/utils/index.js +12 -0
  353. package/package.json +59 -77
  354. package/dist/components/Analytics/stories/docs/component.md +0 -11
  355. package/dist/components/Analytics/stories/docs/environments.md +0 -17
  356. package/dist/components/Analytics/stories/docs/multipage.md +0 -31
  357. package/dist/components/Article/stories/docs/component.md +0 -13
  358. package/dist/components/Article/stories/docs/customWellWidths.md +0 -87
  359. package/dist/components/BeforeAfter/stories/docs/ariaDescriptions.md +0 -35
  360. package/dist/components/BeforeAfter/stories/docs/component.md +0 -15
  361. package/dist/components/BeforeAfter/stories/docs/withOverlays.md +0 -33
  362. package/dist/components/Block/stories/docs/component.md +0 -15
  363. package/dist/components/Block/stories/docs/customLayouts.md +0 -13
  364. package/dist/components/Block/stories/docs/snapWidths.md +0 -50
  365. package/dist/components/BodyText/stories/docs/component.md +0 -46
  366. package/dist/components/Byline/stories/docs/component.md +0 -19
  367. package/dist/components/DatawrapperChart/stories/docs/withChatter.md +0 -5
  368. package/dist/components/DocumentCloud/stories/docs/component.md +0 -17
  369. package/dist/components/EmbedPreviewerLink/stories/docs/component.md +0 -11
  370. package/dist/components/EndNotes/stories/docs/component.md +0 -24
  371. package/dist/components/FeaturePhoto/stories/docs/archieML.md +0 -37
  372. package/dist/components/FeaturePhoto/stories/docs/component.md +0 -16
  373. package/dist/components/FeaturePhoto/stories/docs/missingAltText.md +0 -1
  374. package/dist/components/GraphicBlock/AriaHidden.svelte +0 -10
  375. package/dist/components/GraphicBlock/AriaHidden.svelte.d.ts +0 -22
  376. package/dist/components/GraphicBlock/TextBlock.svelte +0 -11
  377. package/dist/components/GraphicBlock/TextBlock.svelte.d.ts +0 -21
  378. package/dist/components/GraphicBlock/stories/ai2svelte/ai-chart.svelte.d.ts +0 -25
  379. package/dist/components/GraphicBlock/stories/docs/ai2svelte.md +0 -19
  380. package/dist/components/GraphicBlock/stories/docs/archieML.md +0 -40
  381. package/dist/components/GraphicBlock/stories/docs/aria.md +0 -56
  382. package/dist/components/GraphicBlock/stories/docs/component.md +0 -20
  383. package/dist/components/GraphicBlock/stories/docs/customText.md +0 -14
  384. package/dist/components/Headline/stories/docs/component.md +0 -13
  385. package/dist/components/Headline/stories/docs/customHed.md +0 -31
  386. package/dist/components/Headline/stories/docs/withByline.md +0 -13
  387. package/dist/components/Headline/stories/docs/withCrownGraphic.md +0 -24
  388. package/dist/components/Headline/stories/docs/withCrownImage.md +0 -21
  389. package/dist/components/Headline/stories/docs/withDek.md +0 -11
  390. package/dist/components/Headline/stories/graphic.svelte.d.ts +0 -25
  391. package/dist/components/HeroHeadline/Hero.stories.svelte +0 -322
  392. package/dist/components/HeroHeadline/Hero.stories.svelte.d.ts +0 -42
  393. package/dist/components/HeroHeadline/Hero.svelte +0 -193
  394. package/dist/components/HeroHeadline/Hero.svelte.d.ts +0 -75
  395. package/dist/components/HeroHeadline/stories/docs/backgroundGraphic.md +0 -84
  396. package/dist/components/HeroHeadline/stories/docs/backgroundVideo.md +0 -51
  397. package/dist/components/HeroHeadline/stories/docs/component.md +0 -20
  398. package/dist/components/HeroHeadline/stories/docs/customHed.md +0 -43
  399. package/dist/components/HeroHeadline/stories/docs/inlineGraphic.md +0 -38
  400. package/dist/components/HeroHeadline/stories/docs/inlinePhoto.md +0 -34
  401. package/dist/components/HeroHeadline/stories/docs/inlineVideo.md +0 -34
  402. package/dist/components/HeroHeadline/stories/docs/transparentHeader.md +0 -17
  403. package/dist/components/HeroHeadline/stories/graphics/crash.svelte.d.ts +0 -25
  404. package/dist/components/HeroHeadline/stories/graphics/quakemap.svelte.d.ts +0 -25
  405. package/dist/components/InfoBox/stories/docs/component.md +0 -17
  406. package/dist/components/Markdown/Markdown.stories.svelte +0 -28
  407. package/dist/components/Markdown/Markdown.stories.svelte.d.ts +0 -23
  408. package/dist/components/Markdown/Markdown.svelte +0 -34
  409. package/dist/components/Markdown/Markdown.svelte.d.ts +0 -20
  410. package/dist/components/Markdown/stores.d.ts +0 -23
  411. package/dist/components/Markdown/stores.js +0 -24
  412. package/dist/components/Markdown/stories/docs/component.md +0 -39
  413. package/dist/components/PaddingReset/stories/docs/component.md +0 -35
  414. package/dist/components/PhotoCarousel/PhotoCarousel.stories.svelte +0 -72
  415. package/dist/components/PhotoCarousel/PhotoCarousel.stories.svelte.d.ts +0 -29
  416. package/dist/components/PhotoCarousel/PhotoCarousel.svelte +0 -202
  417. package/dist/components/PhotoCarousel/PhotoCarousel.svelte.d.ts +0 -78
  418. package/dist/components/PhotoCarousel/stories/docs/component.md +0 -21
  419. package/dist/components/PhotoCarousel/stories/docs/withCustom.md +0 -27
  420. package/dist/components/PhotoCarousel/stories/photos.json +0 -72
  421. package/dist/components/PhotoPack/stories/docs/archieML.md +0 -63
  422. package/dist/components/PhotoPack/stories/docs/component.md +0 -45
  423. package/dist/components/PhotoPack/stories/docs/missingAltText.md +0 -1
  424. package/dist/components/PymChild/stores.d.ts +0 -1
  425. package/dist/components/PymChild/stores.js +0 -3
  426. package/dist/components/PymChild/stories/docs/component.md +0 -28
  427. package/dist/components/ReferralBlock/stories/docs/collection.md +0 -7
  428. package/dist/components/ReferralBlock/stories/docs/component.md +0 -15
  429. package/dist/components/ReutersGraphicsLogo/stories/docs/component.md +0 -11
  430. package/dist/components/ReutersLogo/stories/docs/component.md +0 -9
  431. package/dist/components/SEO/stories/docs/archieML.md +0 -36
  432. package/dist/components/SEO/stories/docs/component.md +0 -26
  433. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-1.svelte.d.ts +0 -25
  434. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-2.svelte.d.ts +0 -25
  435. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-3.svelte.d.ts +0 -25
  436. package/dist/components/Scroller/stories/components/basic/InteractiveForeground.svelte +0 -13
  437. package/dist/components/Scroller/stories/components/basic/InteractiveForeground.svelte.d.ts +0 -25
  438. package/dist/components/Scroller/stories/components/basic/Step.svelte +0 -12
  439. package/dist/components/Scroller/stories/components/basic/Step.svelte.d.ts +0 -25
  440. package/dist/components/Scroller/stories/docs/ai2svelte.md +0 -42
  441. package/dist/components/Scroller/stories/docs/archieML.md +0 -87
  442. package/dist/components/Scroller/stories/docs/component.md +0 -39
  443. package/dist/components/Scroller/stories/docs/interactive.md +0 -36
  444. package/dist/components/SearchInput/MagnifyingGlass.svelte.d.ts +0 -25
  445. package/dist/components/SearchInput/X.svelte.d.ts +0 -25
  446. package/dist/components/SearchInput/stories/docs/component.md +0 -17
  447. package/dist/components/SimpleTimeline/stories/docs/component.md +0 -24
  448. package/dist/components/SiteFooter/stories/docs/component.md +0 -11
  449. package/dist/components/SiteFooter/stories/docs/darkTheme.md +0 -11
  450. package/dist/components/SiteFooter/stories/docs/removeReferrals.md +0 -9
  451. package/dist/components/SiteHeader/stories/docs/component.md +0 -11
  452. package/dist/components/SiteHeader/stories/docs/darkTheme.md +0 -11
  453. package/dist/components/SiteHeadline/stories/docs/archieML.md +0 -26
  454. package/dist/components/SiteHeadline/stories/docs/component.md +0 -21
  455. package/dist/components/Spinner/stories/docs/component.md +0 -15
  456. package/dist/components/Table/LeftArrow.svelte.d.ts +0 -25
  457. package/dist/components/Table/Pagination.svelte.d.ts +0 -33
  458. package/dist/components/Table/RightArrow.svelte.d.ts +0 -25
  459. package/dist/components/Table/Select.svelte.d.ts +0 -28
  460. package/dist/components/Table/SortArrow.svelte.d.ts +0 -22
  461. package/dist/components/Table/stories/docs/both.md +0 -13
  462. package/dist/components/Table/stories/docs/component.md +0 -14
  463. package/dist/components/Table/stories/docs/filter.md +0 -11
  464. package/dist/components/Table/stories/docs/format.md +0 -21
  465. package/dist/components/Table/stories/docs/metadata.md +0 -14
  466. package/dist/components/Table/stories/docs/paginate.md +0 -14
  467. package/dist/components/Table/stories/docs/search.md +0 -11
  468. package/dist/components/Table/stories/docs/sort.md +0 -14
  469. package/dist/components/Table/stories/docs/style.md +0 -23
  470. package/dist/components/Table/stories/docs/truncate.md +0 -11
  471. package/dist/components/Theme/stories/ThemedPage.svelte +0 -43
  472. package/dist/components/Theme/stories/ThemedPage.svelte.d.ts +0 -25
  473. package/dist/components/Theme/stories/docs/component.md +0 -15
  474. package/dist/components/Theme/stories/docs/customise-font.md +0 -52
  475. package/dist/components/Theme/stories/docs/customise.md +0 -28
  476. package/dist/components/Theme/stories/docs/gfonts.png +0 -0
  477. package/dist/components/Theme/stories/docs/inheritance.md +0 -17
  478. package/dist/components/Theme/stories/docs/pattern.md +0 -40
  479. package/dist/components/ToolsHeader/stories/docs/component.md +0 -13
  480. package/dist/components/Video/Controls.svelte +0 -75
  481. package/dist/components/Video/Controls.svelte.d.ts +0 -47
  482. package/dist/components/Video/docs.svx +0 -275
  483. package/dist/components/Video/stories/docs/component.md +0 -15
  484. package/dist/components/Video/stories/docs/controls.md +0 -38
  485. package/dist/components/Video/stories/docs/playAndLoop.md +0 -28
  486. package/dist/components/Video/stories/docs/withSound.md +0 -36
  487. package/dist/components/Visible/stories/docs/component.md +0 -19
  488. package/dist/components/Visible/stories/snippets/default.svelte +0 -11
  489. package/dist/components/Visible/stories/snippets/default.svelte.d.ts +0 -25
  490. package/dist/docs/contributing/story-recipes/basic-story.mdx +0 -77
  491. package/dist/docs/contributing/story-recipes/source-code.png +0 -0
  492. package/dist/docs/contributing/story-recipes/story-with-custom-controls.mdx +0 -46
  493. package/dist/docs/contributing/story-recipes/story-with-custom-docs.mdx +0 -130
  494. package/dist/docs/contributing/story-recipes/story-with-media.mdx +0 -50
  495. package/dist/docs/contributing/writing-docs-stories.mdx +0 -35
  496. package/dist/docs/utils/withParams.d.ts +0 -15
  497. package/dist/docs/utils/withParams.js +0 -46
  498. /package/dist/components/BeforeAfter/{stories → images}/myrne-after.jpg +0 -0
  499. /package/dist/components/BeforeAfter/{stories → images}/myrne-before.jpg +0 -0
  500. /package/dist/components/FeaturePhoto/{stories → images}/shark.jpg +0 -0
  501. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-md.png +0 -0
  502. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-sm.png +0 -0
  503. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-xs.png +0 -0
  504. /package/dist/components/GraphicBlock/{stories → demo}/placeholder.png +0 -0
  505. /package/dist/components/Headline/{stories → demo}/crown.png +0 -0
  506. /package/dist/components/Headline/{stories → demo}/graphic-lg.png +0 -0
  507. /package/dist/components/Headline/{stories → demo}/graphic-md.png +0 -0
  508. /package/dist/components/Headline/{stories → demo}/graphic-sm.png +0 -0
  509. /package/dist/components/Headline/{stories → demo}/graphic-xl.png +0 -0
  510. /package/dist/components/Headline/{stories → demo}/graphic-xs.png +0 -0
  511. /package/dist/components/HeroHeadline/{stories → demo}/eurovis.jpeg +0 -0
  512. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-lg.jpeg +0 -0
  513. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-md.jpeg +0 -0
  514. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-sm.jpeg +0 -0
  515. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xl.jpeg +0 -0
  516. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xl_copy.jpeg +0 -0
  517. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xs.jpeg +0 -0
  518. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-lg.jpeg +0 -0
  519. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-md.jpeg +0 -0
  520. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-sm.jpeg +0 -0
  521. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-xl.jpeg +0 -0
  522. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-xs.jpeg +0 -0
  523. /package/dist/components/HeroHeadline/{stories → demo}/polar.jpg +0 -0
  524. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-lg.png +0 -0
  525. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-md.png +0 -0
  526. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-sm.png +0 -0
  527. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-xl.png +0 -0
  528. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-xs.png +0 -0
  529. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-lg.png +0 -0
  530. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-md.png +0 -0
  531. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-sm.png +0 -0
  532. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-xl.png +0 -0
  533. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-xs.png +0 -0
  534. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-lg.png +0 -0
  535. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-md.png +0 -0
  536. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-sm.png +0 -0
  537. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-xl.png +0 -0
  538. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-xs.png +0 -0
  539. /package/dist/components/SearchInput/{MagnifyingGlass.svelte → components/MagnifyingGlass.svelte} +0 -0
  540. /package/dist/components/SearchInput/{X.svelte → components/X.svelte} +0 -0
  541. /package/dist/components/Table/{LeftArrow.svelte → components/LeftArrow.svelte} +0 -0
  542. /package/dist/components/Table/{RightArrow.svelte → components/RightArrow.svelte} +0 -0
  543. /package/dist/components/Table/{stories → demo}/homeRuns.json +0 -0
  544. /package/dist/components/Table/{stories → demo}/pressFreedom.json +0 -0
  545. /package/dist/components/Table/{stories → demo}/richestWomen.json +0 -0
  546. /package/dist/components/Video/{stories/videos → demo}/silent-video.mp4 +0 -0
  547. /package/dist/components/Video/{stories/videos → demo}/sound-video.mp4 +0 -0
@@ -1,95 +1,164 @@
1
1
  <!-- @component `Table` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-text-elements-table--docs) -->
2
- <script>import { onMount } from "svelte";
3
- export let data;
4
- export let title = null;
5
- export let dek = null;
6
- export let notes = null;
7
- export let source = null;
8
- export let includedFields = Object.keys(data[0]).filter(
9
- (f) => f !== "searchStr"
10
- );
11
- export let truncated = false;
12
- export let truncateLength = 5;
13
- export let paginated = false;
14
- export let pageSize = 25;
15
- export let searchable = false;
16
- export let searchPlaceholder = "Search in table";
17
- export let filterField;
18
- export let filterLabel;
19
- export let sortable = false;
20
- export let sortField = Object.keys(data[0])[0];
21
- export let sortableFields = Object.keys(data[0]).filter(
22
- (f) => f !== "searchStr"
23
- );
24
- export let sortDirection = "ascending";
25
- export let fieldFormatters = {};
26
- export let width = "normal";
27
- export let id = "";
28
- let cls = "";
29
- export { cls as class };
30
- import Block from "../Block/Block.svelte";
31
- import Pagination from "./Pagination.svelte";
32
- import SearchInput from "../SearchInput/SearchInput.svelte";
33
- import Select from "./Select.svelte";
34
- import SortArrow from "./SortArrow.svelte";
35
- import { filterArray, paginateArray, getOptions } from "./utils.js";
36
- let showAll = false;
37
- let pageNumber = 1;
38
- let searchText = "";
39
- const filterList = filterField ? getOptions(data, filterField) : void 0;
40
- let filterValue = "";
41
- $: filteredData = filterArray(data, searchText, filterField, filterValue);
42
- $: sortedData = sortArray(filteredData, sortField, sortDirection);
43
- $: currentPageData = truncated ? showAll ? sortedData : sortedData.slice(0, truncateLength + 1) : paginated ? paginateArray(sortedData, pageSize, pageNumber) : sortedData;
44
- function toggleTruncate(_event) {
45
- showAll = !showAll;
46
- }
47
- function handleSearchInput(event) {
48
- searchText = event.detail.value;
49
- pageNumber = 1;
50
- }
51
- function handleFilterInput(event) {
52
- const value = event.detail.value;
53
- filterValue = value === "All" ? "" : value;
54
- pageNumber = 1;
55
- }
56
- function handleSort(event) {
57
- if (!sortable) return;
58
- sortField = event.target.getAttribute("data-field");
59
- sortDirection = sortDirection === "ascending" ? "descending" : "ascending";
60
- }
61
- function sortArray(array, column, direction) {
62
- if (!sortable) return array;
63
- return array.sort((a, b) => {
64
- if (a[column] < b[column]) {
65
- return direction === "ascending" ? -1 : 1;
66
- } else if (a[column] > b[column]) {
67
- return direction === "ascending" ? 1 : -1;
68
- } else {
69
- return 0;
70
- }
71
- });
72
- }
73
- function formatValue(item, field) {
74
- const value = item[field];
75
- if (field in fieldFormatters) {
76
- const func = fieldFormatters[field];
77
- return func(value);
78
- } else {
79
- return value;
2
+ <script lang="ts">
3
+ /** Import local helpers */
4
+ import Block from '../Block/Block.svelte';
5
+ import Pagination from './components/Pagination.svelte';
6
+ import Select from './components/Select.svelte';
7
+ import SortArrow from './components/SortArrow.svelte';
8
+ import SearchInput from '../SearchInput/SearchInput.svelte';
9
+ import {
10
+ filterArray,
11
+ paginateArray,
12
+ getOptions,
13
+ sortArray,
14
+ formatValue,
15
+ type FieldFormatters,
16
+ } from './utils';
17
+
18
+ // Types
19
+ import type { Option } from '../@types/global';
20
+
21
+ interface Props<T extends Record<string, unknown>> {
22
+ /** Data for the table as an array. */
23
+ data: T[];
24
+
25
+ /** A title that runs above the table. */
26
+ title?: string;
27
+ /** A block of text that runs above the table. */
28
+ dek?: string;
29
+ /** A footnote that runs below the table. */
30
+ notes?: string;
31
+ /** A source line that runs below the table. */
32
+ source?: string;
33
+ /** List of the fields to include in the table. By default everything goes. */
34
+ includedFields?: string[];
35
+ /** Whether or not the table is cutoff after a set number of rows. */
36
+ truncated?: boolean;
37
+ /** If the table is truncated, how many rows to allow before the cutoff. */
38
+ truncateLength?: number;
39
+ /** Whether or not the table is paginated after a set number of rows. */
40
+ paginated?: boolean;
41
+ /** The default page size. */
42
+ pageSize?: number;
43
+ /** Whether or not searches are allowed. */
44
+ searchable?: boolean;
45
+ /** The placeholder text that appears in the search box. */
46
+ searchPlaceholder?: string;
47
+ /** A field to offer uses as an interactive filter. */
48
+ filterField?: string;
49
+ /** The label to place above the filter box. */
50
+ filterLabel?: string;
51
+ /** Whether or not sorts are allowed. */
52
+ sortable?: boolean;
53
+ /** The column to sort by. By default it's the first header. */
54
+ sortField?: string;
55
+ /** The columns that are allowed to sort. It's all of them by default. */
56
+ sortableFields?: string[];
57
+ /** The direction of the sort. By default it's ascending. */
58
+ sortDirection?: 'ascending' | 'descending';
59
+ /** Custom field formatting functions. Should be keyed to the name of the field. */
60
+ fieldFormatters?: FieldFormatters<T>;
61
+ /** Width of the component within the text well. */
62
+ width?: 'normal' | 'wide' | 'wider' | 'widest' | 'fluid';
63
+ /** Add an ID to target with SCSS. */
64
+ id?: string;
65
+ /** Add a class to target with SCSS. */
66
+ class?: string;
80
67
  }
81
- }
82
- onMount(() => {
83
- data.forEach((d) => {
84
- d.searchStr = includedFields.map((field) => d[field]).join(" ").toLowerCase();
68
+
69
+ let {
70
+ data,
71
+ title,
72
+ dek,
73
+ notes,
74
+ source,
75
+ includedFields = Object.keys(data[0]).filter((f) => f !== 'searchStr'),
76
+ truncated = false,
77
+ truncateLength = 5,
78
+ paginated = false,
79
+ pageSize = 25,
80
+ searchable = false,
81
+ searchPlaceholder = 'Search in table',
82
+ filterField = '',
83
+ filterLabel,
84
+ sortable = false,
85
+ sortField = Object.keys(data[0])[0],
86
+ sortableFields = Object.keys(data[0]).filter((f) => f !== 'searchStr'),
87
+ sortDirection = $bindable('ascending'),
88
+ fieldFormatters,
89
+ width = 'normal',
90
+ id = '',
91
+ class: cls = '',
92
+ }: Props<Record<string, unknown>> = $props();
93
+
94
+ /** Set truncate, filtering and pagination configuration */
95
+ let showAll = $state(false);
96
+ let pageNumber = $state(1);
97
+ let searchText = $state('');
98
+ let filterList = $derived(
99
+ filterField ? getOptions(data, filterField) : undefined
100
+ );
101
+ let filterValue = $state('');
102
+
103
+ /** Helper functions that modify variables within this component */
104
+ //* * Handle show all, search, filter, sort and pagination events */
105
+ function toggleTruncate() {
106
+ showAll = !showAll;
107
+ }
108
+
109
+ /** Filters table data based on the input value in the search bar */
110
+ function handleSearchInput(newSearchText: string) {
111
+ searchText = newSearchText;
112
+ pageNumber = 1;
113
+ }
114
+
115
+ function handleFilterInput(newSearchText: string) {
116
+ filterValue = newSearchText === 'All' ? '' : newSearchText;
117
+ pageNumber = 1;
118
+ }
119
+
120
+ function handleSort(event: MouseEvent) {
121
+ if (!sortable) return;
122
+ sortField = (event.target as HTMLElement).getAttribute('data-field') || '';
123
+ sortDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';
124
+ }
125
+
126
+ /** Add the `searchStr` field to data */
127
+ let searchableData = $derived.by(() => {
128
+ return data.map((d) => {
129
+ return {
130
+ ...d,
131
+ searchStr: includedFields
132
+ .map((field) => d[field])
133
+ .join(' ')
134
+ .toLowerCase(),
135
+ };
136
+ });
137
+ });
138
+ /** Set up the data pipeline */
139
+ let filteredData = $derived.by(() =>
140
+ filterArray(searchableData, searchText, filterField, filterValue)
141
+ );
142
+
143
+ let sortedData = $derived.by(() =>
144
+ sortArray(filteredData, sortField, sortDirection, sortable)
145
+ );
146
+
147
+ let currentPageData = $derived.by(() => {
148
+ if (truncated) {
149
+ return showAll ? sortedData : sortedData.slice(0, truncateLength + 1);
150
+ }
151
+ if (paginated) {
152
+ return paginateArray(sortedData, pageSize, pageNumber);
153
+ }
154
+ return sortedData;
85
155
  });
86
- });
87
156
  </script>
88
157
 
89
158
  <Block {width} {id} class="fmy-6 {cls}">
90
- <article class="table-wrapper">
159
+ <div class="table-wrapper">
91
160
  {#if title || dek || searchable || filterList}
92
- <header class="table--header w-full">
161
+ <div class="table--header w-full">
93
162
  {#if title}
94
163
  <h3 class="table--header--title">{@html title}</h3>
95
164
  {/if}
@@ -101,31 +170,28 @@ onMount(() => {
101
170
  {#if filterList}
102
171
  <div class="table--header--filter">
103
172
  <Select
104
- label="{filterLabel || filterField}"
105
- options="{filterList}"
106
- on:select="{handleFilterInput}"
173
+ label={filterLabel || filterField}
174
+ options={filterList as Option[]}
175
+ onselect={handleFilterInput}
107
176
  />
108
177
  </div>
109
178
  {/if}
110
179
  {#if searchable}
111
180
  <div class="table--header--search">
112
- <SearchInput
113
- bind:searchPlaceholder
114
- on:search="{handleSearchInput}"
115
- />
181
+ <SearchInput {searchPlaceholder} onsearch={handleSearchInput} />
116
182
  </div>
117
183
  {/if}
118
184
  </nav>
119
185
  {/if}
120
- </header>
186
+ </div>
121
187
  {/if}
122
- <section class="table w-full">
188
+ <div class="table w-full">
123
189
  <table
124
190
  class="w-full"
125
191
  class:paginated
126
- class:truncated="{truncated &&
192
+ class:truncated={truncated &&
127
193
  !showAll &&
128
- data.length > truncateLength}"
194
+ searchableData.length > truncateLength}
129
195
  >
130
196
  <thead class="table--thead">
131
197
  <tr>
@@ -133,23 +199,20 @@ onMount(() => {
133
199
  <th
134
200
  scope="col"
135
201
  class="table--thead--th h4 pl-0 py-2 pr-2"
136
- class:sortable="{sortable && sortableFields.includes(field)}"
137
- class:sort-ascending="{sortable &&
202
+ class:sortable={sortable && sortableFields.includes(field)}
203
+ class:sort-ascending={sortable &&
138
204
  sortField === field &&
139
- sortDirection === 'ascending'}"
140
- class:sort-descending="{sortable &&
205
+ sortDirection === 'ascending'}
206
+ class:sort-descending={sortable &&
141
207
  sortField === field &&
142
- sortDirection === 'descending'}"
143
- data-field="{field}"
144
- on:click="{handleSort}"
208
+ sortDirection === 'descending'}
209
+ data-field={field}
210
+ onclick={handleSort}
145
211
  >
146
212
  {field}
147
213
  {#if sortable && sortableFields.includes(field)}
148
214
  <div class="table--thead--sortarrow fml-1 avoid-clicks">
149
- <SortArrow
150
- bind:sortDirection
151
- active="{sortField === field}"
152
- />
215
+ <SortArrow {sortDirection} active={sortField === field} />
153
216
  </div>
154
217
  {/if}
155
218
  </th>
@@ -158,22 +221,22 @@ onMount(() => {
158
221
  </thead>
159
222
  <tbody class="table--tbody">
160
223
  {#each currentPageData as item, idx}
161
- <tr data-row-index="{idx}">
224
+ <tr data-row-index={idx}>
162
225
  {#each includedFields as field}
163
226
  <td
164
227
  class="body-note pl-0 py-2 pr-2"
165
- data-row-index="{idx}"
166
- data-field="{field}"
167
- data-value="{item[field]}"
228
+ data-row-index={idx}
229
+ data-field={field}
230
+ data-value={item[field]}
168
231
  >
169
- {@html formatValue(item, field)}
232
+ {@html formatValue(item, field, fieldFormatters)}
170
233
  </td>
171
234
  {/each}
172
235
  </tr>
173
236
  {/each}
174
237
  {#if searchable && searchText && currentPageData.length === 0}
175
238
  <tr>
176
- <td class="no-results" colspan="{includedFields.length}">
239
+ <td class="no-results" colspan={includedFields.length}>
177
240
  No results found for "{searchText}"
178
241
  </td>
179
242
  </tr>
@@ -183,7 +246,7 @@ onMount(() => {
183
246
  <tfoot class="table--tfoot">
184
247
  {#if notes}
185
248
  <tr>
186
- <td class="" colspan="{includedFields.length}">
249
+ <td class="" colspan={includedFields.length}>
187
250
  <div class="fmt-2">
188
251
  {@html notes}
189
252
  </div>
@@ -192,7 +255,7 @@ onMount(() => {
192
255
  {/if}
193
256
  {#if source}
194
257
  <tr>
195
- <td class="" colspan="{includedFields.length}">
258
+ <td class="" colspan={includedFields.length}>
196
259
  <div class="fmt-1">
197
260
  {@html source}
198
261
  </div>
@@ -202,26 +265,30 @@ onMount(() => {
202
265
  </tfoot>
203
266
  {/if}
204
267
  </table>
205
- </section>
206
- {#if truncated && data.length > truncateLength}
268
+ </div>
269
+ {#if truncated && searchableData.length > truncateLength}
207
270
  <nav
208
271
  aria-label="Show all button"
209
272
  class="show-all flex items-center justify-center fmt-2"
210
273
  >
211
- <button class="body-caption" on:click="{toggleTruncate}"
212
- >{#if showAll}Show fewer rows{:else}Show {data.length -
213
- truncateLength} more rows{/if}</button
214
- >
274
+ <button class="body-caption" onclick={toggleTruncate}>
275
+ {#if showAll}
276
+ Show fewer rows
277
+ {:else}
278
+ Show {searchableData.length - truncateLength}
279
+ more rows
280
+ {/if}
281
+ </button>
215
282
  </nav>
216
283
  {/if}
217
284
  {#if paginated}
218
285
  <Pagination
219
286
  bind:pageNumber
220
287
  bind:pageSize
221
- bind:pageLength="{currentPageData.length}"
222
- bind:n="{sortedData.length}"
288
+ pageLength={currentPageData.length}
289
+ n={sortedData.length}
223
290
  />{/if}
224
- </article>
291
+ </div>
225
292
  </Block>
226
293
 
227
294
  <style>/* Generated from
@@ -231,42 +298,42 @@ https://utopia.fyi/space/calculator/?c=320,18,1.125,1280,21,1.25,7,3,&s=0.75|0.5
231
298
  https://utopia.fyi/space/calculator/?c=320,18,1.125,1280,21,1.25,7,3,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12
232
299
  */
233
300
  /* Scales by 1.125 */
234
- section.table {
301
+ .table {
235
302
  overflow-x: auto;
236
303
  }
237
304
 
238
- section.table table {
305
+ .table table {
239
306
  background-color: transparent;
240
307
  border-collapse: separate;
241
308
  border-spacing: 0;
242
309
  }
243
- section.table table thead tr th {
310
+ .table table thead tr th {
244
311
  border-bottom: 1px solid var(--theme-colour-text-primary);
245
312
  background-color: var(--theme-colour-background);
246
313
  text-align: inherit;
247
314
  }
248
- section.table table thead tr th.sortable {
315
+ .table table thead tr th.sortable {
249
316
  cursor: pointer;
250
317
  white-space: nowrap;
251
318
  }
252
- section.table table thead tr th .table--thead--sortarrow {
319
+ .table table thead tr th .table--thead--sortarrow {
253
320
  display: inline-block;
254
321
  position: relative;
255
322
  top: 5px;
256
323
  }
257
- section.table table tbody td {
324
+ .table table tbody td {
258
325
  font-size: var(--theme-font-size-sm);
259
326
  font-weight: 400;
260
327
  vertical-align: top;
261
328
  border-bottom: 1px solid var(--theme-colour-brand-rules, var(--tr-muted-grey));
262
329
  }
263
- section.table table tbody td.no-results {
330
+ .table table tbody td.no-results {
264
331
  color: var(--theme-colour-text-secondary);
265
332
  }
266
- section.table table tfoot.table--tfoot tr {
333
+ .table table tfoot.table--tfoot tr {
267
334
  border-bottom: 0;
268
335
  }
269
- section.table table tfoot.table--tfoot td {
336
+ .table table tfoot.table--tfoot td {
270
337
  font-family: var(--theme-font-family-note);
271
338
  color: var(--theme-colour-text-secondary);
272
339
  font-size: var(--theme-font-size-xs);
@@ -275,7 +342,7 @@ section.table table tfoot.table--tfoot td {
275
342
  margin-top: clamp(0.31rem, 0.31rem + 0vw, 0.31rem);
276
343
  margin-bottom: clamp(0.56rem, 0.52rem + 0.21vw, 0.69rem);
277
344
  }
278
- section.table table.truncated tbody tr:last-child:not(:first-child) {
345
+ .table table.truncated tbody tr:last-child:not(:first-child) {
279
346
  border-bottom: none;
280
347
  mask-image: linear-gradient(to bottom, var(--theme-colour-text-primary) 0%, transparent 100%);
281
348
  -webkit-mask-image: linear-gradient(to bottom, var(--theme-colour-text-primary) 0%, transparent 100%);
@@ -1,95 +1,51 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- /**
5
- * A source for the data.
6
- * @type []
7
- * @required
8
- */ data: [];
9
- /**
10
- * A title that runs above the table.
11
- * @type {string}
12
- */ title?: string | null;
13
- /**
14
- * A block of text that runs above the table.
15
- * @type {string}
16
- */ dek?: string | null;
17
- /**
18
- * A footnote that runs below the table.
19
- * @type {string}
20
- */ notes?: string | null;
21
- /**
22
- * A source line that runs below the table.
23
- * @type {string}
24
- */ source?: string | null;
25
- /**
26
- * list of the fields to include in the table. By default everything goes.
27
- * @type []
28
- */ includedFields?: string[];
29
- /**
30
- * Whether or not the table is cutoff after a set number of rows.
31
- * @type {boolean}
32
- */ truncated?: boolean;
33
- /**
34
- * If the table is truncated, how many rows to allow before the cutoff.
35
- * @type {number}
36
- */ truncateLength?: number;
37
- /**
38
- * Whether or not the table is paginated after a set number of rows.
39
- * @type {boolean}
40
- */ paginated?: boolean;
41
- /**
42
- * The default page size.
43
- * @type {number}
44
- */ pageSize?: number;
45
- /**
46
- * Whether or not searches are allowed.
47
- * @type {boolean}
48
- */ searchable?: boolean;
49
- /**
50
- * The placeholder text that appears in the search box.
51
- * @type {string}
52
- */ searchPlaceholder?: string;
53
- /**
54
- * A field to offer uses as an interactive filter.
55
- * @type {string}
56
- */ filterField: string;
57
- /**
58
- * The label to place above the filter box
59
- * @type {string}
60
- */ filterLabel: string;
61
- /**
62
- * Whether or not sorts are allowed.
63
- * @type {boolean}
64
- */ sortable?: boolean;
65
- /**
66
- * The column to sort by. By default it's the first header.
67
- * @type {string}
68
- */ sortField?: string;
69
- /**
70
- * The columns that are allowed to sort. It's all of them by default.
71
- * @type {string}
72
- */ sortableFields?: string[];
73
- sortDirection?: "ascending" | "descending";
74
- /**
75
- * Custom field formatting functions. Should be keyed to the name of the field.
76
- * @type {object}
77
- */ fieldFormatters?: object;
78
- width?: "normal" | "wide" | "wider" | "widest" | "fluid";
79
- /** Add an ID to target with SCSS. */ id?: string;
80
- /** Add a class to target with SCSS. */ class?: string;
81
- };
82
- events: {
83
- [evt: string]: CustomEvent<any>;
84
- };
85
- slots: {};
86
- exports?: {} | undefined;
87
- bindings?: string | undefined;
88
- };
89
- export type TableProps = typeof __propDef.props;
90
- export type TableEvents = typeof __propDef.events;
91
- export type TableSlots = typeof __propDef.slots;
92
- /** `Table` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-text-elements-table--docs) */
93
- export default class Table extends SvelteComponent<TableProps, TableEvents, TableSlots> {
1
+ import { type FieldFormatters } from './utils';
2
+ interface Props<T extends Record<string, unknown>> {
3
+ /** Data for the table as an array. */
4
+ data: T[];
5
+ /** A title that runs above the table. */
6
+ title?: string;
7
+ /** A block of text that runs above the table. */
8
+ dek?: string;
9
+ /** A footnote that runs below the table. */
10
+ notes?: string;
11
+ /** A source line that runs below the table. */
12
+ source?: string;
13
+ /** List of the fields to include in the table. By default everything goes. */
14
+ includedFields?: string[];
15
+ /** Whether or not the table is cutoff after a set number of rows. */
16
+ truncated?: boolean;
17
+ /** If the table is truncated, how many rows to allow before the cutoff. */
18
+ truncateLength?: number;
19
+ /** Whether or not the table is paginated after a set number of rows. */
20
+ paginated?: boolean;
21
+ /** The default page size. */
22
+ pageSize?: number;
23
+ /** Whether or not searches are allowed. */
24
+ searchable?: boolean;
25
+ /** The placeholder text that appears in the search box. */
26
+ searchPlaceholder?: string;
27
+ /** A field to offer uses as an interactive filter. */
28
+ filterField?: string;
29
+ /** The label to place above the filter box. */
30
+ filterLabel?: string;
31
+ /** Whether or not sorts are allowed. */
32
+ sortable?: boolean;
33
+ /** The column to sort by. By default it's the first header. */
34
+ sortField?: string;
35
+ /** The columns that are allowed to sort. It's all of them by default. */
36
+ sortableFields?: string[];
37
+ /** The direction of the sort. By default it's ascending. */
38
+ sortDirection?: 'ascending' | 'descending';
39
+ /** Custom field formatting functions. Should be keyed to the name of the field. */
40
+ fieldFormatters?: FieldFormatters<T>;
41
+ /** Width of the component within the text well. */
42
+ width?: 'normal' | 'wide' | 'wider' | 'widest' | 'fluid';
43
+ /** Add an ID to target with SCSS. */
44
+ id?: string;
45
+ /** Add a class to target with SCSS. */
46
+ class?: string;
94
47
  }
95
- export {};
48
+ /** `Table` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-text-elements-table--docs) */
49
+ declare const Table: import("svelte").Component<Props<Record<string, unknown>>, {}, "sortDirection">;
50
+ type Table = ReturnType<typeof Table>;
51
+ export default Table;
@@ -0,0 +1,26 @@
1
+ export default LeftArrow;
2
+ type LeftArrow = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const LeftArrow: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }