@ndla/ui 51.0.0 → 52.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 (540) hide show
  1. package/README.md +2 -2
  2. package/es/Article/Article.js +12 -12
  3. package/es/Article/ArticleHeaderWrapper.js +0 -11
  4. package/es/Article/ArticleNotions.js +6 -6
  5. package/es/Article/ArticleParagraph.js +25 -0
  6. package/es/Article/index.js +1 -0
  7. package/es/AudioPlayer/AudioPlayer.js +13 -13
  8. package/es/AudioPlayer/Controls.js +22 -38
  9. package/es/Breadcrumb/Breadcrumb.js +2 -33
  10. package/es/Breadcrumb/BreadcrumbItem.js +16 -29
  11. package/es/Breadcrumb/index.js +0 -1
  12. package/es/CodeBlock/CodeBlock.js +115 -0
  13. package/es/CodeBlock/codeLanguageOptions.js +84 -0
  14. package/es/CodeBlock/index.js +10 -0
  15. package/es/CreatedBy/CreatedBy.js +4 -4
  16. package/es/Embed/BrightcoveEmbed.js +3 -3
  17. package/es/Embed/CodeEmbed.js +2 -2
  18. package/es/Embed/ConceptEmbed.js +37 -33
  19. package/es/Embed/ExternalEmbed.js +2 -2
  20. package/es/Embed/IframeEmbed.js +1 -1
  21. package/es/Embed/ImageEmbed.js +17 -14
  22. package/es/Embed/RelatedContentEmbed.js +3 -3
  23. package/es/Embed/UuDisclaimerEmbed.js +4 -3
  24. package/es/Embed/conceptComponents.js +10 -10
  25. package/es/Figure/Figure.js +32 -19
  26. package/es/FrontpageArticle/FrontpageArticle.js +3 -3
  27. package/es/Gloss/Gloss.js +12 -10
  28. package/es/Hero/Hero.js +1 -1
  29. package/es/Image/Image.js +3 -3
  30. package/es/LanguageSelector/LanguageSelector.js +5 -5
  31. package/es/Layout/LayoutItem.js +2 -1
  32. package/es/Layout/OneColumn.js +22 -28
  33. package/es/Layout/PageContainer.js +21 -17
  34. package/es/LicenseByline/LicenseLink.js +5 -6
  35. package/es/Messages/MessageBox.js +9 -7
  36. package/es/MyNdla/Resource/index.js +1 -2
  37. package/es/MyNdla/index.js +1 -2
  38. package/es/Notion/Notion.js +4 -4
  39. package/es/Resource/BlockResource.js +13 -15
  40. package/es/Resource/ListResource.js +13 -15
  41. package/es/Search/ContentTypeResult.js +4 -4
  42. package/es/Search/SearchResult.js +11 -11
  43. package/es/Search/SearchResultSleeve.js +16 -16
  44. package/es/TreeStructure/TreeStructure.js +6 -6
  45. package/es/all.css +1 -1
  46. package/es/index.js +5 -19
  47. package/es/locale/messages-en.js +12 -2
  48. package/es/locale/messages-nb.js +12 -2
  49. package/es/locale/messages-nn.js +13 -3
  50. package/es/locale/messages-se.js +11 -1
  51. package/es/locale/messages-sma.js +12 -2
  52. package/es/types.js +0 -9
  53. package/lib/Article/Article.d.ts +5 -7
  54. package/lib/Article/Article.js +12 -12
  55. package/lib/Article/ArticleHeaderWrapper.js +0 -11
  56. package/lib/Article/ArticleNotions.js +5 -5
  57. package/lib/Article/ArticleParagraph.d.ts +13 -0
  58. package/lib/Article/ArticleParagraph.js +32 -0
  59. package/lib/Article/index.d.ts +1 -0
  60. package/lib/Article/index.js +7 -0
  61. package/lib/AudioPlayer/AudioPlayer.js +13 -13
  62. package/lib/AudioPlayer/Controls.js +21 -37
  63. package/lib/Breadcrumb/Breadcrumb.d.ts +1 -2
  64. package/lib/Breadcrumb/Breadcrumb.js +2 -33
  65. package/lib/Breadcrumb/BreadcrumbItem.js +16 -29
  66. package/lib/Breadcrumb/index.d.ts +0 -1
  67. package/lib/Breadcrumb/index.js +0 -7
  68. package/lib/CodeBlock/CodeBlock.d.ts +18 -0
  69. package/lib/CodeBlock/CodeBlock.js +121 -0
  70. package/lib/{Navigation/index.d.ts → CodeBlock/codeLanguageOptions.d.ts} +5 -2
  71. package/lib/CodeBlock/codeLanguageOptions.js +90 -0
  72. package/lib/CodeBlock/index.d.ts +9 -0
  73. package/lib/CodeBlock/index.js +20 -0
  74. package/lib/CreatedBy/CreatedBy.js +4 -4
  75. package/lib/Embed/BrightcoveEmbed.js +3 -3
  76. package/lib/Embed/CodeEmbed.js +2 -2
  77. package/lib/Embed/ConceptEmbed.d.ts +1 -1
  78. package/lib/Embed/ConceptEmbed.js +36 -33
  79. package/lib/Embed/ExternalEmbed.js +2 -2
  80. package/lib/Embed/IframeEmbed.js +1 -1
  81. package/lib/Embed/ImageEmbed.js +17 -14
  82. package/lib/Embed/RelatedContentEmbed.js +3 -3
  83. package/lib/Embed/UuDisclaimerEmbed.js +4 -3
  84. package/lib/Embed/conceptComponents.js +10 -10
  85. package/lib/Figure/Figure.d.ts +2 -5
  86. package/lib/Figure/Figure.js +32 -23
  87. package/lib/FrontpageArticle/FrontpageArticle.js +3 -3
  88. package/lib/Gloss/Gloss.js +12 -10
  89. package/lib/Hero/Hero.js +1 -1
  90. package/lib/Image/Image.js +2 -2
  91. package/lib/LanguageSelector/LanguageSelector.js +5 -5
  92. package/lib/Layout/LayoutItem.js +2 -1
  93. package/lib/Layout/OneColumn.d.ts +3 -8
  94. package/lib/Layout/OneColumn.js +22 -30
  95. package/lib/Layout/PageContainer.d.ts +3 -7
  96. package/lib/Layout/PageContainer.js +21 -19
  97. package/lib/LicenseByline/LicenseLink.js +5 -6
  98. package/lib/Messages/MessageBox.d.ts +2 -1
  99. package/lib/Messages/MessageBox.js +9 -7
  100. package/lib/MyNdla/Resource/index.d.ts +1 -2
  101. package/lib/MyNdla/Resource/index.js +0 -7
  102. package/lib/MyNdla/index.d.ts +1 -2
  103. package/lib/MyNdla/index.js +0 -7
  104. package/lib/Notion/Notion.js +4 -4
  105. package/lib/Resource/BlockResource.js +13 -15
  106. package/lib/Resource/ListResource.js +13 -15
  107. package/lib/Search/ContentTypeResult.js +4 -4
  108. package/lib/Search/SearchResult.js +10 -10
  109. package/lib/Search/SearchResultSleeve.js +16 -16
  110. package/lib/TreeStructure/TreeStructure.js +6 -6
  111. package/lib/all.css +1 -1
  112. package/lib/index.d.ts +4 -19
  113. package/lib/index.js +17 -229
  114. package/lib/locale/messages-en.d.ts +10 -0
  115. package/lib/locale/messages-en.js +12 -2
  116. package/lib/locale/messages-nb.d.ts +10 -0
  117. package/lib/locale/messages-nb.js +12 -2
  118. package/lib/locale/messages-nn.d.ts +10 -0
  119. package/lib/locale/messages-nn.js +13 -3
  120. package/lib/locale/messages-se.d.ts +10 -0
  121. package/lib/locale/messages-se.js +11 -1
  122. package/lib/locale/messages-sma.d.ts +10 -0
  123. package/lib/locale/messages-sma.js +12 -2
  124. package/lib/types.d.ts +0 -51
  125. package/lib/types.js +1 -10
  126. package/package.json +16 -21
  127. package/src/Article/Article.tsx +14 -18
  128. package/src/Article/ArticleHeaderWrapper.tsx +1 -12
  129. package/src/Article/ArticleNotions.tsx +3 -3
  130. package/src/Article/ArticleParagraph.tsx +22 -0
  131. package/src/Article/component.article.scss +0 -7
  132. package/src/Article/index.ts +2 -0
  133. package/src/AudioPlayer/AudioPlayer.tsx +2 -2
  134. package/src/AudioPlayer/Controls.tsx +5 -5
  135. package/src/Breadcrumb/Breadcrumb.stories.tsx +0 -4
  136. package/src/Breadcrumb/Breadcrumb.tsx +1 -38
  137. package/src/Breadcrumb/BreadcrumbItem.tsx +5 -19
  138. package/src/Breadcrumb/index.ts +0 -2
  139. package/src/CodeBlock/CodeBlock.stories.tsx +113 -0
  140. package/src/CodeBlock/CodeBlock.tsx +228 -0
  141. package/src/CodeBlock/codeLanguageOptions.ts +115 -0
  142. package/src/CodeBlock/index.ts +10 -0
  143. package/src/CreatedBy/CreatedBy.tsx +2 -2
  144. package/src/Embed/AudioEmbed.stories.tsx +6 -4
  145. package/src/Embed/BrightcoveEmbed.stories.tsx +6 -4
  146. package/src/Embed/BrightcoveEmbed.tsx +2 -2
  147. package/src/Embed/CodeEmbed.tsx +2 -2
  148. package/src/Embed/ConceptEmbed.stories.tsx +6 -4
  149. package/src/Embed/ConceptEmbed.tsx +103 -96
  150. package/src/Embed/ExternalEmbed.stories.tsx +6 -4
  151. package/src/Embed/ExternalEmbed.tsx +2 -2
  152. package/src/Embed/H5pEmbed.stories.tsx +6 -4
  153. package/src/Embed/IframeEmbed.stories.tsx +6 -4
  154. package/src/Embed/IframeEmbed.tsx +1 -1
  155. package/src/Embed/ImageEmbed.stories.tsx +6 -4
  156. package/src/Embed/ImageEmbed.tsx +19 -11
  157. package/src/Embed/RelatedContentEmbed.stories.tsx +6 -4
  158. package/src/Embed/RelatedContentEmbed.tsx +3 -3
  159. package/src/Embed/UuDisclaimerEmbed.stories.tsx +23 -4
  160. package/src/Embed/UuDisclaimerEmbed.tsx +1 -1
  161. package/src/Embed/conceptComponents.tsx +1 -0
  162. package/src/Figure/Figure.tsx +57 -18
  163. package/src/Footer/Footer.stories.tsx +1 -1
  164. package/src/FrontpageArticle/FrontpageArticle.tsx +3 -3
  165. package/src/Gloss/Gloss.tsx +4 -2
  166. package/src/Hero/Hero.tsx +1 -1
  167. package/src/Image/Image.tsx +2 -2
  168. package/src/LanguageSelector/LanguageSelector.tsx +1 -1
  169. package/src/Layout/LayoutItem.tsx +2 -1
  170. package/src/Layout/OneColumn.tsx +25 -35
  171. package/src/Layout/PageContainer.tsx +19 -23
  172. package/src/LicenseByline/LicenseLink.tsx +1 -2
  173. package/src/Messages/MessageBox.tsx +3 -2
  174. package/src/MyNdla/Resource/index.ts +1 -2
  175. package/src/MyNdla/index.ts +1 -2
  176. package/src/Notion/Notion.tsx +2 -2
  177. package/src/Resource/BlockResource.tsx +4 -8
  178. package/src/Resource/ListResource.tsx +4 -6
  179. package/src/Search/ContentTypeResult.tsx +4 -4
  180. package/src/Search/SearchResult.tsx +2 -2
  181. package/src/Search/SearchResultSleeve.tsx +7 -9
  182. package/src/Table/Table.stories.tsx +8 -8
  183. package/src/TreeStructure/TreeStructure.stories.tsx +85 -28
  184. package/src/TreeStructure/TreeStructure.tsx +1 -1
  185. package/src/index.ts +5 -46
  186. package/src/locale/messages-en.ts +14 -1
  187. package/src/locale/messages-nb.ts +14 -1
  188. package/src/locale/messages-nn.ts +15 -2
  189. package/src/locale/messages-se.ts +13 -0
  190. package/src/locale/messages-sma.ts +14 -1
  191. package/src/main.scss +0 -2
  192. package/src/types.ts +0 -62
  193. package/es/Article/ArticleAccessMessage.js +0 -43
  194. package/es/Aside/Aside.js +0 -75
  195. package/es/Aside/index.js +0 -10
  196. package/es/BannerCard/BannerCard.js +0 -84
  197. package/es/BannerCard/index.js +0 -10
  198. package/es/Breadcrumb/HeaderBreadcrumb.js +0 -57
  199. package/es/CompetenceGoalTab/CompetenceGoalItem.js +0 -42
  200. package/es/CompetenceGoalTab/CompetenceGoalTab.js +0 -75
  201. package/es/CompetenceGoalTab/CompetenceItem.js +0 -108
  202. package/es/CompetenceGoalTab/CoreElementItem.js +0 -44
  203. package/es/CompetenceGoalTab/SearchButton.js +0 -43
  204. package/es/CompetenceGoalTab/index.js +0 -10
  205. package/es/CompetenceGoalTab/styles.js +0 -57
  206. package/es/Filter/FilterButtons.js +0 -185
  207. package/es/Filter/FilterCarousel.js +0 -166
  208. package/es/Filter/ToggleItem.js +0 -68
  209. package/es/Filter/index.js +0 -10
  210. package/es/Frontpage/FrontpageAllSubjects.js +0 -254
  211. package/es/LearningPaths/LearningPathContent.js +0 -25
  212. package/es/LearningPaths/LearningPathInformation.js +0 -74
  213. package/es/LearningPaths/LearningPathLastStepNavigation.js +0 -65
  214. package/es/LearningPaths/LearningPathMenu.js +0 -103
  215. package/es/LearningPaths/LearningPathMenuAside.js +0 -62
  216. package/es/LearningPaths/LearningPathMenuContent.js +0 -109
  217. package/es/LearningPaths/LearningPathMenuIntro.js +0 -72
  218. package/es/LearningPaths/LearningPathMenuModalWrapper.js +0 -63
  219. package/es/LearningPaths/LearningPathMobileHeader.js +0 -35
  220. package/es/LearningPaths/LearningPathMobileStepInfo.js +0 -34
  221. package/es/LearningPaths/LearningPathSticky.js +0 -74
  222. package/es/LearningPaths/LearningPathWrapper.js +0 -27
  223. package/es/LearningPaths/index.js +0 -18
  224. package/es/MyNdla/Resource/FolderInput.js +0 -94
  225. package/es/NDLAFilm/AllMoviesAlphabetically.js +0 -127
  226. package/es/NDLAFilm/FilmContentCard.js +0 -93
  227. package/es/NDLAFilm/FilmContentCardTags.js +0 -44
  228. package/es/NDLAFilm/FilmMovieList.js +0 -52
  229. package/es/NDLAFilm/FilmMovieSearch.js +0 -106
  230. package/es/NDLAFilm/FilmSlideshow.js +0 -138
  231. package/es/NDLAFilm/MovieGrid.js +0 -54
  232. package/es/NDLAFilm/VisualElement.js +0 -48
  233. package/es/NDLAFilm/filmStyles.js +0 -31
  234. package/es/NDLAFilm/index.js +0 -14
  235. package/es/NDLAFilm/isLetter.js +0 -13
  236. package/es/NDLAFilm/types.js +0 -1
  237. package/es/Navigation/NavigationBox.js +0 -187
  238. package/es/Navigation/index.js +0 -10
  239. package/es/NoContentBox/NoContentBox.js +0 -31
  240. package/es/NoContentBox/index.js +0 -10
  241. package/es/Programme/Programme.js +0 -104
  242. package/es/Programme/ProgrammeSubjects.js +0 -60
  243. package/es/Programme/index.js +0 -12
  244. package/es/ResourceGroup/ResourceGroup.js +0 -46
  245. package/es/ResourceGroup/ResourceItem.js +0 -196
  246. package/es/ResourceGroup/ResourceList.js +0 -57
  247. package/es/ResourceGroup/index.js +0 -10
  248. package/es/ResourcesWrapper/ResourcesTopicTitle.js +0 -160
  249. package/es/ResourcesWrapper/ResourcesWrapper.js +0 -27
  250. package/es/ResourcesWrapper/index.js +0 -11
  251. package/es/SearchTypeResult/ActiveFilterContent.js +0 -53
  252. package/es/SearchTypeResult/ActiveFilters.js +0 -124
  253. package/es/SearchTypeResult/PopupFilter.js +0 -133
  254. package/es/SearchTypeResult/ResultNavigation.js +0 -75
  255. package/es/SearchTypeResult/SearchFieldHeader.js +0 -103
  256. package/es/SearchTypeResult/SearchFilterContent.js +0 -59
  257. package/es/SearchTypeResult/SearchHeader.js +0 -160
  258. package/es/SearchTypeResult/SearchItem.js +0 -97
  259. package/es/SearchTypeResult/SearchItemList.js +0 -142
  260. package/es/SearchTypeResult/SearchItems.js +0 -60
  261. package/es/SearchTypeResult/SearchSubjectItem.js +0 -62
  262. package/es/SearchTypeResult/SearchSubjectResult.js +0 -34
  263. package/es/SearchTypeResult/SearchTypeHeader.js +0 -118
  264. package/es/SearchTypeResult/SearchTypeResult.js +0 -55
  265. package/es/SearchTypeResult/SearchViewType.js +0 -90
  266. package/es/SearchTypeResult/components/ItemContexts.js +0 -122
  267. package/es/SearchTypeResult/components/ItemResourceHeader.js +0 -96
  268. package/es/SearchTypeResult/components/ItemTopicHeader.js +0 -66
  269. package/es/SearchTypeResult/components/SubjectFilters.js +0 -130
  270. package/es/SearchTypeResult/index.js +0 -14
  271. package/es/Subject/SubjectBanner.js +0 -30
  272. package/es/Subject/index.js +0 -9
  273. package/es/ToolboxPage/ToolboxInfo.js +0 -43
  274. package/es/ToolboxPage/index.js +0 -10
  275. package/es/Topic/Loader.js +0 -107
  276. package/es/Topic/Topic.js +0 -221
  277. package/es/Topic/index.js +0 -10
  278. package/es/locale/LocaleProvider.js +0 -38
  279. package/lib/Article/ArticleAccessMessage.d.ts +0 -12
  280. package/lib/Article/ArticleAccessMessage.js +0 -50
  281. package/lib/Aside/Aside.d.ts +0 -15
  282. package/lib/Aside/Aside.js +0 -80
  283. package/lib/Aside/index.d.ts +0 -9
  284. package/lib/Aside/index.js +0 -16
  285. package/lib/BannerCard/BannerCard.d.ts +0 -29
  286. package/lib/BannerCard/BannerCard.js +0 -92
  287. package/lib/BannerCard/index.d.ts +0 -9
  288. package/lib/BannerCard/index.js +0 -13
  289. package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +0 -14
  290. package/lib/Breadcrumb/HeaderBreadcrumb.js +0 -64
  291. package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +0 -10
  292. package/lib/CompetenceGoalTab/CompetenceGoalItem.js +0 -49
  293. package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +0 -14
  294. package/lib/CompetenceGoalTab/CompetenceGoalTab.js +0 -82
  295. package/lib/CompetenceGoalTab/CompetenceItem.d.ts +0 -30
  296. package/lib/CompetenceGoalTab/CompetenceItem.js +0 -113
  297. package/lib/CompetenceGoalTab/CoreElementItem.d.ts +0 -10
  298. package/lib/CompetenceGoalTab/CoreElementItem.js +0 -51
  299. package/lib/CompetenceGoalTab/SearchButton.d.ts +0 -14
  300. package/lib/CompetenceGoalTab/SearchButton.js +0 -50
  301. package/lib/CompetenceGoalTab/index.d.ts +0 -9
  302. package/lib/CompetenceGoalTab/index.js +0 -16
  303. package/lib/CompetenceGoalTab/styles.d.ts +0 -28
  304. package/lib/CompetenceGoalTab/styles.js +0 -62
  305. package/lib/Filter/FilterButtons.d.ts +0 -16
  306. package/lib/Filter/FilterButtons.js +0 -192
  307. package/lib/Filter/FilterCarousel.d.ts +0 -13
  308. package/lib/Filter/FilterCarousel.js +0 -171
  309. package/lib/Filter/ToggleItem.d.ts +0 -21
  310. package/lib/Filter/ToggleItem.js +0 -75
  311. package/lib/Filter/index.d.ts +0 -9
  312. package/lib/Filter/index.js +0 -20
  313. package/lib/Frontpage/FrontpageAllSubjects.d.ts +0 -27
  314. package/lib/Frontpage/FrontpageAllSubjects.js +0 -259
  315. package/lib/LearningPaths/LearningPathContent.d.ts +0 -13
  316. package/lib/LearningPaths/LearningPathContent.js +0 -33
  317. package/lib/LearningPaths/LearningPathInformation.d.ts +0 -18
  318. package/lib/LearningPaths/LearningPathInformation.js +0 -80
  319. package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +0 -22
  320. package/lib/LearningPaths/LearningPathLastStepNavigation.js +0 -72
  321. package/lib/LearningPaths/LearningPathMenu.d.ts +0 -38
  322. package/lib/LearningPaths/LearningPathMenu.js +0 -110
  323. package/lib/LearningPaths/LearningPathMenuAside.d.ts +0 -24
  324. package/lib/LearningPaths/LearningPathMenuAside.js +0 -69
  325. package/lib/LearningPaths/LearningPathMenuContent.d.ts +0 -22
  326. package/lib/LearningPaths/LearningPathMenuContent.js +0 -116
  327. package/lib/LearningPaths/LearningPathMenuIntro.d.ts +0 -17
  328. package/lib/LearningPaths/LearningPathMenuIntro.js +0 -77
  329. package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +0 -14
  330. package/lib/LearningPaths/LearningPathMenuModalWrapper.js +0 -70
  331. package/lib/LearningPaths/LearningPathMobileHeader.d.ts +0 -9
  332. package/lib/LearningPaths/LearningPathMobileHeader.js +0 -42
  333. package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +0 -13
  334. package/lib/LearningPaths/LearningPathMobileStepInfo.js +0 -41
  335. package/lib/LearningPaths/LearningPathSticky.d.ts +0 -22
  336. package/lib/LearningPaths/LearningPathSticky.js +0 -84
  337. package/lib/LearningPaths/LearningPathWrapper.d.ts +0 -14
  338. package/lib/LearningPaths/LearningPathWrapper.js +0 -35
  339. package/lib/LearningPaths/index.d.ts +0 -17
  340. package/lib/LearningPaths/index.js +0 -74
  341. package/lib/MyNdla/Resource/FolderInput.d.ts +0 -19
  342. package/lib/MyNdla/Resource/FolderInput.js +0 -101
  343. package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +0 -13
  344. package/lib/NDLAFilm/AllMoviesAlphabetically.js +0 -134
  345. package/lib/NDLAFilm/FilmContentCard.d.ts +0 -19
  346. package/lib/NDLAFilm/FilmContentCard.js +0 -98
  347. package/lib/NDLAFilm/FilmContentCardTags.d.ts +0 -15
  348. package/lib/NDLAFilm/FilmContentCardTags.js +0 -51
  349. package/lib/NDLAFilm/FilmMovieList.d.ts +0 -17
  350. package/lib/NDLAFilm/FilmMovieList.js +0 -59
  351. package/lib/NDLAFilm/FilmMovieSearch.d.ts +0 -21
  352. package/lib/NDLAFilm/FilmMovieSearch.js +0 -113
  353. package/lib/NDLAFilm/FilmSlideshow.d.ts +0 -13
  354. package/lib/NDLAFilm/FilmSlideshow.js +0 -143
  355. package/lib/NDLAFilm/MovieGrid.d.ts +0 -17
  356. package/lib/NDLAFilm/MovieGrid.js +0 -61
  357. package/lib/NDLAFilm/VisualElement.d.ts +0 -16
  358. package/lib/NDLAFilm/VisualElement.js +0 -53
  359. package/lib/NDLAFilm/filmStyles.d.ts +0 -17
  360. package/lib/NDLAFilm/filmStyles.js +0 -39
  361. package/lib/NDLAFilm/index.d.ts +0 -13
  362. package/lib/NDLAFilm/index.js +0 -41
  363. package/lib/NDLAFilm/isLetter.d.ts +0 -8
  364. package/lib/NDLAFilm/isLetter.js +0 -20
  365. package/lib/NDLAFilm/types.d.ts +0 -22
  366. package/lib/NDLAFilm/types.js +0 -5
  367. package/lib/Navigation/NavigationBox.d.ts +0 -30
  368. package/lib/Navigation/NavigationBox.js +0 -193
  369. package/lib/Navigation/index.js +0 -13
  370. package/lib/NoContentBox/NoContentBox.d.ts +0 -14
  371. package/lib/NoContentBox/NoContentBox.js +0 -38
  372. package/lib/NoContentBox/index.d.ts +0 -9
  373. package/lib/NoContentBox/index.js +0 -16
  374. package/lib/Programme/Programme.d.ts +0 -16
  375. package/lib/Programme/Programme.js +0 -112
  376. package/lib/Programme/ProgrammeSubjects.d.ts +0 -26
  377. package/lib/Programme/ProgrammeSubjects.js +0 -67
  378. package/lib/Programme/index.d.ts +0 -11
  379. package/lib/Programme/index.js +0 -23
  380. package/lib/ResourceGroup/ResourceGroup.d.ts +0 -18
  381. package/lib/ResourceGroup/ResourceGroup.js +0 -53
  382. package/lib/ResourceGroup/ResourceItem.d.ts +0 -22
  383. package/lib/ResourceGroup/ResourceItem.js +0 -203
  384. package/lib/ResourceGroup/ResourceList.d.ts +0 -19
  385. package/lib/ResourceGroup/ResourceList.js +0 -64
  386. package/lib/ResourceGroup/index.d.ts +0 -9
  387. package/lib/ResourceGroup/index.js +0 -16
  388. package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +0 -20
  389. package/lib/ResourcesWrapper/ResourcesTopicTitle.js +0 -165
  390. package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +0 -16
  391. package/lib/ResourcesWrapper/ResourcesWrapper.js +0 -34
  392. package/lib/ResourcesWrapper/index.d.ts +0 -10
  393. package/lib/ResourcesWrapper/index.js +0 -23
  394. package/lib/SearchTypeResult/ActiveFilterContent.d.ts +0 -23
  395. package/lib/SearchTypeResult/ActiveFilterContent.js +0 -58
  396. package/lib/SearchTypeResult/ActiveFilters.d.ts +0 -18
  397. package/lib/SearchTypeResult/ActiveFilters.js +0 -131
  398. package/lib/SearchTypeResult/PopupFilter.d.ts +0 -26
  399. package/lib/SearchTypeResult/PopupFilter.js +0 -138
  400. package/lib/SearchTypeResult/ResultNavigation.d.ts +0 -18
  401. package/lib/SearchTypeResult/ResultNavigation.js +0 -82
  402. package/lib/SearchTypeResult/SearchFieldHeader.d.ts +0 -17
  403. package/lib/SearchTypeResult/SearchFieldHeader.js +0 -109
  404. package/lib/SearchTypeResult/SearchFilterContent.d.ts +0 -16
  405. package/lib/SearchTypeResult/SearchFilterContent.js +0 -64
  406. package/lib/SearchTypeResult/SearchHeader.d.ts +0 -26
  407. package/lib/SearchTypeResult/SearchHeader.js +0 -166
  408. package/lib/SearchTypeResult/SearchItem.d.ts +0 -30
  409. package/lib/SearchTypeResult/SearchItem.js +0 -104
  410. package/lib/SearchTypeResult/SearchItemList.d.ts +0 -10
  411. package/lib/SearchTypeResult/SearchItemList.js +0 -147
  412. package/lib/SearchTypeResult/SearchItems.d.ts +0 -17
  413. package/lib/SearchTypeResult/SearchItems.js +0 -65
  414. package/lib/SearchTypeResult/SearchSubjectItem.d.ts +0 -20
  415. package/lib/SearchTypeResult/SearchSubjectItem.js +0 -67
  416. package/lib/SearchTypeResult/SearchSubjectResult.d.ts +0 -13
  417. package/lib/SearchTypeResult/SearchSubjectResult.js +0 -41
  418. package/lib/SearchTypeResult/SearchTypeHeader.d.ts +0 -22
  419. package/lib/SearchTypeResult/SearchTypeHeader.js +0 -123
  420. package/lib/SearchTypeResult/SearchTypeResult.d.ts +0 -26
  421. package/lib/SearchTypeResult/SearchTypeResult.js +0 -62
  422. package/lib/SearchTypeResult/SearchViewType.d.ts +0 -13
  423. package/lib/SearchTypeResult/SearchViewType.js +0 -95
  424. package/lib/SearchTypeResult/components/ItemContexts.d.ts +0 -19
  425. package/lib/SearchTypeResult/components/ItemContexts.js +0 -127
  426. package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +0 -16
  427. package/lib/SearchTypeResult/components/ItemResourceHeader.js +0 -101
  428. package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +0 -17
  429. package/lib/SearchTypeResult/components/ItemTopicHeader.js +0 -71
  430. package/lib/SearchTypeResult/components/SubjectFilters.d.ts +0 -32
  431. package/lib/SearchTypeResult/components/SubjectFilters.js +0 -135
  432. package/lib/SearchTypeResult/index.d.ts +0 -14
  433. package/lib/SearchTypeResult/index.js +0 -41
  434. package/lib/Subject/SubjectBanner.d.ts +0 -14
  435. package/lib/Subject/SubjectBanner.js +0 -37
  436. package/lib/Subject/index.d.ts +0 -8
  437. package/lib/Subject/index.js +0 -13
  438. package/lib/ToolboxPage/ToolboxInfo.d.ts +0 -18
  439. package/lib/ToolboxPage/ToolboxInfo.js +0 -49
  440. package/lib/ToolboxPage/index.d.ts +0 -9
  441. package/lib/ToolboxPage/index.js +0 -13
  442. package/lib/Topic/Loader.d.ts +0 -9
  443. package/lib/Topic/Loader.js +0 -114
  444. package/lib/Topic/Topic.d.ts +0 -34
  445. package/lib/Topic/Topic.js +0 -228
  446. package/lib/Topic/index.d.ts +0 -10
  447. package/lib/Topic/index.js +0 -16
  448. package/lib/locale/LocaleProvider.d.ts +0 -15
  449. package/lib/locale/LocaleProvider.js +0 -44
  450. package/src/Article/ArticleAccessMessage.tsx +0 -44
  451. package/src/Aside/Aside.tsx +0 -113
  452. package/src/Aside/index.ts +0 -11
  453. package/src/BannerCard/BannerCard.tsx +0 -99
  454. package/src/BannerCard/index.ts +0 -11
  455. package/src/Breadcrumb/HeaderBreadcrumb.tsx +0 -56
  456. package/src/CompetenceGoalTab/CompetenceGoalItem.tsx +0 -39
  457. package/src/CompetenceGoalTab/CompetenceGoalTab.tsx +0 -85
  458. package/src/CompetenceGoalTab/CompetenceItem.tsx +0 -130
  459. package/src/CompetenceGoalTab/CoreElementItem.tsx +0 -39
  460. package/src/CompetenceGoalTab/SearchButton.tsx +0 -50
  461. package/src/CompetenceGoalTab/index.ts +0 -10
  462. package/src/CompetenceGoalTab/styles.ts +0 -37
  463. package/src/Figure/component.figure.scss +0 -60
  464. package/src/Filter/FilterButtons.tsx +0 -199
  465. package/src/Filter/FilterCarousel.tsx +0 -172
  466. package/src/Filter/ToggleItem.tsx +0 -180
  467. package/src/Filter/index.ts +0 -10
  468. package/src/Frontpage/FrontpageAllSubjects.tsx +0 -231
  469. package/src/LearningPaths/LearningPathContent.tsx +0 -33
  470. package/src/LearningPaths/LearningPathInformation.tsx +0 -82
  471. package/src/LearningPaths/LearningPathLastStepNavigation.tsx +0 -89
  472. package/src/LearningPaths/LearningPathMenu.stories.tsx +0 -65
  473. package/src/LearningPaths/LearningPathMenu.tsx +0 -166
  474. package/src/LearningPaths/LearningPathMenuAside.tsx +0 -100
  475. package/src/LearningPaths/LearningPathMenuContent.tsx +0 -277
  476. package/src/LearningPaths/LearningPathMenuIntro.tsx +0 -126
  477. package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +0 -71
  478. package/src/LearningPaths/LearningPathMobileHeader.tsx +0 -37
  479. package/src/LearningPaths/LearningPathMobileStepInfo.tsx +0 -38
  480. package/src/LearningPaths/LearningPathSticky.tsx +0 -122
  481. package/src/LearningPaths/LearningPathWrapper.tsx +0 -36
  482. package/src/LearningPaths/index.ts +0 -19
  483. package/src/MyNdla/Resource/FolderInput.stories.tsx +0 -27
  484. package/src/MyNdla/Resource/FolderInput.tsx +0 -89
  485. package/src/NDLAFilm/AllMoviesAlphabetically.tsx +0 -160
  486. package/src/NDLAFilm/FilmContentCard.tsx +0 -138
  487. package/src/NDLAFilm/FilmContentCardTags.tsx +0 -57
  488. package/src/NDLAFilm/FilmMovieList.tsx +0 -54
  489. package/src/NDLAFilm/FilmMovieSearch.tsx +0 -135
  490. package/src/NDLAFilm/FilmSlideshow.tsx +0 -177
  491. package/src/NDLAFilm/MovieGrid.tsx +0 -86
  492. package/src/NDLAFilm/VisualElement.tsx +0 -38
  493. package/src/NDLAFilm/__tests__/isLetter-test.ts +0 -20
  494. package/src/NDLAFilm/filmStyles.ts +0 -49
  495. package/src/NDLAFilm/index.ts +0 -15
  496. package/src/NDLAFilm/isLetter.ts +0 -13
  497. package/src/NDLAFilm/types.ts +0 -24
  498. package/src/Navigation/NavigationBox.tsx +0 -252
  499. package/src/Navigation/index.ts +0 -11
  500. package/src/NoContentBox/NoContentBox.tsx +0 -32
  501. package/src/NoContentBox/index.ts +0 -11
  502. package/src/Programme/Programme.tsx +0 -101
  503. package/src/Programme/ProgrammeSubjects.tsx +0 -83
  504. package/src/Programme/index.ts +0 -13
  505. package/src/ResourceGroup/ResourceGroup.tsx +0 -65
  506. package/src/ResourceGroup/ResourceItem.stories.tsx +0 -101
  507. package/src/ResourceGroup/ResourceItem.tsx +0 -318
  508. package/src/ResourceGroup/ResourceList.tsx +0 -80
  509. package/src/ResourceGroup/index.ts +0 -11
  510. package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +0 -223
  511. package/src/ResourcesWrapper/ResourcesWrapper.tsx +0 -32
  512. package/src/ResourcesWrapper/index.ts +0 -13
  513. package/src/SearchTypeResult/ActiveFilterContent.tsx +0 -55
  514. package/src/SearchTypeResult/ActiveFilters.tsx +0 -163
  515. package/src/SearchTypeResult/PopupFilter.tsx +0 -149
  516. package/src/SearchTypeResult/ResultNavigation.tsx +0 -105
  517. package/src/SearchTypeResult/SearchFieldHeader.tsx +0 -129
  518. package/src/SearchTypeResult/SearchFilterContent.tsx +0 -61
  519. package/src/SearchTypeResult/SearchHeader.tsx +0 -180
  520. package/src/SearchTypeResult/SearchItem.tsx +0 -144
  521. package/src/SearchTypeResult/SearchItemList.tsx +0 -161
  522. package/src/SearchTypeResult/SearchItems.tsx +0 -72
  523. package/src/SearchTypeResult/SearchSubjectItem.tsx +0 -74
  524. package/src/SearchTypeResult/SearchSubjectResult.tsx +0 -58
  525. package/src/SearchTypeResult/SearchTypeHeader.tsx +0 -148
  526. package/src/SearchTypeResult/SearchTypeResult.tsx +0 -89
  527. package/src/SearchTypeResult/SearchViewType.tsx +0 -111
  528. package/src/SearchTypeResult/components/ItemContexts.tsx +0 -131
  529. package/src/SearchTypeResult/components/ItemResourceHeader.tsx +0 -130
  530. package/src/SearchTypeResult/components/ItemTopicHeader.tsx +0 -88
  531. package/src/SearchTypeResult/components/SubjectFilters.tsx +0 -149
  532. package/src/SearchTypeResult/index.ts +0 -17
  533. package/src/Subject/SubjectBanner.tsx +0 -39
  534. package/src/Subject/index.ts +0 -9
  535. package/src/ToolboxPage/ToolboxInfo.tsx +0 -42
  536. package/src/ToolboxPage/index.ts +0 -11
  537. package/src/Topic/Loader.tsx +0 -29
  538. package/src/Topic/Topic.tsx +0 -348
  539. package/src/Topic/index.ts +0 -13
  540. package/src/locale/LocaleProvider.tsx +0 -31
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import parse from "html-react-parser";
10
- import { ReactElement, ReactNode, useCallback, useMemo, useRef, useState } from "react";
10
+ import { ReactElement, ReactNode, forwardRef, useCallback, useMemo, useRef, useState } from "react";
11
11
  import { isMobile } from "react-device-detect";
