@ndla/ui 55.0.15-alpha.0 → 55.0.17-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 (324) hide show
  1. package/dist/panda.buildinfo.json +125 -29
  2. package/dist/styles.css +453 -103
  3. package/es/Article/Article.js +101 -162
  4. package/es/Article/ArticleByline.js +89 -56
  5. package/es/Article/ArticleFootNotes.js +35 -23
  6. package/es/Article/ArticleParagraph.js +2 -2
  7. package/es/Article/index.js +3 -5
  8. package/es/AudioPlayer/AudioPlayer.js +20 -20
  9. package/es/AudioPlayer/Controls.js +45 -45
  10. package/es/AudioPlayer/SpeechControl.js +8 -8
  11. package/es/BlogPost/BlogPost.js +6 -6
  12. package/es/Breadcrumb/Breadcrumb.js +19 -29
  13. package/es/Breadcrumb/BreadcrumbItem.js +20 -49
  14. package/es/Breadcrumb/HomeBreadcrumb.js +36 -82
  15. package/es/CampaignBlock/CampaignBlock.js +12 -12
  16. package/es/CodeBlock/CodeBlock.js +2 -2
  17. package/es/Concept/Concept.js +11 -11
  18. package/es/ContactBlock/ContactBlock.js +170 -185
  19. package/es/ContactBlock/index.js +3 -3
  20. package/es/ContentLoader/index.js +12 -12
  21. package/es/ContentPlaceholder/ContentPlaceholder.js +3 -3
  22. package/es/ContentTypeBadge/ContentTypeBadge.js +81 -80
  23. package/es/ContentTypeBadge/ContentTypeBadgeNew.js +3 -2
  24. package/es/ContentTypeHero/ContentTypeHero.js +50 -0
  25. package/es/{Logo → ContentTypeHero}/index.js +2 -3
  26. package/es/CopyParagraphButton/CopyParagraphButton.js +13 -12
  27. package/es/Embed/AudioEmbed.js +7 -7
  28. package/es/Embed/BrightcoveEmbed.js +8 -8
  29. package/es/Embed/CodeEmbed.js +6 -6
  30. package/es/Embed/ConceptEmbed.js +13 -13
  31. package/es/Embed/ConceptListEmbed.js +9 -9
  32. package/es/Embed/ContentLinkEmbed.js +6 -6
  33. package/es/Embed/CopyrightEmbed.js +3 -3
  34. package/es/Embed/EmbedErrorPlaceholder.js +5 -5
  35. package/es/Embed/ExternalEmbed.js +5 -5
  36. package/es/Embed/FootnoteEmbed.js +5 -5
  37. package/es/Embed/GlossEmbed.js +11 -11
  38. package/es/Embed/H5pEmbed.js +5 -5
  39. package/es/Embed/IframeEmbed.js +6 -6
  40. package/es/Embed/ImageEmbed.js +10 -10
  41. package/es/Embed/InlineTriggerButton.js +2 -2
  42. package/es/Embed/RelatedContentEmbed.js +5 -5
  43. package/es/Embed/UnknownEmbed.js +3 -3
  44. package/es/Embed/UuDisclaimerEmbed.js +6 -6
  45. package/es/ErrorMessage/ErrorMessage.js +14 -14
  46. package/es/ErrorMessage/ErrorResourceAccessDenied.js +6 -6
  47. package/es/FactBox/FactBox.js +5 -5
  48. package/es/FileList/File.js +3 -3
  49. package/es/FileList/FileList.js +6 -6
  50. package/es/FileList/Format.js +6 -6
  51. package/es/FileList/PdfFile.js +5 -5
  52. package/es/FrontpageArticle/FrontpageArticle.js +7 -8
  53. package/es/Gloss/Gloss.js +23 -23
  54. package/es/Gloss/GlossExample.js +9 -9
  55. package/es/Grid/Grid.js +4 -4
  56. package/es/KeyFigure/KeyFigure.js +5 -5
  57. package/es/Layout/LayoutItem.js +25 -37
  58. package/es/Layout/OneColumn.js +33 -31
  59. package/es/Layout/PageContainer.js +21 -30
  60. package/es/LicenseByline/EmbedByline.js +21 -21
  61. package/es/LicenseByline/LicenseLink.js +3 -3
  62. package/es/LinkBlock/LinkBlock.js +8 -8
  63. package/es/LinkBlock/LinkBlockSection.js +4 -4
  64. package/es/Messages/MessageBox.js +11 -11
  65. package/es/Messages/index.js +1 -2
  66. package/es/ProgrammeCard/ProgrammeCard.js +5 -5
  67. package/es/RelatedArticleList/RelatedArticleList.js +15 -15
  68. package/es/ResourceBox/ResourceBox.js +9 -9
  69. package/es/SnackBar/DefaultSnackbar.js +5 -5
  70. package/es/SnackBar/SnackbarProvider.js +7 -7
  71. package/es/TagSelector/TagSelector.js +17 -17
  72. package/es/TreeStructure/AddFolderButton.js +4 -4
  73. package/es/TreeStructure/ComboboxButton.js +7 -7
  74. package/es/TreeStructure/FolderItem.js +13 -13
  75. package/es/TreeStructure/FolderItems.js +6 -6
  76. package/es/TreeStructure/TreeStructure.js +9 -9
  77. package/es/ZendeskButton/ZendeskButton.js +2 -2
  78. package/es/i18n/index.js +1 -1
  79. package/es/index.js +5 -12
  80. package/es/locale/messages-en.js +1 -1
  81. package/es/locale/messages-nb.js +1 -1
  82. package/es/locale/messages-nn.js +1 -1
  83. package/es/locale/messages-se.js +1 -1
  84. package/es/locale/messages-sma.js +1 -1
  85. package/es/model/ContentType.js +3 -1
  86. package/es/styles.css +453 -103
  87. package/lib/Article/Article.d.ts +9 -30
  88. package/lib/Article/Article.js +104 -164
  89. package/lib/Article/ArticleByline.d.ts +1 -3
  90. package/lib/Article/ArticleByline.js +89 -56
  91. package/lib/Article/ArticleFootNotes.js +35 -24
  92. package/lib/Article/ArticleParagraph.js +2 -2
  93. package/lib/Article/index.d.ts +2 -5
  94. package/lib/Article/index.js +18 -24
  95. package/lib/AudioPlayer/AudioPlayer.js +20 -20
  96. package/lib/AudioPlayer/Controls.js +45 -45
  97. package/lib/AudioPlayer/SpeechControl.js +8 -8
  98. package/lib/BlogPost/BlogPost.js +6 -6
  99. package/lib/Breadcrumb/Breadcrumb.js +21 -29
  100. package/lib/Breadcrumb/BreadcrumbItem.js +22 -50
  101. package/lib/Breadcrumb/HomeBreadcrumb.d.ts +1 -2
  102. package/lib/Breadcrumb/HomeBreadcrumb.js +38 -82
  103. package/lib/CampaignBlock/CampaignBlock.js +12 -12
  104. package/lib/CodeBlock/CodeBlock.js +2 -2
  105. package/lib/Concept/Concept.js +11 -11
  106. package/lib/ContactBlock/ContactBlock.d.ts +6 -7
  107. package/lib/ContactBlock/ContactBlock.js +173 -184
  108. package/lib/ContactBlock/index.d.ts +3 -3
  109. package/lib/ContactBlock/index.js +13 -11
  110. package/lib/ContentLoader/index.js +12 -12
  111. package/lib/ContentPlaceholder/ContentPlaceholder.js +3 -3
  112. package/lib/ContentTypeBadge/ContentTypeBadge.d.ts +11 -12
  113. package/lib/ContentTypeBadge/ContentTypeBadge.js +83 -80
  114. package/lib/ContentTypeBadge/ContentTypeBadgeNew.d.ts +1 -2
  115. package/lib/ContentTypeBadge/ContentTypeBadgeNew.js +3 -2
  116. package/lib/ContentTypeHero/ContentTypeHero.d.ts +15 -0
  117. package/lib/ContentTypeHero/ContentTypeHero.js +57 -0
  118. package/lib/ContentTypeHero/index.d.ts +9 -0
  119. package/lib/ContentTypeHero/index.js +12 -0
  120. package/lib/CopyParagraphButton/CopyParagraphButton.js +13 -12
  121. package/lib/Embed/AudioEmbed.js +7 -7
  122. package/lib/Embed/BrightcoveEmbed.js +8 -8
  123. package/lib/Embed/CodeEmbed.js +6 -6
  124. package/lib/Embed/ConceptEmbed.js +13 -13
  125. package/lib/Embed/ConceptListEmbed.js +9 -9
  126. package/lib/Embed/ContentLinkEmbed.js +6 -6
  127. package/lib/Embed/CopyrightEmbed.js +3 -3
  128. package/lib/Embed/EmbedErrorPlaceholder.js +5 -5
  129. package/lib/Embed/ExternalEmbed.js +5 -5
  130. package/lib/Embed/FootnoteEmbed.js +5 -5
  131. package/lib/Embed/GlossEmbed.js +11 -11
  132. package/lib/Embed/H5pEmbed.js +5 -5
  133. package/lib/Embed/IframeEmbed.js +6 -6
  134. package/lib/Embed/ImageEmbed.js +10 -10
  135. package/lib/Embed/InlineTriggerButton.js +2 -2
  136. package/lib/Embed/RelatedContentEmbed.js +5 -5
  137. package/lib/Embed/UnknownEmbed.js +3 -3
  138. package/lib/Embed/UuDisclaimerEmbed.js +6 -6
  139. package/lib/ErrorMessage/ErrorMessage.js +14 -14
  140. package/lib/ErrorMessage/ErrorResourceAccessDenied.js +6 -6
  141. package/lib/FactBox/FactBox.js +5 -5
  142. package/lib/FileList/File.js +3 -3
  143. package/lib/FileList/FileList.js +6 -6
  144. package/lib/FileList/Format.js +6 -6
  145. package/lib/FileList/PdfFile.js +5 -5
  146. package/lib/FrontpageArticle/FrontpageArticle.js +7 -8
  147. package/lib/Gloss/Gloss.js +23 -23
  148. package/lib/Gloss/GlossExample.js +9 -9
  149. package/lib/Grid/Grid.js +4 -4
  150. package/lib/KeyFigure/KeyFigure.js +5 -5
  151. package/lib/Layout/LayoutItem.d.ts +3 -7
  152. package/lib/Layout/LayoutItem.js +27 -38
  153. package/lib/Layout/OneColumn.d.ts +3 -6
  154. package/lib/Layout/OneColumn.js +36 -33
  155. package/lib/Layout/PageContainer.d.ts +3 -6
  156. package/lib/Layout/PageContainer.js +24 -32
  157. package/lib/LicenseByline/EmbedByline.js +21 -21
  158. package/lib/LicenseByline/LicenseLink.js +3 -3
  159. package/lib/LinkBlock/LinkBlock.js +8 -8
  160. package/lib/LinkBlock/LinkBlockSection.js +4 -4
  161. package/lib/Messages/MessageBox.js +11 -11
  162. package/lib/Messages/index.d.ts +1 -2
  163. package/lib/Messages/index.js +0 -7
  164. package/lib/ProgrammeCard/ProgrammeCard.js +5 -5
  165. package/lib/RelatedArticleList/RelatedArticleList.js +15 -15
  166. package/lib/ResourceBox/ResourceBox.js +9 -9
  167. package/lib/SnackBar/DefaultSnackbar.js +5 -5
  168. package/lib/SnackBar/SnackbarProvider.js +7 -7
  169. package/lib/TagSelector/TagSelector.js +17 -17
  170. package/lib/TreeStructure/AddFolderButton.js +4 -4
  171. package/lib/TreeStructure/ComboboxButton.js +7 -7
  172. package/lib/TreeStructure/FolderItem.js +13 -13
  173. package/lib/TreeStructure/FolderItems.js +6 -6
  174. package/lib/TreeStructure/TreeStructure.js +9 -9
  175. package/lib/ZendeskButton/ZendeskButton.js +2 -2
  176. package/lib/i18n/index.d.ts +1 -1
  177. package/lib/i18n/index.js +6 -0
  178. package/lib/index.d.ts +8 -15
  179. package/lib/index.js +30 -139
  180. package/lib/locale/messages-en.js +1 -1
  181. package/lib/locale/messages-nb.js +1 -1
  182. package/lib/locale/messages-nn.js +1 -1
  183. package/lib/locale/messages-se.js +1 -1
  184. package/lib/locale/messages-sma.js +1 -1
  185. package/lib/model/ContentType.d.ts +1 -0
  186. package/lib/model/ContentType.js +4 -2
  187. package/lib/styles.css +453 -103
  188. package/package.json +10 -11
  189. package/src/Article/Article.tsx +101 -229
  190. package/src/Article/ArticleByline.tsx +82 -69
  191. package/src/Article/ArticleFootNotes.tsx +32 -36
  192. package/src/Article/index.ts +3 -7
  193. package/src/Breadcrumb/Breadcrumb.tsx +20 -18
  194. package/src/Breadcrumb/BreadcrumbItem.tsx +36 -59
  195. package/src/Breadcrumb/HomeBreadcrumb.stories.tsx +0 -12
  196. package/src/Breadcrumb/HomeBreadcrumb.tsx +33 -46
  197. package/src/ContactBlock/{Contactblock.stories.tsx → ContactBlock.stories.tsx} +3 -4
  198. package/src/ContactBlock/ContactBlock.tsx +165 -199
  199. package/src/ContactBlock/index.ts +3 -3
  200. package/src/ContentTypeBadge/ContentTypeBadge.tsx +77 -77
  201. package/src/ContentTypeBadge/ContentTypeBadgeNew.tsx +3 -1
  202. package/src/ContentTypeHero/ContentTypeHero.stories.tsx +76 -0
  203. package/src/ContentTypeHero/ContentTypeHero.tsx +55 -0
  204. package/src/ContentTypeHero/index.ts +10 -0
  205. package/src/CopyParagraphButton/CopyParagraphButton.tsx +10 -3
  206. package/src/Embed/AudioEmbed.stories.tsx +6 -8
  207. package/src/Embed/BrightcoveEmbed.stories.tsx +6 -8
  208. package/src/Embed/ConceptEmbed.stories.tsx +6 -8
  209. package/src/Embed/ExternalEmbed.stories.tsx +5 -5
  210. package/src/Embed/H5pEmbed.stories.tsx +6 -8
  211. package/src/Embed/IframeEmbed.stories.tsx +6 -8
  212. package/src/Embed/ImageEmbed.stories.tsx +6 -8
  213. package/src/Embed/RelatedContentEmbed.stories.tsx +6 -8
  214. package/src/Embed/UuDisclaimerEmbed.stories.tsx +6 -8
  215. package/src/FrontpageArticle/FrontpageArticle.tsx +1 -1
  216. package/src/Layout/LayoutItem.tsx +25 -41
  217. package/src/Layout/OneColumn.tsx +33 -33
  218. package/src/Layout/PageContainer.tsx +22 -24
  219. package/src/Messages/index.ts +1 -2
  220. package/src/i18n/index.ts +1 -0
  221. package/src/index.ts +11 -35
  222. package/src/locale/messages-en.ts +1 -1
  223. package/src/locale/messages-nb.ts +1 -1
  224. package/src/locale/messages-nn.ts +1 -1
  225. package/src/locale/messages-se.ts +1 -1
  226. package/src/locale/messages-sma.ts +1 -1
  227. package/src/model/ContentType.ts +2 -0
  228. package/es/Article/ArticleHeaderWrapper.js +0 -33
  229. package/es/CreatedBy/CreatedBy.js +0 -73
  230. package/es/CreatedBy/index.js +0 -10
  231. package/es/Hero/Hero.js +0 -68
  232. package/es/Hero/HeroContent.js +0 -16
  233. package/es/Hero/index.js +0 -10
  234. package/es/LanguageSelector/LanguageSelector.js +0 -87
  235. package/es/LanguageSelector/index.js +0 -10
  236. package/es/Logo/Logo.js +0 -52
  237. package/es/Logo/SvgLogo.js +0 -54
  238. package/es/Messages/MessageBanner.js +0 -72
  239. package/es/Search/ActiveFilterContent.js +0 -40
  240. package/es/Search/ActiveFilters.js +0 -112
  241. package/es/Search/ContentTypeResult.js +0 -151
  242. package/es/Search/ContentTypeResultStyles.js +0 -51
  243. package/es/Search/IsPathToHighlight.js +0 -12
  244. package/es/Search/LoadingWrapper.js +0 -31
  245. package/es/Search/SearchField.js +0 -110
  246. package/es/Search/SearchFieldForm.js +0 -33
  247. package/es/Search/SearchResult.js +0 -185
  248. package/es/Search/SearchResultSleeve.js +0 -229
  249. package/es/Search/index.js +0 -12
  250. package/lib/Article/ArticleHeaderWrapper.d.ts +0 -14
  251. package/lib/Article/ArticleHeaderWrapper.js +0 -40
  252. package/lib/CreatedBy/CreatedBy.d.ts +0 -15
  253. package/lib/CreatedBy/CreatedBy.js +0 -78
  254. package/lib/CreatedBy/index.d.ts +0 -9
  255. package/lib/CreatedBy/index.js +0 -16
  256. package/lib/Hero/Hero.d.ts +0 -25
  257. package/lib/Hero/Hero.js +0 -83
  258. package/lib/Hero/HeroContent.d.ts +0 -12
  259. package/lib/Hero/HeroContent.js +0 -23
  260. package/lib/Hero/index.d.ts +0 -10
  261. package/lib/Hero/index.js +0 -61
  262. package/lib/LanguageSelector/LanguageSelector.d.ts +0 -15
  263. package/lib/LanguageSelector/LanguageSelector.js +0 -92
  264. package/lib/LanguageSelector/index.d.ts +0 -9
  265. package/lib/LanguageSelector/index.js +0 -13
  266. package/lib/Logo/Logo.d.ts +0 -20
  267. package/lib/Logo/Logo.js +0 -58
  268. package/lib/Logo/SvgLogo.d.ts +0 -14
  269. package/lib/Logo/SvgLogo.js +0 -62
  270. package/lib/Logo/index.d.ts +0 -9
  271. package/lib/Logo/index.js +0 -16
  272. package/lib/Messages/MessageBanner.d.ts +0 -16
  273. package/lib/Messages/MessageBanner.js +0 -77
  274. package/lib/Search/ActiveFilterContent.d.ts +0 -23
  275. package/lib/Search/ActiveFilterContent.js +0 -47
  276. package/lib/Search/ActiveFilters.d.ts +0 -19
  277. package/lib/Search/ActiveFilters.js +0 -119
  278. package/lib/Search/ContentTypeResult.d.ts +0 -29
  279. package/lib/Search/ContentTypeResult.js +0 -159
  280. package/lib/Search/ContentTypeResultStyles.d.ts +0 -45
  281. package/lib/Search/ContentTypeResultStyles.js +0 -58
  282. package/lib/Search/IsPathToHighlight.d.ts +0 -8
  283. package/lib/Search/IsPathToHighlight.js +0 -19
  284. package/lib/Search/LoadingWrapper.d.ts +0 -12
  285. package/lib/Search/LoadingWrapper.js +0 -38
  286. package/lib/Search/SearchField.d.ts +0 -25
  287. package/lib/Search/SearchField.js +0 -117
  288. package/lib/Search/SearchFieldForm.d.ts +0 -15
  289. package/lib/Search/SearchFieldForm.js +0 -41
  290. package/lib/Search/SearchResult.d.ts +0 -43
  291. package/lib/Search/SearchResult.js +0 -194
  292. package/lib/Search/SearchResultSleeve.d.ts +0 -25
  293. package/lib/Search/SearchResultSleeve.js +0 -237
  294. package/lib/Search/index.d.ts +0 -11
  295. package/lib/Search/index.js +0 -33
  296. package/src/Article/ArticleHeaderWrapper.tsx +0 -38
  297. package/src/CreatedBy/CreatedBy.stories.tsx +0 -36
  298. package/src/CreatedBy/CreatedBy.tsx +0 -63
  299. package/src/CreatedBy/index.ts +0 -11
  300. package/src/Hero/Hero.stories.tsx +0 -35
  301. package/src/Hero/Hero.tsx +0 -129
  302. package/src/Hero/HeroContent.tsx +0 -43
  303. package/src/Hero/index.ts +0 -21
  304. package/src/LanguageSelector/LanguageSelector.stories.tsx +0 -44
  305. package/src/LanguageSelector/LanguageSelector.tsx +0 -101
  306. package/src/LanguageSelector/index.ts +0 -11
  307. package/src/Logo/Logo.stories.tsx +0 -47
  308. package/src/Logo/Logo.tsx +0 -47
  309. package/src/Logo/SvgLogo.tsx +0 -48
  310. package/src/Logo/index.ts +0 -11
  311. package/src/Messages/MessageBanner.stories.tsx +0 -31
  312. package/src/Messages/MessageBanner.tsx +0 -67
  313. package/src/Search/ActiveFilterContent.tsx +0 -64
  314. package/src/Search/ActiveFilters.tsx +0 -145
  315. package/src/Search/ContentTypeResult.tsx +0 -190
  316. package/src/Search/ContentTypeResultStyles.tsx +0 -172
  317. package/src/Search/IsPathToHighlight.ts +0 -12
  318. package/src/Search/LoadingWrapper.tsx +0 -44
  319. package/src/Search/SearchField.tsx +0 -175
  320. package/src/Search/SearchFieldForm.tsx +0 -64
  321. package/src/Search/SearchResult.tsx +0 -368
  322. package/src/Search/SearchResultSleeve.tsx +0 -367
  323. package/src/Search/__tests__/Highlight-test.ts +0 -66
  324. package/src/Search/index.ts +0 -14
