@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
package/lib/types.d.ts CHANGED
@@ -9,6 +9,7 @@ import { ReactNode } from "react";
9
9
  type ResourceTypes = {
10
10
  name: string;
11
11
  };
12
+ export type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
12
13
  export type Resource = {
13
14
  id: string;
14
15
  name: string;
@@ -14,7 +14,7 @@ var _i18n = require("../i18n/i18n");
14
14
  */
15
15
 
16
16
  const ENV_REGEX = /(staging|test)\.?/;
17
- const LANGUAGE_REGEX = new RegExp("^\\/((?:".concat(_i18n.supportedTranslationLanguages.join("|"), ")(?:$|\\/))"), "");
17
+ const LANGUAGE_REGEX = new RegExp(`^\\/((?:${_i18n.supportedTranslationLanguages.join("|")})(?:$|\\/))`, "");
18
18
  const NDLA_URL = /(.*\.)?ndla.no.*/;
19
19
  const REPLACE_WWW = /^www\./;
20
20
  const getPossiblyRelativeUrl = (url, path) => {
@@ -32,8 +32,8 @@ const getPossiblyRelativeUrl = (url, path) => {
32
32
  // If the path language part does not exist, remove it.
33
33
  const urlMatch = urlObj.pathname.match(LANGUAGE_REGEX);
34
34
  const pathMatch = pathObj.pathname.match(LANGUAGE_REGEX);
35
- if (urlMatch !== null && urlMatch !== void 0 && urlMatch[1] && (urlMatch === null || urlMatch === void 0 ? void 0 : urlMatch[1]) !== (pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1])) {
36
- return urlObj.pathname.replace(urlMatch[1], (pathMatch === null || pathMatch === void 0 ? void 0 : pathMatch[1]) || "");
35
+ if (urlMatch?.[1] && urlMatch?.[1] !== pathMatch?.[1]) {
36
+ return urlObj.pathname.replace(urlMatch[1], pathMatch?.[1] || "");
37
37
  }
38
38
  return urlObj.pathname;
39
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "55.0.12-alpha.0",
3
+ "version": "55.0.14-alpha.0",
4
4
  "description": "UI component library for NDLA",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -10,7 +10,8 @@
10
10
  "scripts": {
11
11
  "build": "node ../../scripts/build.js package",
12
12
  "build:types": "tsc -p tsconfig.build.json",
13
- "prepublish": "concurrently 'yarn build:types' 'yarn build:css'",
13
+ "prepublish": "concurrently 'yarn build:types' 'yarn build:css' 'yarn build:panda'",
14
+ "build:panda": "mkdir -p dist && concurrently 'panda cssgen --minimal --outfile dist/styles.css' 'panda ship --outfile dist/panda.buildinfo.json'",
14
15
  "build:css": "webpack && cp ./dist/*.css ./es && cp ./dist/*.css ./lib"
15
16
  },
16
17
  "repository": {
@@ -25,48 +26,50 @@
25
26
  ],
26
27
  "author": "ndla@knowit.no",
27
28
  "files": [
29
+ "dist",
28
30
  "lib",
29
31
  "src",
30
32
  "es",
31
33
  "types"
32
34
  ],
33
35
  "dependencies": {
34
- "@ndla/accordion": "^5.0.5-alpha.0",
35
- "@ndla/button": "^14.0.5-alpha.0",
36
+ "@ndla/accordion": "^5.0.7-alpha.0",
37
+ "@ndla/button": "^14.0.7-alpha.0",
36
38
  "@ndla/core": "^5.0.1",
37
39
  "@ndla/dropdown-menu": "^1.0.38",
38
- "@ndla/forms": "^9.0.5-alpha.0",
40
+ "@ndla/forms": "^9.0.7-alpha.0",
39
41
  "@ndla/hooks": "^2.1.8",
40
- "@ndla/icons": "^7.0.6-alpha.0",
42
+ "@ndla/icons": "^7.0.8-alpha.0",
41
43
  "@ndla/licenses": "^8.0.0-alpha.0",
42
- "@ndla/modal": "^7.0.5-alpha.0",
43
- "@ndla/safelink": "^5.1.15",
44
+ "@ndla/modal": "^7.0.7-alpha.0",
45
+ "@ndla/primitives": "^0.0.18",
46
+ "@ndla/safelink": "^6.0.1-alpha.0",
47
+ "@ndla/styled-system": "^0.0.8",
44
48
  "@ndla/tooltip": "^8.0.1",
45
49
  "@ndla/typography": "^0.4.23",
46
50
  "@ndla/util": "^4.1.0",
47
51
  "@radix-ui/react-popover": "^1.0.7",
48
- "@radix-ui/react-slider": "^1.1.2",
49
52
  "date-fns": "^2.30.0",
50
53
  "html-react-parser": "^5.1.8",
51
54
  "i18next-browser-languagedetector": "^7.1.0",
52
55
  "lodash.throttle": "^4.1.1",
53
56
  "punycode.js": "^2.3.1",
54
- "react-device-detect": "^2.2.3",
55
- "react-select": "^5.8.0",
56
- "react-swipeable": "^7.0.0"
57
+ "react-device-detect": "^2.2.3"
57
58
  },
58
59
  "peerDependencies": {
59
60
  "@emotion/react": "^11.10.4",
60
61
  "@emotion/styled": "^11.10.4",
61
62
  "i18next": "^23.11.5",
62
- "react": ">= 16.8.0",
63
- "react-dom": ">= 16.8.0",
63
+ "react": ">= 18",
64
+ "react-dom": ">= 18",
64
65
  "react-i18next": "^14.1.1",
65
66
  "react-router-dom": "> 6.0.0"
66
67
  },
67
68
  "devDependencies": {
69
+ "@ndla/preset-panda": "^0.0.11",
68
70
  "@ndla/types-backend": "^0.2.86",
69
71
  "@ndla/types-embed": "^4.1.8",
72
+ "@pandacss/dev": "^0.42.0",
70
73
  "css-loader": "^6.7.3",
71
74
  "mini-css-extract-plugin": "^2.7.5",
72
75
  "sass-loader": "^13.2.2",
@@ -76,5 +79,5 @@
76
79
  "publishConfig": {
77
80
  "access": "public"
78
81
  },
79
- "gitHead": "8c3254246b993068a867ab9ec9594347d5ebf439"
82
+ "gitHead": "6fdfbed9f18bbd725c837fb74de2f093e80d5605"
80
83
  }
@@ -7,19 +7,21 @@
7
7
  */
8
8
 
9
9
  import { ComponentPropsWithoutRef, ReactNode } from "react";
10
- import styled from "@emotion/styled";
10
+ import { styled } from "@ndla/styled-system/jsx";
11
11
 
12
12
  interface Props extends ComponentPropsWithoutRef<"p"> {
13
13
  children?: ReactNode;
14
14
  }
15
15
 
16
- const StyledParagraph = styled.p`
17
- &[data-align="center"] {
18
- text-align: center;
19
- }
20
- &:has(span[dir="rtl"]) {
21
- direction: rtl;
22
- }
23
- `;
16
+ const StyledParagraph = styled("p", {
17
+ base: {
18
+ '&[data-align="center"]': {
19
+ textAlign: "center",
20
+ },
21
+ '&:has(span[dir="rtl"])': {
22
+ direction: "rtl",
23
+ },
24
+ },
25
+ });
24
26
 
25
27
  export const ArticleParagraph = (props: Props) => <StyledParagraph {...props} />;
@@ -6,141 +6,120 @@
6
6
  *
7
7
  */
8
8
 
9
- import { ReactNode, useMemo, useState } from "react";
9
+ import { ReactNode, useId, useMemo, useState } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
- import styled from "@emotion/styled";
12
- import { ButtonV2 } from "@ndla/button";
13
- import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
14
- import { Cross as CrossIcon } from "@ndla/icons/action";
11
+ import { Heading, Text, Button } from "@ndla/primitives";
15
12
  import { SafeLink } from "@ndla/safelink";
16
- import { Heading, Text } from "@ndla/typography";
13
+ import { styled } from "@ndla/styled-system/jsx";
17
14
  import Controls from "./Controls";
18
15
  import SpeechControl from "./SpeechControl";
19
16
 
20
- const InfoWrapper = styled.div`
21
- border: 1px solid ${colors.brand.lighter};
22
- border-bottom: 0;
23
- display: flex;
24
- ${mq.range({ until: breakpoints.tabletWide })} {
25
- display: block;
26
- }
27
- `;
28
-
29
- const ImageWrapper = styled.div`
30
- display: flex;
31
- align-items: center;
32
- flex: 1 0 auto;
33
-
34
- width: 200px;
35
- height: 200px;
36
- overflow: hidden;
37
-
38
- img {
39
- width: 100%;
40
- height: 100%;
41
- object-fit: cover;
42
- }
43
- ${mq.range({ from: breakpoints.desktop })} {
44
- width: 260px;
45
- height: 260px;
46
- }
47
- ${mq.range({ until: breakpoints.tabletWide })} {
48
- max-height: 400px;
49
- max-width: 100%;
50
- width: 100%;
51
- height: auto;
52
- img {
53
- object-fit: scale-down;
54
- }
55
- }
56
- `;
57
-
58
- const TextWrapper = styled.div`
59
- padding: ${spacing.small};
60
- width: 100%;
61
- &[data-has-image="true"] {
62
- ${mq.range({ from: breakpoints.tablet })} {
63
- padding: ${spacing.small} ${spacing.normal};
64
- }
65
- ${mq.range({ from: breakpoints.tabletWide })} {
66
- padding: ${spacing.small} ${spacing.medium};
67
- }
68
- }
69
- `;
70
-
71
- const TitleWrapper = styled.div`
72
- ${mq.range({ from: breakpoints.tabletWide })} {
73
- display: flex;
74
- justify-content: space-between;
75
- }
76
- `;
77
-
78
- const Title = styled(Heading)`
79
- &[data-has-desc="true"] {
80
- margin: ${spacing.xsmall} 0 ${spacing.small};
81
- }
82
- `;
83
-
84
- const LinkToTextVersionWrapper = styled.div`
85
- &[data-margin="true"] {
86
- margin-top: ${spacing.small};
87
- }
88
- ${mq.range({ until: breakpoints.tabletWide })} {
89
- margin: ${spacing.small} 0;
90
- }
91
- `;
92
-
93
- const TextVersionWrapper = styled.div`
94
- border: 1px solid ${colors.brand.lighter};
95
- border-top: 0;
96
- ${fonts.sizes("16px", "30px")};
97
- font-family: ${fonts.sans};
98
- &.audio-player-text-version-hidden {
99
- display: none;
100
- }
101
- padding: ${spacing.normal} ${spacing.small} ${spacing.small};
102
- ${mq.range({ from: breakpoints.tablet })} {
103
- padding: ${spacing.normal};
104
- }
105
- ${mq.range({ from: breakpoints.tabletWide })} {
106
- padding: ${spacing.normal} ${spacing.medium};
107
- }
108
- `;
109
-
110
- const TextVersionHeadingWrapper = styled.div`
111
- display: flex;
112
- justify-content: space-between;
113
- align-items: flex-start;
114
- `;
115
-
116
- const TextVersionHeading = styled(Heading)`
117
- font-weight: ${fonts.weight.semibold};
118
- margin: ${spacing.small} 0 ${spacing.normal};
119
- `;
120
-
121
- const LinkButton = styled(ButtonV2)`
122
- box-shadow: none;
123
- padding-left: 0;
124
- padding-right: ${spacing.xxsmall};
125
- min-height: ${spacing.medium};
126
- flex: 0 0 auto;
127
- &:hover,
128
- &:focus {
129
- box-shadow: ${colors.link};
130
- }
131
- `;
132
-
133
- const CloseText = styled.span`
134
- display: inline-block;
135
- margin-left: ${spacing.xsmall};
136
- `;
137
-
138
- const TextVersionText = styled.div`
139
- max-width: 670px;
140
- & span > * {
141
- white-space: pre-wrap;
142
- }
143
- `;
17
+ // TODO: Could the audio metadata be more tightly coupled to the audio player?
18
+
19
+ const AudioPlayerWrapper = styled("div", {
20
+ base: {
21
+ border: "1px solid",
22
+ borderColor: "stroke.default",
23
+ borderRadius: "xsmall",
24
+ boxShadow: "full",
25
+ overflow: "hidden",
26
+ },
27
+ });
28
+
29
+ const InfoWrapper = styled("div", {
30
+ base: {
31
+ display: "flex",
32
+ tabletWideDown: {
33
+ display: "block",
34
+ },
35
+ },
36
+ });
37
+
38
+ const ImageWrapper = styled("div", {
39
+ base: {
40
+ display: "flex",
41
+ alignItems: "center",
42
+ flex: "1 0 auto",
43
+ width: "surface.4xsmall",
44
+ height: "surface.4xsmall",
45
+ overflow: "hidden",
46
+ "& img": {
47
+ width: "100%",
48
+ height: "100%",
49
+ objectFit: "cover",
50
+ },
51
+ desktop: {
52
+ width: "260px",
53
+ height: "260px",
54
+ },
55
+ tabletWideDown: {
56
+ maxHeight: "surface.small",
57
+ maxWidth: "100%",
58
+ width: "100%",
59
+ height: "auto",
60
+ },
61
+ },
62
+ });
63
+
64
+ const TextWrapper = styled("div", {
65
+ base: {
66
+ display: "flex",
67
+ alignItems: "flex-start",
68
+ flexDirection: "column",
69
+ gap: "xsmall",
70
+ padding: "xsmall",
71
+ width: "100%",
72
+ "&[data-has-image='true']": {
73
+ tablet: {
74
+ paddingBlock: "xsmall",
75
+ paddingInline: "medium",
76
+ },
77
+ },
78
+ },
79
+ });
80
+
81
+ const TitleWrapper = styled("div", {
82
+ base: {
83
+ display: "flex",
84
+ flexDirection: "column",
85
+ gap: "xsmall",
86
+ tabletWide: {
87
+ width: "100%",
88
+ flexDirection: "row",
89
+ justifyContent: "space-between",
90
+ },
91
+ },
92
+ });
93
+
94
+ const TextVersionWrapper = styled("div", {
95
+ base: {
96
+ display: "flex",
97
+ flexDirection: "column",
98
+ gap: "xsmall",
99
+ borderBlockStart: "1px solid",
100
+ borderColor: "stroke.default",
101
+ paddingBlock: "medium",
102
+ paddingInline: "xsmall",
103
+ tablet: {
104
+ paddingInline: "medium",
105
+ },
106
+ },
107
+ });
108
+
109
+ const TextVersionText = styled("div", {
110
+ base: {
111
+ maxWidth: "surface.xlarge",
112
+ "& span > *": {
113
+ whiteSpace: "pre-wrap",
114
+ },
115
+ },
116
+ });
117
+
118
+ const TextVersionButton = styled(Button, {
119
+ base: {
120
+ alignSelf: "flex-start",
121
+ },
122
+ });
144
123
 
145
124
  const DESCRIPTION_MAX_LENGTH = 200;
146
125
 
@@ -158,40 +137,37 @@ type Props = {
158
137
  url: string;
159
138
  alt: string;
160
139
  };
161
- staticRenderId?: string;
162
140
  };
163
141
 
164
- const AudioPlayer = ({ src, title, subtitle, speech, description, img, textVersion, staticRenderId }: Props) => {
142
+ const AudioPlayer = ({ src, title, subtitle, speech, description, img, textVersion }: Props) => {
165
143
  const { t } = useTranslation();
166
144
  const [showTextVersion, setShowTextVersion] = useState(false);
167
145
  const [showFullDescription, setShowFullDescription] = useState(false);
168
146
  const truncatedDescription = useMemo(() => description?.slice(0, DESCRIPTION_MAX_LENGTH), [description]);
147
+ const textDescriptionId = useId();
169
148
 
170
149
  if (speech) {
171
- return (
172
- <div data-audio-player={1} data-speech={1} data-src={src} data-title={title}>
173
- <SpeechControl src={src} title={title} />
174
- </div>
175
- );
150
+ return <SpeechControl src={src} title={title} />;
176
151
  }
177
152
 
178
153
  const toggleTextVersion = () => {
179
- setShowTextVersion(!showTextVersion);
154
+ setShowTextVersion((curr) => !curr);
180
155
  };
181
156
 
182
- type TextVersionComponentProps = {
183
- margin?: boolean;
184
- };
185
- const TextVersionComponent = ({ margin }: TextVersionComponentProps) => (
186
- <LinkToTextVersionWrapper data-margin={margin}>
187
- <ButtonV2 size="normal" shape="pill" onClick={toggleTextVersion} data-audio-text-button-id={staticRenderId}>
188
- {t("audio.textVersion.heading")}
189
- </ButtonV2>
190
- </LinkToTextVersionWrapper>
157
+ const textVersionButton = (
158
+ <TextVersionButton
159
+ variant="secondary"
160
+ aria-expanded={showTextVersion}
161
+ aria-controls={textDescriptionId}
162
+ size="small"
163
+ onClick={toggleTextVersion}
164
+ >
165
+ {t(showTextVersion ? "audio.textVersion.close" : "audio.textVersion.heading")}
166
+ </TextVersionButton>
191
167
  );
192
168
 
193
169
  return (
194
- <>
170
+ <AudioPlayerWrapper>
195
171
  <InfoWrapper>
196
172
  {img && (
197
173
  <ImageWrapper>
@@ -202,48 +178,35 @@ const AudioPlayer = ({ src, title, subtitle, speech, description, img, textVersi
202
178
  <TitleWrapper>
203
179
  <div>
204
180
  {subtitle?.url ? <SafeLink to={subtitle.url}>{subtitle.title}</SafeLink> : subtitle?.title}
205
- <Title element="h3" headingStyle="h4" margin="none" data-has-desc={!!description}>
206
- {title}
207
- </Title>
181
+ <Heading asChild consumeCss textStyle="title.large">
182
+ <h3>{title}</h3>
183
+ </Heading>
208
184
  </div>
209
- {textVersion && !img && <TextVersionComponent />}
185
+ {!!textVersion && !img && textVersionButton}
210
186
  </TitleWrapper>
211
187
  {description && (
212
- <Text element="p" textStyle="meta-text-small" margin="none">
188
+ <Text textStyle="body.medium">
213
189
  {showFullDescription || description.length < DESCRIPTION_MAX_LENGTH
214
190
  ? description
215
191
  : `${truncatedDescription}...`}
216
- <ButtonV2 variant="link" onClick={() => setShowFullDescription((p) => !p)}>
192
+ <Button variant="link" onClick={() => setShowFullDescription((p) => !p)}>
217
193
  {t(`audio.${showFullDescription ? "readLessDescriptionLabel" : "readMoreDescriptionLabel"}`)}
218
- </ButtonV2>
194
+ </Button>
219
195
  </Text>
220
196
  )}
221
- {textVersion && img && <TextVersionComponent margin />}
197
+ {!!textVersion && !!img && textVersionButton}
222
198
  </TextWrapper>
223
199
  </InfoWrapper>
224
- <div data-audio-player={1} data-src={src} data-title={title}>
225
- <Controls src={src} title={title} />
226
- </div>
227
- {textVersion && (showTextVersion || staticRenderId) && (
228
- <TextVersionWrapper id={staticRenderId} hidden={!!staticRenderId}>
229
- <TextVersionHeadingWrapper>
230
- <TextVersionHeading element="h3" headingStyle="h2" margin="small">
231
- {t("audio.textVersion.heading")}
232
- </TextVersionHeading>
233
- <LinkButton
234
- variant="link"
235
- size="normal"
236
- onClick={toggleTextVersion}
237
- data-audio-text-button-id={staticRenderId}
238
- >
239
- <CrossIcon style={{ width: "20px", height: "20px" }} />
240
- <CloseText>{t("audio.textVersion.close")}</CloseText>
241
- </LinkButton>
242
- </TextVersionHeadingWrapper>
200
+ <Controls src={src} title={title} />
201
+ {!!textVersion && (
202
+ <TextVersionWrapper id={textDescriptionId} hidden={!showTextVersion}>
203
+ <Heading asChild textStyle="title.medium" consumeCss>
204
+ <h3>{t("audio.textVersion.heading")}</h3>
205
+ </Heading>
243
206
  <TextVersionText>{textVersion}</TextVersionText>
244
207
  </TextVersionWrapper>
245
208
  )}
246
- </>
209
+ </AudioPlayerWrapper>
247
210
  );
248
211
  };
249
212