@ndla/ui 54.0.0 → 54.0.1

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 (57) hide show
  1. package/es/Article/ArticleByline.js +15 -7
  2. package/es/Article/ArticleParagraph.js +5 -5
  3. package/es/BlogPost/BlogPost.js +6 -5
  4. package/es/CampaignBlock/CampaignBlock.js +7 -7
  5. package/es/CodeBlock/CodeBlock.js +4 -4
  6. package/es/KeyFigure/KeyFigure.js +5 -5
  7. package/es/MyNdla/Resource/Folder.js +37 -24
  8. package/es/ResourceBox/ResourceBox.js +6 -6
  9. package/es/Search/SearchResultSleeve.js +11 -11
  10. package/es/Table/Table.js +6 -6
  11. package/es/TreeStructure/FolderItem.js +7 -7
  12. package/es/locale/messages-en.js +17 -3
  13. package/es/locale/messages-nb.js +17 -3
  14. package/es/locale/messages-nn.js +18 -4
  15. package/es/locale/messages-se.js +17 -3
  16. package/es/locale/messages-sma.js +17 -3
  17. package/lib/Article/ArticleByline.js +15 -7
  18. package/lib/Article/ArticleParagraph.js +5 -5
  19. package/lib/BlogPost/BlogPost.js +6 -5
  20. package/lib/CampaignBlock/CampaignBlock.js +7 -7
  21. package/lib/CodeBlock/CodeBlock.js +4 -4
  22. package/lib/KeyFigure/KeyFigure.js +5 -5
  23. package/lib/MyNdla/Resource/Folder.d.ts +3 -1
  24. package/lib/MyNdla/Resource/Folder.js +35 -22
  25. package/lib/ResourceBox/ResourceBox.js +6 -6
  26. package/lib/Search/SearchResultSleeve.js +11 -11
  27. package/lib/Table/Table.js +6 -6
  28. package/lib/TreeStructure/FolderItem.js +7 -7
  29. package/lib/locale/messages-en.d.ts +14 -0
  30. package/lib/locale/messages-en.js +17 -3
  31. package/lib/locale/messages-nb.d.ts +14 -0
  32. package/lib/locale/messages-nb.js +17 -3
  33. package/lib/locale/messages-nn.d.ts +15 -1
  34. package/lib/locale/messages-nn.js +18 -4
  35. package/lib/locale/messages-se.d.ts +14 -0
  36. package/lib/locale/messages-se.js +17 -3
  37. package/lib/locale/messages-sma.d.ts +14 -0
  38. package/lib/locale/messages-sma.js +17 -3
  39. package/package.json +10 -10
  40. package/src/Article/ArticleByline.tsx +9 -2
  41. package/src/Article/ArticleParagraph.tsx +3 -0
  42. package/src/BlogPost/BlogPost.tsx +2 -1
  43. package/src/CampaignBlock/CampaignBlock.tsx +1 -1
  44. package/src/CodeBlock/CodeBlock.tsx +1 -1
  45. package/src/KeyFigure/KeyFigure.tsx +1 -1
  46. package/src/MyNdla/Resource/Folder.stories.tsx +5 -0
  47. package/src/MyNdla/Resource/Folder.tsx +41 -8
  48. package/src/ResourceBox/ResourceBox.tsx +2 -2
  49. package/src/Search/SearchResultSleeve.tsx +3 -3
  50. package/src/Table/Table.stories.tsx +39 -0
  51. package/src/Table/Table.tsx +11 -0
  52. package/src/TreeStructure/FolderItem.tsx +1 -1
  53. package/src/locale/messages-en.ts +14 -0
  54. package/src/locale/messages-nb.ts +14 -0
  55. package/src/locale/messages-nn.ts +15 -1
  56. package/src/locale/messages-se.ts +14 -0
  57. package/src/locale/messages-sma.ts +14 -0