@@ -6,8 +6,8 @@
6
6
  *
7
7
  */
8
8
 
9
- import styled from "@emotion/styled";
10
- import { colors, spacing } from "@ndla/core";
9
+ import { Text } from "@ndla/primitives";
10
+ import { styled } from "@ndla/styled-system/jsx";
11
11
  import { FootNote as FootNoteType } from "../types";
12
12
 
13
13
  const citeDetailString = (description: string | undefined) => (description ? `${description}. ` : "");
@@ -16,36 +16,32 @@ type FootNoteProps = {
16
16
  footNote: FootNoteType;
17
17
  };
18
18
 
19
- const Cite = styled.cite`
20
- display: flex;
21
- gap: ${spacing.small};
22
- a {
23
- box-shadow: none;
24
- text-decoration: underline;
25
- text-underline-offset: ${spacing.xxsmall};
26
- &:hover,
27
- &:focus-visible {
28
- text-decoration: none;
29
- }
30
- }
31
- `;
19
+ const StyledCite = styled("cite", {
20
+ base: {
21
+ display: "flex",
22
+ alignItems: "center",
23
+ gap: "xsmall",
24
+ },
25
+ });
32
26
 
33
27
  const FootNote = ({ footNote }: FootNoteProps) => (
34
28
  <li>
35
- <Cite id={`note${footNote.ref}`}>
36
- <a href={`#ref${footNote.ref}`} target="_self">
37
- {footNote.ref}
38
- </a>
39
- {`«${footNote.title}». ${footNote.authors.join(" ")}. ${citeDetailString(footNote.edition)}${citeDetailString(
40
- footNote.publisher,
41
- )}${footNote.year}. `}
42
- {footNote.url ? (
43
- <a href={footNote.url}>
44
- {footNote.url}
45
- {"."}
29
+ <Text id={`note${footNote.ref}`} asChild consumeCss textStyle="body.medium">
30
+ <StyledCite>
31
+ <a href={`#ref${footNote.ref}`} target="_self">
32
+ {footNote.ref}
46
33
  </a>
47
- ) : null}
48
- </Cite>
34
+ {`«${footNote.title}». ${footNote.authors.join(" ")}. ${citeDetailString(footNote.edition)}${citeDetailString(
35
+ footNote.publisher,
36
+ )}${footNote.year}. `}
37
+ {footNote.url ? (
38
+ <a href={footNote.url}>
39
+ {footNote.url}
40
+ {"."}
41
+ </a>
42
+ ) : null}
43
+ </StyledCite>
44
+ </Text>
49
45
  </li>
50
46
  );
