@ndla/ui 46.1.0 → 47.1.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 (84) hide show
  1. package/es/Article/Article.js +7 -20
  2. package/es/Embed/AudioEmbed.js +6 -14
  3. package/es/Embed/BrightcoveEmbed.js +13 -5
  4. package/es/Embed/ConceptEmbed.js +16 -14
  5. package/es/Embed/ImageEmbed.js +11 -4
  6. package/es/Embed/conceptComponents.js +11 -12
  7. package/es/Footer/FooterLinks.js +6 -6
  8. package/es/FrontpageArticle/FrontpageArticle.js +8 -12
  9. package/es/LicenseByline/EmbedByline.js +7 -15
  10. package/es/Messages/MessageBanner.js +4 -13
  11. package/es/Messages/MessageBox.js +10 -20
  12. package/es/Navigation/NavigationTopicAbout.js +15 -17
  13. package/es/Notion/Notion.js +8 -7
  14. package/es/SearchTypeResult/SearchFieldHeader.js +4 -4
  15. package/es/ToolboxPage/ToolboxInfo.js +4 -13
  16. package/es/Topic/Topic.js +31 -37
  17. package/es/all.css +1 -1
  18. package/es/locale/messages-en.js +12 -0
  19. package/es/locale/messages-nb.js +12 -0
  20. package/es/locale/messages-nn.js +12 -0
  21. package/es/locale/messages-se.js +12 -0
  22. package/es/locale/messages-sma.js +12 -0
  23. package/lib/Article/Article.d.ts +2 -4
  24. package/lib/Article/Article.js +6 -19
  25. package/lib/Embed/AudioEmbed.js +6 -15
  26. package/lib/Embed/BrightcoveEmbed.js +12 -4
  27. package/lib/Embed/ConceptEmbed.js +15 -13
  28. package/lib/Embed/ImageEmbed.js +10 -3
  29. package/lib/Embed/conceptComponents.d.ts +1 -1
  30. package/lib/Embed/conceptComponents.js +11 -12
  31. package/lib/Footer/FooterLinks.js +6 -6
  32. package/lib/FrontpageArticle/FrontpageArticle.js +6 -10
  33. package/lib/LicenseByline/EmbedByline.d.ts +2 -2
  34. package/lib/LicenseByline/EmbedByline.js +8 -16
  35. package/lib/Messages/MessageBanner.d.ts +2 -1
  36. package/lib/Messages/MessageBanner.js +5 -13
  37. package/lib/Messages/MessageBox.d.ts +2 -1
  38. package/lib/Messages/MessageBox.js +11 -19
  39. package/lib/Navigation/NavigationTopicAbout.d.ts +2 -3
  40. package/lib/Navigation/NavigationTopicAbout.js +15 -17
  41. package/lib/Notion/Notion.js +7 -6
  42. package/lib/SearchTypeResult/SearchFieldHeader.js +4 -4
  43. package/lib/TagSelector/ariaMessages.d.ts +1 -1
  44. package/lib/ToolboxPage/ToolboxInfo.js +3 -13
  45. package/lib/Topic/Topic.d.ts +2 -3
  46. package/lib/Topic/Topic.js +30 -36
  47. package/lib/all.css +1 -1
  48. package/lib/locale/messages-en.d.ts +12 -0
  49. package/lib/locale/messages-en.js +12 -0
  50. package/lib/locale/messages-nb.d.ts +12 -0
  51. package/lib/locale/messages-nb.js +12 -0
  52. package/lib/locale/messages-nn.d.ts +12 -0
  53. package/lib/locale/messages-nn.js +12 -0
  54. package/lib/locale/messages-se.d.ts +12 -0
  55. package/lib/locale/messages-se.js +12 -0
  56. package/lib/locale/messages-sma.d.ts +12 -0
  57. package/lib/locale/messages-sma.js +12 -0
  58. package/lib/types.d.ts +1 -1
  59. package/package.json +25 -26
  60. package/src/Article/Article.tsx +5 -24
  61. package/src/Article/component.article.scss +4 -4
  62. package/src/Embed/AudioEmbed.tsx +5 -11
  63. package/src/Embed/BrightcoveEmbed.tsx +10 -7
  64. package/src/Embed/ConceptEmbed.stories.tsx +1 -1
  65. package/src/Embed/ConceptEmbed.tsx +9 -4
  66. package/src/Embed/ImageEmbed.tsx +12 -2
  67. package/src/Embed/conceptComponents.tsx +2 -3
  68. package/src/Footer/FooterLinks.tsx +1 -1
  69. package/src/FrontpageArticle/FrontpageArticle.tsx +6 -16
  70. package/src/LicenseByline/EmbedByline.tsx +4 -11
  71. package/src/Messages/MessageBanner.tsx +3 -8
  72. package/src/Messages/MessageBox.tsx +3 -8
  73. package/src/Navigation/NavigationTopicAbout.tsx +2 -5
  74. package/src/Notion/Notion.tsx +2 -2
  75. package/src/SearchTypeResult/SearchFieldHeader.tsx +4 -4
  76. package/src/TagSelector/ariaMessages.ts +1 -1
  77. package/src/ToolboxPage/ToolboxInfo.tsx +3 -19
  78. package/src/Topic/Topic.tsx +6 -15
  79. package/src/locale/messages-en.ts +13 -0
  80. package/src/locale/messages-nb.ts +13 -0
  81. package/src/locale/messages-nn.ts +13 -0
  82. package/src/locale/messages-se.ts +13 -0
  83. package/src/locale/messages-sma.ts +13 -0
  84. package/src/types.ts +1 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  */