12
12
  import { useTranslation } from "react-i18next";
13
13
  import styled from "@emotion/styled";
@@ -82,8 +82,8 @@ const StyledButton = styled.button`
82
82
  font-family: inherit;
83
83
  font-style: inherit;
84
84
  line-height: 1em;
85
- padding: 0 0 4px 0;
86
- margin-bottom: -4px;
85
+ padding: 0 0 ${spacing.xxsmall} 0;
86
+ margin-bottom: -${spacing.xxsmall};
87
87
  text-decoration: none;
88
88
  color: #000;
89
89
  position: relative;
@@ -102,7 +102,8 @@ export const ConceptEmbed = ({ embed, fullWidth, heartButton: HeartButton, lang,
102
102
  }, [embed]);
103
103
  if (embed.status === "error" && embed.embedData.type === "inline") {
104
104
  return <span>{embed.embedData.linkText}</span>;
105
- } else if (embed.status === "error") {
105
+ }
106
+ if (embed.status === "error") {
106
107
  return <EmbedErrorPlaceholder type="concept" />;
107
108
  }
108
109
 
@@ -129,7 +130,8 @@ export const ConceptEmbed = ({ embed, fullWidth, heartButton: HeartButton, lang,
129
130
  exampleLangs={embed.embedData.exampleLangs}
130
131
  />
131
132
  );
132
- } else if (embed.embedData.type === "inline") {
133
+ }
134
+ if (embed.embedData.type === "inline") {
133
135
  return (
134
136
  <InlineConcept
135
137
  title={concept.title}
@@ -148,25 +150,24 @@ export const ConceptEmbed = ({ embed, fullWidth, heartButton: HeartButton, lang,
148
150
  exampleLangs={embed.embedData.exampleLangs}
149
151
  />
150
152
  );
151
- } else {
152
- return (
153
- <ConceptNotionV2
154
- title={concept.title}
155
- content={parsedContent}
156
- copyright={concept.copyright}
157
- source={concept.source}
158
- visualElement={visualElement}
159
- heartButton={HeartButton}
160
- conceptHeartButton={HeartButton && <HeartButton embed={embed} />}
161
- conceptType={concept.conceptType}
162
- glossData={concept.glossData}
163
- lang={lang}
164
- exampleIds={embed.embedData.exampleIds}
165
- exampleLangs={embed.embedData.exampleLangs}
166
- showTitle={renderContext !== "embed"}
167
- />
168
- );
169
153
  }
154
+ return (
155
+ <ConceptNotionV2
156
+ title={concept.title}
157
+ content={parsedContent}
158
+ copyright={concept.copyright}
159
+ source={concept.source}
160
+ visualElement={visualElement}
161
+ heartButton={HeartButton}
162
+ conceptHeartButton={HeartButton && <HeartButton embed={embed} />}
163
+ conceptType={concept.conceptType}
164
+ glossData={concept.glossData}
165
+ lang={lang}
166
+ exampleIds={embed.embedData.exampleIds}
167
+ exampleLangs={embed.embedData.exampleLangs}
168
+ showTitle={renderContext !== "embed"}
169
+ />
170
+ );
170
171
  };
171
172
 
172
173
  interface InlineConceptProps extends ConceptNotionData {
@@ -214,86 +215,92 @@ const StyledAnchorSpan = styled.span`
214
215
  `;
215
216
 
216
217
  const getModalPosition = (anchor: HTMLElement) => {
217
- const article = anchor.closest(".c-article");
218
+ const article = anchor.closest("[data-ndla-article]");
218
219
  const articlePos = article?.getBoundingClientRect();
219
220
  const anchorPos = anchor.getBoundingClientRect();
220
221
  return anchorPos.top - (articlePos?.top || -window.scrollY) + 30; // add 30 so that position is under the word
221
222
  };
222
223
 
223
- export const InlineConcept = ({
224
- title,
225
- content,
226
- copyright,
227
- source,
228
- visualElement,
229
- linkText,
230
- heartButton,
231
- conceptHeartButton,
232
- glossData,
233
- conceptType,
234
- headerButtons,
235
- lang,
236
- exampleIds,
237
- exampleLangs,
238
- }: InlineConceptProps) => {
239
- const { t } = useTranslation();
240
- const anchorRef = useRef<HTMLDivElement>(null);
241
- const [modalPos, setModalPos] = useState(-9999);
224
+ export const InlineConcept = forwardRef<HTMLSpanElement, InlineConceptProps>(
225
+ (
226
+ {
227
+ title,
228
+ content,
229
+ copyright,
230
+ source,
231
+ visualElement,
232
+ linkText,
233
+ heartButton,
234
+ conceptHeartButton,
235
+ glossData,
236
+ conceptType,
237
+ headerButtons,
238
+ lang,
239
+ exampleIds,
240
+ exampleLangs,
241
+ ...rest
242
+ },
243
+ ref,
244
+ ) => {
245
+ const { t } = useTranslation();
246
+ const anchorRef = useRef<HTMLDivElement>(null);
247
+ const [modalPos, setModalPos] = useState(-9999);
242
248
 
243
- const onOpenChange = useCallback((open: boolean) => {
244
- if (open) {
245
- const anchor = anchorRef.current;
246
- if (anchor) {
247
- const top = getModalPosition(anchor);
248
- setModalPos(top);
249
+ const onOpenChange = useCallback((open: boolean) => {
250
+ if (open) {
251
+ const anchor = anchorRef.current;
252
+ if (anchor) {
253
+ const top = getModalPosition(anchor);
254
+ setModalPos(top);
255
+ }
256
+ } else {
257
+ setModalPos(-9999);
249
258
  }
250
- } else {
251
- setModalPos(-9999);
252
- }
253
- }, []);
259
+ }, []);
254
260
 
255
- return (
256
- <Root modal={isMobile} onOpenChange={onOpenChange}>
257
- <StyledAnchor ref={anchorRef} asChild>
258
- <StyledAnchorSpan contentEditable={false} />
259
- </StyledAnchor>
260
- <Trigger asChild type={undefined}>
261
- <NotionButton role={"button"} data-open={modalPos !== -9999} tabIndex={0}>
262
- {linkText}
263
- </NotionButton>
264
- </Trigger>
265
- <Portal container={(anchorRef.current?.closest(".c-article") as HTMLElement | null) || undefined}>
266
- <PopoverWrapper top={modalPos}>
267
- <Content avoidCollisions={false} side="bottom" asChild>
268
- <ConceptNotionV2
269
- title={title}
270
- content={content}
271
- copyright={copyright}
272
- source={source}
273
- visualElement={visualElement}
274
- inPopover
275
- heartButton={heartButton}
276
- headerButtons={headerButtons}
277
- conceptHeartButton={conceptHeartButton}
278
- lang={lang}
279
- closeButton={
280
- <Close asChild>
281
- <IconButtonV2 aria-label={t("close")} variant="ghost">
282
- <Cross />
283
- </IconButtonV2>
284
- </Close>
285
- }
286
- conceptType={conceptType}
287
- glossData={glossData}
288
- exampleIds={exampleIds}
289
- exampleLangs={exampleLangs}
290
- />
291
- </Content>
292
- </PopoverWrapper>
293
- </Portal>
294
- </Root>
295
- );
296
- };
261
+ return (
262
+ <Root modal={isMobile} onOpenChange={onOpenChange}>
263
+ <StyledAnchor ref={anchorRef} asChild>
264
+ <StyledAnchorSpan contentEditable={false} />
265
+ </StyledAnchor>
266
+ <Trigger asChild type={undefined}>
267
+ <NotionButton role="button" data-open={modalPos !== -9999} tabIndex={0} ref={ref} {...rest}>
268
+ {linkText}
269
+ </NotionButton>
270
+ </Trigger>
271
+ <Portal container={(anchorRef.current?.closest("[data-ndla-article]") as HTMLElement | null) || undefined}>
272
+ <PopoverWrapper top={modalPos}>
273
+ <Content avoidCollisions={false} side="bottom" asChild>
274
+ <ConceptNotionV2
275
+ title={title}
276
+ content={content}
277
+ copyright={copyright}
278
+ source={source}
279
+ visualElement={visualElement}
280
+ inPopover
281
+ heartButton={heartButton}
282
+ headerButtons={headerButtons}
283
+ conceptHeartButton={conceptHeartButton}
284
+ lang={lang}
285
+ closeButton={
286
+ <Close asChild>
287
+ <IconButtonV2 aria-label={t("close")} variant="ghost">
288
+ <Cross />
289
+ </IconButtonV2>
290
+ </Close>
291
+ }
292
+ conceptType={conceptType}
293
+ glossData={glossData}
294
+ exampleIds={exampleIds}
295
+ exampleLangs={exampleLangs}
296
+ />
297
+ </Content>
298
+ </PopoverWrapper>
299
+ </Portal>
300
+ </Root>
301
+ );
302
+ },
303
+ );
297
304
 
298
305
  interface ConceptProps extends ConceptNotionData {
299
306
  fullWidth?: boolean;
@@ -380,7 +387,7 @@ export const BlockConcept = ({
380
387
  <Portal
381
388
  container={
382
389
  typeof document !== "undefined"
383
- ? (document.querySelector(".c-article") as HTMLElement | null) || undefined
390
+ ? (document.querySelector("[data-ndla-article]") as HTMLElement | null) || undefined
384
391
  : undefined
385
392
  }
386
393
  >
@@ -9,6 +9,8 @@
9
9
  import { Meta, StoryObj } from "@storybook/react";
10
10
  import { OembedEmbedData, OembedData } from "@ndla/types-embed";
11
11
  import ExternalEmbed from "./ExternalEmbed";
12
+ import { ArticleWrapper } from "../Article";
13
+ import { OneColumn } from "../Layout";
12
14
 
13
15
  const embedData: OembedEmbedData = {
14
16
  resource: "external",
@@ -53,15 +55,15 @@ const meta: Meta<typeof ExternalEmbed> = {
53
55
  tags: ["autodocs"],
54
56
  decorators: [
55
57
  (Story) => (
56
- <div className="o-wrapper">
57
- <article className="c-article c-article--clean">
58
+ <OneColumn>
59
+ <ArticleWrapper modifier="clean">
58
60
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
59
61
  <section>
60
62
  <Story />
61
63
  </section>
62
64
  </section>
63
- </article>
64
- </div>
65
+ </ArticleWrapper>
66
+ </OneColumn>
65
67
  ),
66
68
  ],
67
69
  };
@@ -30,9 +30,9 @@ const ExternalEmbed = ({ embed, isConcept }: Props) => {
30
30
  const figRef = useRef<HTMLElement>(null);
31
31
 
32
32
  useEffect(() => {
33
- const iframe = figRef.current?.querySelector(`iframe`);
33
+ const iframe = figRef.current?.querySelector("iframe");
34
34
  if (iframe) {
35
- const [width, height] = [parseInt(iframe.width), parseInt(iframe.height)];
35
+ const [width, height] = [Number.parseInt(iframe.width), Number.parseInt(iframe.height)];
36
36
  iframe.style.aspectRatio = `${width ? width : 16}/${height ? height : 9}`;
37
37
  iframe.width = "";
38
38
  iframe.height = "";
@@ -9,6 +9,8 @@
9
9
  import { Meta, StoryObj } from "@storybook/react";
10
10
  import { H5pEmbedData, H5pData } from "@ndla/types-embed";
11
11
  import H5pEmbed from "./H5pEmbed";
12
+ import { ArticleWrapper } from "../Article";
13
+ import { OneColumn } from "../Layout";
12
14
 
13
15
  const embedData: H5pEmbedData = {
14
16
  resource: "h5p",
@@ -50,15 +52,15 @@ const meta: Meta<typeof H5pEmbed> = {
50
52
  tags: ["autodocs"],
51
53
  decorators: [
52
54
  (Story) => (
53
- <div className="o-wrapper">
54
- <article className="c-article c-article--clean">
55
+ <OneColumn>
56
+ <ArticleWrapper modifier="clean">
55
57
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
56
58
  <section>
57
59
  <Story />
58
60
  </section>
59
61
  </section>
60
- </article>
61
- </div>
62
+ </ArticleWrapper>
63
+ </OneColumn>
62
64
  ),
63
65
  ],
64
66
  };
@@ -9,6 +9,8 @@
9
9
  import { Meta, StoryObj } from "@storybook/react";
10
10
  import { IframeData, IframeEmbedData } from "@ndla/types-embed";
11
11
  import IframeEmbed from "./IframeEmbed";
12
+ import { ArticleWrapper } from "../Article";
13
+ import { OneColumn } from "../Layout";
12
14
 
13
15
  const embedData: IframeEmbedData = {
14
16
  width: "708px",
@@ -25,15 +27,15 @@ const meta: Meta<typeof IframeEmbed> = {
25
27
  tags: ["autodocs"],
26
28
  decorators: [
27
29
  (Story) => (
28
- <div className="o-wrapper">
29
- <article className="c-article c-article--clean">
30
+ <OneColumn>
31
+ <ArticleWrapper modifier="clean">
30
32
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
31
33
  <section>
32
34
  <Story />
33
35
  </section>
34
36
  </section>
35
- </article>
36
- </div>
37
+ </ArticleWrapper>
38
+ </OneColumn>
37
39
  ),
38
40
  ],
39
41
  };
@@ -25,7 +25,7 @@ const IframeEmbed = ({ embed, isConcept }: Props) => {
25
25
  useEffect(() => {
26
26
  const iframe = iframeRef.current;
27
27
  if (iframe) {
28
- const [width, height] = [parseInt(iframe.width), parseInt(iframe.height)];
28
+ const [width, height] = [Number.parseInt(iframe.width), Number.parseInt(iframe.height)];
29
29
  iframe.style.aspectRatio = `${width ? width : 16}/${height ? height : 9}`;
30
30
  iframe.width = "";
31
31
  iframe.height = "";
@@ -12,6 +12,8 @@ import { IImageMetaInformationV3 } from "@ndla/types-backend/image-api";
12
12
  import { ImageEmbedData } from "@ndla/types-embed";
13
13
  import ImageEmbed from "./ImageEmbed";
14
14
  import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
15
+ import { ArticleWrapper } from "../Article";
16
+ import { OneColumn } from "../Layout";
15
17
 
16
18
  const embedData: ImageEmbedData = {
17
19
  resource: "image",
@@ -92,15 +94,15 @@ const meta: Meta<typeof ImageEmbed> = {
92
94
  },
93
95
  decorators: [
94
96
  (Story) => (
95
- <div className="o-wrapper">
96
- <article className="c-article c-article--clean">
97
+ <OneColumn>
98
+ <ArticleWrapper modifier="clean">
97
99
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
98
100
  <section>
99
101
  <Story />
100
102
  </section>
101
103
  </section>
102
- </article>
103
- </div>
104
+ </ArticleWrapper>
105
+ </OneColumn>
104
106
  ),
105
107
  ],
106
108
  };
@@ -82,20 +82,25 @@ const getSizes = (size?: string, align?: string) => {
82
82
  };
83
83
 
84
84
  export const getFocalPoint = (data: ImageEmbedData) => {
85
- const focalX = parseFloat(data.focalX ?? "");
86
- const focalY = parseFloat(data.focalY ?? "");
87
- if (!isNaN(focalX) && !isNaN(focalY)) {
85
+ const focalX = Number.parseFloat(data.focalX ?? "");
86
+ const focalY = Number.parseFloat(data.focalY ?? "");
87
+ if (!Number.isNaN(focalX) && !Number.isNaN(focalY)) {
88
88
  return { x: focalX, y: focalY };
89
89
  }
90
90
  return undefined;
91
91
  };
92
92
 
93
93
  export const getCrop = (data: ImageEmbedData) => {
94
- const lowerRightX = parseFloat(data.lowerRightX ?? "");
95
- const lowerRightY = parseFloat(data.lowerRightY ?? "");
96
- const upperLeftX = parseFloat(data.upperLeftX ?? "");
97
- const upperLeftY = parseFloat(data.upperLeftY ?? "");
98
- if (!isNaN(lowerRightX) && !isNaN(lowerRightY) && !isNaN(upperLeftX) && !isNaN(upperLeftY)) {
94
+ const lowerRightX = Number.parseFloat(data.lowerRightX ?? "");
95
+ const lowerRightY = Number.parseFloat(data.lowerRightY ?? "");
96
+ const upperLeftX = Number.parseFloat(data.upperLeftX ?? "");
97
+ const upperLeftY = Number.parseFloat(data.upperLeftY ?? "");
98
+ if (
99
+ !Number.isNaN(lowerRightX) &&
100
+ !Number.isNaN(lowerRightY) &&
101
+ !Number.isNaN(upperLeftX) &&
102
+ !Number.isNaN(upperLeftY)
103
+ ) {
99
104
  return {
100
105
  startX: lowerRightX,
101
106
  startY: lowerRightY,
@@ -142,7 +147,8 @@ const ImageEmbed = ({
142
147
  const parsedDescription = useMemo(() => {
143
148
  if (embed.embedData.caption || renderContext === "article") {
144
149
  return embed.embedData.caption ? parse(embed.embedData.caption) : undefined;
145
- } else if (embed.status === "success" && embed.data.caption.caption) {
150
+ }
151
+ if (embed.status === "success" && embed.data.caption.caption) {
146
152
  return parse(embed.data.caption.caption);
147
153
  }
148
154
  }, [embed, renderContext]);
@@ -286,7 +292,8 @@ const ExpandButton = ({ size, expanded, bylineHidden, onExpand, onHideByline }:
286
292
  {expanded ? <ArrowCollapse /> : <ExpandTwoArrows />}
287
293
  </button>
288
294
  );
289
- } else if (hideByline(size)) {
295
+ }
296
+ if (hideByline(size)) {
290
297
  return (
291
298
  <BylineButton
292
299
  type="button"
@@ -297,7 +304,8 @@ const ExpandButton = ({ size, expanded, bylineHidden, onExpand, onHideByline }:
297
304
  {bylineHidden ? <ChevronDown /> : <ChevronUp />}
298
305
  </BylineButton>
299
306
  );
300
- } else return null;
307
+ }
308
+ return null;
301
309
  };
302
310
 
303
311
  export default ImageEmbed;
@@ -9,6 +9,8 @@
9
9
  import { Meta, StoryObj } from "@storybook/react";
10
10
  import { RelatedContentMetaData } from "@ndla/types-embed";
11
11
  import RelatedContentEmbed from "./RelatedContentEmbed";
12
+ import { ArticleWrapper } from "../Article";
13
+ import { OneColumn } from "../Layout";
12
14
  import RelatedArticleList from "../RelatedArticleList";
13
15
 
14
16
  const filmResourceMeta: RelatedContentMetaData = {
@@ -365,15 +367,15 @@ const meta: Meta<typeof RelatedContentEmbed> = {
365
367
  tags: ["autodocs"],
366
368
  decorators: [
367
369
  (Story) => (
368
- <div className="o-wrapper">
369
- <article className="c-article c-article--clean">
370
+ <OneColumn>
371
+ <ArticleWrapper modifier="clean">
370
372
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
371
373
  <section>
372
374
  <Story />
373
375
  </section>
374
376
  </section>
375
- </article>
376
- </div>
377
+ </ArticleWrapper>
378
+ </OneColumn>
377
379
  ),
378
380
  ],
379
381
  };
@@ -42,7 +42,8 @@ const RelatedContentEmbed = ({ embed, isOembed, subject, ndlaFrontendDomain }: P
42
42
  type={type}
43
43
  />
44
44
  );
45
- } else if (typeof embedData.url === "string") {
45
+ }
46
+ if (typeof embedData.url === "string") {
46
47
  return (
47
48
  <RelatedArticle
48
49
  title={embedData.title ?? ""}
@@ -56,9 +57,8 @@ const RelatedContentEmbed = ({ embed, isOembed, subject, ndlaFrontendDomain }: P
56
57
  }`}
