@ndla/ui 51.0.0 → 53.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 (558) hide show
  1. package/README.md +2 -2
  2. package/es/Article/Article.js +113 -120
  3. package/es/Article/ArticleHeaderWrapper.js +14 -20
  4. package/es/Article/ArticleParagraph.js +25 -0
  5. package/es/Article/index.js +1 -0
  6. package/es/AudioPlayer/AudioPlayer.js +13 -13
  7. package/es/AudioPlayer/Controls.js +22 -38
  8. package/es/Breadcrumb/Breadcrumb.js +2 -33
  9. package/es/Breadcrumb/BreadcrumbItem.js +16 -29
  10. package/es/Breadcrumb/index.js +0 -1
  11. package/es/CodeBlock/CodeBlock.js +115 -0
  12. package/es/CodeBlock/codeLanguageOptions.js +84 -0
  13. package/es/CodeBlock/index.js +10 -0
  14. package/es/CreatedBy/CreatedBy.js +4 -4
  15. package/es/Embed/BrightcoveEmbed.js +3 -3
  16. package/es/Embed/CodeEmbed.js +2 -2
  17. package/es/Embed/ConceptEmbed.js +37 -33
  18. package/es/Embed/ExternalEmbed.js +2 -2
  19. package/es/Embed/IframeEmbed.js +1 -1
  20. package/es/Embed/ImageEmbed.js +17 -14
  21. package/es/Embed/RelatedContentEmbed.js +3 -3
  22. package/es/Embed/UuDisclaimerEmbed.js +4 -3
  23. package/es/Embed/conceptComponents.js +10 -10
  24. package/es/Figure/Figure.js +32 -19
  25. package/es/FrontpageArticle/FrontpageArticle.js +3 -3
  26. package/es/Gloss/Gloss.js +12 -10
  27. package/es/Hero/Hero.js +1 -1
  28. package/es/Image/Image.js +3 -3
  29. package/es/LanguageSelector/LanguageSelector.js +5 -5
  30. package/es/Layout/LayoutItem.js +2 -1
  31. package/es/Layout/OneColumn.js +22 -28
  32. package/es/Layout/PageContainer.js +21 -17
  33. package/es/LicenseByline/LicenseLink.js +5 -6
  34. package/es/Messages/MessageBox.js +9 -7
  35. package/es/MyNdla/Resource/index.js +1 -2
  36. package/es/MyNdla/index.js +1 -2
  37. package/es/Notion/Notion.js +4 -4
  38. package/es/Resource/BlockResource.js +13 -15
  39. package/es/Resource/ListResource.js +13 -15
  40. package/es/Search/ContentTypeResult.js +4 -4
  41. package/es/Search/SearchResult.js +11 -11
  42. package/es/Search/SearchResultSleeve.js +16 -16
  43. package/es/TreeStructure/TreeStructure.js +6 -6
  44. package/es/all.css +1 -1
  45. package/es/index.js +5 -20
  46. package/es/locale/messages-en.js +15 -2
  47. package/es/locale/messages-nb.js +15 -2
  48. package/es/locale/messages-nn.js +16 -3
  49. package/es/locale/messages-se.js +14 -1
  50. package/es/locale/messages-sma.js +15 -2
  51. package/es/types.js +0 -9
  52. package/lib/Article/Article.d.ts +8 -11
  53. package/lib/Article/Article.js +111 -118
  54. package/lib/Article/ArticleHeaderWrapper.js +14 -20
  55. package/lib/Article/ArticleParagraph.d.ts +13 -0
  56. package/lib/Article/ArticleParagraph.js +32 -0
  57. package/lib/Article/index.d.ts +2 -0
  58. package/lib/Article/index.js +7 -0
  59. package/lib/AudioPlayer/AudioPlayer.js +13 -13
  60. package/lib/AudioPlayer/Controls.js +21 -37
  61. package/lib/Breadcrumb/Breadcrumb.d.ts +1 -2
  62. package/lib/Breadcrumb/Breadcrumb.js +2 -33
  63. package/lib/Breadcrumb/BreadcrumbItem.js +16 -29
  64. package/lib/Breadcrumb/index.d.ts +0 -1
  65. package/lib/Breadcrumb/index.js +0 -7
  66. package/lib/CodeBlock/CodeBlock.d.ts +18 -0
  67. package/lib/CodeBlock/CodeBlock.js +121 -0
  68. package/lib/{Navigation/index.d.ts → CodeBlock/codeLanguageOptions.d.ts} +5 -2
  69. package/lib/CodeBlock/codeLanguageOptions.js +90 -0
  70. package/lib/CodeBlock/index.d.ts +9 -0
  71. package/lib/CodeBlock/index.js +20 -0
  72. package/lib/CreatedBy/CreatedBy.js +4 -4
  73. package/lib/Embed/BrightcoveEmbed.js +3 -3
  74. package/lib/Embed/CodeEmbed.js +2 -2
  75. package/lib/Embed/ConceptEmbed.d.ts +1 -1
  76. package/lib/Embed/ConceptEmbed.js +36 -33
  77. package/lib/Embed/ExternalEmbed.js +2 -2
  78. package/lib/Embed/IframeEmbed.js +1 -1
  79. package/lib/Embed/ImageEmbed.js +17 -14
  80. package/lib/Embed/RelatedContentEmbed.js +3 -3
  81. package/lib/Embed/UuDisclaimerEmbed.js +4 -3
  82. package/lib/Embed/conceptComponents.js +10 -10
  83. package/lib/Figure/Figure.d.ts +2 -5
  84. package/lib/Figure/Figure.js +32 -23
  85. package/lib/FrontpageArticle/FrontpageArticle.js +3 -3
  86. package/lib/Gloss/Gloss.js +12 -10
  87. package/lib/Hero/Hero.js +1 -1
  88. package/lib/Image/Image.js +2 -2
  89. package/lib/LanguageSelector/LanguageSelector.js +5 -5
  90. package/lib/Layout/LayoutItem.js +2 -1
  91. package/lib/Layout/OneColumn.d.ts +3 -8
  92. package/lib/Layout/OneColumn.js +22 -30
  93. package/lib/Layout/PageContainer.d.ts +3 -7
  94. package/lib/Layout/PageContainer.js +21 -19
  95. package/lib/LicenseByline/LicenseLink.js +5 -6
  96. package/lib/Messages/MessageBox.d.ts +2 -1
  97. package/lib/Messages/MessageBox.js +9 -7
  98. package/lib/MyNdla/Resource/index.d.ts +1 -2
  99. package/lib/MyNdla/Resource/index.js +0 -7
  100. package/lib/MyNdla/index.d.ts +1 -2
  101. package/lib/MyNdla/index.js +0 -7
  102. package/lib/Notion/Notion.js +4 -4
  103. package/lib/Resource/BlockResource.js +13 -15
  104. package/lib/Resource/ListResource.js +13 -15
  105. package/lib/Search/ContentTypeResult.js +4 -4
  106. package/lib/Search/SearchResult.js +10 -10
  107. package/lib/Search/SearchResultSleeve.js +16 -16
  108. package/lib/TreeStructure/TreeStructure.js +6 -6
  109. package/lib/all.css +1 -1
  110. package/lib/index.d.ts +5 -20
  111. package/lib/index.js +17 -254
  112. package/lib/locale/messages-en.d.ts +13 -0
  113. package/lib/locale/messages-en.js +15 -2
  114. package/lib/locale/messages-nb.d.ts +13 -0
  115. package/lib/locale/messages-nb.js +15 -2
  116. package/lib/locale/messages-nn.d.ts +13 -0
  117. package/lib/locale/messages-nn.js +16 -3
  118. package/lib/locale/messages-se.d.ts +13 -0
  119. package/lib/locale/messages-se.js +14 -1
  120. package/lib/locale/messages-sma.d.ts +13 -0
  121. package/lib/locale/messages-sma.js +15 -2
  122. package/lib/types.d.ts +0 -51
  123. package/lib/types.js +1 -10
  124. package/package.json +16 -22
  125. package/src/Article/Article.tsx +179 -119
  126. package/src/Article/ArticleHeaderWrapper.tsx +17 -21
  127. package/src/Article/ArticleParagraph.tsx +22 -0
  128. package/src/Article/index.ts +4 -0
  129. package/src/AudioPlayer/AudioPlayer.tsx +2 -2
  130. package/src/AudioPlayer/Controls.tsx +5 -5
  131. package/src/Breadcrumb/Breadcrumb.stories.tsx +0 -4
  132. package/src/Breadcrumb/Breadcrumb.tsx +1 -38
  133. package/src/Breadcrumb/BreadcrumbItem.tsx +5 -19
  134. package/src/Breadcrumb/index.ts +0 -2
  135. package/src/CodeBlock/CodeBlock.stories.tsx +113 -0
  136. package/src/CodeBlock/CodeBlock.tsx +228 -0
  137. package/src/CodeBlock/codeLanguageOptions.ts +115 -0
  138. package/src/CodeBlock/index.ts +10 -0
  139. package/src/CreatedBy/CreatedBy.tsx +2 -2
  140. package/src/Embed/AudioEmbed.stories.tsx +6 -4
  141. package/src/Embed/BrightcoveEmbed.stories.tsx +6 -4
  142. package/src/Embed/BrightcoveEmbed.tsx +2 -2
  143. package/src/Embed/CodeEmbed.tsx +2 -2
  144. package/src/Embed/ConceptEmbed.stories.tsx +6 -4
  145. package/src/Embed/ConceptEmbed.tsx +103 -96
  146. package/src/Embed/ExternalEmbed.stories.tsx +6 -4
  147. package/src/Embed/ExternalEmbed.tsx +2 -2
  148. package/src/Embed/H5pEmbed.stories.tsx +6 -4
  149. package/src/Embed/IframeEmbed.stories.tsx +6 -4
  150. package/src/Embed/IframeEmbed.tsx +1 -1
  151. package/src/Embed/ImageEmbed.stories.tsx +6 -4
  152. package/src/Embed/ImageEmbed.tsx +19 -11
  153. package/src/Embed/RelatedContentEmbed.stories.tsx +6 -4
  154. package/src/Embed/RelatedContentEmbed.tsx +3 -3
  155. package/src/Embed/UuDisclaimerEmbed.stories.tsx +23 -4
  156. package/src/Embed/UuDisclaimerEmbed.tsx +1 -1
  157. package/src/Embed/conceptComponents.tsx +1 -0
  158. package/src/Figure/Figure.tsx +57 -18
  159. package/src/Footer/Footer.stories.tsx +1 -1
  160. package/src/FrontpageArticle/FrontpageArticle.tsx +3 -3
  161. package/src/Gloss/Gloss.tsx +4 -2
  162. package/src/Hero/Hero.tsx +1 -1
  163. package/src/Image/Image.tsx +2 -2
  164. package/src/LanguageSelector/LanguageSelector.tsx +1 -1
  165. package/src/Layout/LayoutItem.tsx +2 -1
  166. package/src/Layout/OneColumn.tsx +25 -35
  167. package/src/Layout/PageContainer.tsx +19 -23
  168. package/src/LicenseByline/LicenseLink.tsx +1 -2
  169. package/src/Messages/MessageBox.tsx +3 -2
  170. package/src/MyNdla/Resource/index.ts +1 -2
  171. package/src/MyNdla/index.ts +1 -2
  172. package/src/Notion/Notion.tsx +2 -2
  173. package/src/Resource/BlockResource.tsx +4 -8
  174. package/src/Resource/ListResource.tsx +4 -6
  175. package/src/Search/ContentTypeResult.tsx +4 -4
  176. package/src/Search/SearchResult.tsx +2 -2
  177. package/src/Search/SearchResultSleeve.tsx +7 -9
  178. package/src/Table/Table.stories.tsx +8 -8
  179. package/src/TreeStructure/TreeStructure.stories.tsx +85 -28
  180. package/src/TreeStructure/TreeStructure.tsx +1 -1
  181. package/src/all.scss +2 -3
  182. package/src/index.ts +7 -48
  183. package/src/locale/messages-en.ts +17 -1
  184. package/src/locale/messages-nb.ts +17 -1
  185. package/src/locale/messages-nn.ts +18 -2
  186. package/src/locale/messages-se.ts +16 -0
  187. package/src/locale/messages-sma.ts +17 -1
  188. package/src/types.ts +0 -62
  189. package/es/Article/ArticleAccessMessage.js +0 -43
  190. package/es/Article/ArticleNotions.js +0 -90
  191. package/es/Aside/Aside.js +0 -75
  192. package/es/Aside/index.js +0 -10
  193. package/es/BannerCard/BannerCard.js +0 -84
  194. package/es/BannerCard/index.js +0 -10
  195. package/es/Breadcrumb/HeaderBreadcrumb.js +0 -57
  196. package/es/CompetenceGoalTab/CompetenceGoalItem.js +0 -42
  197. package/es/CompetenceGoalTab/CompetenceGoalTab.js +0 -75
  198. package/es/CompetenceGoalTab/CompetenceItem.js +0 -108
  199. package/es/CompetenceGoalTab/CoreElementItem.js +0 -44
  200. package/es/CompetenceGoalTab/SearchButton.js +0 -43
  201. package/es/CompetenceGoalTab/index.js +0 -10
  202. package/es/CompetenceGoalTab/styles.js +0 -57
  203. package/es/Filter/FilterButtons.js +0 -185
  204. package/es/Filter/FilterCarousel.js +0 -166
  205. package/es/Filter/ToggleItem.js +0 -68
  206. package/es/Filter/index.js +0 -10
  207. package/es/Frontpage/FrontpageAllSubjects.js +0 -254
  208. package/es/LearningPaths/LearningPathContent.js +0 -25
  209. package/es/LearningPaths/LearningPathInformation.js +0 -74
  210. package/es/LearningPaths/LearningPathLastStepNavigation.js +0 -65
  211. package/es/LearningPaths/LearningPathMenu.js +0 -103
  212. package/es/LearningPaths/LearningPathMenuAside.js +0 -62
  213. package/es/LearningPaths/LearningPathMenuContent.js +0 -109
  214. package/es/LearningPaths/LearningPathMenuIntro.js +0 -72
  215. package/es/LearningPaths/LearningPathMenuModalWrapper.js +0 -63
  216. package/es/LearningPaths/LearningPathMobileHeader.js +0 -35
  217. package/es/LearningPaths/LearningPathMobileStepInfo.js +0 -34
  218. package/es/LearningPaths/LearningPathSticky.js +0 -74
  219. package/es/LearningPaths/LearningPathWrapper.js +0 -27
  220. package/es/LearningPaths/index.js +0 -18
  221. package/es/Masthead/Masthead.js +0 -62
  222. package/es/Masthead/SkipToMainContent.js +0 -30
  223. package/es/Masthead/index.js +0 -13
  224. package/es/Masthead/utils.js +0 -38
  225. package/es/MyNdla/Resource/FolderInput.js +0 -94
  226. package/es/NDLAFilm/AllMoviesAlphabetically.js +0 -127
  227. package/es/NDLAFilm/FilmContentCard.js +0 -93
  228. package/es/NDLAFilm/FilmContentCardTags.js +0 -44
  229. package/es/NDLAFilm/FilmMovieList.js +0 -52
  230. package/es/NDLAFilm/FilmMovieSearch.js +0 -106
  231. package/es/NDLAFilm/FilmSlideshow.js +0 -138
  232. package/es/NDLAFilm/MovieGrid.js +0 -54
  233. package/es/NDLAFilm/VisualElement.js +0 -48
  234. package/es/NDLAFilm/filmStyles.js +0 -31
  235. package/es/NDLAFilm/index.js +0 -14
  236. package/es/NDLAFilm/isLetter.js +0 -13
  237. package/es/NDLAFilm/types.js +0 -1
  238. package/es/Navigation/NavigationBox.js +0 -187
  239. package/es/Navigation/index.js +0 -10
  240. package/es/NoContentBox/NoContentBox.js +0 -31
  241. package/es/NoContentBox/index.js +0 -10
  242. package/es/Programme/Programme.js +0 -104
  243. package/es/Programme/ProgrammeSubjects.js +0 -60
  244. package/es/Programme/index.js +0 -12
  245. package/es/ResourceGroup/ResourceGroup.js +0 -46
  246. package/es/ResourceGroup/ResourceItem.js +0 -196
  247. package/es/ResourceGroup/ResourceList.js +0 -57
  248. package/es/ResourceGroup/index.js +0 -10
  249. package/es/ResourcesWrapper/ResourcesTopicTitle.js +0 -160
  250. package/es/ResourcesWrapper/ResourcesWrapper.js +0 -27
  251. package/es/ResourcesWrapper/index.js +0 -11
  252. package/es/SearchTypeResult/ActiveFilterContent.js +0 -53
  253. package/es/SearchTypeResult/ActiveFilters.js +0 -124
  254. package/es/SearchTypeResult/PopupFilter.js +0 -133
  255. package/es/SearchTypeResult/ResultNavigation.js +0 -75
  256. package/es/SearchTypeResult/SearchFieldHeader.js +0 -103
  257. package/es/SearchTypeResult/SearchFilterContent.js +0 -59
  258. package/es/SearchTypeResult/SearchHeader.js +0 -160
  259. package/es/SearchTypeResult/SearchItem.js +0 -97
  260. package/es/SearchTypeResult/SearchItemList.js +0 -142
  261. package/es/SearchTypeResult/SearchItems.js +0 -60
  262. package/es/SearchTypeResult/SearchSubjectItem.js +0 -62
  263. package/es/SearchTypeResult/SearchSubjectResult.js +0 -34
  264. package/es/SearchTypeResult/SearchTypeHeader.js +0 -118
  265. package/es/SearchTypeResult/SearchTypeResult.js +0 -55
  266. package/es/SearchTypeResult/SearchViewType.js +0 -90
  267. package/es/SearchTypeResult/components/ItemContexts.js +0 -122
  268. package/es/SearchTypeResult/components/ItemResourceHeader.js +0 -96
  269. package/es/SearchTypeResult/components/ItemTopicHeader.js +0 -66
  270. package/es/SearchTypeResult/components/SubjectFilters.js +0 -130
  271. package/es/SearchTypeResult/index.js +0 -14
  272. package/es/Subject/SubjectBanner.js +0 -30
  273. package/es/Subject/index.js +0 -9
  274. package/es/ToolboxPage/ToolboxInfo.js +0 -43
  275. package/es/ToolboxPage/index.js +0 -10
  276. package/es/Topic/Loader.js +0 -107
  277. package/es/Topic/Topic.js +0 -221
  278. package/es/Topic/index.js +0 -10
  279. package/es/locale/LocaleProvider.js +0 -38
  280. package/lib/Article/ArticleAccessMessage.d.ts +0 -12
  281. package/lib/Article/ArticleAccessMessage.js +0 -50
  282. package/lib/Article/ArticleNotions.d.ts +0 -14
  283. package/lib/Article/ArticleNotions.js +0 -96
  284. package/lib/Aside/Aside.d.ts +0 -15
  285. package/lib/Aside/Aside.js +0 -80
  286. package/lib/Aside/index.d.ts +0 -9
  287. package/lib/Aside/index.js +0 -16
  288. package/lib/BannerCard/BannerCard.d.ts +0 -29
  289. package/lib/BannerCard/BannerCard.js +0 -92
  290. package/lib/BannerCard/index.d.ts +0 -9
  291. package/lib/BannerCard/index.js +0 -13
  292. package/lib/Breadcrumb/HeaderBreadcrumb.d.ts +0 -14
  293. package/lib/Breadcrumb/HeaderBreadcrumb.js +0 -64
  294. package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +0 -10
  295. package/lib/CompetenceGoalTab/CompetenceGoalItem.js +0 -49
  296. package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +0 -14
  297. package/lib/CompetenceGoalTab/CompetenceGoalTab.js +0 -82
  298. package/lib/CompetenceGoalTab/CompetenceItem.d.ts +0 -30
  299. package/lib/CompetenceGoalTab/CompetenceItem.js +0 -113
  300. package/lib/CompetenceGoalTab/CoreElementItem.d.ts +0 -10
  301. package/lib/CompetenceGoalTab/CoreElementItem.js +0 -51
  302. package/lib/CompetenceGoalTab/SearchButton.d.ts +0 -14
  303. package/lib/CompetenceGoalTab/SearchButton.js +0 -50
  304. package/lib/CompetenceGoalTab/index.d.ts +0 -9
  305. package/lib/CompetenceGoalTab/index.js +0 -16
  306. package/lib/CompetenceGoalTab/styles.d.ts +0 -28
  307. package/lib/CompetenceGoalTab/styles.js +0 -62
  308. package/lib/Filter/FilterButtons.d.ts +0 -16
  309. package/lib/Filter/FilterButtons.js +0 -192
  310. package/lib/Filter/FilterCarousel.d.ts +0 -13
  311. package/lib/Filter/FilterCarousel.js +0 -171
  312. package/lib/Filter/ToggleItem.d.ts +0 -21
  313. package/lib/Filter/ToggleItem.js +0 -75
  314. package/lib/Filter/index.d.ts +0 -9
  315. package/lib/Filter/index.js +0 -20
  316. package/lib/Frontpage/FrontpageAllSubjects.d.ts +0 -27
  317. package/lib/Frontpage/FrontpageAllSubjects.js +0 -259
  318. package/lib/LearningPaths/LearningPathContent.d.ts +0 -13
  319. package/lib/LearningPaths/LearningPathContent.js +0 -33
  320. package/lib/LearningPaths/LearningPathInformation.d.ts +0 -18
  321. package/lib/LearningPaths/LearningPathInformation.js +0 -80
  322. package/lib/LearningPaths/LearningPathLastStepNavigation.d.ts +0 -22
  323. package/lib/LearningPaths/LearningPathLastStepNavigation.js +0 -72
  324. package/lib/LearningPaths/LearningPathMenu.d.ts +0 -38
  325. package/lib/LearningPaths/LearningPathMenu.js +0 -110
  326. package/lib/LearningPaths/LearningPathMenuAside.d.ts +0 -24
  327. package/lib/LearningPaths/LearningPathMenuAside.js +0 -69
  328. package/lib/LearningPaths/LearningPathMenuContent.d.ts +0 -22
  329. package/lib/LearningPaths/LearningPathMenuContent.js +0 -116
  330. package/lib/LearningPaths/LearningPathMenuIntro.d.ts +0 -17
  331. package/lib/LearningPaths/LearningPathMenuIntro.js +0 -77
  332. package/lib/LearningPaths/LearningPathMenuModalWrapper.d.ts +0 -14
  333. package/lib/LearningPaths/LearningPathMenuModalWrapper.js +0 -70
  334. package/lib/LearningPaths/LearningPathMobileHeader.d.ts +0 -9
  335. package/lib/LearningPaths/LearningPathMobileHeader.js +0 -42
  336. package/lib/LearningPaths/LearningPathMobileStepInfo.d.ts +0 -13
  337. package/lib/LearningPaths/LearningPathMobileStepInfo.js +0 -41
  338. package/lib/LearningPaths/LearningPathSticky.d.ts +0 -22
  339. package/lib/LearningPaths/LearningPathSticky.js +0 -84
  340. package/lib/LearningPaths/LearningPathWrapper.d.ts +0 -14
  341. package/lib/LearningPaths/LearningPathWrapper.js +0 -35
  342. package/lib/LearningPaths/index.d.ts +0 -17
  343. package/lib/LearningPaths/index.js +0 -74
  344. package/lib/Masthead/Masthead.d.ts +0 -23
  345. package/lib/Masthead/Masthead.js +0 -68
  346. package/lib/Masthead/SkipToMainContent.d.ts +0 -12
  347. package/lib/Masthead/SkipToMainContent.js +0 -37
  348. package/lib/Masthead/index.d.ts +0 -12
  349. package/lib/Masthead/index.js +0 -36
  350. package/lib/Masthead/utils.d.ts +0 -11
  351. package/lib/Masthead/utils.js +0 -46
  352. package/lib/MyNdla/Resource/FolderInput.d.ts +0 -19
  353. package/lib/MyNdla/Resource/FolderInput.js +0 -101
  354. package/lib/NDLAFilm/AllMoviesAlphabetically.d.ts +0 -13
  355. package/lib/NDLAFilm/AllMoviesAlphabetically.js +0 -134
  356. package/lib/NDLAFilm/FilmContentCard.d.ts +0 -19
  357. package/lib/NDLAFilm/FilmContentCard.js +0 -98
  358. package/lib/NDLAFilm/FilmContentCardTags.d.ts +0 -15
  359. package/lib/NDLAFilm/FilmContentCardTags.js +0 -51
  360. package/lib/NDLAFilm/FilmMovieList.d.ts +0 -17
  361. package/lib/NDLAFilm/FilmMovieList.js +0 -59
  362. package/lib/NDLAFilm/FilmMovieSearch.d.ts +0 -21
  363. package/lib/NDLAFilm/FilmMovieSearch.js +0 -113
  364. package/lib/NDLAFilm/FilmSlideshow.d.ts +0 -13
  365. package/lib/NDLAFilm/FilmSlideshow.js +0 -143
  366. package/lib/NDLAFilm/MovieGrid.d.ts +0 -17
  367. package/lib/NDLAFilm/MovieGrid.js +0 -61
  368. package/lib/NDLAFilm/VisualElement.d.ts +0 -16
  369. package/lib/NDLAFilm/VisualElement.js +0 -53
  370. package/lib/NDLAFilm/filmStyles.d.ts +0 -17
  371. package/lib/NDLAFilm/filmStyles.js +0 -39
  372. package/lib/NDLAFilm/index.d.ts +0 -13
  373. package/lib/NDLAFilm/index.js +0 -41
  374. package/lib/NDLAFilm/isLetter.d.ts +0 -8
  375. package/lib/NDLAFilm/isLetter.js +0 -20
  376. package/lib/NDLAFilm/types.d.ts +0 -22
  377. package/lib/NDLAFilm/types.js +0 -5
  378. package/lib/Navigation/NavigationBox.d.ts +0 -30
  379. package/lib/Navigation/NavigationBox.js +0 -193
  380. package/lib/Navigation/index.js +0 -13
  381. package/lib/NoContentBox/NoContentBox.d.ts +0 -14
  382. package/lib/NoContentBox/NoContentBox.js +0 -38
  383. package/lib/NoContentBox/index.d.ts +0 -9
  384. package/lib/NoContentBox/index.js +0 -16
  385. package/lib/Programme/Programme.d.ts +0 -16
  386. package/lib/Programme/Programme.js +0 -112
  387. package/lib/Programme/ProgrammeSubjects.d.ts +0 -26
  388. package/lib/Programme/ProgrammeSubjects.js +0 -67
  389. package/lib/Programme/index.d.ts +0 -11
  390. package/lib/Programme/index.js +0 -23
  391. package/lib/ResourceGroup/ResourceGroup.d.ts +0 -18
  392. package/lib/ResourceGroup/ResourceGroup.js +0 -53
  393. package/lib/ResourceGroup/ResourceItem.d.ts +0 -22
  394. package/lib/ResourceGroup/ResourceItem.js +0 -203
  395. package/lib/ResourceGroup/ResourceList.d.ts +0 -19
  396. package/lib/ResourceGroup/ResourceList.js +0 -64
  397. package/lib/ResourceGroup/index.d.ts +0 -9
  398. package/lib/ResourceGroup/index.js +0 -16
  399. package/lib/ResourcesWrapper/ResourcesTopicTitle.d.ts +0 -20
  400. package/lib/ResourcesWrapper/ResourcesTopicTitle.js +0 -165
  401. package/lib/ResourcesWrapper/ResourcesWrapper.d.ts +0 -16
  402. package/lib/ResourcesWrapper/ResourcesWrapper.js +0 -34
  403. package/lib/ResourcesWrapper/index.d.ts +0 -10
  404. package/lib/ResourcesWrapper/index.js +0 -23
  405. package/lib/SearchTypeResult/ActiveFilterContent.d.ts +0 -23
  406. package/lib/SearchTypeResult/ActiveFilterContent.js +0 -58
  407. package/lib/SearchTypeResult/ActiveFilters.d.ts +0 -18
  408. package/lib/SearchTypeResult/ActiveFilters.js +0 -131
  409. package/lib/SearchTypeResult/PopupFilter.d.ts +0 -26
  410. package/lib/SearchTypeResult/PopupFilter.js +0 -138
  411. package/lib/SearchTypeResult/ResultNavigation.d.ts +0 -18
  412. package/lib/SearchTypeResult/ResultNavigation.js +0 -82
  413. package/lib/SearchTypeResult/SearchFieldHeader.d.ts +0 -17
  414. package/lib/SearchTypeResult/SearchFieldHeader.js +0 -109
  415. package/lib/SearchTypeResult/SearchFilterContent.d.ts +0 -16
  416. package/lib/SearchTypeResult/SearchFilterContent.js +0 -64
  417. package/lib/SearchTypeResult/SearchHeader.d.ts +0 -26
  418. package/lib/SearchTypeResult/SearchHeader.js +0 -166
  419. package/lib/SearchTypeResult/SearchItem.d.ts +0 -30
  420. package/lib/SearchTypeResult/SearchItem.js +0 -104
  421. package/lib/SearchTypeResult/SearchItemList.d.ts +0 -10
  422. package/lib/SearchTypeResult/SearchItemList.js +0 -147
  423. package/lib/SearchTypeResult/SearchItems.d.ts +0 -17
  424. package/lib/SearchTypeResult/SearchItems.js +0 -65
  425. package/lib/SearchTypeResult/SearchSubjectItem.d.ts +0 -20
  426. package/lib/SearchTypeResult/SearchSubjectItem.js +0 -67
  427. package/lib/SearchTypeResult/SearchSubjectResult.d.ts +0 -13
  428. package/lib/SearchTypeResult/SearchSubjectResult.js +0 -41
  429. package/lib/SearchTypeResult/SearchTypeHeader.d.ts +0 -22
  430. package/lib/SearchTypeResult/SearchTypeHeader.js +0 -123
  431. package/lib/SearchTypeResult/SearchTypeResult.d.ts +0 -26
  432. package/lib/SearchTypeResult/SearchTypeResult.js +0 -62
  433. package/lib/SearchTypeResult/SearchViewType.d.ts +0 -13
  434. package/lib/SearchTypeResult/SearchViewType.js +0 -95
  435. package/lib/SearchTypeResult/components/ItemContexts.d.ts +0 -19
  436. package/lib/SearchTypeResult/components/ItemContexts.js +0 -127
  437. package/lib/SearchTypeResult/components/ItemResourceHeader.d.ts +0 -16
  438. package/lib/SearchTypeResult/components/ItemResourceHeader.js +0 -101
  439. package/lib/SearchTypeResult/components/ItemTopicHeader.d.ts +0 -17
  440. package/lib/SearchTypeResult/components/ItemTopicHeader.js +0 -71
  441. package/lib/SearchTypeResult/components/SubjectFilters.d.ts +0 -32
  442. package/lib/SearchTypeResult/components/SubjectFilters.js +0 -135
  443. package/lib/SearchTypeResult/index.d.ts +0 -14
  444. package/lib/SearchTypeResult/index.js +0 -41
  445. package/lib/Subject/SubjectBanner.d.ts +0 -14
  446. package/lib/Subject/SubjectBanner.js +0 -37
  447. package/lib/Subject/index.d.ts +0 -8
  448. package/lib/Subject/index.js +0 -13
  449. package/lib/ToolboxPage/ToolboxInfo.d.ts +0 -18
  450. package/lib/ToolboxPage/ToolboxInfo.js +0 -49
  451. package/lib/ToolboxPage/index.d.ts +0 -9
  452. package/lib/ToolboxPage/index.js +0 -13
  453. package/lib/Topic/Loader.d.ts +0 -9
  454. package/lib/Topic/Loader.js +0 -114
  455. package/lib/Topic/Topic.d.ts +0 -34
  456. package/lib/Topic/Topic.js +0 -228
  457. package/lib/Topic/index.d.ts +0 -10
  458. package/lib/Topic/index.js +0 -16
  459. package/lib/locale/LocaleProvider.d.ts +0 -15
  460. package/lib/locale/LocaleProvider.js +0 -44
  461. package/src/Article/ArticleAccessMessage.tsx +0 -44
  462. package/src/Article/ArticleNotions.tsx +0 -139
  463. package/src/Article/component.article.scss +0 -156
  464. package/src/Aside/Aside.tsx +0 -113
  465. package/src/Aside/index.ts +0 -11
  466. package/src/BannerCard/BannerCard.tsx +0 -99
  467. package/src/BannerCard/index.ts +0 -11
  468. package/src/Breadcrumb/HeaderBreadcrumb.tsx +0 -56
  469. package/src/CompetenceGoalTab/CompetenceGoalItem.tsx +0 -39
  470. package/src/CompetenceGoalTab/CompetenceGoalTab.tsx +0 -85
  471. package/src/CompetenceGoalTab/CompetenceItem.tsx +0 -130
  472. package/src/CompetenceGoalTab/CoreElementItem.tsx +0 -39
  473. package/src/CompetenceGoalTab/SearchButton.tsx +0 -50
  474. package/src/CompetenceGoalTab/index.ts +0 -10
  475. package/src/CompetenceGoalTab/styles.ts +0 -37
  476. package/src/Figure/component.figure.scss +0 -60
  477. package/src/Filter/FilterButtons.tsx +0 -199
  478. package/src/Filter/FilterCarousel.tsx +0 -172
  479. package/src/Filter/ToggleItem.tsx +0 -180
  480. package/src/Filter/index.ts +0 -10
  481. package/src/Frontpage/FrontpageAllSubjects.tsx +0 -231
  482. package/src/LearningPaths/LearningPathContent.tsx +0 -33
  483. package/src/LearningPaths/LearningPathInformation.tsx +0 -82
  484. package/src/LearningPaths/LearningPathLastStepNavigation.tsx +0 -89
  485. package/src/LearningPaths/LearningPathMenu.stories.tsx +0 -65
  486. package/src/LearningPaths/LearningPathMenu.tsx +0 -166
  487. package/src/LearningPaths/LearningPathMenuAside.tsx +0 -100
  488. package/src/LearningPaths/LearningPathMenuContent.tsx +0 -277
  489. package/src/LearningPaths/LearningPathMenuIntro.tsx +0 -126
  490. package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +0 -71
  491. package/src/LearningPaths/LearningPathMobileHeader.tsx +0 -37
  492. package/src/LearningPaths/LearningPathMobileStepInfo.tsx +0 -38
  493. package/src/LearningPaths/LearningPathSticky.tsx +0 -122
  494. package/src/LearningPaths/LearningPathWrapper.tsx +0 -36
  495. package/src/LearningPaths/index.ts +0 -19
  496. package/src/Masthead/Masthead.tsx +0 -100
  497. package/src/Masthead/SkipToMainContent.tsx +0 -54
  498. package/src/Masthead/index.ts +0 -16
  499. package/src/Masthead/utils.ts +0 -45
  500. package/src/MyNdla/Resource/FolderInput.stories.tsx +0 -27
  501. package/src/MyNdla/Resource/FolderInput.tsx +0 -89
  502. package/src/NDLAFilm/AllMoviesAlphabetically.tsx +0 -160
  503. package/src/NDLAFilm/FilmContentCard.tsx +0 -138
  504. package/src/NDLAFilm/FilmContentCardTags.tsx +0 -57
  505. package/src/NDLAFilm/FilmMovieList.tsx +0 -54
  506. package/src/NDLAFilm/FilmMovieSearch.tsx +0 -135
  507. package/src/NDLAFilm/FilmSlideshow.tsx +0 -177
  508. package/src/NDLAFilm/MovieGrid.tsx +0 -86
  509. package/src/NDLAFilm/VisualElement.tsx +0 -38
  510. package/src/NDLAFilm/__tests__/isLetter-test.ts +0 -20
  511. package/src/NDLAFilm/filmStyles.ts +0 -49
  512. package/src/NDLAFilm/index.ts +0 -15
  513. package/src/NDLAFilm/isLetter.ts +0 -13
  514. package/src/NDLAFilm/types.ts +0 -24
  515. package/src/Navigation/NavigationBox.tsx +0 -252
  516. package/src/Navigation/index.ts +0 -11
  517. package/src/NoContentBox/NoContentBox.tsx +0 -32
  518. package/src/NoContentBox/index.ts +0 -11
  519. package/src/Programme/Programme.tsx +0 -101
  520. package/src/Programme/ProgrammeSubjects.tsx +0 -83
  521. package/src/Programme/index.ts +0 -13
  522. package/src/ResourceGroup/ResourceGroup.tsx +0 -65
  523. package/src/ResourceGroup/ResourceItem.stories.tsx +0 -101
  524. package/src/ResourceGroup/ResourceItem.tsx +0 -318
  525. package/src/ResourceGroup/ResourceList.tsx +0 -80
  526. package/src/ResourceGroup/index.ts +0 -11
  527. package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +0 -223
  528. package/src/ResourcesWrapper/ResourcesWrapper.tsx +0 -32
  529. package/src/ResourcesWrapper/index.ts +0 -13
  530. package/src/SearchTypeResult/ActiveFilterContent.tsx +0 -55
  531. package/src/SearchTypeResult/ActiveFilters.tsx +0 -163
  532. package/src/SearchTypeResult/PopupFilter.tsx +0 -149
  533. package/src/SearchTypeResult/ResultNavigation.tsx +0 -105
  534. package/src/SearchTypeResult/SearchFieldHeader.tsx +0 -129
  535. package/src/SearchTypeResult/SearchFilterContent.tsx +0 -61
  536. package/src/SearchTypeResult/SearchHeader.tsx +0 -180
  537. package/src/SearchTypeResult/SearchItem.tsx +0 -144
  538. package/src/SearchTypeResult/SearchItemList.tsx +0 -161
  539. package/src/SearchTypeResult/SearchItems.tsx +0 -72
  540. package/src/SearchTypeResult/SearchSubjectItem.tsx +0 -74
  541. package/src/SearchTypeResult/SearchSubjectResult.tsx +0 -58
  542. package/src/SearchTypeResult/SearchTypeHeader.tsx +0 -148
  543. package/src/SearchTypeResult/SearchTypeResult.tsx +0 -89
  544. package/src/SearchTypeResult/SearchViewType.tsx +0 -111
  545. package/src/SearchTypeResult/components/ItemContexts.tsx +0 -131
  546. package/src/SearchTypeResult/components/ItemResourceHeader.tsx +0 -130
  547. package/src/SearchTypeResult/components/ItemTopicHeader.tsx +0 -88
  548. package/src/SearchTypeResult/components/SubjectFilters.tsx +0 -149
  549. package/src/SearchTypeResult/index.ts +0 -17
  550. package/src/Subject/SubjectBanner.tsx +0 -39
  551. package/src/Subject/index.ts +0 -9
  552. package/src/ToolboxPage/ToolboxInfo.tsx +0 -42
  553. package/src/ToolboxPage/index.ts +0 -11
  554. package/src/Topic/Loader.tsx +0 -29
  555. package/src/Topic/Topic.tsx +0 -348
  556. package/src/Topic/index.ts +0 -13
  557. package/src/locale/LocaleProvider.tsx +0 -31
  558. package/src/main.scss +0 -6
@@ -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 })} {