@ndla/ui 55.0.12-alpha.0 → 55.0.14-alpha.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 (408) hide show
  1. package/dist/all-aout.js +0 -0
  2. package/dist/all.css +1 -0
  3. package/dist/panda.buildinfo.json +289 -0
  4. package/dist/styles.css +1197 -0
  5. package/es/Article/Article.js +3 -4
  6. package/es/Article/ArticleByline.js +9 -9
  7. package/es/Article/ArticleFootNotes.js +4 -4
  8. package/es/Article/ArticleParagraph.js +11 -13
  9. package/es/AudioPlayer/AudioPlayer.js +142 -163
  10. package/es/AudioPlayer/Controls.js +187 -203
  11. package/es/AudioPlayer/SpeechControl.js +13 -11
  12. package/es/BlogPost/BlogPost.js +85 -23
  13. package/es/CampaignBlock/CampaignBlock.js +103 -69
  14. package/es/CodeBlock/CodeBlock.js +88 -96
  15. package/es/Concept/Concept.js +69 -0
  16. package/es/ContactBlock/ContactBlock.js +54 -40
  17. package/es/ContentLoader/index.js +7 -7
  18. package/es/ContentTypeBadge/ContentTypeBadgeNew.js +48 -0
  19. package/es/CopyParagraphButton/CopyParagraphButton.js +4 -4
  20. package/es/Embed/AudioEmbed.js +6 -11
  21. package/es/Embed/BrightcoveEmbed.js +25 -39
  22. package/es/Embed/CodeEmbed.js +58 -10
  23. package/es/Embed/ConceptEmbed.js +57 -306
  24. package/es/Embed/ConceptListEmbed.js +18 -24
  25. package/es/Embed/ContentLinkEmbed.js +10 -10
  26. package/es/Embed/CopyrightEmbed.js +4 -21
  27. package/es/Embed/EmbedErrorPlaceholder.js +32 -17
  28. package/es/Embed/ExternalEmbed.js +17 -28
  29. package/es/Embed/FootnoteEmbed.js +14 -11
  30. package/es/Embed/GlossEmbed.js +68 -0
  31. package/es/Embed/H5pEmbed.js +20 -21
  32. package/es/Embed/IframeEmbed.js +17 -15
  33. package/es/Embed/ImageEmbed.js +167 -122
  34. package/es/Embed/InlineTriggerButton.js +70 -0
  35. package/es/Embed/RelatedContentEmbed.js +8 -10
  36. package/es/Embed/UnknownEmbed.js +9 -9
  37. package/es/Embed/UuDisclaimerEmbed.js +16 -27
  38. package/es/Embed/index.js +1 -3
  39. package/es/ErrorMessage/ErrorMessage.js +42 -23
  40. package/es/ErrorMessage/ErrorResourceAccessDenied.js +8 -6
  41. package/es/FactBox/FactBox.js +118 -47
  42. package/es/FileList/File.js +1 -1
  43. package/es/FileList/Format.js +3 -3
  44. package/es/FileList/PdfFile.js +23 -5
  45. package/es/FrontpageArticle/FrontpageArticle.js +1 -1
  46. package/es/Gloss/Gloss.js +122 -94
  47. package/es/Gloss/GlossExample.js +49 -52
  48. package/es/Grid/Grid.js +1 -1
  49. package/es/KeyFigure/KeyFigure.js +2 -2
  50. package/es/LanguageSelector/LanguageSelector.js +2 -2
  51. package/es/LicenseByline/EmbedByline.js +5 -6
  52. package/es/LicenseByline/LicenseDescription.js +1 -1
  53. package/es/LicenseByline/LicenseLink.js +1 -2
  54. package/es/LinkBlock/LinkBlock.js +61 -33
  55. package/es/LinkBlock/LinkBlockSection.js +9 -6
  56. package/es/Logo/Logo.js +1 -30
  57. package/es/Messages/MessageBox.js +1 -1
  58. package/es/RelatedArticleList/RelatedArticleList.js +73 -90
  59. package/es/ResourceBox/ResourceBox.js +67 -44
  60. package/es/Search/ActiveFilters.js +1 -1
  61. package/es/Search/ContentTypeResult.js +9 -6
  62. package/es/Search/ContentTypeResultStyles.js +1 -1
  63. package/es/Search/IsPathToHighlight.js +1 -1
  64. package/es/Search/SearchField.js +6 -8
  65. package/es/Search/SearchResult.js +14 -19
  66. package/es/Search/SearchResultSleeve.js +14 -16
  67. package/es/SnackBar/SnackbarProvider.js +8 -11
  68. package/es/TagSelector/TagSelector.js +124 -131
  69. package/es/TreeStructure/AddFolderButton.js +4 -6
  70. package/es/TreeStructure/ComboboxButton.js +4 -7
  71. package/es/TreeStructure/FolderItem.js +12 -15
  72. package/es/TreeStructure/FolderItems.js +3 -3
  73. package/es/TreeStructure/TreeStructure.js +9 -12
  74. package/es/TreeStructure/helperFunctions.js +1 -1
  75. package/es/ZendeskButton/ZendeskButton.js +55 -0
  76. package/es/i18n/formatNestedMessages.js +1 -1
  77. package/es/i18n/index.js +2 -1
  78. package/es/i18n/useComponentTranslations.js +83 -0
  79. package/es/index.js +6 -12
  80. package/es/locale/messages-en.js +39 -12
  81. package/es/locale/messages-nb.js +39 -12
  82. package/es/locale/messages-nn.js +39 -12
  83. package/es/locale/messages-se.js +39 -12
  84. package/es/locale/messages-sma.js +39 -12
  85. package/es/model/ContentType.js +3 -0
  86. package/es/styles.css +1197 -0
  87. package/es/utils/relativeUrl.js +3 -3
  88. package/lib/Article/Article.js +3 -4
  89. package/lib/Article/ArticleByline.js +9 -9
  90. package/lib/Article/ArticleFootNotes.js +4 -4
  91. package/lib/Article/ArticleParagraph.js +12 -14
  92. package/lib/AudioPlayer/AudioPlayer.d.ts +1 -2
  93. package/lib/AudioPlayer/AudioPlayer.js +142 -162
  94. package/lib/AudioPlayer/Controls.js +190 -205
  95. package/lib/AudioPlayer/SpeechControl.js +13 -11
  96. package/lib/BlogPost/BlogPost.d.ts +2 -2
  97. package/lib/BlogPost/BlogPost.js +85 -24
  98. package/lib/CampaignBlock/CampaignBlock.d.ts +2 -2
  99. package/lib/CampaignBlock/CampaignBlock.js +106 -69
  100. package/lib/CodeBlock/CodeBlock.d.ts +5 -8
  101. package/lib/CodeBlock/CodeBlock.js +88 -96
  102. package/lib/Concept/Concept.d.ts +18 -0
  103. package/lib/Concept/Concept.js +75 -0
  104. package/lib/ContactBlock/ContactBlock.js +55 -43
  105. package/lib/ContentLoader/index.js +7 -7
  106. package/lib/ContentTypeBadge/ContentTypeBadgeNew.d.ts +17 -0
  107. package/lib/ContentTypeBadge/ContentTypeBadgeNew.js +56 -0
  108. package/lib/CopyParagraphButton/CopyParagraphButton.js +4 -4
  109. package/lib/Embed/AudioEmbed.js +7 -12
  110. package/lib/Embed/BrightcoveEmbed.d.ts +1 -2
  111. package/lib/Embed/BrightcoveEmbed.js +28 -40
  112. package/lib/Embed/CodeEmbed.js +56 -8
  113. package/lib/Embed/ConceptEmbed.d.ts +15 -21
  114. package/lib/Embed/ConceptEmbed.js +58 -306
  115. package/lib/Embed/ConceptListEmbed.js +21 -26
  116. package/lib/Embed/ContentLinkEmbed.js +10 -11
  117. package/lib/Embed/CopyrightEmbed.js +6 -22
  118. package/lib/Embed/EmbedErrorPlaceholder.d.ts +4 -3
  119. package/lib/Embed/EmbedErrorPlaceholder.js +32 -18
  120. package/lib/Embed/ExternalEmbed.d.ts +1 -2
  121. package/lib/Embed/ExternalEmbed.js +20 -29
  122. package/lib/Embed/FootnoteEmbed.js +14 -12
  123. package/lib/Embed/GlossEmbed.d.ts +13 -0
  124. package/lib/Embed/GlossEmbed.js +76 -0
  125. package/lib/Embed/H5pEmbed.d.ts +1 -2
  126. package/lib/Embed/H5pEmbed.js +22 -21
  127. package/lib/Embed/IframeEmbed.d.ts +1 -2
  128. package/lib/Embed/IframeEmbed.js +19 -17
  129. package/lib/Embed/ImageEmbed.d.ts +1 -2
  130. package/lib/Embed/ImageEmbed.js +167 -123
  131. package/lib/Embed/InlineTriggerButton.d.ts +11 -0
  132. package/lib/Embed/InlineTriggerButton.js +76 -0
  133. package/lib/Embed/RelatedContentEmbed.js +8 -10
  134. package/lib/Embed/UnknownEmbed.js +9 -10
  135. package/lib/Embed/UuDisclaimerEmbed.js +18 -28
  136. package/lib/Embed/index.d.ts +2 -3
  137. package/lib/Embed/index.js +2 -9
  138. package/lib/ErrorMessage/ErrorMessage.js +41 -24
  139. package/lib/ErrorMessage/ErrorResourceAccessDenied.js +7 -6
  140. package/lib/FactBox/FactBox.d.ts +0 -1
  141. package/lib/FactBox/FactBox.js +119 -46
  142. package/lib/FileList/File.js +1 -1
  143. package/lib/FileList/Format.js +3 -3
  144. package/lib/FileList/PdfFile.js +23 -5
  145. package/lib/FrontpageArticle/FrontpageArticle.js +1 -1
  146. package/lib/Gloss/Gloss.d.ts +10 -2
  147. package/lib/Gloss/Gloss.js +122 -93
  148. package/lib/Gloss/GlossExample.d.ts +3 -5
  149. package/lib/Gloss/GlossExample.js +49 -53
  150. package/lib/Grid/Grid.js +1 -1
  151. package/lib/KeyFigure/KeyFigure.js +2 -2
  152. package/lib/LanguageSelector/LanguageSelector.js +2 -2
  153. package/lib/LicenseByline/EmbedByline.js +5 -6
  154. package/lib/LicenseByline/LicenseDescription.js +1 -1
  155. package/lib/LicenseByline/LicenseLink.js +1 -2
  156. package/lib/LinkBlock/LinkBlock.js +62 -34
  157. package/lib/LinkBlock/LinkBlockSection.js +9 -7
  158. package/lib/Logo/Logo.d.ts +1 -3
  159. package/lib/Logo/Logo.js +2 -30
  160. package/lib/Messages/MessageBox.js +1 -1
  161. package/lib/RelatedArticleList/RelatedArticleList.d.ts +4 -4
  162. package/lib/RelatedArticleList/RelatedArticleList.js +77 -93
  163. package/lib/ResourceBox/ResourceBox.js +67 -45
  164. package/lib/Search/ActiveFilters.js +1 -1
  165. package/lib/Search/ContentTypeResult.js +9 -6
  166. package/lib/Search/ContentTypeResultStyles.js +1 -1
  167. package/lib/Search/IsPathToHighlight.js +1 -1
  168. package/lib/Search/SearchField.js +6 -8
  169. package/lib/Search/SearchResult.js +14 -19
  170. package/lib/Search/SearchResultSleeve.js +14 -16
  171. package/lib/SnackBar/SnackbarProvider.js +8 -11
  172. package/lib/TagSelector/TagSelector.d.ts +27 -12
  173. package/lib/TagSelector/TagSelector.js +126 -131
  174. package/lib/TreeStructure/AddFolderButton.js +4 -6
  175. package/lib/TreeStructure/ComboboxButton.js +4 -7
  176. package/lib/TreeStructure/FolderItem.js +12 -15
  177. package/lib/TreeStructure/FolderItems.js +3 -3
  178. package/lib/TreeStructure/TreeStructure.js +9 -12
  179. package/lib/TreeStructure/helperFunctions.js +1 -1
  180. package/lib/ZendeskButton/ZendeskButton.d.ts +19 -0
  181. package/lib/ZendeskButton/ZendeskButton.js +61 -0
  182. package/lib/i18n/formatNestedMessages.js +1 -1
  183. package/lib/i18n/index.d.ts +1 -0
  184. package/lib/i18n/index.js +20 -1
  185. package/lib/i18n/useComponentTranslations.d.ts +14 -0
  186. package/lib/i18n/useComponentTranslations.js +93 -0
  187. package/lib/index.d.ts +7 -14
  188. package/lib/index.js +77 -89
  189. package/lib/locale/messages-en.d.ts +27 -0
  190. package/lib/locale/messages-en.js +39 -12
  191. package/lib/locale/messages-nb.d.ts +27 -0
  192. package/lib/locale/messages-nb.js +39 -12
  193. package/lib/locale/messages-nn.d.ts +27 -0
  194. package/lib/locale/messages-nn.js +39 -12
  195. package/lib/locale/messages-se.d.ts +27 -0
  196. package/lib/locale/messages-se.js +39 -12
  197. package/lib/locale/messages-sma.d.ts +27 -0
  198. package/lib/locale/messages-sma.js +39 -12
  199. package/lib/model/ContentType.d.ts +3 -0
  200. package/lib/model/ContentType.js +4 -1
  201. package/lib/styles.css +1197 -0
  202. package/lib/types.d.ts +1 -0
  203. package/lib/utils/relativeUrl.js +3 -3
  204. package/package.json +18 -15
  205. package/src/Article/ArticleParagraph.tsx +11 -9
  206. package/src/AudioPlayer/AudioPlayer.tsx +139 -176
  207. package/src/AudioPlayer/Controls.tsx +210 -250
  208. package/src/AudioPlayer/SpeechControl.tsx +9 -7
  209. package/src/BlogPost/BlogPost.tsx +82 -58
  210. package/src/CampaignBlock/CampaignBlock.tsx +92 -55
  211. package/src/CodeBlock/CodeBlock.stories.tsx +0 -43
  212. package/src/CodeBlock/CodeBlock.tsx +91 -202
  213. package/src/Concept/Concept.stories.tsx +142 -0
  214. package/src/Concept/Concept.tsx +73 -0
  215. package/src/ContactBlock/ContactBlock.tsx +10 -2
  216. package/src/ContentTypeBadge/ContentTypeBadgeNew.stories.tsx +70 -0
  217. package/src/ContentTypeBadge/ContentTypeBadgeNew.tsx +69 -0
  218. package/src/Embed/AudioEmbed.tsx +2 -2
  219. package/src/Embed/BrightcoveEmbed.stories.tsx +0 -3
  220. package/src/Embed/BrightcoveEmbed.tsx +17 -19
  221. package/src/Embed/CodeEmbed.stories.tsx +95 -0
  222. package/src/Embed/CodeEmbed.tsx +62 -7
  223. package/src/Embed/ConceptEmbed.stories.tsx +1 -105
  224. package/src/Embed/ConceptEmbed.tsx +60 -393
  225. package/src/Embed/ConceptListEmbed.tsx +20 -19
  226. package/src/Embed/ContentLinkEmbed.tsx +8 -10
  227. package/src/Embed/CopyrightEmbed.tsx +1 -11
  228. package/src/Embed/EmbedErrorPlaceholder.tsx +31 -28
  229. package/src/Embed/ExternalEmbed.tsx +14 -17
  230. package/src/Embed/FootnoteEmbed.stories.tsx +2 -5
  231. package/src/Embed/FootnoteEmbed.tsx +13 -16
  232. package/src/Embed/GlossEmbed.stories.tsx +140 -0
  233. package/src/Embed/GlossEmbed.tsx +64 -0
  234. package/src/Embed/H5pEmbed.tsx +22 -16
  235. package/src/Embed/IframeEmbed.tsx +12 -6
  236. package/src/Embed/ImageEmbed.stories.tsx +53 -11
  237. package/src/Embed/ImageEmbed.tsx +162 -166
  238. package/src/Embed/InlineTriggerButton.tsx +72 -0
  239. package/src/Embed/UnknownEmbed.tsx +6 -7
  240. package/src/Embed/UuDisclaimerEmbed.stories.tsx +4 -4
  241. package/src/Embed/UuDisclaimerEmbed.tsx +17 -25
  242. package/src/Embed/index.ts +2 -3
  243. package/src/ErrorMessage/ErrorMessage.tsx +40 -29
  244. package/src/ErrorMessage/ErrorResourceAccessDenied.tsx +8 -6
  245. package/src/FactBox/FactBox.tsx +115 -115
  246. package/src/FactBox/Factbox.stories.tsx +43 -27
  247. package/src/FileList/FileList.stories.tsx +6 -1
  248. package/src/FileList/PdfFile.tsx +22 -5
  249. package/src/Gloss/Gloss.stories.tsx +107 -1
  250. package/src/Gloss/Gloss.tsx +143 -156
  251. package/src/Gloss/GlossExample.tsx +51 -77
  252. package/src/LinkBlock/LinkBlock.stories.tsx +8 -10
  253. package/src/LinkBlock/LinkBlock.tsx +54 -59
  254. package/src/LinkBlock/LinkBlockSection.tsx +9 -12
  255. package/src/Logo/Logo.stories.tsx +0 -1
  256. package/src/Logo/Logo.tsx +2 -30
  257. package/src/RelatedArticleList/RelatedArticleList.tsx +69 -88
  258. package/src/ResourceBox/ResourceBox.tsx +65 -73
  259. package/src/Search/ContentTypeResult.tsx +9 -3
  260. package/src/Search/SearchResultSleeve.tsx +5 -2
  261. package/src/TagSelector/TagSelector.stories.tsx +92 -68
  262. package/src/TagSelector/TagSelector.tsx +161 -126
  263. package/src/ZendeskButton/ZendeskButton.tsx +58 -0
  264. package/src/i18n/index.ts +5 -0
  265. package/src/i18n/useComponentTranslations.ts +72 -0
  266. package/src/index.ts +27 -18
  267. package/src/locale/messages-en.ts +29 -2
  268. package/src/locale/messages-nb.ts +29 -2
  269. package/src/locale/messages-nn.ts +29 -2
  270. package/src/locale/messages-se.ts +29 -2
  271. package/src/locale/messages-sma.ts +29 -2
  272. package/src/model/ContentType.ts +3 -0
  273. package/src/types.ts +2 -0
  274. package/es/DefinitionList/DefinitionDescription.js +0 -28
  275. package/es/DefinitionList/DefinitionTerm.js +0 -28
  276. package/es/DefinitionList/index.js +0 -10
  277. package/es/Embed/conceptComponents.js +0 -155
  278. package/es/ExpandableBox/ExpandableBox.js +0 -29
  279. package/es/ExpandableBox/index.js +0 -9
  280. package/es/Figure/Figure.js +0 -73
  281. package/es/Figure/index.js +0 -9
  282. package/es/FramedContent/FramedContent.js +0 -28
  283. package/es/FramedContent/index.js +0 -10
  284. package/es/Image/Image.js +0 -100
  285. package/es/Image/ImageLink.js +0 -39
  286. package/es/Image/index.js +0 -12
  287. package/es/LetterFilter/LetterFilter.js +0 -54
  288. package/es/LetterFilter/alphabet.js +0 -9
  289. package/es/LetterFilter/index.js +0 -10
  290. package/es/Notion/Notion.js +0 -76
  291. package/es/Notion/NotionImage.js +0 -91
  292. package/es/Notion/index.js +0 -9
  293. package/es/Table/Table.js +0 -141
  294. package/es/Table/index.js +0 -11
  295. package/es/TagSelector/Control.js +0 -28
  296. package/es/TagSelector/DropdownIndicator.js +0 -60
  297. package/es/TagSelector/Input.js +0 -22
  298. package/es/TagSelector/Menu.js +0 -27
  299. package/es/TagSelector/MenuList.js +0 -28
  300. package/es/TagSelector/Option.js +0 -60
  301. package/es/TagSelector/SelectContainer.js +0 -27
  302. package/es/TagSelector/ValueButton.js +0 -53
  303. package/es/TagSelector/ariaMessages.js +0 -94
  304. package/es/TagSelector/index.js +0 -10
  305. package/es/TagSelector/types.js +0 -1
  306. package/lib/DefinitionList/DefinitionDescription.d.ts +0 -10
  307. package/lib/DefinitionList/DefinitionDescription.js +0 -35
  308. package/lib/DefinitionList/DefinitionTerm.d.ts +0 -10
  309. package/lib/DefinitionList/DefinitionTerm.js +0 -35
  310. package/lib/DefinitionList/index.d.ts +0 -9
  311. package/lib/DefinitionList/index.js +0 -20
  312. package/lib/Embed/conceptComponents.d.ts +0 -40
  313. package/lib/Embed/conceptComponents.js +0 -163
  314. package/lib/ExpandableBox/ExpandableBox.d.ts +0 -15
  315. package/lib/ExpandableBox/ExpandableBox.js +0 -37
  316. package/lib/ExpandableBox/index.d.ts +0 -8
  317. package/lib/ExpandableBox/index.js +0 -18
  318. package/lib/Figure/Figure.d.ts +0 -16
  319. package/lib/Figure/Figure.js +0 -81
  320. package/lib/Figure/index.d.ts +0 -9
  321. package/lib/Figure/index.js +0 -13
  322. package/lib/FramedContent/FramedContent.d.ts +0 -12
  323. package/lib/FramedContent/FramedContent.js +0 -35
  324. package/lib/FramedContent/index.d.ts +0 -9
  325. package/lib/FramedContent/index.js +0 -16
  326. package/lib/Image/Image.d.ts +0 -38
  327. package/lib/Image/Image.js +0 -106
  328. package/lib/Image/ImageLink.d.ts +0 -18
  329. package/lib/Image/ImageLink.js +0 -44
  330. package/lib/Image/index.d.ts +0 -12
  331. package/lib/Image/index.js +0 -30
  332. package/lib/LetterFilter/LetterFilter.d.ts +0 -14
  333. package/lib/LetterFilter/LetterFilter.js +0 -61
  334. package/lib/LetterFilter/alphabet.d.ts +0 -8
  335. package/lib/LetterFilter/alphabet.js +0 -15
  336. package/lib/LetterFilter/index.d.ts +0 -9
  337. package/lib/LetterFilter/index.js +0 -16
  338. package/lib/Notion/Notion.d.ts +0 -20
  339. package/lib/Notion/Notion.js +0 -82
  340. package/lib/Notion/NotionImage.d.ts +0 -23
  341. package/lib/Notion/NotionImage.js +0 -101
  342. package/lib/Notion/index.d.ts +0 -8
  343. package/lib/Notion/index.js +0 -13
  344. package/lib/Table/Table.d.ts +0 -19
  345. package/lib/Table/Table.js +0 -145
  346. package/lib/Table/index.d.ts +0 -10
  347. package/lib/Table/index.js +0 -23
  348. package/lib/TagSelector/Control.d.ts +0 -11
  349. package/lib/TagSelector/Control.js +0 -35
  350. package/lib/TagSelector/DropdownIndicator.d.ts +0 -11
  351. package/lib/TagSelector/DropdownIndicator.js +0 -64
  352. package/lib/TagSelector/Input.d.ts +0 -12
  353. package/lib/TagSelector/Input.js +0 -29
  354. package/lib/TagSelector/Menu.d.ts +0 -12
  355. package/lib/TagSelector/Menu.js +0 -34
  356. package/lib/TagSelector/MenuList.d.ts +0 -16
  357. package/lib/TagSelector/MenuList.js +0 -35
  358. package/lib/TagSelector/Option.d.ts +0 -12
  359. package/lib/TagSelector/Option.js +0 -67
  360. package/lib/TagSelector/SelectContainer.d.ts +0 -11
  361. package/lib/TagSelector/SelectContainer.js +0 -34
  362. package/lib/TagSelector/ValueButton.d.ts +0 -20
  363. package/lib/TagSelector/ValueButton.js +0 -60
  364. package/lib/TagSelector/ariaMessages.d.ts +0 -16
  365. package/lib/TagSelector/ariaMessages.js +0 -101
  366. package/lib/TagSelector/index.d.ts +0 -11
  367. package/lib/TagSelector/index.js +0 -13
  368. package/lib/TagSelector/types.d.ts +0 -11
  369. package/lib/TagSelector/types.js +0 -5
  370. package/src/DefinitionList/DefinitionDescription.tsx +0 -26
  371. package/src/DefinitionList/DefinitionTerm.tsx +0 -26
  372. package/src/DefinitionList/index.tsx +0 -10
  373. package/src/Embed/conceptComponents.tsx +0 -293
  374. package/src/ExpandableBox/ExpandableBox.stories.tsx +0 -41
  375. package/src/ExpandableBox/ExpandableBox.tsx +0 -23
  376. package/src/ExpandableBox/index.ts +0 -9
  377. package/src/Figure/Figure.tsx +0 -167
  378. package/src/Figure/index.ts +0 -11
  379. package/src/FramedContent/FramedContent.stories.tsx +0 -152
  380. package/src/FramedContent/FramedContent.tsx +0 -26
  381. package/src/FramedContent/index.ts +0 -10
  382. package/src/Image/Image.stories.tsx +0 -61
  383. package/src/Image/Image.tsx +0 -147
  384. package/src/Image/ImageLink.tsx +0 -37
  385. package/src/Image/__tests__/Image-test.tsx +0 -66
  386. package/src/Image/__tests__/__snapshots__/Image-test.tsx.snap +0 -194
  387. package/src/Image/index.ts +0 -14
  388. package/src/LetterFilter/LetterFilter.stories.tsx +0 -29
  389. package/src/LetterFilter/LetterFilter.tsx +0 -78
  390. package/src/LetterFilter/alphabet.ts +0 -39
  391. package/src/LetterFilter/index.ts +0 -11
  392. package/src/Notion/Notion.tsx +0 -96
  393. package/src/Notion/NotionImage.tsx +0 -114
  394. package/src/Notion/index.ts +0 -9
  395. package/src/Table/Table.stories.tsx +0 -738
  396. package/src/Table/Table.tsx +0 -284
  397. package/src/Table/index.ts +0 -12
  398. package/src/TagSelector/Control.tsx +0 -34
  399. package/src/TagSelector/DropdownIndicator.tsx +0 -55
  400. package/src/TagSelector/Input.tsx +0 -31
  401. package/src/TagSelector/Menu.tsx +0 -38
  402. package/src/TagSelector/MenuList.tsx +0 -30
  403. package/src/TagSelector/Option.tsx +0 -58
  404. package/src/TagSelector/SelectContainer.tsx +0 -31
  405. package/src/TagSelector/ValueButton.tsx +0 -47
  406. package/src/TagSelector/ariaMessages.ts +0 -96
  407. package/src/TagSelector/index.ts +0 -14
  408. package/src/TagSelector/types.ts +0 -12
