@ndla/ui 55.0.13-alpha.0 → 55.0.15-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 (337) hide show
  1. package/dist/panda.buildinfo.json +142 -1
  2. package/dist/styles.css +597 -0
  3. package/es/Article/ArticleByline.js +7 -7
  4. package/es/Article/ArticleParagraph.js +11 -13
  5. package/es/AudioPlayer/AudioPlayer.js +1 -0
  6. package/es/CampaignBlock/CampaignBlock.js +103 -68
  7. package/es/Concept/Concept.js +69 -0
  8. package/es/ContactBlock/ContactBlock.js +17 -17
  9. package/es/ContentTypeBadge/ContentTypeBadgeNew.js +48 -0
  10. package/es/Embed/AudioEmbed.js +1 -2
  11. package/es/Embed/BrightcoveEmbed.js +13 -25
  12. package/es/Embed/ConceptEmbed.js +57 -301
  13. package/es/Embed/ConceptListEmbed.js +18 -24
  14. package/es/Embed/ContentLinkEmbed.js +10 -10
  15. package/es/Embed/CopyrightEmbed.js +3 -21
  16. package/es/Embed/ExternalEmbed.js +10 -18
  17. package/es/Embed/FootnoteEmbed.js +11 -8
  18. package/es/Embed/GlossEmbed.js +68 -0
  19. package/es/Embed/H5pEmbed.js +19 -19
  20. package/es/Embed/IframeEmbed.js +9 -6
  21. package/es/Embed/InlineTriggerButton.js +70 -0
  22. package/es/Embed/UnknownEmbed.js +9 -9
  23. package/es/Embed/UuDisclaimerEmbed.js +14 -25
  24. package/es/Embed/index.js +1 -3
  25. package/es/ErrorMessage/ErrorMessage.js +41 -22
  26. package/es/ErrorMessage/ErrorResourceAccessDenied.js +8 -6
  27. package/es/FactBox/FactBox.js +118 -47
  28. package/es/FileList/PdfFile.js +23 -5
  29. package/es/Gloss/Gloss.js +116 -86
  30. package/es/Gloss/GlossExample.js +49 -51
  31. package/es/LicenseByline/EmbedByline.js +143 -33
  32. package/es/LicenseByline/LicenseLink.js +16 -9
  33. package/es/LicenseByline/index.js +2 -2
  34. package/es/LinkBlock/LinkBlock.js +61 -33
  35. package/es/LinkBlock/LinkBlockSection.js +9 -6
  36. package/es/Logo/Logo.js +1 -30
  37. package/es/RelatedArticleList/RelatedArticleList.js +70 -87
  38. package/es/ResourceBox/ResourceBox.js +65 -37
  39. package/es/TagSelector/TagSelector.js +124 -131
  40. package/es/i18n/index.js +2 -1
  41. package/es/i18n/useComponentTranslations.js +83 -0
  42. package/es/index.js +4 -12
  43. package/es/locale/messages-en.js +30 -4
  44. package/es/locale/messages-nb.js +30 -4
  45. package/es/locale/messages-nn.js +30 -4
  46. package/es/locale/messages-se.js +30 -4
  47. package/es/locale/messages-sma.js +30 -4
  48. package/es/model/ContentType.js +3 -0
  49. package/es/styles.css +597 -0
  50. package/lib/Article/ArticleByline.js +8 -8
  51. package/lib/Article/ArticleParagraph.js +12 -14
  52. package/lib/AudioPlayer/AudioPlayer.js +1 -0
  53. package/lib/CampaignBlock/CampaignBlock.d.ts +2 -2
  54. package/lib/CampaignBlock/CampaignBlock.js +106 -68
  55. package/lib/Concept/Concept.d.ts +18 -0
  56. package/lib/Concept/Concept.js +75 -0
  57. package/lib/ContactBlock/ContactBlock.js +18 -18
  58. package/lib/ContentTypeBadge/ContentTypeBadgeNew.d.ts +17 -0
  59. package/lib/ContentTypeBadge/ContentTypeBadgeNew.js +56 -0
  60. package/lib/Embed/AudioEmbed.js +2 -3
  61. package/lib/Embed/BrightcoveEmbed.d.ts +1 -2
  62. package/lib/Embed/BrightcoveEmbed.js +16 -26
  63. package/lib/Embed/ConceptEmbed.d.ts +15 -21
  64. package/lib/Embed/ConceptEmbed.js +58 -301
  65. package/lib/Embed/ConceptListEmbed.js +21 -26
  66. package/lib/Embed/ContentLinkEmbed.js +10 -11
  67. package/lib/Embed/CopyrightEmbed.js +5 -22
  68. package/lib/Embed/ExternalEmbed.d.ts +1 -2
  69. package/lib/Embed/ExternalEmbed.js +13 -19
  70. package/lib/Embed/FootnoteEmbed.js +11 -9
  71. package/lib/Embed/GlossEmbed.d.ts +13 -0
  72. package/lib/Embed/GlossEmbed.js +76 -0
  73. package/lib/Embed/H5pEmbed.d.ts +1 -2
  74. package/lib/Embed/H5pEmbed.js +21 -19
  75. package/lib/Embed/IframeEmbed.d.ts +1 -2
  76. package/lib/Embed/IframeEmbed.js +11 -8
  77. package/lib/Embed/InlineTriggerButton.d.ts +11 -0
  78. package/lib/Embed/InlineTriggerButton.js +76 -0
  79. package/lib/Embed/UnknownEmbed.js +9 -10
  80. package/lib/Embed/UuDisclaimerEmbed.js +16 -26
  81. package/lib/Embed/index.d.ts +2 -3
  82. package/lib/Embed/index.js +2 -9
  83. package/lib/ErrorMessage/ErrorMessage.js +40 -23
  84. package/lib/ErrorMessage/ErrorResourceAccessDenied.js +7 -6
  85. package/lib/FactBox/FactBox.d.ts +0 -1
  86. package/lib/FactBox/FactBox.js +119 -46
  87. package/lib/FileList/PdfFile.js +23 -5
  88. package/lib/Gloss/Gloss.d.ts +10 -2
  89. package/lib/Gloss/Gloss.js +116 -85
  90. package/lib/Gloss/GlossExample.d.ts +3 -5
  91. package/lib/Gloss/GlossExample.js +49 -52
  92. package/lib/LicenseByline/EmbedByline.d.ts +2 -4
  93. package/lib/LicenseByline/EmbedByline.js +145 -35
  94. package/lib/LicenseByline/LicenseLink.d.ts +2 -2
  95. package/lib/LicenseByline/LicenseLink.js +16 -9
  96. package/lib/LicenseByline/index.d.ts +2 -2
  97. package/lib/LicenseByline/index.js +4 -5
  98. package/lib/LinkBlock/LinkBlock.js +62 -34
  99. package/lib/LinkBlock/LinkBlockSection.js +9 -7
  100. package/lib/Logo/Logo.d.ts +1 -3
  101. package/lib/Logo/Logo.js +2 -30
  102. package/lib/RelatedArticleList/RelatedArticleList.d.ts +4 -4
  103. package/lib/RelatedArticleList/RelatedArticleList.js +74 -90
  104. package/lib/ResourceBox/ResourceBox.js +64 -37
  105. package/lib/TagSelector/TagSelector.d.ts +27 -12
  106. package/lib/TagSelector/TagSelector.js +126 -131
  107. package/lib/i18n/index.d.ts +1 -0
  108. package/lib/i18n/index.js +20 -1
  109. package/lib/i18n/useComponentTranslations.d.ts +14 -0
  110. package/lib/i18n/useComponentTranslations.js +93 -0
  111. package/lib/index.d.ts +5 -15
  112. package/lib/index.js +70 -102
  113. package/lib/locale/messages-en.d.ts +26 -0
  114. package/lib/locale/messages-en.js +30 -4
  115. package/lib/locale/messages-nb.d.ts +26 -0
  116. package/lib/locale/messages-nb.js +30 -4
  117. package/lib/locale/messages-nn.d.ts +26 -0
  118. package/lib/locale/messages-nn.js +30 -4
  119. package/lib/locale/messages-se.d.ts +26 -0
  120. package/lib/locale/messages-se.js +30 -4
  121. package/lib/locale/messages-sma.d.ts +26 -0
  122. package/lib/locale/messages-sma.js +30 -4
  123. package/lib/model/ContentType.d.ts +3 -0
  124. package/lib/model/ContentType.js +4 -1
  125. package/lib/styles.css +597 -0
  126. package/package.json +11 -13
  127. package/src/Article/ArticleByline.tsx +1 -1
  128. package/src/Article/ArticleParagraph.tsx +11 -9
  129. package/src/AudioPlayer/AudioPlayer.tsx +1 -0
  130. package/src/CampaignBlock/CampaignBlock.tsx +92 -55
  131. package/src/Concept/Concept.stories.tsx +142 -0
  132. package/src/Concept/Concept.tsx +73 -0
  133. package/src/ContactBlock/ContactBlock.tsx +1 -1
  134. package/src/ContentTypeBadge/ContentTypeBadgeNew.stories.tsx +70 -0
  135. package/src/ContentTypeBadge/ContentTypeBadgeNew.tsx +69 -0
  136. package/src/Embed/AudioEmbed.tsx +2 -2
  137. package/src/Embed/BrightcoveEmbed.stories.tsx +0 -3
  138. package/src/Embed/BrightcoveEmbed.tsx +18 -20
  139. package/src/Embed/ConceptEmbed.stories.tsx +1 -105
  140. package/src/Embed/ConceptEmbed.tsx +60 -385
  141. package/src/Embed/ConceptListEmbed.tsx +20 -19
  142. package/src/Embed/ContentLinkEmbed.tsx +8 -10
  143. package/src/Embed/CopyrightEmbed.tsx +1 -11
  144. package/src/Embed/ExternalEmbed.tsx +14 -17
  145. package/src/Embed/FootnoteEmbed.stories.tsx +2 -5
  146. package/src/Embed/FootnoteEmbed.tsx +13 -16
  147. package/src/Embed/GlossEmbed.stories.tsx +140 -0
  148. package/src/Embed/GlossEmbed.tsx +64 -0
  149. package/src/Embed/H5pEmbed.tsx +22 -16
  150. package/src/Embed/IframeEmbed.tsx +12 -6
  151. package/src/Embed/InlineTriggerButton.tsx +72 -0
  152. package/src/Embed/UnknownEmbed.tsx +6 -7
  153. package/src/Embed/UuDisclaimerEmbed.stories.tsx +4 -4
  154. package/src/Embed/UuDisclaimerEmbed.tsx +17 -25
  155. package/src/Embed/index.ts +2 -3
  156. package/src/ErrorMessage/ErrorMessage.tsx +40 -29
  157. package/src/ErrorMessage/ErrorResourceAccessDenied.tsx +8 -6
  158. package/src/FactBox/FactBox.tsx +115 -115
  159. package/src/FactBox/Factbox.stories.tsx +43 -27
  160. package/src/FileList/FileList.stories.tsx +6 -1
  161. package/src/FileList/PdfFile.tsx +22 -5
  162. package/src/Gloss/Gloss.stories.tsx +107 -1
  163. package/src/Gloss/Gloss.tsx +143 -156
  164. package/src/Gloss/GlossExample.tsx +51 -77
  165. package/src/LicenseByline/EmbedByline.stories.tsx +9 -4
  166. package/src/LicenseByline/EmbedByline.tsx +139 -53
  167. package/src/LicenseByline/LicenseLink.tsx +15 -15
  168. package/src/LicenseByline/index.tsx +2 -2
  169. package/src/LinkBlock/LinkBlock.stories.tsx +8 -10
  170. package/src/LinkBlock/LinkBlock.tsx +54 -59
  171. package/src/LinkBlock/LinkBlockSection.tsx +9 -12
  172. package/src/Logo/Logo.stories.tsx +0 -1
  173. package/src/Logo/Logo.tsx +2 -30
  174. package/src/RelatedArticleList/RelatedArticleList.tsx +69 -88
  175. package/src/ResourceBox/ResourceBox.tsx +63 -59
  176. package/src/TagSelector/TagSelector.stories.tsx +92 -68
  177. package/src/TagSelector/TagSelector.tsx +161 -126
  178. package/src/i18n/index.ts +5 -0
  179. package/src/i18n/useComponentTranslations.ts +72 -0
  180. package/src/index.ts +23 -19
  181. package/src/locale/messages-en.ts +28 -2
  182. package/src/locale/messages-nb.ts +28 -2
  183. package/src/locale/messages-nn.ts +28 -2
  184. package/src/locale/messages-se.ts +28 -2
  185. package/src/locale/messages-sma.ts +28 -2
  186. package/src/model/ContentType.ts +3 -0
  187. package/es/DefinitionList/DefinitionDescription.js +0 -28
  188. package/es/DefinitionList/DefinitionTerm.js +0 -28
  189. package/es/DefinitionList/index.js +0 -10
  190. package/es/Embed/conceptComponents.js +0 -155
  191. package/es/ExpandableBox/ExpandableBox.js +0 -29
  192. package/es/ExpandableBox/index.js +0 -9
  193. package/es/Figure/Figure.js +0 -73
  194. package/es/Figure/index.js +0 -9
  195. package/es/FramedContent/FramedContent.js +0 -28
  196. package/es/FramedContent/index.js +0 -10
  197. package/es/Image/Image.js +0 -99
  198. package/es/Image/ImageLink.js +0 -39
  199. package/es/Image/index.js +0 -12
  200. package/es/LetterFilter/LetterFilter.js +0 -54
  201. package/es/LetterFilter/alphabet.js +0 -9
  202. package/es/LetterFilter/index.js +0 -10
  203. package/es/LicenseByline/LicenseDescription.js +0 -63
  204. package/es/List/OrderedList.js +0 -41
  205. package/es/List/UnOrderedList.js +0 -28
  206. package/es/List/index.js +0 -10
  207. package/es/Notion/Notion.js +0 -76
  208. package/es/Notion/NotionImage.js +0 -46
  209. package/es/Notion/index.js +0 -9
  210. package/es/Table/Table.js +0 -141
  211. package/es/Table/index.js +0 -11
  212. package/es/TagSelector/Control.js +0 -28
  213. package/es/TagSelector/DropdownIndicator.js +0 -60
  214. package/es/TagSelector/Input.js +0 -22
  215. package/es/TagSelector/Menu.js +0 -27
  216. package/es/TagSelector/MenuList.js +0 -28
  217. package/es/TagSelector/Option.js +0 -60
  218. package/es/TagSelector/SelectContainer.js +0 -27
  219. package/es/TagSelector/ValueButton.js +0 -53
  220. package/es/TagSelector/ariaMessages.js +0 -94
  221. package/es/TagSelector/index.js +0 -10
  222. package/es/TagSelector/types.js +0 -1
  223. package/lib/DefinitionList/DefinitionDescription.d.ts +0 -10
  224. package/lib/DefinitionList/DefinitionDescription.js +0 -35
  225. package/lib/DefinitionList/DefinitionTerm.d.ts +0 -10
  226. package/lib/DefinitionList/DefinitionTerm.js +0 -35
  227. package/lib/DefinitionList/index.d.ts +0 -9
  228. package/lib/DefinitionList/index.js +0 -20
  229. package/lib/Embed/conceptComponents.d.ts +0 -40
  230. package/lib/Embed/conceptComponents.js +0 -163
  231. package/lib/ExpandableBox/ExpandableBox.d.ts +0 -15
  232. package/lib/ExpandableBox/ExpandableBox.js +0 -37
  233. package/lib/ExpandableBox/index.d.ts +0 -8
  234. package/lib/ExpandableBox/index.js +0 -18
  235. package/lib/Figure/Figure.d.ts +0 -16
  236. package/lib/Figure/Figure.js +0 -81
  237. package/lib/Figure/index.d.ts +0 -9
  238. package/lib/Figure/index.js +0 -13
  239. package/lib/FramedContent/FramedContent.d.ts +0 -12
  240. package/lib/FramedContent/FramedContent.js +0 -35
  241. package/lib/FramedContent/index.d.ts +0 -9
  242. package/lib/FramedContent/index.js +0 -16
  243. package/lib/Image/Image.d.ts +0 -38
  244. package/lib/Image/Image.js +0 -105
  245. package/lib/Image/ImageLink.d.ts +0 -18
  246. package/lib/Image/ImageLink.js +0 -44
  247. package/lib/Image/index.d.ts +0 -12
  248. package/lib/Image/index.js +0 -30
  249. package/lib/LetterFilter/LetterFilter.d.ts +0 -14
  250. package/lib/LetterFilter/LetterFilter.js +0 -61
  251. package/lib/LetterFilter/alphabet.d.ts +0 -8
  252. package/lib/LetterFilter/alphabet.js +0 -15
  253. package/lib/LetterFilter/index.d.ts +0 -9
  254. package/lib/LetterFilter/index.js +0 -16
  255. package/lib/LicenseByline/LicenseDescription.d.ts +0 -15
  256. package/lib/LicenseByline/LicenseDescription.js +0 -70
  257. package/lib/List/OrderedList.d.ts +0 -16
  258. package/lib/List/OrderedList.js +0 -48
  259. package/lib/List/UnOrderedList.d.ts +0 -10
  260. package/lib/List/UnOrderedList.js +0 -35
  261. package/lib/List/index.d.ts +0 -9
  262. package/lib/List/index.js +0 -20
  263. package/lib/Notion/Notion.d.ts +0 -20
  264. package/lib/Notion/Notion.js +0 -82
  265. package/lib/Notion/NotionImage.d.ts +0 -13
  266. package/lib/Notion/NotionImage.js +0 -54
  267. package/lib/Notion/index.d.ts +0 -8
  268. package/lib/Notion/index.js +0 -13
  269. package/lib/Table/Table.d.ts +0 -19
  270. package/lib/Table/Table.js +0 -145
  271. package/lib/Table/index.d.ts +0 -10
  272. package/lib/Table/index.js +0 -23
  273. package/lib/TagSelector/Control.d.ts +0 -11
  274. package/lib/TagSelector/Control.js +0 -35
  275. package/lib/TagSelector/DropdownIndicator.d.ts +0 -11
  276. package/lib/TagSelector/DropdownIndicator.js +0 -64
  277. package/lib/TagSelector/Input.d.ts +0 -12
  278. package/lib/TagSelector/Input.js +0 -29
  279. package/lib/TagSelector/Menu.d.ts +0 -12
  280. package/lib/TagSelector/Menu.js +0 -34
  281. package/lib/TagSelector/MenuList.d.ts +0 -16
  282. package/lib/TagSelector/MenuList.js +0 -35
  283. package/lib/TagSelector/Option.d.ts +0 -12
  284. package/lib/TagSelector/Option.js +0 -67
  285. package/lib/TagSelector/SelectContainer.d.ts +0 -11
  286. package/lib/TagSelector/SelectContainer.js +0 -34
  287. package/lib/TagSelector/ValueButton.d.ts +0 -20
  288. package/lib/TagSelector/ValueButton.js +0 -60
  289. package/lib/TagSelector/ariaMessages.d.ts +0 -16
  290. package/lib/TagSelector/ariaMessages.js +0 -101
  291. package/lib/TagSelector/index.d.ts +0 -11
  292. package/lib/TagSelector/index.js +0 -13
  293. package/lib/TagSelector/types.d.ts +0 -11
  294. package/lib/TagSelector/types.js +0 -5
  295. package/src/DefinitionList/DefinitionDescription.tsx +0 -26
  296. package/src/DefinitionList/DefinitionTerm.tsx +0 -26
  297. package/src/DefinitionList/index.tsx +0 -10
  298. package/src/Embed/conceptComponents.tsx +0 -293
  299. package/src/ExpandableBox/ExpandableBox.stories.tsx +0 -41
  300. package/src/ExpandableBox/ExpandableBox.tsx +0 -23
  301. package/src/ExpandableBox/index.ts +0 -9
  302. package/src/Figure/Figure.tsx +0 -167
  303. package/src/Figure/index.ts +0 -11
  304. package/src/FramedContent/FramedContent.stories.tsx +0 -152
  305. package/src/FramedContent/FramedContent.tsx +0 -26
  306. package/src/FramedContent/index.ts +0 -10
  307. package/src/Image/Image.stories.tsx +0 -61
  308. package/src/Image/Image.tsx +0 -147
  309. package/src/Image/ImageLink.tsx +0 -37
  310. package/src/Image/index.ts +0 -14
  311. package/src/LetterFilter/LetterFilter.stories.tsx +0 -29
  312. package/src/LetterFilter/LetterFilter.tsx +0 -78
  313. package/src/LetterFilter/alphabet.ts +0 -39
  314. package/src/LetterFilter/index.ts +0 -11
  315. package/src/LicenseByline/LicenseDescription.tsx +0 -100
  316. package/src/List/OrderedList.stories.tsx +0 -135
  317. package/src/List/OrderedList.tsx +0 -158
  318. package/src/List/UnOrderedList.tsx +0 -43
  319. package/src/List/UnorderedList.stories.tsx +0 -72
  320. package/src/List/index.ts +0 -10
  321. package/src/Notion/Notion.tsx +0 -96
  322. package/src/Notion/NotionImage.tsx +0 -64
  323. package/src/Notion/index.ts +0 -9
  324. package/src/Table/Table.stories.tsx +0 -738
  325. package/src/Table/Table.tsx +0 -284
  326. package/src/Table/index.ts +0 -12
  327. package/src/TagSelector/Control.tsx +0 -34
  328. package/src/TagSelector/DropdownIndicator.tsx +0 -55
  329. package/src/TagSelector/Input.tsx +0 -31
  330. package/src/TagSelector/Menu.tsx +0 -38
  331. package/src/TagSelector/MenuList.tsx +0 -30
  332. package/src/TagSelector/Option.tsx +0 -58
  333. package/src/TagSelector/SelectContainer.tsx +0 -31
  334. package/src/TagSelector/ValueButton.tsx +0 -47
  335. package/src/TagSelector/ariaMessages.ts +0 -96
  336. package/src/TagSelector/index.ts +0 -14
  337. package/src/TagSelector/types.ts +0 -12