57
58
  />
58
59
  );
59
- } else {
60
- return <></>;
61
60
  }
61
+ return <></>;
62
62
  };
63
63
 
64
64
  export default RelatedContentEmbed;
@@ -11,8 +11,11 @@ import { UuDisclaimerEmbedData } from "@ndla/types-embed";
11
11
  import H5pEmbed from "./H5pEmbed";
12
12
  import IframeEmbed from "./IframeEmbed";
13
13
  import UuDisclaimerEmbed from "./UuDisclaimerEmbed";
14
+ import { ArticleWrapper } from "../Article";
15
+ import CopyParagraphButton from "../CopyParagraphButton";
14
16
  import FactBox from "../FactBox";
15
17
  import FramedContent from "../FramedContent";
18
+ import { OneColumn } from "../Layout";
16
19
 
17
20
  const embedData: UuDisclaimerEmbedData = {
18
21
  resource: "uu-disclaimer",
@@ -26,15 +29,15 @@ const meta: Meta<typeof UuDisclaimerEmbed> = {
26
29
  tags: ["autodocs"],
27
30
  decorators: [
28
31
  (Story) => (
29
- <div className="o-wrapper">
30
- <article className="c-article c-article--clean">
32
+ <OneColumn>
33
+ <ArticleWrapper modifier="clean">
31
34
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
32
35
  <section>
33
36
  <Story />
34
37
  </section>
35
38
  </section>
36
- </article>
37
- </div>
39
+ </ArticleWrapper>
40
+ </OneColumn>
38
41
  ),
39
42
  ],
40
43
  };
@@ -180,3 +183,19 @@ export const WithFactBox: StoryObj<typeof UuDisclaimerEmbed> = {
180
183
  ),
181
184
  },