@@ -1,142 +1,177 @@
1
1
  /**
2
- * Copyright (c) 2022-present, NDLA.
2
+ * Copyright (c) 2024-present, NDLA.
3
3
  *
4
4
  * This source code is licensed under the GPLv3 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
8
 
9
- import { KeyboardEvent, useMemo, useState } from "react";
10
- import { useTranslation } from "react-i18next";
11
- import { MultiValue, StylesConfig } from "react-select";
12
- import CreatableSelect from "react-select/creatable";
13
- import styled from "@emotion/styled";
14
- import { colors, fonts, spacing, utils } from "@ndla/core";
15
- import { createAriaMessages } from "./ariaMessages";
16
- import Control from "./Control";
17
- import DropdownIndicator from "./DropdownIndicator";
18
- import Input from "./Input";
19
- import Menu from "./Menu";
20
- import MenuList from "./MenuList";
21
- import Option from "./Option";
22
- import SelectContainer from "./SelectContainer";
23
- import { TagType } from "./types";
24
- import ValueButton from "./ValueButton";
25
-
26
- const styles: StylesConfig<TagType, true> = {
27
- menu: () => ({}),
28
- dropdownIndicator: () => ({}),
29
- placeholder: (provided) => ({
30
- ...provided,
31
- padding: `0 ${spacing.small}`,
32
- color: colors.brand.primary,
33
- margin: 0,
34
- }),
35
- valueContainer: (provided) => ({ ...provided, padding: 0 }),
36
- indicatorSeparator: () => ({
37
- display: "none",
38
- }),
39
- indicatorsContainer: (provided) => ({
40
- ...provided,
41
- alignSelf: "flex-end",
42
- }),
43
- };
9
+ import { forwardRef, useEffect, useId, useRef } from "react";
10
+ import type { ComboboxCollectionItem } from "@ark-ui/react";
11
+ import { ComboboxContext, useTagsInputContext } from "@ark-ui/react";
12
+ import { Cross } from "@ndla/icons/action";
13
+ import {
14
+ ComboboxClearTrigger,
15
+ ComboboxControl,
16
+ ComboboxControlProps,
17
+ ComboboxInput,
18
+ ComboboxInputProps,
19
+ ComboboxLabel,
20
+ ComboboxRoot,
21
+ ComboboxRootProps,
22
+ ComboboxTrigger,
23
+ TagsInputControl,
24
+ TagsInputControlProps,
25
+ TagsInputInput,
26
+ TagsInputInputProps,
27
+ TagsInputItem,
28
+ TagsInputItemDeleteTrigger,
29
+ TagsInputItemPreview,
30
+ TagsInputItemText,
31
+ TagsInputRoot,
32
+ TagsInputRootProps,
33
+ TagsInputItemInput,
34
+ } from "@ndla/primitives";
35
+ import { contains } from "@ndla/util";
44
36
 
45
- const StyledTagSelector = styled.div`
46
- display: flex;
47
- flex-direction: column;
48
- flex: 1;
49
- overflow: hidden;
50
- `;
51
-
52
- interface StyledLabelProps {
53
- labelHidden?: boolean;
54
- }
55
-
56
- const StyledLabel = styled.label<StyledLabelProps>`
57
- font-weight: ${fonts.weight.semibold};
58
- ${(p) => p.labelHidden && utils.labelHidden}
59
- `;
60
-
61
- interface Props {
62
- label: string;
63
- tags: string[];
64
- selected: string[];
65
- onChange: (tags: string[]) => void;
66
- onCreateTag: (name: string) => void;
67
- className?: string;
68
- labelHidden?: boolean;
69
- }
70
-
71
- const TagSelector = ({
72
- selected: _selected,
73
- tags: _tags,
74
- onChange,
75
- onCreateTag,
76
- className,
77
- label,
78
- labelHidden,
79
- }: Props) => {
80
- const { t } = useTranslation();
81
- const [input, setInput] = useState("");
82
- const tags = useMemo(() => _tags.map((tag) => ({ value: tag, label: tag })), [_tags]);
83
- const selected = useMemo(() => _selected.map((tag) => ({ value: tag, label: tag })), [_selected]);
84
-
85
- const handleSpaceClick = (e: KeyboardEvent<HTMLDivElement>) => {
86
- if (e.key === " ") {
87
- e.preventDefault();
88
- if (!_selected.find((tag) => tag === input) && input !== "") {
89
- onChange(_selected.concat(input));
90
- }
91
- setInput("");
92
- }
93
- };
37
+ export type TagSelectorRootProps<T extends ComboboxCollectionItem> = ComboboxRootProps<T> & TagsInputRootProps;
94
38
 
95
- const handleChange = (tags: MultiValue<TagType>) => {
96
- onChange(tags.map((tag) => tag.value));
39
+ export const TagSelectorRoot = <T extends ComboboxCollectionItem>({
40
+ allowCustomValue = true,
41
+ multiple = true,
42
+ selectionBehavior = "clear",
43
+ editable,
44
+ addOnPaste = false,
45
+ onValueChange,
46
+ children,
47
+ value,
48
+ translations,
49
+ ...rest
50
+ }: TagSelectorRootProps<T>) => {
51
+ const ids = {
52
+ root: useId(),
53
+ input: useId(),
54
+ control: useId(),
97
55
  };
98
56
 
99
- const createLabel = (tag: string) => t("tagSelector.createLabel", { tag });
57
+ const controlRef = useRef<HTMLDivElement | undefined>(undefined);
58
+
59
+ useEffect(() => {
60
+ if (!controlRef.current) {
61
+ controlRef.current = document.getElementById(ids.control) as HTMLDivElement | undefined;
62
+ }
63
+ }, [ids.control]);
100
64
 
101
65
  return (
102
- <StyledTagSelector className={className}>
103
- {label && (
104
- <StyledLabel labelHidden={labelHidden} htmlFor="tagselector-creatable" id="tagselector-label">
105
- {label}
106
- </StyledLabel>
107
- )}
108
- <CreatableSelect
109
- id="tagselector-creatable"
110
- aria-labelledby={label ? "tagselector-label" : undefined}
111
- ariaLiveMessages={createAriaMessages(t)}
112
- components={{
113
- DropdownIndicator,
114
- MultiValue: ValueButton,
115
- SelectContainer,
116
- MenuList,
117
- Control,
118
- Option,
119
- Menu,
120
- Input,
121
- }}
122
- formatCreateLabel={createLabel}
123
- inputValue={input}
124
- isClearable={false}
125
- isMulti
126
- noOptionsMessage={() => t("tagSelector.noOptions")}
127
- onChange={handleChange}
128
- onCreateOption={onCreateTag}
129
- onInputChange={setInput}
130
- onKeyDown={handleSpaceClick}
131
- options={tags}
132
- placeholder={t("tagSelector.placeholder")}
133
- screenReaderStatus={({ count }) => t("tagSelector.aria.screenReaderStatus", { count })}
134
- styles={styles}
135
- tabSelectsValue={false}
136
- value={selected}
137
- />
138
- </StyledTagSelector>
66
+ <ComboboxRoot
67
+ ids={ids}
68
+ asChild
69
+ allowCustomValue={allowCustomValue}
70
+ multiple={multiple}
71
+ selectionBehavior={selectionBehavior}
72
+ onValueChange={onValueChange}
73
+ translations={translations}
74
+ onPointerDownOutside={(event) => {
75
+ if (contains(controlRef.current, event.detail.originalEvent.target)) {
76
+ event.preventDefault();
77
+ }
78
+ }}
79
+ value={value}
80
+ {...rest}
81
+ >
82
+ <ComboboxContext>
83
+ {(api) => (
84
+ <TagsInputRoot
85
+ ids={ids}
86
+ value={value}
87
+ onInputValueChange={(details) => api.setInputValue(details.inputValue)}
88
+ editable={editable}
89
+ onValueChange={onValueChange}
90
+ addOnPaste={addOnPaste}
91
+ translations={translations}
92
+ >
93
+ {children}
94
+ </TagsInputRoot>
95
+ )}
96
+ </ComboboxContext>
97
+ </ComboboxRoot>
139
98
  );
140
99
  };
141
100
 
142
- export default TagSelector;
101
+ export type TagSelectorControlProps = ComboboxControlProps & TagsInputControlProps;
102
+
103
+ export const TagSelectorLabel = ComboboxLabel;
104
+
105
+ export const TagSelectorItemInput = TagsInputItemInput;
106
+
107
+ export const TagSelectorTrigger = ComboboxTrigger;
108
+
109
+ export const TagSelectorControl = forwardRef<HTMLDivElement, TagSelectorControlProps>(({ children, ...props }, ref) => {
110
+ return (
111
+ <ComboboxControl asChild>
112
+ <TagsInputControl {...props} ref={ref}>
113
+ {children}
114
+ </TagsInputControl>
115
+ </ComboboxControl>
116
+ );
117
+ });
118
+
119
+ export const TagSelectorClearTrigger = ComboboxClearTrigger;
120
+
121
+ export type TagSelectorInputProps = ComboboxInputProps & TagsInputInputProps;
122
+
123
+ // If you need to modify the TagsInputItem, you can use this.
124
+ export const TagSelectorInputBase = forwardRef<HTMLInputElement, TagSelectorInputProps>(
125
+ ({ children, ...props }, ref) => {
126
+ const tagsApi = useTagsInputContext();
127
+
128
+ return (
129
+ <ComboboxInput asChild>
130
+ <TagsInputInput
131
+ {...props}
132
+ onKeyDown={(event) => {
133
+ if (event.key === "Enter") {
134
+ tagsApi.addValue(tagsApi.inputValue);
135
+ }
136
+ }}
137
+ ref={ref}
138
+ >
139
+ {children}
140
+ </TagsInputInput>
141
+ </ComboboxInput>
142
+ );
143
+ },
144
+ );
145
+
146
+ export const TagSelectorInput = forwardRef<HTMLInputElement, TagSelectorInputProps>(({ children, ...props }, ref) => {
147
+ const tagsApi = useTagsInputContext();
148
+
149
+ return (
150
+ <>
151
+ {tagsApi.value.map((value, index) => (
152
+ <TagsInputItem index={index} value={value} key={value}>
153
+ <TagsInputItemPreview>
154
+ <TagsInputItemText>{value}</TagsInputItemText>
155
+ <TagsInputItemDeleteTrigger>
156
+ <Cross />
157
+ </TagsInputItemDeleteTrigger>
158
+ </TagsInputItemPreview>
159
+ <TagsInputItemInput />
160
+ </TagsInputItem>
161
+ ))}
162
+ <ComboboxInput asChild>
163
+ <TagsInputInput
164
+ {...props}
165
+ onKeyDown={(event) => {
166
+ if (event.key === "Enter") {
167
+ tagsApi.addValue(tagsApi.inputValue);
168
+ }
169
+ }}
170
+ ref={ref}
171
+ >
172
+ {children}
173
+ </TagsInputInput>
174
+ </ComboboxInput>
175
+ </>
176
+ );
177
+ });
@@ -0,0 +1,58 @@
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
+ import { forwardRef, useState } from "react";
10
+ import { Button, ButtonProps } from "@ndla/primitives";
11
+
12
+ // TODO: Let's consider abandoning `disabled` on the button here. It should instead just open/close the widget based on its current state.
13
+
14
+ export interface ZendeskButtonProps extends ButtonProps {
15
+ widgetKey: string;
16
+ locale: string;
17
+ }
18
+
19
+ declare global {
20
+ interface Window {
21
+ zE: (modifier: string, action: string, callback?: (() => void) | string) => void;
22
+ }
23
+ }
24
+
25
+ export const ZendeskButton = forwardRef<HTMLButtonElement, ZendeskButtonProps>(
26
+ ({ locale, variant = "secondary", widgetKey, children, ...rest }, ref) => {
27
+ const [loading, setLoading] = useState(false);
28
+ const handleClick = () => {
29
+ if (window && !window.zE) {
30
+ setLoading(true);
31
+ // Asynchronously load zendesk scripts for better performance
32
+ const script = document.createElement("script");
33
+ script.id = "ze-snippet";
34
+ script.type = "text/javascript";
35
+ script.async = true;
36
+ script.onload = () => {
37
+ if (window.zE) {
38
+ window.zE("webWidget", "setLocale", locale);
39
+ window.zE("webWidget:on", "close", () => {
40
+ setLoading(false);
41
+ });
42
+ window.zE("webWidget", "open");
43
+ }
44
+ };
45
+ script.src = `https://static.zdassets.com/ekr/snippet.js?key=${widgetKey}`;
46
+ document.body.appendChild(script);
47
+ } else if (window?.zE) {
48
+ window.zE("webWidget", "open");
49
+ }
50
+ };
51
+
52
+ return (
53
+ <Button onClick={handleClick} variant={variant} id="zendeskButton" disabled={loading} {...rest} ref={ref}>
54
+ {children}
55
+ </Button>
56
+ );
57
+ },
58
+ );
package/src/i18n/index.ts CHANGED
@@ -8,3 +8,8 @@
8
8
 
9
9
  export { i18nInstance } from "./i18n";
10
10
  export { formatNestedMessages } from "./formatNestedMessages";
11
+ export {
12
+ useComboboxTranslations,
13
+ useTagSelectorTranslations,
14
+ useTagsInputTranslations,
15
+ } from "./useComponentTranslations";
@@ -0,0 +1,72 @@
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
+ import { useTranslation } from "react-i18next";
10
+ import type { ComboboxCollectionItem } from "@ark-ui/react";
11
+ import type { ComboboxRootProps, PaginationRootProps, TagsInputRootProps } from "@ndla/primitives";
12
+ import { TagSelectorRootProps } from "../TagSelector/TagSelector";
13
+
14
+ export const useTagsInputTranslations = (
15
+ translations?: Partial<TagsInputRootProps["translations"]>,
16
+ ): TagsInputRootProps["translations"] => {
17
+ const { t } = useTranslation("translation", { keyPrefix: "component.tagsInput" });
18
+
19
+ return {
20
+ clearTriggerLabel: t("clearTriggerLabel"),
21
+ deleteTagTriggerLabel: (tag) => t("deleteTagTriggerLabel", { tag }),
22
+ tagAdded: (tag) => t("tagAdded", { tag }),
23
+ tagsPasted: (tag) => t("tagsPasted", { length: tag.length }),
24
+ tagEdited: (tag) => t("tagEdited", { tag }),
25
+ tagUpdated: (tag) => t("tagUpdated", { tag }),
26
+ tagDeleted: (tag) => t("tagDeleted", { tag }),
27
+ tagSelected: (tag) => t("tagSelected", { tag }),
28
+ ...translations,
29
+ };
30
+ };
31
+
32
+ export const useComboboxTranslations = <T extends ComboboxCollectionItem>(
33
+ translations?: Partial<ComboboxRootProps<T>["translations"]>,
34
+ ): ComboboxRootProps<T>["translations"] => {
35
+ const { t } = useTranslation("translation", { keyPrefix: "component.combobox" });
36
+
37
+ return {
38
+ triggerLabel: t("triggerLabel"),
39
+ clearTriggerLabel: t("clearTriggerLabel"),
40
+ ...translations,
41
+ };
42
+ };
43
+
44
+ export const useTagSelectorTranslations = <T extends ComboboxCollectionItem>(
45
+ translations?: Partial<TagSelectorRootProps<T>["translations"]>,
46
+ ): TagSelectorRootProps<T>["translations"] => {
47
+ const tagsInputTranslations = useTagsInputTranslations();
48
+ const comboboxTranslations = useComboboxTranslations();
49
+
50
+ return {
51
+ ...comboboxTranslations,
52
+ ...tagsInputTranslations,
53
+ ...translations,
54
+ } as TagSelectorRootProps<T>["translations"];
55
+ };
56
+
57
+ export const usePaginationTranslations = (
58
+ translations?: Partial<PaginationRootProps["translations"]>,
59
+ ): PaginationRootProps["translations"] => {
60
+ const { t } = useTranslation("translation", { keyPrefix: "component.pagination" });
61
+
62
+ return {
63
+ rootLabel: t("rootLabel"),
64
+ prevTriggerLabel: t("prevTriggerLabel"),
65
+ nextTriggerLabel: t("nextTriggerLabel"),
66
+ itemLabel: (details) => {
67
+ const lastPage = details.totalPages > 1 && details.page === details.totalPages;
68
+ return lastPage ? t("lastPage", { page: details.page }) : t("page", { page: details.page });
69
+ },
70
+ ...translations,
71
+ };
72
+ };
package/src/index.ts CHANGED
@@ -9,10 +9,7 @@
9
9
  // Ignore typescript implicit any warning and export all javascript components
10
10
  // Move components to this file when they are migrated to typescript
11
11
 
12
- export { ExpandableBox, ExpandableBoxSummary } from "./ExpandableBox";
13
- export { default as FramedContent } from "./FramedContent";
14
12
  export {
15
- ConceptNotionV2,
16
13
  ImageEmbed,
17
14
  getCrop,
18
15
  getFocalPoint,
@@ -51,8 +48,6 @@ export type { ArticleModifier } from "./Article";
51
48
 
52
49
  export { getPossiblyRelativeUrl } from "./utils/relativeUrl";
53
50
 
54
- export { default as Table, TableStyling } from "./Table";
55
-
56
51
  export { default as ContentLoader } from "./ContentLoader";
57
52
 
58
53
  export { default as RelatedArticleList, RelatedArticle } from "./RelatedArticleList";
@@ -65,9 +60,6 @@ export { default as Logo } from "./Logo";
65
60
 
66
61
  export { default as FactBox } from "./FactBox";
67
62
 
68
- export { default as Image, ImageLink, makeSrcQueryString } from "./Image";
69
- export type { ImageCrop, ImageFocalPoint } from "./Image";
70
-
71
63
  export type { HeroContentType } from "./Hero";
72
64
  export {
73
65
  SubjectMaterialHero,
@@ -83,9 +75,6 @@ export {
83
75
 
84
76
  export { FooterBlock } from "./Footer";
85
77
 
86
- export { Figure } from "./Figure";
87
- export type { FigureType } from "./Figure";
88
-
89
78
  export { LanguageSelector } from "./LanguageSelector";
90
79
 
91
80
  export { default as SearchResultSleeve } from "./Search/SearchResultSleeve";
@@ -115,7 +104,13 @@ export { default as messagesSMA } from "./locale/messages-sma";
115
104
  export { default as Breadcrumb, HomeBreadcrumb } from "./Breadcrumb";
116
105
  export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from "./Breadcrumb";
117
106
 
118
- export { i18nInstance, formatNestedMessages } from "./i18n";
107
+ export {
108
+ i18nInstance,
109
+ formatNestedMessages,
110
+ useTagsInputTranslations,
111
+ useTagSelectorTranslations,
112
+ useComboboxTranslations,
113
+ } from "./i18n";
119
114
 
120
115
  export { default as LayoutItem, OneColumn, PageContainer } from "./Layout";
121
116
 
@@ -130,14 +125,26 @@ export {
130
125
  ConceptBadge,
131
126
  } from "./ContentTypeBadge";
132
127
 
128
+ export type { ContentTypeBadgeProps } from "./ContentTypeBadge/ContentTypeBadgeNew";
129
+ export {
130
+ ContentTypeBadge as ContentTypeBadgeNew,
131
+ contentTypeToBadgeVariantMap,
132
+ } from "./ContentTypeBadge/ContentTypeBadgeNew";
133
+
133
134
  export { default as CopyParagraphButton } from "./CopyParagraphButton";
134
135
 
135
136
  export { default as ContentPlaceholder } from "./ContentPlaceholder";
136
137
 
137
- export { Notion } from "./Notion";
138
-
139
- export type { TagType } from "./TagSelector";
140
- export { TagSelector } from "./TagSelector";
138
+ export {
139
+ TagSelectorRoot,
140
+ TagSelectorLabel,
141
+ TagSelectorItemInput,
142
+ TagSelectorTrigger,
143
+ TagSelectorControl,
144
+ TagSelectorClearTrigger,
145
+ TagSelectorInputBase,
146
+ TagSelectorInput,
147
+ } from "./TagSelector/TagSelector";
141
148
 
142
149
  export { SnackbarProvider, useSnack, BaseSnack, DefaultSnackbar } from "./SnackBar";
143
150
  export type { Snack, SnackContext } from "./SnackBar";
@@ -145,7 +152,6 @@ export { TreeStructure } from "./TreeStructure";
145
152
  export type { TreeStructureProps } from "./TreeStructure";
146
153
 
147
154
  export { SearchField, SearchResultList, SearchResultItem, ActiveFilters } from "./Search";
148
- export { default as LetterFilter } from "./LetterFilter";
149
155
 
150
156
  export { OrderedList, UnOrderedList } from "./List";
151
157
  export { BlogPostV2 } from "./BlogPost";
@@ -162,7 +168,6 @@ export {
162
168
  FRONTPAGE_ARTICLE_MAX_WIDTH,
163
169
  WIDE_FRONTPAGE_ARTICLE_MAX_WIDTH,
164
170
  } from "./FrontpageArticle";
165
- export { DefinitionTerm, DefinitionDescription } from "./DefinitionList";
166
171
  export type { ProgrammeV2 } from "./ProgrammeCard";
167
172
 
168
173
  export { Gloss, GlossExample } from "./Gloss";
@@ -172,3 +177,7 @@ export { LinkBlock, LinkBlockSection } from "./LinkBlock";
172
177
  export type { Article as ArticleType } from "./types";
173
178
 
174
179
  export { CodeBlock, codeLanguageOptions } from "./CodeBlock";
180
+
181
+ export { ZendeskButton } from "./ZendeskButton/ZendeskButton";
182
+
183
+ export type { ZendeskButtonProps } from "./ZendeskButton/ZendeskButton";
@@ -203,7 +203,7 @@ const messages = {
203
203
  alphabeticSort: "Subjects grouped alphabetically",
204
204
  subjectGroup: 'Group "{{ category }}"',
205
205
  allSubjects: "All subjects",
206
- myFavoriteSubjects: "My favorite subjects",
206
+ myFavoriteSubjects: "Your favorite subjects",
207
207
  chooseSubject: "Choose subject",
208
208
  errorDescription: "Sorry, an error occurred while loading the subjects.",
209
209
  confirmRemove: "Are you sure you want to remove {{subject}} from your favorite subjects?",
@@ -334,7 +334,7 @@ const messages = {
334
334
  useCompentenceGoalsFilter: "Use filter",
335
335
  closeCompentenceGoalsFilter: "Close filter",
336
336
  competenceGoalsNarrowBackButton: "Go back",
337
- competenceGoalResourceSearchText: "View resources to competence goal {{code}}",
337
+ competenceGoalResourceSearchText: "View resources for {{code}}",
338
338
  coreResourceSearchText: "View resources to core element {{code}}",
339
339
  competenceGoalShowExtra: "Show",
340
340
  competenceGoalCloseExtra: "Hide",
@@ -577,6 +577,8 @@ const messages = {
577
577
  podcast: "Podcast",
578
578
  h5p: "H5P",
579
579
  video: "Video",
580
+ missing: "Unknown",
581
+ external: "External",
580
582
  },
581
583
  modal: {
582
584
  closeModal: "Close",
@@ -822,6 +824,7 @@ const messages = {
822
824
  url: "Error loading the audio.",
823
825
  caption: "Sorry, an error occurred while loading the audio.",
824
826
  },
827
+ valueText: "{{start}} of {{end}}",
825
828
  controls: {
826
829
  forward15sec: "Forward 15 seconds",
827
830
  rewind15sec: "Rewind 15 seconds",
@@ -1418,6 +1421,7 @@ const messages = {
1418
1421
  },
1419
1422
  gloss: {
1420
1423
  examples: "Examples",
1424
+ showExamples: "Show examples",
1421
1425
  wordClass: "Word class",
1422
1426
  play: "Play gloss",
1423
1427
  transcriptions: {
@@ -1469,6 +1473,29 @@ const messages = {
1469
1473
  menuTitle: "About NDLA",
1470
1474
  },
1471
1475
  login: "Log in",
1476
+ component: {
1477
+ tagsInput: {
1478
+ clearTriggerLabel: "Clear all tags",
1479
+ deleteTagTriggerLabel: "Remove tag {{tag}}",
1480
+ tagAdded: "Added tag {{tag}}",
1481
+ tagsPasted: "Pasted {{length}} tags",
1482
+ tagEdited: "Edited tag {{tag}}. Press enter to save, or escape to cancel.",
1483
+ tagUpdated: "Tag updated to {{tag}}",
1484
+ tagDeleted: "Tag {{tag}} deleted",
1485
+ tagSelected: "Tag {{tag}} selected. Press enter to edit. Press backspace or delete to delete.",
1486
+ },
1487
+ combobox: {
1488
+ triggerLabel: "Show suggestions",
1489
+ clearTriggerLabel: "Clear selection",
1490
+ },
1491
+ pagination: {
1492
+ rootLabel: "Pagination",
1493
+ prevTriggerLabel: "Previous page",
1494
+ nextTriggerLabel: "Next page",
1495
+ lastPage: "Last page, page {{page}}",
1496
+ page: "Page {{page}}",
1497
+ },
1498
+ },
1472
1499
  };
1473
1500
 
1474
1501
  export default messages;