51
47
 
@@ -53,14 +49,14 @@ type ArticleFootNotesProps = {
53
49
  footNotes: Array<FootNoteType>;
54
50
  };
55
51
 
56
- const FootnoteList = styled.ol`
57
- margin: 0;
58
- display: flex;
59
- flex-direction: column;
60
- list-style: none;
61
- padding: ${spacing.small};
62
- color: ${colors.text.light};
63
- `;
52
+ const FootnoteList = styled("ol", {
53
+ base: {
54
+ display: "flex",
55
+ flexDirection: "column",
56
+ gap: "medium",
57
+ listStyle: "none",
58
+ },
59
+ });
64
60
 
65
61
  const ArticleFootNotes = ({ footNotes }: ArticleFootNotesProps) => (
66
62
  <FootnoteList>
@@ -6,14 +6,10 @@
6
6
  *
7
7
  */
8
8
 
9
- import Article, { ArticleTitle, ArticleIntroduction, ArticleWrapper } from "./Article";
10
9
  import ArticleByline from "./ArticleByline";
11
10
  import ArticleFootNotes from "./ArticleFootNotes";
12
- import ArticleHeaderWrapper from "./ArticleHeaderWrapper";
13
11
 
14
- export { ArticleByline, ArticleFootNotes, ArticleHeaderWrapper, ArticleTitle, ArticleIntroduction, ArticleWrapper };
15
- export { ArticleParagraph } from "./ArticleParagraph";
16
-
17
- export type { ArticleModifier } from "./Article";
12
+ export { Article, ArticleContent, ArticleWrapper, ArticleHeader, ArticleFooter } from "./Article";
18
13
 
19
- export default Article;
14
+ export { ArticleByline, ArticleFootNotes };
15
+ export { ArticleParagraph } from "./ArticleParagraph";
@@ -6,9 +6,9 @@
6
6
  *
7
7
  */
8
8
 
9
- import { ReactNode, useRef } from "react";
9
+ import { ReactNode } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
- import styled from "@emotion/styled";
11
+ import { styled } from "@ndla/styled-system/jsx";
12
12
  import BreadcrumbItem, { IndexedBreadcrumbItem, SimpleBreadcrumbItem } from "./BreadcrumbItem";
13
13
 
14
14
  interface Props {
@@ -19,26 +19,28 @@ interface Props {
19
19
  renderSeparator?: (item: IndexedBreadcrumbItem, totalCount: number) => ReactNode;
20
20
  }
21
21
 
22
- const BreadcrumbNav = styled.nav``;
23
-
24
- const StyledList = styled.ol`
25
- display: inline-block;
26
- padding-left: 0;
27
- margin-bottom: 0;
28
- margin-top: 0;
29
- list-style: none;
30
- `;
22
+ const StyledList = styled("ol", {
23
+ base: {
24
+ display: "flex",
25
+ flexWrap: "wrap",
26
+ alignItems: "center",
27
+ listStyle: "none",
28
+ gap: "xsmall",
29
+ mobileDown: {
30
+ alignItems: "flex-start",
31
+ justifyContent: "center",
32
+ flexDirection: "column",
33
+ gap: "xxsmall",
34
+ },
35
+ },
36
+ });
31
37
 
32
38
  const Breadcrumb = ({ items, renderItem, renderSeparator, collapseFirst, collapseLast = true }: Props) => {
33
39
  const { t } = useTranslation();
34
- const olRef = useRef<any>();
35
- const containerRef = useRef<HTMLDivElement>(null);
36
- // No idiomatic way of dealing with sets of refs yet
37
- // See: https://github.com/facebook/react/issues/14072#issuecomment-446777406
38
40
 
39
41
  return (
40
- <BreadcrumbNav ref={containerRef} aria-label={t("breadcrumb.breadcrumb")}>
41
- <StyledList ref={olRef}>
42
+ <nav aria-label={t("breadcrumb.breadcrumb")}>
43
+ <StyledList>
42
44
  {items.map((item, index) => (
43
45
  <BreadcrumbItem
44
46
  renderItem={renderItem}
@@ -60,7 +62,7 @@ const Breadcrumb = ({ items, renderItem, renderSeparator, collapseFirst, collaps
60
62
  />
61
63
  ))}
62
64
  </StyledList>
63
- </BreadcrumbNav>
65
+ </nav>
64
66
  );
65
67
  };
66
68
 
@@ -7,10 +7,9 @@
7
7
  */
8
8
 
9
9
  import { useRef, useImperativeHandle, ReactNode, forwardRef } from "react";
10
- import styled from "@emotion/styled";
11
- import { mq, spacing, breakpoints } from "@ndla/core";
12
10
  import { ChevronRight } from "@ndla/icons/common";
13
11
  import { SafeLink } from "@ndla/safelink";
12
+ import { styled } from "@ndla/styled-system/jsx";
14
13
 
15
14
  export interface SimpleBreadcrumbItem {
16
15
  to: string | Partial<Location>;
@@ -26,35 +25,17 @@ export interface BreadcrumbRenderProps {
26
25
  totalCount: number;
27
26
  }
28
27
 
29
- interface AutoCollapseProps {
30
- autoCollapse?: boolean;
31
- }
32
-
33
- const StyledListItem = styled.li<AutoCollapseProps>`
34
- padding: 0;
35
- display: inline-flex;
36
- align-items: center;
37
- :before {
38
- display: none;
39
- }
40
- ${mq.range({ until: breakpoints.tablet })} {
41
- display: block;
42
- }
43
- `;
44
-
45
- const CollapseContainer = styled.div`
46
- display: inline-block;
47
- color: inherit;
48
- `;
49
-
50
- const StyledChevron = styled(ChevronRight)`
51
- margin: ${spacing.xxsmall};
52
- color: inherit;
53
- `;
54
-
55
- const StyledSafeLink = styled(SafeLink)`
56
- color: inherit;
57
- `;
28
+ const StyledListItem = styled("li", {
29
+ base: {
30
+ display: "flex",
31
+ color: "inherit",
32
+ gap: "4xsmall",
33
+ alignItems: "flex-end",
34
+ tabletDown: {
35
+ display: "block",
36
+ },
37
+ },
38
+ });
58
39
 
59
40
  interface Props {
60
41
  item: IndexedBreadcrumbItem;
@@ -64,35 +45,31 @@ interface Props {
64
45
  renderSeparator?: (item: IndexedBreadcrumbItem, totalCount: number) => ReactNode;
65
46
  }
66
47
 
67
- const BreadcrumbItem = forwardRef<any, Props>(
68
- ({ renderItem, renderSeparator, item, totalCount, autoCollapse }, ref) => {
69
- const liRef = useRef<any>();
48
+ const BreadcrumbItem = forwardRef<any, Props>(({ renderItem, renderSeparator, item, totalCount }, ref) => {
49
+ const liRef = useRef<any>();
70
50
 
71
- useImperativeHandle(ref, () => ({
72
- setMaxWidth: (maxWidth: number) => {
73
- liRef.current.children[0].style.maxWidth = maxWidth;
74
- },
75
- }));
51
+ useImperativeHandle(ref, () => ({
52
+ setMaxWidth: (maxWidth: number) => {
53
+ liRef.current.children[0].style.maxWidth = maxWidth;
54
+ },
55
+ }));
76
56
 
77
- const { to, name, index } = item;
78
- const isLast = index === totalCount - 1;
79
- return (
80
- <StyledListItem ref={liRef} autoCollapse={autoCollapse} aria-current={isLast ? "page" : undefined}>
81
- <CollapseContainer>
82
- {renderItem ? (
83
- renderItem(item, totalCount)
84
- ) : isLast ? (
85
- <span>{name}</span>
86
- ) : (
87
- <StyledSafeLink to={to}>
88
- <span>{name}</span>
89
- </StyledSafeLink>
90
- )}
91
- </CollapseContainer>
92
- {renderSeparator ? renderSeparator(item, totalCount) : !isLast && <StyledChevron />}
93
- </StyledListItem>
94
- );
95
- },
96
- );
57
+ const { to, name, index } = item;
58
+ const isLast = index === totalCount - 1;
59
+ return (
60
+ <StyledListItem ref={liRef} aria-current={isLast ? "page" : undefined}>
61
+ {renderItem ? (
62
+ renderItem(item, totalCount)
63
+ ) : isLast ? (
64
+ <span>{name}</span>
65
+ ) : (
66
+ <SafeLink to={to}>
67
+ <span>{name}</span>
68
+ </SafeLink>
69
+ )}
70
+ {renderSeparator ? renderSeparator(item, totalCount) : !isLast && <ChevronRight />}
71
+ </StyledListItem>
72
+ );
73
+ });
97
74
 
98
75
  export default BreadcrumbItem;
@@ -7,7 +7,6 @@
7
7
  */
8
8
 
9
9
  import { Meta, StoryObj } from "@storybook/react";
10
- import { colors } from "@ndla/core";
11
10
  import HomeBreadcrumb from "./HomeBreadcrumb";
12
11
 
13
12
  const items = [
@@ -42,14 +41,3 @@ export default {
42
41
  } as Meta<typeof HomeBreadcrumb>;
43
42
 
44
43
  export const Default: StoryObj<typeof HomeBreadcrumb> = {};
45
-
46
- export const Light: StoryObj<typeof HomeBreadcrumb> = {
47
- args: { light: true },
48
- decorators: [
49
- (Story) => (
50
- <div style={{ backgroundColor: colors.brand.primary }}>
51
- <Story />
52
- </div>
53
- ),
54
- ],
55
- };
@@ -6,69 +6,56 @@
6
6
  *
7
7
  */
8
8
 
9
- import styled from "@emotion/styled";
10
- import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
11
9
  import { ChevronRight, Home } from "@ndla/icons/common";
12
10
  import { SafeLink } from "@ndla/safelink";
11
+ import { styled } from "@ndla/styled-system/jsx";
13
12
  import Breadcrumb from "./Breadcrumb";
14
13
  import { IndexedBreadcrumbItem, SimpleBreadcrumbItem } from "./BreadcrumbItem";
15
14
 
16
- interface ThemeProps {
17
- light: boolean | undefined;
18
- }
15
+ const StyledSafeLink = styled(SafeLink, {
16
+ base: {
17
+ color: "inherit",
18
+ textDecoration: "underline",
19
+ _hover: {
20
+ textDecoration: "none",
21
+ },
22
+ _focusVisible: {
23
+ textDecoration: "none",
24
+ },
25
+ },
26
+ });
19
27
 
20
- const StyledSeparator = styled.div<ThemeProps>`
21
- ${fonts.sizes("14px")};
22
- margin: 0 ${spacing.small};
23
- user-select: none;
24
- color: ${({ light }) => (light ? colors.white : colors.text.primary)};
25
- ${mq.range({ until: breakpoints.tablet })} {
26
- display: none;
27
- }
28
- `;
28
+ const StyledChevronRight = styled(ChevronRight, {
29
+ base: {
30
+ tabletDown: {
31
+ display: "none",
32
+ },
33
+ },
34
+ });
29
35
 
30
- const StyledIconSafeLink = styled(SafeLink)`
31
- box-shadow: none;
32
- border-bottom: none;
33
- `;
34
- const StyledHome = styled(Home)<ThemeProps>`
35
- width: 20px;
36
- height: 20px;
37
- color: ${({ light }) => (light ? colors.white : colors.text.primary)};
38
- `;
39
- const StyledRightChevron = styled(ChevronRight)<ThemeProps>`
40
- color: ${({ light }) => (light ? colors.white : colors.text.primary)};
41
- margin: ${spacing.xxsmall};
42
- `;
43
- const StyledSpan = styled.span<ThemeProps>`
44
- color: ${({ light }) => (light ? colors.white : colors.text.primary)};
45
- `;
46
- const StyledSafeLink = styled(SafeLink)<ThemeProps>`
47
- color: ${({ light }) => (light ? colors.white : colors.text.primary)};
48
- `;
36
+ const IconSafeLink = styled(SafeLink, {
37
+ base: {
38
+ color: "inherit",
39
+ },
40
+ });
49
41
 
50
42
  interface Props {
51
43
  items: SimpleBreadcrumbItem[];
52
- light?: boolean;
53
44
  }
54
45
 
55
- const HomeBreadcrumb = ({ items, light }: Props) => {
46
+ const HomeBreadcrumb = ({ items }: Props) => {
56
47
  const renderItem = (item: IndexedBreadcrumbItem, totalCount: number) => {
57
48
  if (item.index === totalCount - 1) {
58
- return <StyledSpan light={light}>{item.name}</StyledSpan>;
49
+ return <span>{item.name}</span>;
59
50
  }
60
51
  if (item.index === 0 && typeof item.name === "string") {
61
52
  return (
62
- <StyledIconSafeLink aria-label={item.name} to={item.to}>
63
- <StyledHome title={item.name} light={light} />
64
- </StyledIconSafeLink>
53
+ <IconSafeLink aria-label={item.name} to={item.to}>
54
+ <Home title={item.name} />
55
+ </IconSafeLink>
65
56
  );
66
57
  }
67
- return (
68
- <StyledSafeLink light={light} to={item.to}>
69
- {item.name}
70
- </StyledSafeLink>
71
- );
58
+ return <StyledSafeLink to={item.to}>{item.name}</StyledSafeLink>;
72
59
  };
73
60
 
74
61
  const renderSeparator = (item: IndexedBreadcrumbItem, totalCount: number) => {
@@ -76,9 +63,9 @@ const HomeBreadcrumb = ({ items, light }: Props) => {
76
63
  return null;
77
64
  }
78
65
  if (item.index === 0) {
79
- return <StyledSeparator light={light}>|</StyledSeparator>;
66
+ return <StyledChevronRight />;
80
67
  }
81
- return <StyledRightChevron light={light} />;
68
+ return <ChevronRight />;
82
69
  };
83
70
 
84
71
  return <Breadcrumb items={items} renderItem={renderItem} renderSeparator={renderSeparator} />;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2023-present, NDLA.
2
+ * Copyright (c) 2024-present, NDLA.
3
3
  *
4
4
  * This source code is licensed under the GPLv3 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { Meta, StoryFn } from "@storybook/react";
10
- import ContactBlock from "./ContactBlock";
10
+ import { ContactBlock } from "./ContactBlock";
11
11
 
12
12
  export default {
13
13
  title: "Components/Contact block",
@@ -76,8 +76,7 @@ export default {
76
76
  "Sigurd har variert ledererfaring fra utdanningssektoren, både fra videregående skole, nasjonalt senter og fra universitets/høgskolesektoren. Ansvarsområdene dekker bl.a. utdanning/opplæring/studiekvalitet, økonomi, HR, stratgi og IT-utvikling/-drift.",
77
77
  name: "Sigurd Trageton",
78
78
  email: "sigurd@ndla.no",
79
- blobColor: "green",
80
- blob: "pointy",
79
+ backgroundColor: "strong",
81
80
  },
82
81
  } as Meta<typeof ContactBlock>;
83
82