@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
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Copyright (c) 2023-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import { Meta, StoryFn, StoryObj } from "@storybook/react";
10
+ import { IconButtonV2 } from "@ndla/button";
11
+ import { DeleteForever } from "@ndla/icons/editor";
12
+ import CodeBlock from "./CodeBlock";
13
+
14
+ export default {
15
+ title: "Components/CodeBlock",
16
+ component: CodeBlock,
17
+ tags: ["autodocs"],
18
+ parameters: {
19
+ inlineStories: true,
20
+ },
21
+ args: {
22
+ title: "CodeBlock",
23
+ format: "html",
24
+ highlightedCode: `<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>demo-content<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
25
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h2</span><span class="token punctuation">></span></span>Lorem ipsum<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h2</span><span class="token punctuation">></span></span>
26
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
27
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>b</span><span class="token punctuation">></span></span>Lorem ipsum<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>br</span><span class="token punctuation">/></span></span>
28
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>is simply dummy text of the printing and typesetting industry<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
29
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
30
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
31
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>b</span><span class="token punctuation">></span></span>Lorem ipsum<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>br</span><span class="token punctuation">/></span></span>
32
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>is simply dummy text of the printing and typesetting industry<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
33
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
34
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>
35
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>b</span><span class="token punctuation">></span></span>Lorem ipsum<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>b</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>br</span><span class="token punctuation">/></span></span>
36
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span><span class="token punctuation">></span></span>is simply dummy text of the printing and typesetting industry<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
37
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>
38
+ <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>`,
39
+ code: `<div class="demo-content">
40
+ <h2>Lorem ipsum</h2>
41
+ <p>
42
+ <b>Lorem ipsum</b><br/>
43
+ <span>is simply dummy text of the printing and typesetting industry</span>
44
+ </p>
45
+ <p>
46
+ <b>Lorem ipsum</b><br/>
47
+ <span>is simply dummy text of the printing and typesetting industry</span>
48
+ </p>
49
+ <p>
50
+ <b>Lorem ipsum</b><br/>
51
+ <span>is simply dummy text of the printing and typesetting industry</span>
52
+ </p>
53
+ </div>`,
54
+ actionButton: (
55
+ <IconButtonV2 aria-label="Slett" variant="ghost" colorTheme="danger">
56
+ <DeleteForever />
57
+ </IconButtonV2>
58
+ ),
59
+ showCopy: true,
60
+ },
61
+ argTypes: {
62
+ actionButton: {
63
+ table: {
64
+ type: {
65
+ detail: "Takes any ReactNode, but as the name implies: use a button component, preferably an icon-button",
66
+ },
67
+ },
68
+ control: {
69
+ type: null,
70
+ },
71
+ },
72
+ },
73
+ } as Meta<typeof CodeBlock>;
74
+
75
+ export const HTML: StoryFn<typeof CodeBlock> = (args) => {
76
+ return <CodeBlock {...args} />;
77
+ };
78
+
79
+ export const CSS: StoryObj<typeof CodeBlock> = {
80
+ args: {
81
+ highlightedCode: `<span class="token selector">body</span> <span class="token punctuation">{</span>
82
+ <span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span><span class="token punctuation">;</span>
83
+ <span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">10</span><span class="token unit">px</span><span class="token punctuation">;</span>
84
+ <span class="token property">background</span><span class="token punctuation">:</span> <span class="token hexcode color">#ccc</span><span class="token punctuation">;</span>
85
+ <span class="token punctuation">}</span>`,
86
+ code: `body {
87
+ padding: 20px;
88
+ margin: 10px;
89
+ background: #ccc;
90
+ }`,
91
+ format: "css",
92
+ },
93
+ };
94
+
95
+ export const JS: StoryObj<typeof CodeBlock> = {
96
+ args: {
97
+ highlightedCode: `<span class="token keyword">const</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"This"</span><span class="token punctuation">,</span> <span class="token string">"Little"</span><span class="token punctuation">,</span> <span class="token string">"Piggy"</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
98
+ <span class="token keyword">const</span> first <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token method function property-access">shift</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
99
+ <span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span>first<span class="token punctuation">)</span><span class="token punctuation">;</span>`,
100
+ code: `const arr = ["This", "Little", "Piggy"];
101
+ const first = arr.shift();
102
+ console.log(first);`,
103
+ format: "js",
104
+ },
105
+ };
106
+
107
+ export const Text: StoryObj<typeof CodeBlock> = {
108
+ args: {
109
+ highlightedCode: `Pure text without highlighting and no title`,
110
+ code: `Pure text without highlighting and no title`,
111
+ format: "text",
112
+ },
113
+ };
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Copyright (c) 2020-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import { useState, useEffect, ReactNode, useMemo } from "react";
10
+ import { useTranslation } from "react-i18next";
11
+ import styled from "@emotion/styled";
12
+ import { ButtonV2 } from "@ndla/button";
13
+ import { colors, fonts, spacing } from "@ndla/core";
14
+ import { Copy } from "@ndla/icons/action";
15
+ import { Done } from "@ndla/icons/editor";
16
+ import { copyTextToClipboard } from "@ndla/util";
17
+ import { ICodeLangugeOption, codeLanguageOptions } from "./codeLanguageOptions";
18
+
19
+ const Wrapper = styled.div`
20
+ margin: 15px 0;
21
+ `;
22
+
23
+ const TitleBar = styled.div`
24
+ display: flex;
25
+ justify-content: space-between;
26
+ width: 100%;
27
+ `;
28
+
29
+ const Title = styled.h3`
30
+ font-style: normal;
31
+ font-weight: normal;
32
+ font-size: 16px;
33
+ line-height: 32px;
34
+ letter-spacing: 1px;
35
+ text-transform: uppercase;
36
+ color: ${colors.text.primary};
37
+ margin: 5px 0;
38
+ `;
39
+
40
+ type Props = {
41
+ code: string;
42
+ highlightedCode: string;
43
+ format: string;
44
+ title?: string | null;
45
+ actionButton?: ReactNode;
46
+ showCopy?: boolean;
47
+ };
48
+
49
+ const StyledPre = styled.pre`
50
+ border-left: 4px solid ${colors.brand.dark};
51
+ background-color: ${colors.brand.greyLighter};
52
+ box-sizing: border-box;
53
+ overflow-x: auto;
54
+ .linenumber {
55
+ display: inline-block;
56
+ padding: 0 ${spacing.small};
57
+ border-right: 1px solid #d8d8d8;
58
+ margin-right: ${spacing.small};
59
+ color: #7d8b99;
60
+ text-align: right;
61
+ width: 40px;
62
+ }
63
+ .linenumber[data-first] {
64
+ padding-top: ${spacing.small};
65
+ }
66
+ .linenumber[data-last] {
67
+ padding-bottom: ${spacing.small};
68
+ }
69
+ code {
70
+ display: block;
71
+ ${fonts.sizes("14px", "20px")};
72
+ font-family:
73
+ Source Code Pro,
74
+ Monaco;
75
+ margin: 0;
76
+ padding: 0;
77
+ white-space: pre;
78
+ }
79
+ code::before {
80
+ content: none;
81
+ }
82
+ &::before,
83
+ &::after {
84
+ content: none !important;
85
+ }
86
+
87
+ /* The remaining css is copied from the coy theme in prismjs. A lot of css is omitted due to styling clashes */
88
+ .token.comment,
89
+ .token.block-comment,
90
+ .token.prolog,
91
+ .token.doctype,
92
+ .token.cdata {
93
+ color: #7d8b99;
94
+ }
95
+
96
+ .token.punctuation {
97
+ color: #5f6364;
98
+ }
99
+
100
+ .token.property,
101
+ .token.tag,
102
+ .token.boolean,
103
+ .token.number,
104
+ .token.function-name,
105
+ .token.constant,
106
+ .token.symbol,
107
+ .token.deleted {
108
+ color: #c92c2c;
109
+ }
110
+
111
+ .token.selector,
112
+ .token.attr-name,
113
+ .token.string,
114
+ .token.char,
115
+ .token.function,
116
+ .token.builtin,
117
+ .token.inserted {
118
+ color: #2f9c0a;
119
+ }
120
+
121
+ .token.operator,
122
+ .token.entity,
123
+ .token.url,
124
+ .token.variable {
125
+ color: #a67f59;
126
+ background: rgba(255, 255, 255, 0.5);
127
+ }
128
+
129
+ .token.atrule,
130
+ .token.attr-value,
131
+ .token.keyword,
132
+ .token.class-name {
133
+ color: #1990b8;
134
+ }
135
+
136
+ .token.regex,
137
+ .token.important {
138
+ color: #e90;
139
+ }
140
+
141
+ .language-css .token.string,
142
+ .style .token.string {
143
+ color: #a67f59;
144
+ background: rgba(255, 255, 255, 0.5);
145
+ }
146
+
147
+ .token.important {
148
+ font-weight: normal;
149
+ }
150
+
151
+ .token.bold {
152
+ font-weight: bold;
153
+ }
154
+ .token.italic {
155
+ font-style: italic;
156
+ }
157
+
158
+ .token.entity {
159
+ cursor: help;
160
+ }
161
+
162
+ .token.namespace {
163
+ opacity: 0.7;
164
+ }
165
+ `;
166
+
167
+ const getTitleFromFormat = (format: string) => {
168
+ const selectedLanguage = codeLanguageOptions.find((item: ICodeLangugeOption) => item.format === format);
169
+ if (selectedLanguage) {
170
+ return selectedLanguage.title;
171
+ }
172
+ return;
173
+ };
174
+
175
+ export const Codeblock = ({ actionButton, code, highlightedCode, format, showCopy = false, title }: Props) => {
176
+ const { t } = useTranslation();
177
+ const [isCopied, setIsCopied] = useState(false);
178
+
179
+ const codeWithLineNumbers = useMemo(() => {
180
+ return highlightedCode
181
+ .split("\n")
182
+ .map((line, i, arr) => {
183
+ return `<span><span class="linenumber" ${i === 0 ? 'data-first=""' : ""} ${
184
+ i === arr.length - 1 ? 'data-last=""' : ""
185
+ }>${i + 1}</span>${line}</span>`;
186
+ })
187
+ .join("\n");
188
+ }, [highlightedCode]);
189
+
190
+ useEffect(() => {
191
+ if (isCopied) {
192
+ const timer = setInterval(() => setIsCopied(false), 3000);
193
+ // ensure interval is cleared - also if unmounted
194
+ return () => {
195
+ clearTimeout(timer);
196
+ };
197
+ }
198
+ }, [isCopied]);
199
+
200
+ return (
201
+ <Wrapper>
202
+ <TitleBar>
203
+ <Title>{title || getTitleFromFormat(format)}</Title>
204
+ {actionButton}
205
+ </TitleBar>
206
+ <StyledPre>
207
+ <code className={`language-${format}`} dangerouslySetInnerHTML={{ __html: codeWithLineNumbers }} />
208
+ </StyledPre>
209
+ {showCopy && (
210
+ <ButtonV2
211
+ title={t("codeBlock.copyButton")}
212
+ disabled={isCopied}
213
+ data-copied-title={t("codeBlock.copiedCode")}
214
+ data-copy-string={code}
215
+ onClick={() => {
216
+ copyTextToClipboard(code);
217
+ setIsCopied(true);
218
+ }}
219
+ >
220
+ {isCopied ? <Done aria-hidden="true" /> : <Copy aria-hidden="true" />}{" "}
221
+ {isCopied ? t("codeBlock.copiedCode") : t("codeBlock.copyCode")}
222
+ </ButtonV2>
223
+ )}
224
+ </Wrapper>
225
+ );
226
+ };
227
+
228
+ export default Codeblock;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Copyright (c) 2019-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ export const codeLanguageOptions: Array<ICodeLangugeOption> = [
10
+ {
11
+ title: "Bash",
12
+ format: "bash",
13
+ },
14
+ {
15
+ title: "C",
16
+ format: "c",
17
+ },
18
+ {
19
+ title: "CSharp",
20
+ format: "csharp",
21
+ },
22
+ {
23
+ title: "CSS",
24
+ format: "css",
25
+ },
26
+ {
27
+ title: "Diff",
28
+ format: "diff",
29
+ },
30
+ {
31
+ title: "HTML",
32
+ format: "markup",
33
+ },
34
+ {
35
+ title: "Ini",
36
+ format: "ini",
37
+ },
38
+ {
39
+ title: "Java",
40
+ format: "java",
41
+ },
42
+ {
43
+ title: "Javascript",
44
+ format: "js",
45
+ },
46
+ {
47
+ title: "JSON",
48
+ format: "json",
49
+ },
50
+ {
51
+ title: "JSX",
52
+ format: "jsx",
53
+ },
54
+ {
55
+ title: "Kotlin",
56
+ format: "kotlin",
57
+ },
58
+ {
59
+ title: "LUA",
60
+ format: "lua",
61
+ },
62
+ {
63
+ title: "Markdown",
64
+ format: "markdown",
65
+ },
66
+ {
67
+ title: "Matlab",
68
+ format: "matlab",
69
+ },
70
+ {
71
+ title: "NSIS",
72
+ format: "nsis",
73
+ },
74
+ {
75
+ title: "PHP",
76
+ format: "php",
77
+ },
78
+ {
79
+ title: "Powershell",
80
+ format: "powershell",
81
+ },
82
+ {
83
+ title: "Python",
84
+ format: "python",
85
+ },
86
+ {
87
+ title: "Ruby",
88
+ format: "ruby",
89
+ },
90
+ {
91
+ title: "Rust",
92
+ format: "rust",
93
+ },
94
+ {
95
+ title: "SQL",
96
+ format: "sql",
97
+ },
98
+ {
99
+ title: "Text",
100
+ format: "text",
101
+ },
102
+ {
103
+ title: "VHDL",
104
+ format: "vhdl",
105
+ },
106
+ {
107
+ title: "XML",
108
+ format: "xml",
109
+ },
110
+ ];
111
+
112
+ export interface ICodeLangugeOption {
113
+ title: string;
114
+ format: string;
115
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) 2024-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ export { default as CodeBlock } from "./CodeBlock";
10
+ export { codeLanguageOptions } from "./codeLanguageOptions";
@@ -51,11 +51,11 @@ const CreatedBy = ({ name, description, url, target = "_blank" }: Props) => (
51
51
  name
52
52
  )}
