@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,26 +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 { ComponentPropsWithRef, forwardRef } from "react";
10
- import styled from "@emotion/styled";
11
- import { colors, spacing } from "@ndla/core";
12
-
13
- const StyledFramedContent = styled.div`
14
- padding: ${spacing.mediumlarge};
15
- margin: ${spacing.large} 0;
16
- border: 1px solid ${colors.brand.tertiary};
17
- overflow: hidden;
18
- `;
19
-
20
- const FramedContent = forwardRef<HTMLDivElement, ComponentPropsWithRef<"div">>(({ children, ...rest }, ref) => (
21
- <StyledFramedContent {...rest} ref={ref}>
22
- {children}
23
- </StyledFramedContent>
24
- ));
25
-
26
- export default FramedContent;
@@ -1,10 +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 FramedContent from "./FramedContent";
10
- export default FramedContent;
@@ -1,61 +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 Image from "./Image";
11
-
12
- export default {
13
- title: "Components/Image",
14
- tags: ["autodocs"],
15
- component: Image,
16
- parameters: {
17
- inlineStories: true,
18
- },
19
- args: {
20
- alt: "Mann med maske",
21
- src: "https://api.test.ndla.no/image-api/raw/id/604",
22
- },
23
- } as Meta<typeof Image>;
24
-
25
- export const Default: StoryObj<typeof Image> = {};
26
-
27
- export const Crop: StoryObj<typeof Image> = {
28
- args: {
29
- crop: {
30
- startX: 14.59,
31
- endX: 79.63,
32
- startY: 20,
33
- endY: 100,
34
- },
35
- },
36
- };
37
-
38
- export const FocalPoint: StoryObj<typeof Image> = {
39
- args: {
40
- focalPoint: {
41
- x: 65.08,
42
- y: 45.28,
43
- },
44
- sizes: "(min-width: 320px) 320px",
45
- },
46
- };
47
-
48
- export const LazyLoad: StoryObj<typeof Image> = {
49
- args: {
50
- alt: "Lyspære",
51
- src: "https://api.staging.ndla.no/image-api/raw/Ide.jpg",
52
- lazyLoad: true,
53
- lazyLoadSrc: `data:image/svg+xml;utf8,
54
- <svg xmlns="http://www.w3.org/2000/svg" height="400" width="100%">
55
- <rect x="0" y="0" width="100%" height="100%" style="fill:#EFF0F2;">
56
- <animate attributeType="XML" attributeName="fill" values="#EFF0F2;#E8E3E3;#EFF0F2;" dur="3s" repeatCount="indefinite"/>
57
- </rect>
58
- </svg>
59
- `,
60
- },
61
- };
@@ -1,147 +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
- import { ReactNode } from "react";
10
- import styled from "@emotion/styled";
11
- import { colors, misc } from "@ndla/core";
12
-
13
- export interface ImageCrop {
14
- startX: number;
15
- startY: number;
16
- endX: number;
17
- endY: number;
18
- }
19
-
20
- export interface ImageFocalPoint {
21
- x: number;
22
- y: number;
23
- }
24
-
25
- export const makeSrcQueryString = (width: number | undefined, crop?: ImageCrop, focalPoint?: ImageFocalPoint) => {
26
- const widthParams = width && `width=${width}`;
27
- const cropParams =
28
- crop && `cropStartX=${crop.startX}&cropEndX=${crop.endX}&cropStartY=${crop.startY}&cropEndY=${crop.endY}`;
29
- const focalPointParams = focalPoint && `focalX=${focalPoint.x}&focalY=${focalPoint.y}`;
30
- const params = [widthParams, cropParams, focalPointParams].filter((p) => p).join("&");
31
-
32
- return params;
33
- };
34
-
35
- const getSrcSet = (src: string, crop: ImageCrop | undefined, focalPoint: ImageFocalPoint | undefined) => {
36
- const widths = [2720, 2080, 1760, 1440, 1120, 1000, 960, 800, 640, 480, 320, 240, 180];
37
- return widths.map((width) => `${src}?${makeSrcQueryString(width, crop, focalPoint)} ${width}w`).join(", ");
38
- };
39
-
40
- const StyledImageWrapper = styled.div`
41
- overflow: hidden;
42
- position: relative;
43
-
44
- &[data-expanded="true"] {
45
- width: 100%;
46
- }
47
-
48
- picture {
49
- width: 100%;
50
- }
51
-
52
- &[data-svg="true"] {
53
- display: flex;
54
- justify-content: center;
55
- }
56
- &[data-border="true"] {
57
- border: 1px solid ${colors.brand.tertiary};
58
- border-bottom: 0;
59
- border-radius: ${misc.borderRadius};
60
- border-bottom-left-radius: 0;
61
- border-bottom-right-radius: 0;
62
- }
63
- &[data-expandable="true"] {
64
- cursor: pointer;
65
- }
66
- `;
67
-
68
- const StyledImage = styled.img`
69
- &[data-border="true"] {
70
- border-radius: 3px;
71
- border-bottom-left-radius: 0;
72
- border-bottom-right-radius: 0;
73
- }
74
- `;
75
-
76
- interface Props {
77
- alt: string;
78
- src: string;
79
- sizes?: string;
80
- fallbackWidth?: number;
81
- contentType?: string;
82
- srcSet?: string;
83
- lazyLoad?: boolean;
84
- lazyLoadSrc?: string;
85
- expandButton?: ReactNode;
86
- crop?: ImageCrop;
87
- focalPoint?: ImageFocalPoint;
88
- border?: string;
89
- lang?: string;
90
- onExpand?: () => void;
91
- expanded?: boolean;
92
- }
93
-
94
- const Image = ({
95
- alt,
96
- src,
97
- lazyLoad,
98
- lazyLoadSrc,
99
- crop,
100
- focalPoint,
101
- contentType,
102
- sizes = "(min-width: 1024px) 1024px, 100vw",
103
- expandButton,
104
- fallbackWidth = 1024,
105
- border,
106
- lang,
107
- onExpand,
108
- expanded,
109
- ...rest
110
- }: Props) => {
111
- const srcSet = rest.srcSet ?? getSrcSet(src, crop, focalPoint);
112
- const queryString = makeSrcQueryString(fallbackWidth, crop, focalPoint);
113
- const loading = lazyLoad ? "lazy" : undefined;
114
-
115
- if (contentType && contentType === "image/gif") {
116
- return (
117
- <StyledImageWrapper data-border={border} data-expanded={expanded} data-expandable={!!onExpand} onClick={onExpand}>
118
- <StyledImage alt={alt} loading={loading} src={`${src}`} {...rest} data-border={border} lang={lang} />
119
- </StyledImageWrapper>
120
- );
121
- }
122
-
123
- return (
124
- <StyledImageWrapper
125
- data-svg={contentType === "image/svg+xml"}
126
- data-border={border}
127
- data-expandable={!!onExpand}
128
- data-expanded={expanded}
129
- onClick={onExpand}
130
- >
131
- <picture>
132
- <source type={contentType} srcSet={srcSet} sizes={sizes} />
133
- <StyledImage
134
- alt={alt}
135
- loading={loading}
136
- src={`${src}?${queryString}`}
137
- {...rest}
138
- data-border={border}
139
- lang={lang}
140
- />
141
- </picture>
142
- {expandButton}
143
- </StyledImageWrapper>
144
- );
145
- };
146
-
147
- export default Image;
@@ -1,37 +0,0 @@
1
- /**
2
- * Copyright (c) 2019-present, NDLA.
3
- *
4
- * This source code is licensed under the GPLv3 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
-
9
- import { ReactNode } from "react";
10
- import styled from "@emotion/styled";
11
- import { ImageCrop, ImageFocalPoint } from ".";
12
- import { makeSrcQueryString } from "./Image";
13
-
14
- const StyledLink = styled.a`
15
- box-shadow: inset 0 0;
16
- `;
17
-
18
- interface Props {
19
- src: string;
20
- children: ReactNode;
21
- sizes?: string;
22
- crop?: ImageCrop;
23
- focalPoint?: ImageFocalPoint;
24
- }
25
-
26
- export function ImageLink({ src, crop, children, ...rest }: Props) {
27
- return (
28
- <StyledLink
29
- target="_blank"
30
- href={`${src}?${makeSrcQueryString(undefined, crop)}`}
31
- rel="noopener noreferrer"
32
- {...rest}
33
- >
34
- {children}
35
- </StyledLink>
36
- );
37
- }
@@ -1,14 +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
- import Image from "./Image";
10
- export { makeSrcQueryString } from "./Image";
11
- export { ImageLink } from "./ImageLink";
12
- export type { ImageCrop, ImageFocalPoint } from "./Image";
13
-
14
- export default Image;
@@ -1,29 +0,0 @@
1
- /**
2
- * Copyright (c) 2022-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 { useArgs } from "@storybook/preview-api";
10
- import { Meta, StoryFn } from "@storybook/react";
11
- import LetterFilter from "./LetterFilter";
12
-
13
- export default {
14
- title: "Components/LetterFilter",
15
- component: LetterFilter,
16
- tags: ["autodocs"],
17
- args: {
18
- enabledLetters: ["a", "c"],
19
- onChange: (value?: string) => {},
20
- },
21
- } as Meta<typeof LetterFilter>;
22
-
23
- export const LetterFilterStory: StoryFn<typeof LetterFilter> = (args) => {
24
- const [, updateArgs] = useArgs();
25
-
26
- return <LetterFilter {...args} onChange={(val) => updateArgs({ value: val })} />;
27
- };
28
-
29
- LetterFilterStory.storyName = "LetterFilter";
@@ -1,78 +0,0 @@
1
- /**
2
- * Copyright (c) 2022-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 { useMemo } from "react";
10
- import { useTranslation } from "react-i18next";
11
- import styled from "@emotion/styled";
12
- import { IconButtonV2 as IconButton } from "@ndla/button";
13
- import { colors, fonts, spacing } from "@ndla/core";
14
- import { alphabet } from "./alphabet";
15
-
16
- const StyledUL = styled.ul`
17
- list-style: none;
18
- display: flex;
19
- flex-direction: row;
20
- flex-wrap: wrap;
21
- gap: ${spacing.xsmall};
22
- `;
23
-
24
- const StyledButton = styled(IconButton)`
25
- display: flex;
26
- align-items: center;
27
- justify-content: center;
28
- width: ${spacing.normal};
29
- height: ${spacing.normal};
30
- padding: 0;
31
- ${fonts.sizes(18)};
32
- && {
33
- font-weight: ${fonts.weight.semibold};
34
- }
35
-
36
- :disabled {
37
- pointer-events: none;
38
- color: ${colors.brand.light};
39
- }
40
- `;
41
-
42
- interface Props {
43
- value?: string | undefined;
44
- onChange: (value?: string) => void;
45
- enabledLetters: string[];
46
- }
47
-
48
- const LetterFilter = ({ value, onChange, enabledLetters }: Props) => {
49
- const { t } = useTranslation();
50
- const uppercaseLetters = useMemo(() => enabledLetters.map((letter) => letter.toUpperCase()), [enabledLetters]);
51
-
52
- return (
53
- <StyledUL>
54
- {alphabet.map((letter) => {
55
- const disabled = !uppercaseLetters.includes(letter.toUpperCase());
56
- const selected = letter.toUpperCase() === value?.toUpperCase();
57
- return (
58
- <li key={letter}>
59
- <StyledButton
60
- onClick={() => (selected ? onChange(undefined) : onChange(letter))}
61
- aria-label={t("listview.filters.alphabet.letterFilter", {
62
- letter,
63
- })}
64
- variant={!selected ? "ghost" : undefined}
65
- colorTheme={!selected ? "lighter" : "primary"}
66
- disabled={disabled}
67
- size="xsmall"
68
- >
69
- {letter}
70
- </StyledButton>
71
- </li>
72
- );
73
- })}
74
- </StyledUL>
75
- );
76
- };
77
-
78
- export default LetterFilter;
@@ -1,39 +0,0 @@
1
- /**
2
- * Copyright (c) 2022-present, NDLA.
3
- *
4
- * This source code is licensed under the GPLv3 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
-
9
- export const alphabet = [
10
- "A",
11
- "B",
12
- "C",
13
- "D",
14
- "E",
15
- "F",
16
- "G",
17
- "H",
18
- "I",
19
- "J",
20
- "K",
21
- "L",
22
- "M",
23
- "N",
24
- "O",
25
- "P",
26
- "Q",
27
- "R",
28
- "S",
29
- "T",
30
- "U",
31
- "V",
32
- "W",
33
- "X",
34
- "Y",
35
- "Z",
36
- "Æ",
37
- "Ø",
38
- "Å",
39
- ];
@@ -1,11 +0,0 @@
1
- /**
2
- * Copyright (c) 2022-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 LetterFilter from "./LetterFilter";
10
-
11
- export default LetterFilter;
@@ -1,100 +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 { t } from "i18next";
10
- import { ReactNode, useState } from "react";
11
- import styled from "@emotion/styled";
12
- import { ButtonV2 } from "@ndla/button";
13
- import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
14
-
15
- interface Props {
16
- icon?: ReactNode;
17
- children?: ReactNode;
18
- warningByline?: boolean;
19
- }
20
-
21
- const StyledFigCaption = styled.div`
22
- display: flex;
23
- gap: ${spacing.small};
24
- align-items: center;
25
- background: unset;
26
- padding: unset;
27
- font-size: unset;
28
- color: unset;
29
- p {
30
- margin: 0;
31
- }
32
- `;
33
-
34
- const StyledDescription = styled.div`
35
- display: inline-flex;
36
- white-space: pre-wrap;
37
- &[data-warning="false"] {
38
- ${mq.range({ until: breakpoints.mobileWide })} {
39
- &[data-open="true"] {
40
- display: inline;
41
- }
42
- display: grid;
43
- grid-template-columns: 1fr auto;
44
- overflow: hidden;
45
- }
46
- }
47
- `;
48
-
49
- const TextContent = styled.span`
50
- &[data-warning="false"] {
51
- ${mq.range({ until: breakpoints.mobileWide })} {
52
- white-space: nowrap;
53
- max-height: ${spacing.medium};
54
- &[data-open="true"] {
55
- white-space: pre-wrap;
56
- max-height: none;
57
- }
58
- overflow: hidden;
59
- text-overflow: ellipsis;
60
- transition: max-height 0.7s ease-in;
61
- margin: auto 0;
62
- }
63
- }
64
- `;
65
-
66
- const Button = styled(ButtonV2)`
67
- color: ${colors.brand.primary};
68
- font-weight: ${fonts.weight.semibold};
69
- min-width: fit-content;
70
- margin-left: ${spacing.small};
71
- ${mq.range({ from: breakpoints.mobileWide })} {
72
- display: none;
73
- }
74
- `;
75
-
76
- const LicenseDescription = ({ icon, children, warningByline = false }: Props) => {
77
- const [isOpen, setIsOpen] = useState(false);
78
-
79
- const handleToggle = () => {
80
- setIsOpen(!isOpen);
81
- };
82
-
83
- return (
84
- <StyledFigCaption>
85
- {icon}
86
- <StyledDescription data-open={isOpen} data-warning={warningByline}>
87
- <TextContent data-open={isOpen} data-warning={warningByline}>
88
- {children}
89
- </TextContent>
90
- {!warningByline && (
91
- <Button variant="link" onClick={handleToggle}>
92
- {isOpen ? `${t("audio.readLessDescriptionLabel")}` : `${t("audio.readMoreDescriptionLabel")}`}
93
- </Button>
94
- )}
95
- </StyledDescription>
96
- </StyledFigCaption>
97
- );
98
- };
99
-
100
- export default LicenseDescription;
@@ -1,135 +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 OrderedList from "./OrderedList";
11
-
12
- /**
13
- * Lister bør ikke inneholde flere enn 10 punkter. Har du mye mer, bør du vurdere å organisere innholdet annerledes.
14
- */
15
- export default {
16
- title: "Base Styles/Ordered List",
17
- tags: ["autodocs"],
18
- component: OrderedList,
19
- parameters: {
20
- inlineStories: true,
21
- },
22
- render: ({ ...args }) => (
23
- <OrderedList {...args}>
24
- <li>Listepunkt 1</li>
25
- <li>Listepunkt 2</li>
26
- <li>
27
- Listepunkt 3
28
- <OrderedList {...args}>
29
- <li>Listepunkt 1</li>
30
- <li>Listepunkt 2</li>
31
- <li>
32
- Listepunkt 3
33
- <OrderedList {...args}>
34
- <li>Listepunkt 1</li>
35
- <li>Listepunkt 2</li>
36
- <li>Listepunkt 3</li>
37
- </OrderedList>
38
- </li>
39
- </OrderedList>
40
- </li>
41
- <li>Listepunkt 4</li>
42
- </OrderedList>
43
- ),
44
- } as Meta<typeof OrderedList>;
45
-
46
- export const Default: StoryObj = {};
47
-
48
- export const Letters: StoryObj = {
49
- args: {
50
- type: "letters",
51
- },
52
- };
53
-
54
- export const WithNumbersAndLetters: StoryFn = () => (
55
- <OrderedList>
56
- <li>Listepunkt 1</li>
57
- <li>Listepunkt 2</li>
58
- <li>
59
- Listepunkt 3
60
- <OrderedList data-type="letters">
61
- <li>Listepunkt 1</li>
62
- <li>Listepunkt 2</li>
63
- <li>
64
- Listepunkt 3
65
- <OrderedList data-type="letters">
66
- <li>Listepunkt 1</li>
67
- <li>Listepunkt 2</li>
68
- <li>
69
- Listepunkt 3
70
- <OrderedList>
71
- <li>Listepunkt 1</li>
72
- <li>Listepunkt 2</li>
73
- <li>Listepunkt 3</li>
74
- </OrderedList>
75
- </li>
76
- </OrderedList>
77
- </li>
78
- </OrderedList>
79
- </li>
80
- <li>Listepunkt 4</li>
81
- </OrderedList>
82
- );
83
-
84
- export const StartingAtFive: StoryFn = () => (
85
- <OrderedList start={5} data-type="letters">
86
- <li>Listepunkt 1</li>
87
- <li>Listepunkt 2</li>
88
- <li>
89
- Listepunkt 3
90
- <OrderedList data-type="letters">
91
- <li>Listepunkt 1</li>
92
- <li>Listepunkt 2</li>
93
- <li>
94
- Listepunkt 3
95
- <OrderedList data-type="letters">
96
- <li>Listepunkt 1</li>
97
- <li>Listepunkt 2</li>
98
- <li>
99
- Listepunkt 3
100
- <OrderedList start={5}>
101
- <li>Listepunkt 1</li>
102
- <li>Listepunkt 2</li>
103
- <li>Listepunkt 3</li>
104
- </OrderedList>
105
- </li>
106
- </OrderedList>
107
- </li>
108
- </OrderedList>
109
- </li>
110
- <li>Listepunkt 4</li>
111
- </OrderedList>
112
- );
113
-
114
- export const NoStyle: StoryFn = () => (
115
- <ol>
116
- <li>Listepunkt 1</li>
117
- <li>Listepunkt 2</li>
118
- <li>
119
- Listepunkt 3
120
- <ol>
121
- <li>Listepunkt 1</li>
122
- <li>Listepunkt 2</li>
123
- <li>
124
- Listepunkt 3
125
- <ol>
126
- <li>Listepunkt 1</li>
127
- <li>Listepunkt 2</li>
128
- <li>Listepunkt 3</li>
129
- </ol>
130
- </li>
131
- </ol>
132
- </li>
133
- <li>Listepunkt 4</li>
134
- </ol>
135
- );