@@ -1,293 +0,0 @@
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
- /** @jsxImportSource @emotion/react */
10
- import { forwardRef, ReactNode, RefAttributes } from "react";
11
- import { useTranslation } from "react-i18next";
12
- import { css } from "@emotion/react";
13
- import styled from "@emotion/styled";
14
- import { breakpoints, colors, fonts, misc, mq, spacing, stackOrder } from "@ndla/core";
15
- import { ConceptData, ConceptVisualElementMeta } from "@ndla/types-embed";
16
- import { ExternalEmbed, IframeEmbed } from ".";
17
- import BrightcoveEmbed from "./BrightcoveEmbed";
18
- import H5pEmbed from "./H5pEmbed";
19
- import ImageEmbed from "./ImageEmbed";
20
- import { Gloss } from "../Gloss";
21
- import { LicenseContainerContent } from "../LicenseByline/EmbedByline";
22
- import { Copyright } from "../types";
23
-
24
- export type ConceptType = "concept" | "gloss";
25
-
26
- export interface ConceptNotionData {
27
- title: ConceptData["concept"]["title"];
28
- content?: ReactNode;
29
- metaImage?: {
30
- url?: string;
31
- alt?: string;
32
- };
33
- copyright?: Copyright;
34
- source?: string;
35
- visualElement?: ConceptVisualElementMeta;
36
- conceptType: ConceptData["concept"]["conceptType"];
37
- glossData?: ConceptData["concept"]["glossData"];
38
- lang?: string;
39
- }
40
-
41
- interface ConceptNotionProps extends RefAttributes<HTMLDivElement>, Omit<ConceptNotionData, "metaImage"> {
42
- className?: string;
43
- closeButton?: ReactNode;
44
- previewAlt?: boolean;
45
- inPopover?: boolean;
46
- tags?: string[];
47
- subjects?: string[];
48
- headerButtons?: ReactNode;
49
- exampleIds?: string;
50
- exampleLangs?: string;
51
- showTitle?: boolean;
52
- }
53
-
54
- const NotionDialogText = styled.div`
55
- font-weight: ${fonts.weight.normal};
56
- ${fonts.sizes("18px", 1.3)};
57
- color: ${colors.text.primary};
58
- font-family: ${fonts.sans};
59
- `;
60
-
61
- const NotionDialogContent = styled.div`
62
- padding-bottom: ${spacing.normal};
63
- display: flex;
64
- flex-direction: column;
65
- `;
66
-
67
- const ContentSpacing = styled.div`
68
- padding: ${spacing.normal};
69
- &[data-is-concept="false"] {
70
- margin-bottom: ${spacing.normal};
71
- }
72
- `;
73
-
74
- const notionContentCss = css`
75
- @keyframes animateIn {
76
- 0% {
77
- opacity: 0;
78
- transform: translate3d(0, -13px, 0);
79
- }
80
- 100% {
81
- opacity: 1;
82
- transform: translate3d(0, 0, 0);
83
- }
84
- }
85
-
86
- animation-name: animateIn;
87
- animation-duration: 300ms;
88
- background-color: white;
89
- z-index: ${stackOrder.offsetSingle};
90
- box-shadow: 0 0 30px rgba(0, 0, 0, 0.2);
91
- ${mq.range({ from: breakpoints.tablet })} {
92
- width: 500px;
93
- }
94
- ${mq.range({ from: breakpoints.desktop })} {
95
- width: 720px;
96
- max-width: 60vw;
97
- }
98
-
99
- ${mq.range({ until: breakpoints.tablet })} {
100
- padding: ${spacing.small};
101
- z-index: ${stackOrder.popover};
102
- height: 100%;
103
- width: 100%;
104
- overflow: auto;
105
- }
106
- `;
107
-
108
- const NotionHeader = styled.div`
109
- display: flex;
110
- align-items: center;
111
- justify-content: flex-end;
112
- border-bottom: 2px solid ${colors.brand.tertiary};
113
- padding-bottom: ${spacing.small};
114
- h1 {
115
- display: flex;
116
- align-items: center;
117
- flex-wrap: wrap;
118
- flex-grow: 1;
119
- margin: 0;
120
- font-weight: ${fonts.weight.bold};
121
- ${fonts.sizes("22px", 1.2)};
122
- }
123
- small {
124
- display: flex;
125
- ${fonts.sizes("20px", 1.2)};
126
- font-weight: ${fonts.weight.normal};
127
- }
128
- ${mq.range({ from: breakpoints.mobileWide })} {
129
- &[data-is-concept="true"] {
130
- small:before {
131
- display: inline-flex;
132
- align-self: center;
133
- margin: 0 ${spacing.xsmall};
134
- content: "";
135
- height: ${spacing.normal};
136
- width: 1px;
137
- background-color: ${colors.brand.greyLight};
138
- }
139
- }
140
- }
141
- &[data-is-concept="false"] {
142
- margin-bottom: ${spacing.large};
143
- }
144
- `;
145
-
146
- const ListWrapper = styled.div`
147
- display: flex;
148
- gap: ${spacing.small};
149
- align-items: center;
150
- `;
151
-
152
- const StyledNotionDialogContent = styled(NotionDialogContent)`
153
- padding-top: ${spacing.small};
154
- figure {
155
- width: 100% !important;
156
- padding: 0;
157
- margin: 0;
158
- padding-bottom: ${spacing.normal};
159
- }
160
- `;
161
-
162
- const ButtonWrapper = styled.div`
163
- display: flex;
164
- gap: ${spacing.xsmall};
165
- align-items: center;
166
- `;
167
-
168
- const StyledList = styled.ul`
169
- display: flex;
170
- gap: ${spacing.small};
171
- align-items: center;
172
- list-style: none;
173
- > li {
174
- font-family: ${fonts.sans};
175
- font-weight: ${fonts.weight.semibold};
176
- border-radius: ${misc.borderRadius};
177
- background-color: ${colors.brand.greyLightest};
178
- ${fonts.sizes("12px", 1.2)};
179
- padding: ${spacing.xxsmall};
180
- }
181
- `;
182
- const BylineWrapper = styled.div`
183
- padding: 0 ${spacing.normal} ${spacing.small} ${spacing.normal};
184
- span {
185
- font-family: ${fonts.sans};
186
- ${fonts.sizes("16px", "26px")};
187
- }
188
- `;
189
-
190
- export const ConceptNotionV2 = forwardRef<HTMLDivElement, ConceptNotionProps>(
191
- (
192
- {
193
- visualElement,
194
- title,
195
- content,
196
- source,
197
- copyright,
198
- closeButton,
199
- inPopover,
200
- previewAlt,
201
- tags,
202
- subjects,
203
- conceptType,
204
- glossData,
205
- headerButtons,
206
- lang,
207
- exampleIds,
208
- exampleLangs,
209
- showTitle = true,
210
- ...rest
211
- },
212
- ref,
213
- ) => {
214
- const { t } = useTranslation();
215
- const isConcept = conceptType === "concept";
216
- return (
217
- <div css={inPopover ? notionContentCss : undefined} {...rest} ref={ref}>
218
- <ContentSpacing data-is-concept={isConcept}>
219
- <NotionHeader data-is-concept={isConcept}>
220
- {showTitle && (
221
- <h1>
222
- {isConcept && title.title}
223
- {<small data-is-concept={isConcept}>{t(`searchPage.resultType.${conceptType}`)}</small>}
224
- </h1>
225
- )}
226
- <ButtonWrapper>
227
- {headerButtons}
228
- {closeButton}
229
- </ButtonWrapper>
230
- </NotionHeader>
231
- {isConcept ? (
232
- <>
233
- <StyledNotionDialogContent>
234
- {visualElement?.resource === "image" ? (
235
- <ImageEmbed embed={visualElement} lang={lang} />
236
- ) : visualElement?.resource === "brightcove" ? (
237
- <BrightcoveEmbed embed={visualElement} />
238
- ) : visualElement?.resource === "h5p" ? (
239
- <H5pEmbed embed={visualElement} />
240
- ) : visualElement?.resource === "iframe" ? (
241
- <IframeEmbed embed={visualElement} />
242
- ) : visualElement?.resource === "external" ? (
243
- <ExternalEmbed embed={visualElement} />
244
- ) : null}
245
- {content && <NotionDialogText lang={lang}>{content}</NotionDialogText>}
246
- </StyledNotionDialogContent>
247
- {tags && (
248
- <ListWrapper>
249
- {`${t("notions.tags")}:`}
250
- <StyledList>
251
- {tags.map((tag, index) => (
252
- <li key={index}>{tag}</li>
253
- ))}
254
- </StyledList>
255
- </ListWrapper>
256
- )}
257
- {subjects && (
258
- <ListWrapper>
259
- {`${t("notions.usedIn")}:`}
260
- <StyledList>
261
- {subjects.map((subject, index) => (
262
- <li key={index}>{subject}</li>
263
- ))}
264
- </StyledList>
265
- </ListWrapper>
266
- )}
267
- </>
268
- ) : (
269
- <Gloss
270
- title={title}
271
- glossData={glossData!}
272
- audio={
273
- visualElement?.status === "success" && visualElement.resource === "audio"
274
- ? {
275
- src: visualElement.data.audioFile.url,
276
- title: visualElement.data.title.title,
277
- }
278
- : undefined
279
- }
280
- exampleIds={exampleIds}
281
- exampleLangs={exampleLangs}
282
- />
283
- )}
284
- </ContentSpacing>
285
- {copyright && (
286
- <BylineWrapper>
287
- <LicenseContainerContent copyright={copyright} type={conceptType as ConceptType} />
288
- </BylineWrapper>
289
- )}
290
- </div>
291
- );
292
- },
293
- );
@@ -1,41 +0,0 @@
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 { ExpandableBox, ExpandableBoxSummary } from "./ExpandableBox";
11
-
12
- /**
13
- * This is just a thin wrapper around the native HTML details element.
14
- * `ExpandableBoxSummary` is a thin wrapper around the native HTML summary element.
15
- * The components will eventually add style and functionality to the native elements, as opposed to the components being styled by global css.
16
- */
17
- export default {
18
- title: "Components/ExpandableBox",
19
- tags: ["autodocs"],
20
- parameters: {
21
- inlineStories: true,
22
- },
23
- component: ExpandableBox,
24
- render: (args) => (
25
- <ExpandableBox {...args}>
26
- <ExpandableBoxSummary>Open me</ExpandableBoxSummary>
27
- Everything here is only visible when the box is open
28
- </ExpandableBox>
29
- ),
30
- } as Meta<typeof ExpandableBox>;
31
-
32
- export const Default: StoryObj<typeof ExpandableBox> = {};
33
-
34
- export const WithHeader: StoryFn<typeof ExpandableBox> = ({ ...args }) => (
35
- <ExpandableBox {...args}>
36
- <ExpandableBoxSummary>
37
- <h2>Open me as header text</h2>
38
- </ExpandableBoxSummary>
39
- Everything here is only visible when the box is open
40
- </ExpandableBox>
41
- );
@@ -1,23 +0,0 @@
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 { HTMLAttributes } from "react";
10
- import styled from "@emotion/styled";
11
- import { fonts } from "@ndla/core";
12
-
13
- interface Props extends HTMLAttributes<HTMLDetailsElement> {}
14
-
15
- export const ExpandableBox = ({ children, ...rest }: Props) => {
16
- return <details {...rest}>{children}</details>;
17
- };
18
-
19
- interface SummaryProps extends HTMLAttributes<HTMLElement> {}
20
-
21
- export const ExpandableBoxSummary = ({ children, ...rest }: SummaryProps) => {
22
- return <summary {...rest}>{children}</summary>;
23
- };
@@ -1,9 +0,0 @@
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
- export { ExpandableBox, ExpandableBoxSummary } from "./ExpandableBox";
@@ -1,167 +0,0 @@
1
- /**
2
- * Copyright (c) 2016-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
- // N.B These components is used to render static markup serverside
10
-
11
- /** @jsxImportSource @emotion/react */
12
- import { ComponentPropsWithRef, forwardRef, useMemo } from "react";
13
- import { SerializedStyles, css } from "@emotion/react";
14
- import styled from "@emotion/styled";
15
- import { breakpoints, mq, spacing } from "@ndla/core";
16
-
17
- const StyledFigure = styled.figure`
18
- position: relative;
19
- width: 100%;
20
- transition:
21
- transform 0.4s,
22
- width 0.4s,
23
- height 0.4s;
24
- img {
25
- width: 100%;
26
- }
27
- iframe {
28
- display: block;
29
- border: 0;
30
- }
31
- &[data-sizetype="full"][data-float=""] {
32
- margin: ${spacing.normal} 0 ${spacing.normal};
33
- }
34
- &[data-sizetype="full"] {
35
- margin-bottom: ${spacing.normal};
36
- }
37
- `;
38
-
39
- const floatSizes: Record<FigureType, SerializedStyles> = {
40
- left: css`
41
- margin-top: ${spacing.xsmall};
42
- --float: left;
43
- --width: 50%;
44
- --width-desktop: 65%;
45
- & {
46
- ${mq.range({ from: breakpoints.tablet })} {
47
- padding-right: ${spacing.small};
48
- }
49
- }
50
- `,
51
- right: css`
52
- margin-top: ${spacing.xsmall};
53
- --float: right;
54
- --width: 50%;
55
- --width-desktop: 65%;
56
- & {
57
- ${mq.range({ from: breakpoints.tablet })} {
58
- padding-left: ${spacing.small};
59
- }
60
- }
61
- `,
62
- "small-left": css`
63
- margin-top: ${spacing.xsmall};
64
- --float: left;
65
- --width: 25%;
66
- --width-desktop: 50%;
67
- & {
68
- ${mq.range({ from: breakpoints.tablet })} {
69
- padding-right: ${spacing.small};
70
- }
71
- }
72
- `,
73
- "small-right": css`
74
- margin-top: ${spacing.xsmall};
75
- --float: right;
76
- --width: 25%;
77
- --width-desktop: 50%;
78
- & {
79
- ${mq.range({ from: breakpoints.tablet })} {
80
- padding-left: ${spacing.small};
81
- }
82
- }
83
- `,
84
- "xsmall-left": css`
85
- --float: left;
86
- --width: 25%;
87
- & {
88
- ${mq.range({ from: breakpoints.tablet })} {
89
- padding-right: ${spacing.small};
90
- margin: ${spacing.xsmall} 0 ${spacing.medium};
91
- }
92
- }
93
- `,
94
- "xsmall-right": css`
95
- --float: right;
96
- --width: 25%;
97
- & {
98
- ${mq.range({ from: breakpoints.tablet })} {
99
- padding-left: ${spacing.small};
100
- margin: ${spacing.xsmall} 0 ${spacing.normal} ${spacing.xsmall};
101
- }
102
- }
103
- `,
104
- full: css`
105
- margin-top: ${spacing.xsmall};
106
- `,
107
- "full-column": css`
108
- left: auto !important;
109
- right: auto !important;
110
- width: auto !important;
111
- padding-left: 0;
112
- padding-right: 0;
113
- padding-bottom: ${spacing.large};
114
- margin-bottom: 0;
115
- `,
116
- };
117
-
118
- const floatStyle = css`
119
- ${mq.range({ from: breakpoints.tablet })} {
120
- float: var(--float);
121
- clear: var(--float);
122
- width: var(--width) !important;
123
- z-index: 1;
124
- left: auto !important;
125
- padding: 0;
126
- }
127
- ${mq.range({ from: breakpoints.desktop })} {
128
- width: var(--width-desktop, var(--width)) !important;
129
- }
130
- `;
131
-
132
- const Figure = forwardRef<HTMLElement, Props>(({ children, type = "full", ...rest }, ref) => {
133
- const styles = useMemo(() => {
134
- const styles = [];
135
- const floatCss = floatSizes[type];
136
- if (type !== "full-column" && type !== "full") {
137
- styles.push(floatStyle);
138
- }
139
- if (floatCss) {
140
- styles.push(floatCss);
141
- }
142
- return styles;
143
- }, [type]);
144
-
145
- return (
146
- <StyledFigure data-sizetype={type} css={styles} {...rest} ref={ref}>
147
- {children}
148
- </StyledFigure>
149
- );
150
- });
151
-
152
- export type FigureType =
153
- | "full"
154
- | "full-column"
155
- | "left"
156
- | "small-left"
157
- | "right"
158
- | "small-right"
159
- | "xsmall-right"
160
- | "xsmall-left";
161
-
162
- interface Props extends Omit<ComponentPropsWithRef<"figure">, "type"> {
163
- type?: FigureType;
164
- noFigcaption?: boolean;
165
- }
166
-
167
- export default Figure;
@@ -1,11 +0,0 @@
1
- /**
2
- * Copyright (c) 2017-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 Figure } from "./Figure";
10
-
11
- export type { FigureType } from "./Figure";
@@ -1,152 +0,0 @@
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, StoryObj } from "@storybook/react";
10
- import { CopyrightMetaData } from "@ndla/types-embed";
11
- import FramedContent from "./FramedContent";
12
- import FigureImage from "../../../../stories/article/FigureImage";
13
- import { CopyrightEmbed } from "../Embed";
14
-
15
- export default {
16
- title: "Components/FramedContent",
17
- component: FramedContent,
18
- tags: ["autodocs"],
19
- parameters: {
20
- inlineStories: true,
21
- },
22
- args: {
23
- children: <p>Content!</p>,
24
- },
25
- } as Meta<typeof FramedContent>;
26
-
27
- export const WithFloating: StoryObj<typeof FramedContent> = {
28
- args: {
29
- children: (
30
- <>
31
- <p>En boks med flytelementer</p>
32
- <FigureImage embedData={{ alt: "", align: "right" }} />
33
- <p>
34
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
35
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
36
- </p>
37
- <p>
38
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
39
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
40
- </p>
41
- </>
42
- ),
43
- },
44
- };
45
-
46
- export const WithFloatingSmall: StoryObj<typeof FramedContent> = {
47
- args: {
48
- children: (
49
- <>
50
- <p>En boks med flytelementer</p>
51
- <FigureImage embedData={{ alt: "", align: "right", size: "small" }} />
52
- <p>
53
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
54
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
55
- </p>
56
- <p>
57
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
58
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
59
- </p>
60
- </>
61
- ),
62
- },
63
- };
64
-
65
- export const TooMuchContent: StoryObj<typeof FramedContent> = {
66
- args: {
67
- children: (
68
- <>
69
- <h2>
70
- Tekst i ramme fungerer <em>dårlig</em> med mye tekst.
71
- </h2>
72
- <p>
73
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
74
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
75
- </p>
76
- <p>
77
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
78
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
79
- </p>
80
- <p>
81
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
82
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
83
- </p>
84
- <p>
85
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
86
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
87
- </p>
88
- <p>
89
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
90
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
91
- </p>
92
- <p>
93
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
94
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
95
- </p>
96
- <p>
97
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
98
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
99
- </p>
100
- <p>
101
- Pitching er også en god måte å bevisstgjøre seg selv på. Når du pitcher, blir idéen og historien i den filmen
102
- du planlegger å lage, tydeligere for både deg selv og dem du eventuelt jobber sammen med i klassen.
103
- </p>
104
- </>
105
- ),
106
- },
107
- };
108
-
109
- const copyrightEmbed: CopyrightMetaData = {
110
- resource: "copyright",
111
- status: "success",
112
- data: undefined,
113
- embedData: {
114
- resource: "copyright",
115
- title: "Hallo",
116
- copyright: {
117
- license: {
118
- license: "CC-BY-SA-4.0",
119
- description: "Creative Commons Attribution-ShareAlike 4.0 International",
120
- url: "https://creativecommons.org/licenses/by-sa/4.0/",
121
- },
122
- creators: [
123
- {
124
- type: "originator",
125
- name: "Camilla Øvstebø ",
126
- },
127
- ],
128
- processors: [
129
- {
130
- type: "linguistic",
131
- name: "Totaltekst",
132
- },
133
- ],
134
- rightsholders: [],
135
- processed: false,
136
- },
137
- },
138
- };
139
-
140
- export const WithCopyrightEmbed: StoryObj<typeof FramedContent> = {
141
- args: {
142
- children: (
143
- <>
144
- <h2>Her har du helt vanlig innhold</h2>
145
- <p>Det kan som sagt være hva som helst.</p>
146
- <CopyrightEmbed embed={copyrightEmbed}>
147
- <p>Dette er innhold som er i en copyright-embed.</p>
148
- </CopyrightEmbed>
149
- </>
150
- ),
151
- },
152
- };