@@ -107,6 +107,10 @@ const messages = {
107
107
  movedResourcePage: {
108
108
  title: "Siden har flyttet, men du kan finne den her:"
109
109
  },
110
+ unpublishedResourcePage: {
111
+ title: "Ressursen er avpublisert",
112
+ errorDescription: "Beklager, ressursen du prøvde komme til er avpublisert."
113
+ },
110
114
  lti: {
111
115
  embed: "Sett inn",
112
116
  notSupported: "Det fungerte ikke å sette inn innholdet automatisk. Kopier kildekoden under for å sette inn på din side."
@@ -936,11 +940,15 @@ const messages = {
936
940
  sharing: {
937
941
  share: "Del mappe",
938
942
  shared: "Delt",
943
+ sharedBy: "Delt av ",
944
+ sharedByAnonymous: "anonym lærer",
939
945
  sharedFolder: "Delt mappe",
940
946
  unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
941
947
  copyLink: "Kopier lenke til mappa",
948
+ removeLink: "Fjern lenke til mappe",
942
949
  link: "Lenken er kopiert",
943
950
  savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
951
+ unSavedLink: "Lenke til {{ name }} er fjernet fra Mine mapper.",
944
952
  header: {
945
953
  shared: "Denne mappa er delt"
946
954
  },
@@ -961,7 +969,8 @@ const messages = {
961
969
  goTo: "Gå til delt mappe",
962
970
  unShare: "Avslutt deling",
963
971
  shareLink: "Kopier lenke",
964
- saveLink: "Lagre lenken"
972
+ saveLink: "Lagre lenken",
973
+ unSaveLink: "Fjern lenken"
965
974
  },
966
975
  save: {
967
976
  warning: "Dette lager en lenke til mappen i Mine mapper. Du kan enkelt finne den igjen ved å gå til Mine mapper i menyen i Min NDLA.",
@@ -1050,7 +1059,9 @@ const messages = {
1050
1059
  delete: "Slett innlegget"
1051
1060
  },
1052
1061
  fetchMore: "Hent flere svar",
1053
- deleted: "Dette innlegget er slettet av forfatteren."
1062
+ deleted: "Dette innlegget er slettet av forfatteren.",
1063
+ upvote: "Stem opp",
1064
+ removeUpvote: "Fjern stemme"
1054
1065
  },
1055
1066
  flag: {
1056
1067
  title: "Rapporter innlegg / kommentar",
@@ -1337,7 +1348,10 @@ const messages = {
1337
1348
  loadMore: "Last mer"
1338
1349
  },
1339
1350
  siteNav: {
1340
- search: "Søk"
1351
+ search: "Søk",
1352
+ navigate: "Naviger med piltastene",
1353
+ select: "Velg",
1354
+ close: "Lukk søk"
1341
1355
  },
1342
1356
  programmes: {
1343
1357
  header: "Hva vil du lære om i dag?",
@@ -90,6 +90,10 @@ declare const messages: {
90
90
  movedResourcePage: {
91
91
  title: string;
92
92
  };
93
+ unpublishedResourcePage: {
94
+ title: string;
95
+ errorDescription: string;
96
+ };
93
97
  lti: {
94
98
  embed: string;
95
99
  notSupported: string;
@@ -919,11 +923,15 @@ declare const messages: {
919
923
  sharing: {
920
924
  share: string;
921
925
  shared: string;
926
+ sharedBy: string;
927
+ sharedByAnonymous: string;
922
928
  sharedFolder: string;
923
929
  unShare: string;
924
930
  link: string;
925
- savedLink: string;
926
931
  copyLink: string;
932
+ removeLink: string;
933
+ savedLink: string;
934
+ unSavedLink: string;
927
935
  header: {
928
936
  shared: string;
929
937
  };
@@ -945,6 +953,7 @@ declare const messages: {
945
953
  unShare: string;
946
954
  shareLink: string;
947
955
  saveLink: string;
956
+ unSaveLink: string;
948
957
  };
949
958
  save: {
950
959
  warning: string;
@@ -1034,6 +1043,8 @@ declare const messages: {
1034
1043
  };
1035
1044
  fetchMore: string;
1036
1045
  deleted: string;
1046
+ upvote: string;
1047
+ removeUpvote: string;
1037
1048
  };
1038
1049
  flag: {
1039
1050
  title: string;
@@ -1321,6 +1332,9 @@ declare const messages: {
1321
1332
  };
1322
1333
  siteNav: {
1323
1334
  search: string;
1335
+ navigate: string;
1336
+ select: string;
1337
+ close: string;
1324
1338
  };
1325
1339
  programmes: {
1326
1340
  header: string;
@@ -107,6 +107,10 @@ const messages = {
107
107
  movedResourcePage: {
108
108
  title: "Sida har flytta, men du kan finne den her:"
109
109
  },
110
+ unpublishedResourcePage: {
111
+ title: "Ressursen er avpublisert",
112
+ errorDescription: "Orsak, ressursen du prøvde komme til er avpublisert."
113
+ },
110
114
  lti: {
111
115
  embed: "Sett inn",
112
116
  notSupported: "Det fungerte ikkje å setje inn innhaldet automatisk. Kopier kjeldekoden under for å setje han inn på sida di."
@@ -936,11 +940,15 @@ const messages = {
936
940
  sharing: {
937
941
  share: "Del mappe",
938
942
  shared: "Delt",
943
+ sharedBy: "Delt av ",
944
+ sharedByAnonymous: "anonym lærar",
939
945
  sharedFolder: "Delt mappe",
940
946
  unShare: "Delinga er avslutta. Mappa er ikkje lenger delt",
941
947
  link: "Lenka er kopiert",
942
- savedLink: "Lenka til {{ name }} er lagt til i Mine mapper.",
943
948
  copyLink: "Kopier lenke til mappa",
949
+ removeLink: "Fjern lenke til mappe",
950
+ savedLink: "Lenka til {{ name }} er lagt til i Mine mapper.",
951
+ unSavedLink: "Lenka til {{ name }} er fjernet fra Mine mapper.",
944
952
  header: {
945
953
  shared: "Denne mappa er delt"
946
954
  },
@@ -961,7 +969,8 @@ const messages = {
961
969
  goTo: "Gå til delt mappe",
962
970
  unShare: "Avslutt deling",
963
971
  shareLink: "Kopier lenke",
964
- saveLink: "Lagre lenka"
972
+ saveLink: "Lagre lenka",
973
+ unSaveLink: "Fjern lenken"
965
974
  },
966
975
  save: {
967
976
  warning: "Dette lagar ei lenke til mappa i Mine mapper. Du kan enkelt finne ho att ved å gå til Mine mapper i menyen i Min NDLA.",
@@ -1050,7 +1059,9 @@ const messages = {
1050
1059
  delete: "Slett innlegget"
1051
1060
  },
1052
1061
  fetchMore: "Hent fleire svar",
1053
- deleted: "Dette innlegget er sletta av forfatteren."
1062
+ deleted: "Dette innlegget er sletta av forfatteren.",
1063
+ upvote: "Stem opp",
1064
+ removeUpvote: "Fjern stemme"
1054
1065
  },
1055
1066
  flag: {
1056
1067
  title: "Rapporter innlegg / kommentar",
@@ -1337,7 +1348,10 @@ const messages = {
1337
1348
  loadMore: "Last meir"
1338
1349
  },
1339
1350
  siteNav: {
1340
- search: "Søk"
1351
+ search: "Søk",
1352
+ navigate: "Naviger med piltastane",
1353
+ select: "Velg",
1354
+ close: "Lukk søk"
1341
1355
  },
1342
1356
  programmes: {
1343
1357
  header: "Kva vil du lære om i dag?",
@@ -90,6 +90,10 @@ declare const messages: {
90
90
  movedResourcePage: {
91
91
  title: string;
92
92
  };
93
+ unpublishedResourcePage: {
94
+ title: string;
95
+ errorDescription: string;
96
+ };
93
97
  lti: {
94
98
  embed: string;
95
99
  notSupported: string;
@@ -919,11 +923,15 @@ declare const messages: {
919
923
  sharing: {
920
924
  share: string;
921
925
  shared: string;
926
+ sharedBy: string;
927
+ sharedByAnonymous: string;
922
928
  sharedFolder: string;
923
929
  unShare: string;
924
930
  copyLink: string;
931
+ removeLink: string;
925
932
  link: string;
926
933
  savedLink: string;
934
+ unSavedLink: string;
927
935
  header: {
928
936
  shared: string;
929
937
  };
@@ -945,6 +953,7 @@ declare const messages: {
945
953
  unShare: string;
946
954
  shareLink: string;
947
955
  saveLink: string;
956
+ unSaveLink: string;
948
957
  };
949
958
  save: {
950
959
  warning: string;
@@ -1034,6 +1043,8 @@ declare const messages: {
1034
1043
  };
1035
1044
  fetchMore: string;
1036
1045
  deleted: string;
1046
+ upvote: string;
1047
+ removeUpvote: string;
1037
1048
  };
1038
1049
  flag: {
1039
1050
  title: string;
@@ -1321,6 +1332,9 @@ declare const messages: {
1321
1332
  };
1322
1333
  siteNav: {
1323
1334
  search: string;
1335
+ navigate: string;
1336
+ select: string;
1337
+ close: string;
1324
1338
  };
1325
1339
  programmes: {
1326
1340
  header: string;
@@ -107,6 +107,10 @@ const messages = {
107
107
  movedResourcePage: {
108
108
  title: "Siidu lea sirdojuvvon, muhto gávnnat dan dás:"
109
109
  },
110
+ unpublishedResourcePage: {
111
+ title: "Ressursen er avpublisert",
112
+ errorDescription: "Beklager, ressursen du prøvde komme til er avpublisert."
113
+ },
110
114
  lti: {
111
115
  embed: "Deavdde",
112
116
  notSupported: "Ii lean vejolaš bidjat sisdoalu sisa automáhtalaččat. Kopiere gáldokoda vulobealde ja bija iežat siidui."
@@ -936,11 +940,15 @@ const messages = {
936
940
  sharing: {
937
941
  share: "Del mappe",
938
942
  shared: "Delt",
943
+ sharedBy: "Delt av ",
944
+ sharedByAnonymous: "anonym lærer",
939
945
  sharedFolder: "Delt mappe",
940
946
  unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
941
947
  copyLink: "Kopier lenke til mappa",
948
+ removeLink: "Fjern lenke til mappe",
942
949
  link: "Lenken er kopiert",
943
950
  savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
951
+ unSavedLink: "Lenke til {{ name }} er fjernet fra Mine mapper.",
944
952
  header: {
945
953
  shared: "Denne mappa er delt"
946
954
  },
@@ -961,7 +969,8 @@ const messages = {
961
969
  goTo: "Gå til delt mappe",
962
970
  unShare: "Avslutt deling",
963
971
  shareLink: "Kopier lenke",
964
- saveLink: "Lagre lenken"
972
+ saveLink: "Lagre lenken",
973
+ unSaveLink: "Fjern lenken"
965
974
  },
966
975
  save: {
967
976
  warning: "Dette lager en lenke til mappen i Mine mapper. Du kan enkelt finne den igjen ved å gå til Mine mapper i menyen i Min NDLA.",
@@ -1050,7 +1059,9 @@ const messages = {
1050
1059
  delete: "Slett innlegget"
1051
1060
  },
1052
1061
  fetchMore: "Hent flere svar",
1053
- deleted: "Dette innlegget er slettet av forfatteren."
1062
+ deleted: "Dette innlegget er slettet av forfatteren.",
1063
+ upvote: "Stem opp",
1064
+ removeUpvote: "Fjern stemme"
1054
1065
  },
1055
1066
  flag: {
1056
1067
  title: "Rapporter innlegg / kommentar",
@@ -1337,7 +1348,10 @@ const messages = {
1337
1348
  loadMore: "Viečča eanet"
1338
1349
  },
1339
1350
  siteNav: {
1340
- search: "Oza"
1351
+ search: "Oza",
1352
+ navigate: "Naviger med piltastene",
1353
+ select: "Velg",
1354
+ close: "Lukk søk"
1341
1355
  },
1342
1356
  programmes: {
1343
1357
  header: "Maid háliidat oahppat odne?",
@@ -90,6 +90,10 @@ declare const messages: {
90
90
  movedResourcePage: {
91
91
  title: string;
92
92
  };
93
+ unpublishedResourcePage: {
94
+ title: string;
95
+ errorDescription: string;
96
+ };
93
97
  lti: {
94
98
  embed: string;
95
99
  notSupported: string;
@@ -919,11 +923,15 @@ declare const messages: {
919
923
  sharing: {
920
924
  share: string;
921
925
  shared: string;
926
+ sharedBy: string;
927
+ sharedByAnonymous: string;
922
928
  sharedFolder: string;
923
929
  unShare: string;
924
930
  copyLink: string;
931
+ removeLink: string;
925
932
  link: string;
926
933
  savedLink: string;
934
+ unSavedLink: string;
927
935
  header: {
928
936
  shared: string;
929
937
  };
@@ -945,6 +953,7 @@ declare const messages: {
945
953
  unShare: string;
946
954
  shareLink: string;
947
955
  saveLink: string;
956
+ unSaveLink: string;
948
957
  };
949
958
  save: {
950
959
  warning: string;
@@ -1034,6 +1043,8 @@ declare const messages: {
1034
1043
  };
1035
1044
  fetchMore: string;
1036
1045
  deleted: string;
1046
+ upvote: string;
1047
+ removeUpvote: string;
1037
1048
  };
1038
1049
  flag: {
1039
1050
  title: string;
@@ -1321,6 +1332,9 @@ declare const messages: {
1321
1332
  };
1322
1333
  siteNav: {
1323
1334
  search: string;
1335
+ navigate: string;
1336
+ select: string;
1337
+ close: string;
1324
1338
  };
1325
1339
  programmes: {
1326
1340
  header: string;
@@ -107,6 +107,10 @@ const messages = {
107
107
  movedResourcePage: {
108
108
  title: "Sæjroe ij leah daesnie, men maahtah dam daesnie gaavnedh:"
109
109
  },
110
+ unpublishedResourcePage: {
111
+ title: "Ressursen er avpublisert",
112
+ errorDescription: "Beklager, ressursen du prøvde komme til er avpublisert."
113
+ },
110
114
  lti: {
111
115
  embed: "Lissehth",
112
116
  notSupported: "Idtji gåaredh sisvegem lissiehtidh. Vaeltieh kopijem gaaltijekodeste vuelielistie juktie dam dov sæjrose lissiehtidh."
@@ -936,11 +940,15 @@ const messages = {
936
940
  sharing: {
937
941
  share: "Del mappe",
938
942
  shared: "Delt",
943
+ sharedBy: "Delt av ",
944
+ sharedByAnonymous: "anonym lærer",
939
945
  sharedFolder: "Delt mappe",
940
946
  unShare: "Delingen er avsluttet. Mappen er ikke lenger delt.",
941
947
  copyLink: "Kopier lenke til mappa",
948
+ removeLink: "Fjern lenke til mappe",
942
949
  link: "Lenken er kopiert",
943
950
  savedLink: "Lenke til {{ name }} er lagt til i Mine mapper.",
951
+ unSavedLink: "Lenke til {{ name }} er fjernet fra Mine mapper.",
944
952
  header: {
945
953
  shared: "Denne mappa er delt"
946
954
  },
@@ -961,7 +969,8 @@ const messages = {
961
969
  goTo: "Gå til delt mappe",
962
970
  unShare: "Avslutt deling",
963
971
  shareLink: "Kopier lenke",
964
- saveLink: "Lagre lenken"
972
+ saveLink: "Lagre lenken",
973
+ unSaveLink: "Fjern lenken"
965
974
  },
966
975
  save: {
967
976
  warning: "Dette lager en lenke til mappen i Mine mapper. Du kan enkelt finne den igjen ved å gå til Mine mapper i menyen i Min NDLA.",
@@ -1050,7 +1059,9 @@ const messages = {
1050
1059
  delete: "Slett innlegget"
1051
1060
  },
1052
1061
  fetchMore: "Hent flere svar",
1053
- deleted: "Dette innlegget er slettet av forfatteren."
1062
+ deleted: "Dette innlegget er slettet av forfatteren.",
1063
+ upvote: "Stem opp",
1064
+ removeUpvote: "Fjern stemme"
1054
1065
  },
1055
1066
  flag: {
1056
1067
  title: "Rapporter innlegg / kommentar",
@@ -1337,7 +1348,10 @@ const messages = {
1337
1348
  loadMore: "Last mer"
1338
1349
  },
1339
1350
  siteNav: {
1340
- search: "Ohtsh"
1351
+ search: "Ohtsh",
1352
+ navigate: "Naviger med piltastene",
1353
+ select: "Velg",
1354
+ close: "Lukk søk"
1341
1355
  },
1342
1356
  programmes: {
1343
1357
  header: "Maam sïjhth daan biejjien lïeredh ?",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "54.0.0",
3
+ "version": "54.0.1",
4
4
  "description": "UI component library for NDLA.",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -31,19 +31,19 @@
31
31
  "types"
32
32
  ],
33
33
  "dependencies": {
34
- "@ndla/accordion": "^4.0.2",
35
- "@ndla/button": "^13.0.2",
34
+ "@ndla/accordion": "^4.0.3",
35
+ "@ndla/button": "^13.0.3",
36
36
  "@ndla/core": "^5.0.1",
37
37
  "@ndla/dropdown-menu": "^1.0.38",
38
- "@ndla/forms": "^8.0.2",
38
+ "@ndla/forms": "^8.0.3",
39
39
  "@ndla/hooks": "^2.1.7",
40
- "@ndla/icons": "^6.1.5",
40
+ "@ndla/icons": "^6.1.6",
41
41
  "@ndla/licenses": "^7.2.6",
42
- "@ndla/modal": "^6.0.1",
43
- "@ndla/notion": "^7.0.1",
44
- "@ndla/safelink": "^5.1.5",
42
+ "@ndla/modal": "^6.0.2",
43
+ "@ndla/notion": "^7.0.2",
44
+ "@ndla/safelink": "^5.1.6",
45
45
  "@ndla/tooltip": "^8.0.1",
46
- "@ndla/typography": "^0.4.21",
46
+ "@ndla/typography": "^0.4.22",
47
47
  "@ndla/util": "^4.0.4",
48
48
  "@radix-ui/react-popover": "^1.0.7",
49
49
  "@radix-ui/react-slider": "^1.1.2",
@@ -77,5 +77,5 @@
77
77
  "publishConfig": {
78
78
  "access": "public"
79
79
  },
80
- "gitHead": "c778ba48c327f14eaae3e2da21ed24b183719167"
80
+ "gitHead": "06462ea8a1e84faedef361152994b7d48d4cd6e3"
81
81
  }
@@ -9,6 +9,7 @@
9
9
  import { TFunction } from "i18next";
10
10
  import { ReactNode, useCallback, useEffect, useState } from "react";
11
11
  import { useTranslation } from "react-i18next";
12
+ import { useLocation } from "react-router-dom";
12
13
  import styled from "@emotion/styled";
13
14
  import { AccordionRoot, AccordionHeader, AccordionContent, AccordionItem } from "@ndla/accordion";
14
15
  import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
@@ -103,7 +104,7 @@ const LicenseWrapper = styled.div`
103
104
 
104
105
  const StyledAccordionHeader = styled(AccordionHeader)`
105
106
  background-color: ${colors.brand.lightest};
106
- font-size: ${fonts.sizes("16px", "29px")};
107
+ ${fonts.sizes("16px", "29px")};
107
108
  font-weight: ${fonts.weight.semibold};
108
109
 
109
110
  &[data-background-color="white"][data-state="closed"] {
@@ -133,7 +134,9 @@ const ArticleByline = ({
133
134
  bylineType = "article",
134
135
  }: Props) => {
135
136
  const { t } = useTranslation();
137
+ const { pathname } = useLocation();
136
138
  const [openAccordions, setOpenAccordions] = useState<string[]>([]);
139
+ const accordionItemValue = "rulesForUse";
137
140
 
138
141
  const onHashChange = useCallback(
139
142
  (e: HashChangeEvent) => {
@@ -148,6 +151,10 @@ const ArticleByline = ({
148
151
  [openAccordions],
149
152
  );
150
153
 
154
+ useEffect(() => {
155
+ setOpenAccordions((prev) => prev.filter((state) => state !== accordionItemValue));
156
+ }, [pathname]);
157
+
151
158
  useEffect(() => {
152
159
  window.addEventListener("hashchange", onHashChange);
153
160
  return () => window.removeEventListener("hashchange", onHashChange);
@@ -181,7 +188,7 @@ const ArticleByline = ({
181
188
  )}
182
189
  <AccordionRoot type="multiple" onValueChange={setOpenAccordions} value={openAccordions}>
183
190
  {licenseBox && (
184
- <AccordionItem value="rulesForUse">
191
+ <AccordionItem value={accordionItemValue}>
185
192
  <StyledAccordionHeader headingLevel="h2" data-background-color={accordionHeaderVariant}>
186
193
  {t("article.useContent")}
187
194
  </StyledAccordionHeader>
@@ -17,6 +17,9 @@ const StyledParagraph = styled.p`
17
17
  &[data-align="center"] {
18
18
  text-align: center;
19
19
  }
20
+ &:has(span[dir="rtl"]) {
21
+ direction: rtl;
22
+ }
20
23
  `;
21
24
 
22
25
  export const ArticleParagraph = (props: Props) => <StyledParagraph {...props} />;
@@ -84,12 +84,13 @@ const StyledImg = styled.img`
84
84
  const BlogPost = ({ title, author, url, metaImage, headingLevel: Heading = "h3", size = "normal", path }: Props) => {
85
85
  const { t } = useTranslation();
86
86
  const href = getPossiblyRelativeUrl(url, path);
87
+ const imageWidth = size === "large" ? 532 : 350;
87
88
  return (
88
89
  <Container data-size={size} to={href}>
89
90
  <Heading className="blog-title" css={headingCss}>
90
91
  {parse(title)}
91
92
  </Heading>
92
- <StyledImg src={metaImage.url} alt={metaImage.alt} />
93
+ <StyledImg src={`${metaImage.url}?width=${imageWidth}`} alt={metaImage.alt} />
93
94
  {!!author && <AuthorContainer aria-label={t("article.writtenBy", { authors: author })}>{author}</AuthorContainer>}
94
95
  </Container>
95
96
  );
@@ -91,7 +91,7 @@ const CampaignBlock = ({
91
91
  }: Props) => {
92
92
  return (
93
93
  <Container className={className} data-type="campaign-block" data-image-side={imageSide}>
94
- {image && <StyledImg src={image.src} height={200} width={240} alt={image.alt} />}
94
+ {image && <StyledImg src={`${image.src}?width=240`} height={200} width={240} alt={image.alt} />}
95
95
  <TextWrapper>
96
96
  <Heading css={headingStyle}>{parse(title)}</Heading>
97
97
  <StyledDescription>{parse(description)}</StyledDescription>
@@ -70,7 +70,7 @@ const StyledPre = styled.pre`
70
70
  display: block;
71
71
  ${fonts.sizes("14px", "20px")};
72
72
  font-family:
73
- Source Code Pro,
73
+ Source Code ProVariable,
74
74
  Monaco;
75
75
  margin: 0;
76
76
  padding: 0;
@@ -65,7 +65,7 @@ interface Props {
65
65
  const KeyFigure = ({ image, title, subtitle }: Props) => {
66
66
  return (
67
67
  <ContentWrapper>
68
- <StyledImage src={image?.src} width={150} height={150} alt={image?.alt} />
68
+ <StyledImage src={`${image?.src}?width=150`} width={150} height={150} alt={image?.alt} />
69
69
  <TitleWrapper>{parse(title)}</TitleWrapper>
70
70
  <SubTitleWrapper>{parse(subtitle)}</SubTitleWrapper>
71
71
  </ContentWrapper>
@@ -57,6 +57,7 @@ export default {
57
57
  </DropdownMenu>
58
58
  ),
59
59
  isShared: true,
60
+ isOwner: true,
60
61
  },
61
62
  } as Meta<typeof Folder>;
62
63
 
@@ -66,6 +67,10 @@ export const WithoutMenu: StoryObj<typeof Folder> = {
66
67
  args: { menu: undefined },
67
68
  };
68
69
 
70
+ export const SharedByOthers: StoryObj<typeof Folder> = {
71
+ args: { author: "Lise Lærer", isOwner: false },
72
+ };
73
+
69
74
  const BlockWrapper = styled.div`
70
75
  display: flex;
71
76
  gap: ${spacing.small};
@@ -10,7 +10,7 @@ import { ReactNode } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
11
  import styled from "@emotion/styled";
12
12
  import { fonts, spacing, colors, mq, breakpoints, stackOrder } from "@ndla/core";
13
- import { FileDocumentOutline, Share } from "@ndla/icons/common";
13
+ import { FileDocumentOutline, Share, Link } from "@ndla/icons/common";
14
14
  import { FolderOutlined, FolderSharedOutlined } from "@ndla/icons/contentType";
15
15
  import { ResourceTitleLink } from "../../Resource/resourceComponents";
16
16
 
@@ -147,6 +147,7 @@ const Count = ({ type, count, layoutType }: IconCountProps) => {
147
147
  interface Props {
148
148
  id: string;
149
149
  title: string;
150
+ author?: string;
150
151
  subFolders?: number;
151
152
  subResources?: number;
152
153
  description?: string;
@@ -154,11 +155,33 @@ interface Props {
154
155
  type?: LayoutType;
155
156
  menu?: ReactNode;
156
157
  isShared?: boolean;
158
+ isOwner?: boolean;
157
159
  }
158
160
 
159
- const Folder = ({ id, link, title, subFolders, subResources, type = "list", menu, isShared }: Props) => {
161
+ const getIcon = (isOwner: boolean, isShared?: boolean) => {
162
+ if (!isOwner) {
163
+ return Link;
164
+ } else if (isShared) {
165
+ return FolderSharedOutlined;
166
+ } else {
167
+ return FolderOutlined;
168
+ }
169
+ };
170
+
171
+ const Folder = ({
172
+ id,
173
+ link,
174
+ title,
175
+ author,
176
+ subFolders,
177
+ subResources,
178
+ type = "list",
179
+ menu,
180
+ isShared,
181
+ isOwner = true,
182
+ }: Props) => {
160
183
  const { t } = useTranslation();
161
- const Icon = isShared ? FolderSharedOutlined : FolderOutlined;
184
+ const Icon = getIcon(isOwner, isShared);
162
185
 
163
186
  return (
164
187
  <FolderWrapper data-type={type} id={id}>
@@ -177,14 +200,24 @@ const Folder = ({ id, link, title, subFolders, subResources, type = "list", menu
177
200
  <MenuWrapper>
178
201
  <CountContainer data-type={type}>
179
202
  {isShared && (
180
- // Information regarding the shared status of a folder is read previously, ignore this
181
- <IconTextWrapper aria-hidden>
203
+ <IconTextWrapper>
182
204
  <Share />
183
- <span>{t("myNdla.folder.sharing.shared")}</span>
205
+ {!isOwner ? (
206
+ <span>
207
+ {t("myNdla.folder.sharing.sharedBy")}
208
+ {author ? `${author}` : t("myNdla.folder.sharing.sharedByAnonymous")}
209
+ </span>
210
+ ) : (
211
+ <span aria-hidden>{t("myNdla.folder.sharing.shared")}</span>
212
+ )}
184
213
  </IconTextWrapper>
185
214
  )}
186
- <Count layoutType={type} type={"folder"} count={subFolders} />
187
- <Count layoutType={type} type={"resource"} count={subResources} />
215
+ {isOwner && (
216
+ <>
217
+ <Count layoutType={type} type={"folder"} count={subFolders} />
218
+ <Count layoutType={type} type={"resource"} count={subResources} />
219
+ </>
220
+ )}
188
221
  </CountContainer>
189
222
  {menu}
190
223
  </MenuWrapper>
@@ -32,12 +32,12 @@ const ResourceBoxContainer = styled.div`
32
32
 
33
33
  const Title = styled.h3`
34
34
  font-weight: ${fonts.weight.bold};
35
- font-size: ${fonts.sizes(18)};
35
+ ${fonts.sizes(18)};
36
36
  margin-top: 0;
37
37
  `;
38
38
 
39
39
  const Caption = styled.p`
40
- font-size: ${fonts.sizes(14)};
40
+ ${fonts.sizes(14)};
41
41
  `;
42
42
 
43
43
  const ContentWrapper = styled.div`