53
53
  &nbsp;{description}&nbsp;
54
- <StyledSafeLink to={`https://ndla.no`} target={target}>
54
+ <StyledSafeLink to={"https://ndla.no"} target={target}>
55
55
  NDLA
56
56
  </StyledSafeLink>
57
57
  </Text>
58
- <Logo label={`NDLA`} to={`https://ndla.no`} />
58
+ <Logo label={"NDLA"} to={"https://ndla.no"} />
59
59
  </Wrapper>
60
60
  </Container>
61
61
  );
@@ -10,6 +10,8 @@ import { Meta, StoryObj } from "@storybook/react";
10
10
  import { AudioEmbedData, AudioMeta } from "@ndla/types-embed";
11
11
  import AudioEmbed from "./AudioEmbed";
12
12
  import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
13
+ import { ArticleWrapper } from "../Article";
14
+ import { OneColumn } from "../Layout";
13
15
 
14
16
  const embedData: AudioEmbedData = {
15
17
  resource: "audio",
@@ -186,15 +188,15 @@ const meta: Meta<typeof AudioEmbed> = {
186
188
  tags: ["autodocs"],
187
189
  decorators: [
188
190
  (Story) => (
189
- <div className="o-wrapper">
190
- <article className="c-article c-article--clean">
191
+ <OneColumn>
192
+ <ArticleWrapper modifier="clean">
191
193
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
192
194
  <section>
193
195
  <Story />
194
196
  </section>
195
197
  </section>
196
- </article>
197
- </div>
198
+ </ArticleWrapper>
199
+ </OneColumn>
198
200
  ),
199
201
  ],
200
202
  };
@@ -10,6 +10,8 @@ import { Meta, StoryObj } from "@storybook/react";
10
10
  import { BrightcoveData, BrightcoveEmbedData, BrightcoveMetaData } from "@ndla/types-embed";
11
11
  import BrightcoveEmbed from "./BrightcoveEmbed";
12
12
  import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
13
+ import { ArticleWrapper } from "../Article";
14
+ import { OneColumn } from "../Layout";
13
15
 
14
16
  const embedData: BrightcoveEmbedData = {
15
17
  resource: "brightcove",
@@ -159,15 +161,15 @@ const meta: Meta<typeof BrightcoveEmbed> = {
159
161
  },
160
162
  decorators: [
161
163
  (Story) => (
162
- <div className="o-wrapper">
163
- <article className="c-article c-article--clean">
164
+ <OneColumn>
165
+ <ArticleWrapper modifier="clean">
164
166
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
165
167
  <section>
166
168
  <Story />
167
169
  </section>
168
170
  </section>
169
- </article>
170
- </div>
171
+ </ArticleWrapper>
172
+ </OneColumn>
171
173
  ),
172
174
  ],
173
175
  };
@@ -34,14 +34,14 @@ const BrightcoveIframe = styled.iframe`
34
34
  height: auto;
35
35
  `;
36
36
 
37
- export const makeIframeString = (url: string, width: string | number, height: string | number, title: string = "") => {
37
+ export const makeIframeString = (url: string, width: string | number, height: string | number, title = "") => {
38
38
  const strippedWidth = typeof width === "number" ? width : width.replace(/\s*px/, "");
39
39
  const strippedHeight = typeof height === "number" ? height : height.replace(/\s*px/, "");
40
40
  const urlOrTitle = title || url;
41
41
  return `<iframe title="${urlOrTitle}" aria-label="${urlOrTitle}" src="${url}" width="${strippedWidth}" height="${strippedHeight}" allowfullscreen scrolling="no" frameborder="0" loading="lazy"></iframe>`;
42
42
  };
43
43
 
44
- export const isNumeric = (value: any) => !Number.isNaN(value - parseFloat(value));
44
+ export const isNumeric = (value: any) => !Number.isNaN(value - Number.parseFloat(value));
45
45
 
46
46
  const getIframeProps = (data: BrightcoveEmbedData, sources: BrightcoveVideoSource[]) => {
47
47
  const { account, videoid, player = "default" } = data;
@@ -6,8 +6,8 @@
6
6
  *
7
7
  */
8
8
 
9
- import { Codeblock } from "@ndla/code";
10
9
  import { CodeMetaData } from "@ndla/types-embed";
10
+ import { CodeBlock } from "../CodeBlock";
11
11
  import { Figure } from "../Figure";
12
12
 
13
13
  interface Props {
@@ -16,7 +16,7 @@ interface Props {
16
16
  const CodeEmbed = ({ embed }: Props) => {
17
17
  return (
18
18
  <Figure>
19
- <Codeblock
19
+ <CodeBlock
20
20
  title={embed.embedData.title}
21
21
  code={embed.status === "success" ? embed.data.decodedContent : ""}
22
22
  highlightedCode={embed.status === "success" ? embed.data.highlightedCode : ""}
@@ -10,6 +10,8 @@ import { Meta, StoryObj } from "@storybook/react";
10
10
  import { ConceptData, ConceptEmbedData } from "@ndla/types-embed";
11
11
  import ConceptEmbed from "./ConceptEmbed";
12
12
  import StoryFavoriteButton from "../../../../stories/StoryFavoriteButton";
13
+ import { ArticleWrapper } from "../Article";
14
+ import { OneColumn } from "../Layout";
13
15
 
14
16
  const blockEmbedData: ConceptEmbedData = {
15
17
  contentId: "35",
@@ -231,15 +233,15 @@ const meta: Meta<typeof ConceptEmbed> = {
231
233
  },
232
234
  decorators: [
233
235
  (Story) => (
234
- <div className="o-wrapper">
235
- <article className="c-article c-article--clean">
236
+ <OneColumn>
237
+ <ArticleWrapper modifier="clean">
236
238
  <section className="u-4/6@desktop u-push-1/6@desktop u-10/12@tablet u-push-1/12@tablet">
237
239
  <section>
238
240
  <Story />
239
241
  </section>
240
242
  </section>
241
- </article>
242
- </div>
243
+ </ArticleWrapper>
244
+ </OneColumn>
243
245
  ),
244
246
  ],
245
247
  };