182
185
  };
186
+
187
+ export const WithCopyParagraphLink: StoryObj<typeof UuDisclaimerEmbed> = {
188
+ args: {
189
+ embed: {
190
+ resource: "uu-disclaimer",
191
+ status: "success",
192
+ embedData: embedData,
193
+ data: {},
194
+ },
195
+ children: (
196
+ <CopyParagraphButton copyText="Dette er en overskrift" lang="no">
197
+ <h2>Dette er en overskrift</h2>
198
+ </CopyParagraphButton>
199
+ ),
200
+ },
201
+ };
@@ -58,7 +58,7 @@ const UuDisclaimerEmbed = ({ embed, children }: Props) => {
58
58
 
59
59
  return (
60
60
  <DisclaimerWrapper role="region">
61
- <StyledMessageBox type="info">
61
+ <StyledMessageBox type="info" contentEditable={false}>
62
62
  <InformationOutline />
63
63
  <Disclaimer>
64
64
  {embedData.disclaimer}
@@ -95,6 +95,7 @@ const notionContentCss = css`
95
95
  }
96
96
  ${mq.range({ from: breakpoints.desktop })} {
97
97
  width: 720px;
98
+ max-width: 60vw;
98
99
  }
99
100
 
100
101
  ${mq.range({ until: breakpoints.tablet })} {