8
8
 
9
- import { ReactNode, useMemo } from 'react';
9
+ import { ReactNode } from 'react';
10
10
  import { useTranslation } from 'react-i18next';
11
11
  import styled from '@emotion/styled';
12
12
  import { css } from '@emotion/react';
@@ -17,14 +17,13 @@ import { ICopyright as AudioCopyright } from '@ndla/types-backend/audio-api';
17
17
  import { IDraftCopyright as ConceptCopyright } from '@ndla/types-backend/concept-api';
18
18
  import { BrightcoveCopyright } from '@ndla/types-embed';
19
19
  import { WarningOutline } from '@ndla/icons/common';
20
- import { parseMarkdown } from '@ndla/util';
21
20
  import LicenseLink from './LicenseLink';
22
21
  import LicenseDescription from './LicenseDescription';
23
22
 
24
23
  interface BaseProps {
25
24
  topRounded?: boolean;
26
25
  bottomRounded?: boolean;
27
- description?: string;
26
+ description?: ReactNode;
28
27
  children?: ReactNode;
29
28
  visibleAlt?: string;
30
29
  error?: true | false;
@@ -132,7 +131,7 @@ const EmbedByline = ({
132
131
  type,
133
132
  topRounded,
134
133
  bottomRounded,
135
- description: descriptionProp,
134
+ description,
136
135
  children,
137
136
  visibleAlt,
138
137
  first = true,
@@ -140,12 +139,6 @@ const EmbedByline = ({
140
139
  ...props
141
140
  }: Props) => {
142
141
  const { t, i18n } = useTranslation();
143
- const strippedDescription = descriptionProp?.trim();
144
-
145
- const description = useMemo(() => {
146
- const stripped = strippedDescription?.trim() ?? '';
147
- return parseMarkdown(stripped, 'caption');
148
- }, [strippedDescription]);
149
142
 
150
143
  if (props.error) {
151
144
  const typeString = type === 'h5p' ? 'H5P' : t(`embed.type.${type}`).toLowerCase();
@@ -164,7 +157,7 @@ const EmbedByline = ({
164
157
 
165
158
  return (
166
159
  <BylineWrapper data-top-rounded={topRounded} data-bottom-rounded={bottomRounded} data-first={first}>
167
- {!!strippedDescription?.length && description && <LicenseDescription description={description} />}
160
+ {description && <LicenseDescription description={description} />}
168
161
  {visibleAlt ? <StyledSpan>{`Alt: ${visibleAlt}`}</StyledSpan> : null}
169
162
  <RightsWrapper data-grid={inGrid}>
170
163
  {license ? <LicenseLink license={license} asLink={!!license.url.length} /> : null}
@@ -8,9 +8,8 @@
8
8
 
9
9
  import styled from '@emotion/styled';
10
10
  import { colors, spacing } from '@ndla/core';
11
- // @ts-ignore
12
- import { Remarkable } from 'remarkable';
13
11
  import { CloseButton } from '@ndla/button';
12
+ import { ReactNode } from 'react';
14
13
 
15
14
  interface WrapperProps {
16
15
  small?: boolean;
@@ -44,19 +43,15 @@ const StyledClosebutton = styled(CloseButton)`
44
43
 
45
44
  interface Props {
46
45
  small?: boolean;
47
- children?: string;
46
+ children?: ReactNode;
48
47
  showCloseButton?: boolean;
49
48
  onClose?: () => void;
50
49
  }
51
50
 
52
- const markdown = new Remarkable({ breaks: true });
53
- markdown.inline.ruler.enable(['sub', 'sup']);
54
- markdown.block.ruler.disable(['list', 'table']);
55
-
56
51
  const MessageBanner = ({ children, onClose, showCloseButton, small }: Props) => {
57
52
  return (
58
53
  <MessageBannerWrapper small={small}>
59
- <TextWrapper dangerouslySetInnerHTML={{ __html: markdown.render(children) }} />
54
+ <TextWrapper>{children}</TextWrapper>
60
55
  {showCloseButton && <StyledClosebutton onClick={onClose} />}
61
56
  </MessageBannerWrapper>
62
57
  );
@@ -10,14 +10,9 @@ import styled from '@emotion/styled';
10
10
  import { breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
11
11
  import { InformationOutline, HumanMaleBoard, Forward, WarningOutline } from '@ndla/icons/common';
12
12
 
13
- // @ts-ignore
14
- import { Remarkable } from 'remarkable';
15
13
  import { CloseButton } from '@ndla/button';
16
14
  import { css } from '@emotion/react';
17
-
18
- const markdown = new Remarkable({ breaks: true });
19
- markdown.inline.ruler.enable(['sub', 'sup']);
20
- markdown.block.ruler.disable(['list', 'table']);
15
+ import { ReactNode } from 'react';
21
16
 
22
17
  type MessageBoxType = 'ghost' | 'danger';
23
18
 
@@ -109,7 +104,7 @@ interface LinkProps {
109
104
 
110
105
  interface Props {
111
106
  type?: MessageBoxType;
112
- children?: string;
107
+ children?: ReactNode;
113
108
  links?: LinkProps[];
114
109
  showCloseButton?: boolean;
115
110
  onClose?: () => void;
@@ -133,7 +128,7 @@ export const MessageBox = ({ type, children = '', links, showCloseButton, onClos
133
128
  <Icon type={type} />
134
129
  </IconWrapper>
135
130
  <div>
136
- <TextWrapper dangerouslySetInnerHTML={{ __html: markdown.render(children) }} />
131
+ <TextWrapper>{children}</TextWrapper>
137
132
  {links && (
138
133
  <LinkWrapper>
139
134
  {links.map((x) => (
@@ -1,5 +1,4 @@
1
1
  import { ReactNode } from 'react';
2
- import parse from 'html-react-parser';
3
2
  import styled from '@emotion/styled';
4
3
  import { breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
5
4
  import { css } from '@emotion/react';
@@ -105,13 +104,12 @@ const StyledContentWrapper = styled.div<InvertItProps>`
105
104
 
106
105
  type Props = {
107
106
  heading: string;
108
- introduction: string;
107
+ introduction: ReactNode;
109
108
  onToggleShowContent: () => void;
110
109
  showContent: boolean;
111
110
  isLoading: boolean;
112
111
  isAdditionalTopic?: boolean;
113
112
  invertedStyle?: boolean;
114
- renderMarkdown: (text: string) => string;
115
113
  children: ReactNode;
116
114
  };
117
115
 
@@ -123,7 +121,6 @@ export const NavigationTopicAbout = ({
123
121
  isLoading,
124
122
  isAdditionalTopic,
125
123
  invertedStyle,
126
- renderMarkdown,
127
124
  children,
128
125
  }: Props) => {
129
126
  const { t } = useTranslation();
@@ -143,7 +140,7 @@ export const NavigationTopicAbout = ({
143
140
  ) : (
144
141
  <>
145
142
  <StyledIngress invertedStyle={invertedStyle}>
146
- {parse(renderMarkdown(introduction))}
143
+ {introduction}
147
144
  <StyledButtonWrapper invertedStyle={invertedStyle}>
148
145
  <ButtonV2
149
146
  aria-expanded={!!showContent}
@@ -8,7 +8,6 @@
8
8
  import { Fragment, ReactNode } from 'react';
9
9
  import styled from '@emotion/styled';
10
10
  import { useTranslation } from 'react-i18next';
11
- import { parseMarkdown } from '@ndla/util';
12
11
  import { breakpoints, fonts, mq, spacing } from '@ndla/core';
13
12
 
14
13
  const ContentWrapper = styled.div`
@@ -83,7 +82,8 @@ const Notion = ({ id, labels = [], text, title, visualElement, imageElement, chi
83
82
  {imageElement}
84
83
  {visualElement}
85
84
  <TextWrapper hasVisualElement={!!(imageElement || visualElement)}>
86
- {parseMarkdown(`**${title.trim()}** \u2013 ${text}`, 'body')}
85
+ <b>{title.trim()}</b>
86
+ {text}
87
87
  {!!labels.length && (
88
88
  <LabelsContainer>
89
89
  {t('searchPage.resultType.notionLabels')}
@@ -109,17 +109,17 @@ const SearchFieldHeader = ({
109
109
  {value && (
110
110
  <ClearButton
111
111
  type="button"
112
- value={t<string>('welcomePage.resetSearch')}
112
+ value={t('welcomePage.resetSearch')}
113
113
  onClick={() => {
114
114
  onChange('');
115
115
  inputRef.current?.focus();
116
116
  }}
117
117
  >
118
- <CrossIcon style={iconStyle} title={t<string>('welcomePage.resetSearch')} />
118
+ <CrossIcon style={iconStyle} title={t('welcomePage.resetSearch')} />
119
119
  </ClearButton>
120
120
  )}
121
- <SearchButton type="submit" value={t<string>('searchPage.search')}>
122
- <SearchIcon style={iconStyle} title={t<string>('searchPage.search')} />
121
+ <SearchButton type="submit" value={t('searchPage.search')}>
122
+ <SearchIcon style={iconStyle} title={t('searchPage.search')} />
123
123
  </SearchButton>
124
124
  </StyledForm>
125
125
  );
@@ -6,7 +6,6 @@
6
6
  *
7
7
  */
8
8
 
9
- import { TFunction } from 'react-i18next';
10
9
  import {
11
10
  AriaGuidanceProps,
12
11
  AriaOnChangeProps,
@@ -15,6 +14,7 @@ import {
15
14
  GroupBase,
16
15
  OptionsOrGroups,
17
16
  } from 'react-select';
17
+ import { TFunction } from 'i18next';
18
18
  import { TagType } from './types';
19
19
 
20
20
  export const createAriaMessages = (t: TFunction) => ({
@@ -7,27 +7,11 @@
7
7
  */
8
8
 
9
9
  import { MouseEvent } from 'react';
10
- import styled from '@emotion/styled';
11
- import { breakpoints, fonts, mq } from '@ndla/core';
12
10
  import { useTranslation } from 'react-i18next';
13
- import { Heading } from '@ndla/typography';
11
+ import { Heading, Text } from '@ndla/typography';
14
12
  import { ItemProps } from '../Navigation/NavigationBox';
15
13
  import { NavigationBox } from '../Navigation';
16
14
 
17
- const Introduction = styled.p`
18
- max-width: 800px;
19
- font-weight: ${fonts.weight.light};
20
- ${fonts.sizes('18px', '28px')};
21
-
22
- ${mq.range({ from: breakpoints.tablet })} {
23
- ${fonts.sizes('22px', '32px')};
24
- }
25
-
26
- ${mq.range({ from: breakpoints.desktop })} {
27
- ${fonts.sizes('26px', '36px')};
28
- }
29
- `;
30
-
31
15
  interface Props {
32
16
  id?: string;
33
17
  title: string;
@@ -40,10 +24,10 @@ const ToolboxInfo = ({ title, introduction, topics, onSelectTopic, id }: Props)
40
24
  const { t } = useTranslation();
41
25
  return (
42
26
  <>
43
- <Heading element="h1" headingStyle="h1" id={id} tabIndex={-1}>
27
+ <Heading element="h1" headingStyle="h1-resource" id={id} tabIndex={-1}>
44
28
  {title}
45
29
  </Heading>
46
- <Introduction>{introduction}</Introduction>
30
+ <Text textStyle="ingress">{introduction}</Text>
47
31
  <NavigationBox
48
32
  items={topics}
49
33
  listDirection="floating"
@@ -8,9 +8,9 @@
8
8
 
9
9
  import { ReactNode, MouseEvent, useMemo } from 'react';
10
10
  import styled from '@emotion/styled';
11
- import { animations, breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
11
+ import { animations, breakpoints, colors, mq, spacing } from '@ndla/core';
12
+ import { Text, Heading } from '@ndla/typography';
12
13
 
13
- import parse from 'html-react-parser';
14
14
  import { ChevronDown, ChevronUp, PlayCircleFilled } from '@ndla/icons/common';
15
15
  import { ModalCloseButton, ModalContent, Modal, ModalHeader, ModalTrigger } from '@ndla/modal';
16
16
  import { ButtonV2 } from '@ndla/button';
@@ -18,7 +18,6 @@ import { CursorClick, ExpandTwoArrows } from '@ndla/icons/action';
18
18
  import { css } from '@emotion/react';
19
19
  import { useTranslation } from 'react-i18next';
20
20
  import { EmbedMetaData } from '@ndla/types-embed';
21
- import { Heading } from '@ndla/typography';
22
21
  import Loader from './Loader';
23
22
  import { ItemProps } from '../Navigation/NavigationBox';
24
23
  import { NavigationBox } from '../Navigation';
@@ -145,14 +144,6 @@ const HeadingWrapper = styled.hgroup`
145
144
  }
146
145
  `;
147
146
 
148
- const TopicIntroduction = styled.div`
149
- font-weight: ${fonts.weight.light};
150
- max-width: 612px;
151
- ${mq.range({ from: breakpoints.tablet })} {
152
- ${fonts.sizes('22px', '32px')};
153
- }
154
- `;
155
-
156
147
  const StyledButtonWrapper = styled.div<InvertItProps>`
157
148
  margin-top: ${spacing.small};
158
149
  padding: ${spacing.xsmall} 0 ${spacing.xsmall} ${spacing.medium};
@@ -197,13 +188,12 @@ export type TopicProps = {
197
188
  alt: string;
198
189
  };
199
190
  title: string;
200
- introduction: string;
191
+ introduction: ReactNode;
201
192
  resources?: ReactNode;
202
193
  visualElementEmbedMeta?: EmbedMetaData;
203
194
  subTopics?: ItemProps[] | null | undefined;
204
195
  onSubTopicSelected?: (event: MouseEvent<HTMLElement>, id?: string) => void;
205
196
  isLoading?: boolean;
206
- renderMarkdown?: (text: string) => string;
207
197
  invertedStyle?: boolean;
208
198
  onToggleShowContent?: () => void;
209
199
  showContent?: boolean;
@@ -229,7 +219,6 @@ const Topic = ({
229
219
  subTopics,
230
220
  onSubTopicSelected,
231
221
  isLoading,
232
- renderMarkdown,
233
222
  invertedStyle,
234
223
  onToggleShowContent,
235
224
  showContent,
@@ -284,7 +273,9 @@ const Topic = ({
284
273
  </>
285
274
  )}
286
275
  </HeadingWrapper>
287
- <TopicIntroduction>{renderMarkdown ? parse(renderMarkdown(introduction)) : introduction}</TopicIntroduction>
276
+ <Text textStyle="ingress" element="div">
277
+ {introduction}
278
+ </Text>
288
279
  </div>
289
280
  {metaImage && (
290
281
  <TopicHeaderVisualElementWrapper>
@@ -1271,6 +1271,19 @@ const messages = {
1271
1271
  text: 'When you save a resource, you will have the option to tag it with a keyword. This tag can be used to find the resource across folders. By selecting <strong>My tags</strong> on the menu to the left, you will see all the tags your have used. You can also see which resources are tagget with which keyword.',
1272
1272
  },
1273
1273
  },
1274
+ myProfile: {
1275
+ title: 'My Profile',
1276
+ disclaimerTitle: 'Where is my picture and name used?',
1277
+ disclaimerText: 'Your picture and name are displayed when you participate in discussions in the arena.',
1278
+ preferenceTitle: 'Choose whether you want to display name when sharing a folder',
1279
+ preferenceText:
1280
+ 'Here you can choose whether you want to display your name when you share a folder. The selected option applies to all your folders and can be changed later. If you later change the option, your name will appear on all your shared folders.',
1281
+ editButtonText: 'Change profile picture',
1282
+ radioButtonText: {
1283
+ option1: 'Show my name when I share a folder',
1284
+ option2: 'Do not show my name when I share a folder',
1285
+ },
1286
+ },
1274
1287
  resource: {
1275
1288
  add: 'Add folder/tag',
1276
1289
  remove: 'Remove',
@@ -1267,6 +1267,19 @@ const messages = {
1267
1267
  text: 'Når du lagrer en ressurs, får du mulighet til å markere ressursen med en emneknagg. Emneknaggen er et nøkkelord du kan bruke til å finne tilbake til ressurser på tvers av mapper. Du finner alle emneknaggene du har brukt, ved å velge <strong>Mine emneknagger</strong> i venstremenyen. Her kan du også se hvilke ressurser du har markert med hvilken emneknagg.',
1268
1268
  },
1269
1269
  },
1270
+ myProfile: {
1271
+ title: 'Min Profil',
1272
+ disclaimerTitle: 'Hvor brukes bildet og navnet mitt?',
1273
+ disclaimerText: 'Bilde og navn vises når du deltar i diskusjoner i arenaen.',
1274
+ preferenceTitle: 'Velg om du vil vise navn når du deler en mappe',
1275
+ preferenceText:
1276
+ 'Her kan du selv velge om du vil vise navnet ditt når du deler en mappe. Valget gjelder for alle mappene dine og kan endres senere. Dersom du endrer vil navnet ditt vises på alle dine delte mapper.',
1277
+ editButtonText: 'Endre profilbilde',
1278
+ radioButtonText: {
1279
+ option1: 'Vis navnet mitt når jeg deler en mappe',
1280
+ option2: 'Ikke vis navnet mitt når jeg deler mappe',
1281
+ },
1282
+ },
1270
1283
  resource: {
1271
1284
  add: 'Legg til mappe/emneknagg',
1272
1285
  remove: 'Fjern',
@@ -1267,6 +1267,19 @@ const messages = {
1267
1267
  text: 'Når du lagrar ein ressurs, får du høve til å markere ressursen med ein emneknagg. Emneknaggen er eit nøkkelord du kan bruke til å finne tilbake til ressursar på tvers av mapper. Du finn alle emneknaggane du har brukt, ved å velje <strong>Mine emneknaggar</strong> i venstremenyen. Her kan du også sjå kva for ressursar du har merkt med kva knagg.',
1268
1268
  },
1269
1269
  },
1270
+ myProfile: {
1271
+ title: 'Min Profil',
1272
+ disclaimerTitle: 'Kvar blir biletet og namnet mitt brukt?',
1273
+ disclaimerText: 'Bilete og namn vert vist når du deltek i diskusjonar i arenaen.',
1274
+ preferenceTitle: 'Vel om du vil vise namn når du deler ei mappe',
1275
+ preferenceText:
1276
+ 'Her kan du sjølv velje om du vil vise namnet ditt når du deler ei mappe. Valet gjeld for alle mappene dine og kan endrast seinare. Dersom du endrar vil namnet ditt visast på alle dine delte mapper.',
1277
+ editButtonText: 'Endre profilbilete',
1278
+ radioButtonText: {
1279
+ option1: 'Vis namnet mitt når eg deler ei mappe',
1280
+ option2: 'Ikkje vis namnet mitt når eg deler mappe',
1281
+ },
1282
+ },
1270
1283
  resource: {
1271
1284
  add: 'Legg til mappe/emneknagg',
1272
1285
  remove: 'Fjern',
@@ -1267,6 +1267,19 @@ const messages = {
1267
1267
  text: 'Go vurket muhtin resurssa de lea vejolaš merket resurssa fáddágilkoriin. Fáddágilkor lea čoavddasátni man sáhtát geavahit gávdnan dihte ruovttoluotta resurssaide máhpaid rastá. Gávnnat buot fáddágilkoriid maid leat geavahan go válljet mu fáddágilkoriid gurut bealde fálus. Das oainnát maiddái maid resurssaid don leat merken juohke fáddágilkoriin.',
1268
1268
  },
1269
1269
  },
1270
+ myProfile: {
1271
+ title: 'Mu profiila',
1272
+ disclaimerTitle: 'Gos geavahit mu gova ja mu nama?',
1273
+ disclaimerText: 'Govva ja namma čájehuvvojit go searvat digaštallamii arenain.',
1274
+ preferenceTitle: 'Vállje jos namma čájehuvvo máhpa juohkkedettiin',
1275
+ preferenceText:
1276
+ 'Dás válljet jos iežat namma čájehuvvo juohkkedettiin máhpa. Dát molssaeaktu guoská buot máhpaide ja sáhttá rievdaduvvot maŋŋil. Jos rievdadat dán, de čájehuvvo du namma buot juogaduvvon máhpain.',
1277
+ editButtonText: 'Rievdat profiilagova',
1278
+ radioButtonText: {
1279
+ option1: 'Čájet mu nama máhpa juohkkedettiin',
1280
+ option2: 'Ale čájet mu nama máhpa juohkkedettiin',
1281
+ },
1282
+ },
1270
1283
  resource: {
1271
1284
  add: 'Lasit máhpa/fáddágilkora',
1272
1285
  remove: 'Sihko',
@@ -1272,6 +1272,19 @@ const messages = {
1272
1272
  text: 'Når du lagrar ein ressurs, får du høve til å markere ressursen med ein emneknagg. Emneknaggen er eit nøkkelord du kan bruke til å finne tilbake til ressursar på tvers av mapper. Du finn alle emneknaggane du har brukt, ved å velje <strong>Mine emneknaggar</strong> i venstremenyen. Her kan du også sjå kva for ressursar du har merkt med kva knagg.',
1273
1273
  },
1274
1274
  },
1275
+ myProfile: {
1276
+ title: 'Mov Profijle',
1277
+ disclaimerTitle: 'Gusnie guvvie jïh nomme åtnasuvvieh?',
1278
+ disclaimerText: 'Guvvie jïh nomme våajnoes sjidtieh gosse meatan digkiedimmesne sijjesne.',
1279
+ preferenceTitle: 'Sjïehtedh jis edtja nommem vuesiehtidh gosse maabpam juekedh',
1280
+ preferenceText:
1281
+ 'Daesnie jïjtje veeljh mejtie sïjhth dov nommem vuesiehtidh gosse maabpam juekedh . Daate veeljeme lea gaajhkine dov maabpojne, jïh maahta dam mænngan jarkelidh. Jis jeatjahdahtah , dov nomme sæjhta våajnoes årrodh gaajhkine dov joekedamme maabpojne.',
1282
+ editButtonText: 'Naemhtie profijleguvviem jarkelidh',
1283
+ radioButtonText: {
1284
+ option1: 'Vuesehth mov nommem gosse maabpam juekieh',
1285
+ option2: 'Aellieh mov nommem vuesehth gosse maabpam juekieh',
1286
+ },
1287
+ },
1275
1288
  resource: {
1276
1289
  add: 'Legg til mappe/emneknagg',
1277
1290
  remove: 'Fjern',
package/src/types.ts CHANGED
@@ -68,7 +68,7 @@ export interface FootNote {
68
68
 
69
69
  export interface Article {
70
70
  title: string;
71
- introduction: string;
71
+ introduction: ReactNode;
72
72
  content: ReactNode;
73
73
  footNotes: Array<FootNote>;
74
74
  copyright?: Copyright;