@ndla/ui 50.9.4 → 50.9.6

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 (123) hide show
  1. package/es/Article/ArticleNotions.js +6 -6
  2. package/es/AudioPlayer/Controls.js +22 -22
  3. package/es/ContentPlaceholder/ContentPlaceholder.js +4 -12
  4. package/es/CopyParagraphButton/CopyParagraphButton.js +3 -3
  5. package/es/Embed/ConceptEmbed.js +13 -10
  6. package/es/Embed/conceptComponents.js +11 -11
  7. package/es/FactBox/FactBox.js +8 -24
  8. package/es/Filter/FilterCarousel.js +6 -5
  9. package/es/Footer/Footer.js +16 -20
  10. package/es/Footer/FooterLinks.js +12 -9
  11. package/es/Hero/HeroContent.js +3 -3
  12. package/es/LearningPaths/LearningPathMenuContent.js +6 -6
  13. package/es/LearningPaths/LearningPathMenuModalWrapper.js +3 -3
  14. package/es/LearningPaths/LearningPathSticky.js +4 -4
  15. package/es/Masthead/Masthead.js +4 -4
  16. package/es/Masthead/SkipToMainContent.js +2 -2
  17. package/es/MediaList/MediaList.js +10 -10
  18. package/es/MyNdla/Resource/Folder.js +8 -17
  19. package/es/NDLAFilm/FilmContentCardTags.js +3 -3
  20. package/es/Navigation/NavigationBox.js +14 -14
  21. package/es/Resource/BlockResource.js +7 -15
  22. package/es/Resource/ListResource.js +8 -8
  23. package/es/Resource/resourceComponents.js +12 -12
  24. package/es/ResourceGroup/ResourceItem.js +34 -37
  25. package/es/Search/SearchField.js +34 -13
  26. package/es/Search/SearchFieldForm.js +4 -4
  27. package/es/SearchTypeResult/SearchItem.js +7 -16
  28. package/es/SearchTypeResult/SearchTypeResult.js +3 -3
  29. package/es/SearchTypeResult/components/ItemContexts.js +6 -6
  30. package/es/SearchTypeResult/components/ItemResourceHeader.js +7 -7
  31. package/es/SnackBar/SnackbarProvider.js +3 -12
  32. package/es/all.css +1 -1
  33. package/es/locale/messages-en.js +31 -1
  34. package/es/locale/messages-nb.js +31 -1
  35. package/es/locale/messages-nn.js +31 -1
  36. package/es/locale/messages-se.js +31 -1
  37. package/es/locale/messages-sma.js +31 -1
  38. package/lib/Article/ArticleNotions.js +5 -5
  39. package/lib/AudioPlayer/Controls.js +21 -21
  40. package/lib/ContentPlaceholder/ContentPlaceholder.js +3 -11
  41. package/lib/CopyParagraphButton/CopyParagraphButton.js +2 -2
  42. package/lib/Embed/ConceptEmbed.js +12 -9
  43. package/lib/Embed/conceptComponents.js +10 -10
  44. package/lib/FactBox/FactBox.js +7 -23
  45. package/lib/Filter/FilterCarousel.js +6 -5
  46. package/lib/Footer/Footer.js +15 -19
  47. package/lib/Footer/FooterLinks.js +12 -9
  48. package/lib/Hero/HeroContent.js +2 -2
  49. package/lib/LearningPaths/LearningPathMenuContent.js +5 -5
  50. package/lib/LearningPaths/LearningPathMenuModalWrapper.js +2 -2
  51. package/lib/LearningPaths/LearningPathSticky.js +3 -3
  52. package/lib/Masthead/Masthead.js +3 -3
  53. package/lib/Masthead/SkipToMainContent.js +1 -1
  54. package/lib/MediaList/MediaList.js +9 -9
  55. package/lib/MyNdla/Resource/Folder.js +9 -16
  56. package/lib/NDLAFilm/FilmContentCardTags.js +2 -2
  57. package/lib/Navigation/NavigationBox.js +14 -14
  58. package/lib/Resource/BlockResource.js +6 -14
  59. package/lib/Resource/ListResource.js +7 -7
  60. package/lib/Resource/resourceComponents.js +11 -11
  61. package/lib/ResourceGroup/ResourceItem.js +34 -37
  62. package/lib/Search/SearchField.js +34 -13
  63. package/lib/Search/SearchFieldForm.js +3 -3
  64. package/lib/SearchTypeResult/SearchItem.js +8 -15
  65. package/lib/SearchTypeResult/SearchTypeResult.js +2 -2
  66. package/lib/SearchTypeResult/components/ItemContexts.js +5 -5
  67. package/lib/SearchTypeResult/components/ItemResourceHeader.js +6 -6
  68. package/lib/SnackBar/SnackbarProvider.js +4 -11
  69. package/lib/all.css +1 -1
  70. package/lib/locale/messages-en.d.ts +30 -0
  71. package/lib/locale/messages-en.js +31 -1
  72. package/lib/locale/messages-nb.d.ts +30 -0
  73. package/lib/locale/messages-nb.js +31 -1
  74. package/lib/locale/messages-nn.d.ts +30 -0
  75. package/lib/locale/messages-nn.js +31 -1
  76. package/lib/locale/messages-se.d.ts +30 -0
  77. package/lib/locale/messages-se.js +31 -1
  78. package/lib/locale/messages-sma.d.ts +30 -0
  79. package/lib/locale/messages-sma.js +31 -1
  80. package/package.json +17 -17
  81. package/src/Article/ArticleNotions.tsx +2 -2
  82. package/src/Article/component.article.scss +2 -2
  83. package/src/AudioPlayer/Controls.tsx +2 -2
  84. package/src/ContentPlaceholder/ContentPlaceholder.tsx +2 -2
  85. package/src/CopyParagraphButton/CopyParagraphButton.tsx +2 -2
  86. package/src/Embed/ConceptEmbed.tsx +9 -16
  87. package/src/Embed/conceptComponents.tsx +3 -3
  88. package/src/FactBox/FactBox.tsx +5 -5
  89. package/src/Figure/component.figure.scss +2 -2
  90. package/src/Filter/FilterCarousel.tsx +2 -1
  91. package/src/Filter/component.filter.scss +5 -5
  92. package/src/Footer/Footer.tsx +9 -6
  93. package/src/Footer/FooterLinks.tsx +6 -4
  94. package/src/Hero/HeroContent.tsx +2 -2
  95. package/src/LearningPaths/LearningPathMenuContent.tsx +3 -3
  96. package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +2 -2
  97. package/src/LearningPaths/LearningPathSticky.tsx +2 -2
  98. package/src/Masthead/Masthead.tsx +2 -2
  99. package/src/Masthead/SkipToMainContent.tsx +2 -2
  100. package/src/MediaList/MediaList.tsx +3 -3
  101. package/src/MyNdla/Resource/Folder.tsx +2 -2
  102. package/src/NDLAFilm/FilmContentCardTags.tsx +3 -3
  103. package/src/Navigation/NavigationBox.tsx +2 -2
  104. package/src/Resource/BlockResource.tsx +2 -2
  105. package/src/Resource/ListResource.tsx +2 -2
  106. package/src/Resource/resourceComponents.tsx +2 -2
  107. package/src/ResourceGroup/ResourceItem.tsx +46 -43
  108. package/src/Search/SearchField.tsx +63 -15
  109. package/src/Search/SearchFieldForm.tsx +3 -12
  110. package/src/SearchTypeResult/SearchItem.tsx +3 -3
  111. package/src/SearchTypeResult/SearchTypeResult.tsx +2 -2
  112. package/src/SearchTypeResult/components/ItemContexts.tsx +2 -2
  113. package/src/SearchTypeResult/components/ItemResourceHeader.tsx +3 -5
  114. package/src/SnackBar/SnackbarProvider.tsx +2 -2
  115. package/src/locale/messages-en.ts +31 -0
  116. package/src/locale/messages-nb.ts +31 -0
  117. package/src/locale/messages-nn.ts +31 -0
  118. package/src/locale/messages-se.ts +31 -0
  119. package/src/locale/messages-sma.ts +31 -0
  120. package/src/main.scss +4 -5
  121. package/src/Search/component.search-field.scss +0 -122
  122. package/src/Search/component.search-result.scss +0 -355
  123. package/src/Search/component.search.scss +0 -2
@@ -99,10 +99,15 @@ const ListElement = styled.li`
99
99
  `;
100
100
 
101
101
  const ResourceLink = styled(SafeLink)`
102
+ display: flex;
103
+ width: 100%;
104
+ align-items: center;
102
105
  font-weight: ${fonts.weight.semibold};
103
106
  box-shadow: none;
104
- text-decoration: underline;
105
- text-underline-offset: 5px;
107
+ &[data-active="false"] {
108
+ text-decoration: underline;
109
+ text-underline-offset: 5px;
110
+ }
106
111
  color: ${colors.brand.dark};
107
112
  ${fonts.sizes("16px", "26px")};
108
113
  ${mq.range({ from: breakpoints.tablet })} {
@@ -113,9 +118,34 @@ const ResourceLink = styled(SafeLink)`
113
118
  }
114
119
  &:hover {
115
120
  text-decoration: none;
121
+ [data-badge-wrapper="true"] {
122
+ [data-badge] {
123
+ width: ${spacing.mediumlarge};
124
+ height: ${spacing.mediumlarge};
125
+
126
+ svg {
127
+ width: 20px;
128
+ height: 20px;
129
+ }
130
+ [data-type="subject-material"],
131
+ [data-type="learning-path"],
132
+ [data-type="source-material"],
133
+ [data-type="external-learning-resources"] {
134
+ svg {
135
+ width: ${spacing.medium};
136
+ height: ${spacing.medium};
137
+ }
138
+ }
139
+ }
140
+ }
116
141
  }
117
142
  `;
118
143
 
144
+ const InlineContainer = styled.div`
145
+ display: inline;
146
+ width: 100%;
147
+ `;
148
+
119
149
  const ContentBadgeWrapper = styled.div`
120
150
  display: flex;
121
151
  flex: 0 0 auto;
@@ -149,38 +179,11 @@ const ContentTypeName = styled.span`
149
179
  text-align: right;
150
180
  `;
151
181
 
152
- const InlineContainer = styled.div`
153
- display: inline;
154
- `;
155
-
156
- const ResourceWrapper = styled.div`
157
- display: flex;
158
- gap: ${spacing.xsmall};
159
- align-items: center;
160
- :hover {
161
- [data-badge] {
162
- width: 38px;
163
- height: 38px;
164
-
165
- svg {
166
- width: 20px;
167
- height: 20px;
168
- }
169
- [data-type="subject-material"],
170
- [data-type="learning-path"],
171
- [data-type="source-material"],
172
- [data-type="external-learning-resources"] {
173
- svg {
174
- width: 26px;
175
- height: 26px;
176
- }
177
- }
178
- }
179
- }
180
- `;
181
-
182
182
  const CurrentSmall = styled.small`
183
183
  margin-left: ${spacing.xsmall};
184
+ text-decoration: none;
185
+ color: ${colors.text.primary};
186
+ font-weight: ${fonts.weight.normal};
184
187
  `;
185
188
 
186
189
  interface Props {
@@ -235,22 +238,22 @@ const ResourceItem = ({
235
238
  data-additional={additional}
236
239
  style={listElementVars}
237
240
  >
238
- <ResourceWrapper>
239
- <ContentBadgeWrapper>
241
+ <ResourceLink
242
+ to={path}
243
+ lang={language === "nb" ? "no" : language}
244
+ aria-current={active ? "page" : undefined}
245
+ aria-describedby={describedBy}
246
+ disabled={active}
247
+ data-active={active}
248
+ >
249
+ <ContentBadgeWrapper data-badge-wrapper={!active}>
240
250
  <ContentTypeBadge type={contentType ?? ""} background border={false} />
241
251
  </ContentBadgeWrapper>
242
252
  <InlineContainer>
243
- <ResourceLink
244
- to={path}
245
- lang={language === "nb" ? "no" : language}
246
- aria-current={active ? "page" : undefined}
247
- aria-describedby={describedBy}
248
- >
249
- {name}
250
- </ResourceLink>
253
+ {name}
251
254
  {active ? <CurrentSmall>{t("resource.youAreHere")}</CurrentSmall> : undefined}
252
255
  </InlineContainer>
253
- </ResourceWrapper>
256
+ </ResourceLink>
254
257
  <TypeWrapper>
255
258
  {contentTypeName && <ContentTypeName>{contentTypeName}</ContentTypeName>}
256
259
  {access && access === "teacher" && (
@@ -7,22 +7,71 @@
7
7
  */
8
8
 
9
9
  import { FocusEvent, MouseEvent, RefObject } from "react";
10
- import BEMHelper from "react-bem-helper";
11
10
  import { useTranslation } from "react-i18next";
12
11
  import { css } from "@emotion/react";
13
12
  import styled from "@emotion/styled";
13
+ import { ButtonV2, IconButtonV2 } from "@ndla/button";
14
14
  import { colors, spacing, mq, breakpoints, misc, fonts } from "@ndla/core";
15
15
  import { Search as SearchIcon } from "@ndla/icons/common";
16
16
 
17
17
  import ActiveFilters from "./ActiveFilters";
18
18
  import LoadingWrapper from "./LoadingWrapper";
19
19
 
20
- const classes = new BEMHelper("c-search-field");
21
-
22
20
  interface StyledInputProps {
23
21
  hasFilters?: boolean;
24
22
  }
25
23
 
24
+ const SearchButton = styled(IconButtonV2)`
25
+ position: absolute;
26
+ padding: ${spacing.small};
27
+ ${mq.range({ from: breakpoints.tablet })} {
28
+ top: 5px;
29
+ right: 10px;
30
+ }
31
+ `;
32
+
33
+ const CloseButton = styled(ButtonV2)`
34
+ position: absolute;
35
+ padding: ${spacing.small};
36
+ right: ${spacing.large};
37
+ color: ${colors.text.light};
38
+ text-transform: uppercase;
39
+ ${fonts.sizes("14px", "16px")};
40
+ `;
41
+
42
+ const InputWrapper = styled.div`
43
+ width: 100%;
44
+ padding: 0 ${spacing.large} 0 ${spacing.normal};
45
+ display: flex;
46
+ align-items: center;
47
+ flex-flow: row-reverse;
48
+ ${mq.range({ from: breakpoints.tablet })} {
49
+ position: relative;
50
+ padding: 0;
51
+ }
52
+ `;
53
+
54
+ const FiltersWrapper = styled.div`
55
+ display: flex;
56
+ height: ${spacing.large};
57
+ background: ${colors.white};
58
+ border-top-left-radius: ${misc.borderRadius};
59
+ border-bottom-left-radius: ${misc.borderRadius};
60
+ border: 1px solid ${colors.brand.greyLight};
61
+ padding-left: ${spacing.small};
62
+ padding-right: 0;
63
+ border-right: 0;
64
+ flex-shrink: 0;
65
+ align-items: center;
66
+ ${mq.range({ from: breakpoints.mobileWide, until: breakpoints.desktop })} {
67
+ padding-right: ${spacing.xsmall};
68
+ }
69
+ ${mq.range({ from: breakpoints.tablet })} {
70
+ height: 58px;
71
+ padding-right: ${spacing.small};
72
+ }
73
+ `;
74
+
26
75
  const StyledInput = styled.input<StyledInputProps>`
27
76
  width: 100%;
28
77
  height: 48px;
@@ -99,7 +148,7 @@ const SearchField = ({
99
148
  onFocus?.();
100
149
  };
101
150
  return (
102
- <div {...classes("input-wrapper")}>
151
+ <InputWrapper>
103
152
  {loading && <LoadingWrapper value={value} />}
104
153
  <StyledInput
105
154
  hasFilters={!!filters?.length}
@@ -118,14 +167,13 @@ const SearchField = ({
118
167
  onClick={onClick}
119
168
  />
120
169
  {filters && filters.length > 0 && (
121
- <div {...classes("filters")}>
170
+ <FiltersWrapper>
122
171
  <ActiveFilters filters={filters} onFilterRemove={handleOnFilterRemove} />
123
- </div>
172
+ </FiltersWrapper>
124
173
  )}
125
174
  {value !== "" && (
126
- <button
127
- {...classes("button", "close")}
128
- type="button"
175
+ <CloseButton
176
+ variant="stripped"
129
177
  onClick={() => {
130
178
  onChange("");
131
179
  onFocus?.();
@@ -133,18 +181,18 @@ const SearchField = ({
133
181
  }}
134
182
  >
135
183
  {t("welcomePage.resetSearch")}
136
- </button>
184
+ </CloseButton>
137
185
  )}
138
- <button
139
- tabIndex={-1}
140
- {...classes("button", "searchIcon")}
186
+ <SearchButton
187
+ variant="stripped"
141
188
  type="submit"
142
189
  value="Search"
143
190
  aria-label={t("siteNav.search")}
191
+ title={t("siteNav.search")}
144
192
  >
145
193
  <SearchIcon />
146
- </button>
147
- </div>
194
+ </SearchButton>
195
+ </InputWrapper>
148
196
  );
149
197
  };
150
198
 
@@ -9,7 +9,7 @@
9
9
  import { FormEvent, ReactNode } from "react";
10
10
  import { css } from "@emotion/react";
11
11
  import styled from "@emotion/styled";
12
- import { spacing, mq, breakpoints } from "@ndla/core";
12
+ import { breakpoints, mq, spacing, stackOrder } from "@ndla/core";
13
13
 
14
14
  interface Props {
15
15
  children: ReactNode;
@@ -22,16 +22,10 @@ type StyledProps = {
22
22
  };
23
23
 
24
24
  const hasFocusStyles = css`
25
- .c-search-field__search-result {
26
- left: 0px;
27
- @supports (-webkit-overflow-scrolling: touch) {
28
- padding-bottom: 300px;
29
- }
30
- }
31
25
  display: flex;
32
26
  align-self: flex-start;
33
27
  align-items: center;
34
- z-index: 9001;
28
+ z-index: ${stackOrder.modal};
35
29
  ${mq.range({ until: breakpoints.tablet })} {
36
30
  position: fixed;
37
31
  display: block;
@@ -39,10 +33,7 @@ const hasFocusStyles = css`
39
33
  left: 0;
40
34
  right: 0;
41
35
  padding: ${spacing.small};
42
- z-index: 9001;
43
- .c-search-field__search-result {
44
- width: 100vw;
45
- }
36
+ z-index: ${stackOrder.modal};
46
37
  }
47
38
  `;
48
39
 
@@ -10,7 +10,7 @@ import parse from "html-react-parser";
10
10
  import { ReactNode, useRef } from "react";
11
11
  import styled from "@emotion/styled";
12
12
 
13
- import { animations, colors, fonts, spacing } from "@ndla/core";
13
+ import { animations, colors, fonts, spacing, stackOrder } from "@ndla/core";
14
14
  import SafeLink from "@ndla/safelink";
15
15
 
16
16
  import ItemContexts, { ItemContextsType } from "./components/ItemContexts";
@@ -44,7 +44,7 @@ const Container = styled.article`
44
44
  `;
45
45
 
46
46
  const ButtonWrapper = styled.div`
47
- z-index: 1;
47
+ z-index: ${stackOrder.offsetSingle};
48
48
  display: flex;
49
49
  flex-direction: column;
50
50
  `;
@@ -69,7 +69,7 @@ const StyledLink = styled(SafeLink)`
69
69
  :after {
70
70
  content: "";
71
71
  position: absolute;
72
- z-index: 1;
72
+ z-index: ${stackOrder.offsetSingle};
73
73
  top: 0;
74
74
  right: 0;
75
75
  bottom: 0;
@@ -8,7 +8,7 @@
8
8
 
9
9
  import { memo, ReactNode } from "react";
10
10
  import styled from "@emotion/styled";
11
- import { spacing } from "@ndla/core";
11
+ import { spacing, stackOrder } from "@ndla/core";
12
12
  import { Spinner } from "@ndla/icons";
13
13
  import ResultNavigation, { PaginationType } from "./ResultNavigation";
14
14
  import { SearchItemProps } from "./SearchItem";
@@ -32,7 +32,7 @@ const Overlay = styled.div`
32
32
  bottom: 0;
33
33
  width: 102%;
34
34
  background-color: rgb(204, 204, 204, 0.1);
35
- z-index: 2;
35
+ z-index: ${stackOrder.offsetDouble};
36
36
  display: flex;
37
37
  flex-direction: column;
38
38
  justify-content: center;
@@ -10,7 +10,7 @@ import { ReactNode, Fragment } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
11
  import styled from "@emotion/styled";
12
12
  import { ButtonV2 } from "@ndla/button";
13
- import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
13
+ import { breakpoints, colors, fonts, mq, spacing, stackOrder } from "@ndla/core";
14
14
  import { Additional, Core } from "@ndla/icons/common";
15
15
  import { Modal, ModalCloseButton, ModalContent, ModalHeader, ModalTitle, ModalTrigger } from "@ndla/modal";
16
16
  import SafeLink from "@ndla/safelink";
@@ -25,7 +25,7 @@ const BreadcrumbPath = styled.div`
25
25
  `;
26
26
 
27
27
  const ModalButton = styled(ButtonV2)`
28
- z-index: 1;
28
+ z-index: ${stackOrder.offsetSingle};
29
29
  position: relative;
30
30
  ${fonts.sizes("14px", "20px")};
31
31
  box-shadow: none;
@@ -9,9 +9,7 @@
9
9
  import { Fragment } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
11
  import styled from "@emotion/styled";
12
-
13
- import { fonts, spacing } from "@ndla/core";
14
-
12
+ import { fonts, spacing, stackOrder } from "@ndla/core";
15
13
  import ContentTypeBadge from "../../ContentTypeBadge";
16
14
  import resourceTypeColor from "../../utils/resourceTypeColor";
17
15
  import { SearchItemType } from "../SearchItem";
@@ -38,7 +36,7 @@ const NoImageElement = styled.div<ItemTypeProps>`
38
36
  width: 58px;
39
37
  height: 58px;
40
38
  opacity: 0.2;
41
- z-index: 3;
39
+ z-index: ${stackOrder.offsetDouble};
42
40
  svg {
43
41
  width: 58px;
44
42
  height: 58px;
@@ -75,7 +73,7 @@ const ContentTypeIcon = styled.span<ItemTypeProps>`
75
73
  `;
76
74
 
77
75
  const StyledContentTypeBadge = styled(ContentTypeBadge)`
78
- z-index: 1;
76
+ z-index: ${stackOrder.offsetSingle};
79
77
  margin-top: ${spacing.xxsmall};
80
78
 
81
79
  svg {
@@ -9,7 +9,7 @@
9
9
  import { useCallback, useMemo, createContext, ReactNode, useState, useContext, useEffect } from "react";
10
10
  import { keyframes } from "@emotion/react";
11
11
  import styled from "@emotion/styled";
12
- import { spacing } from "@ndla/core";
12
+ import { spacing, stackOrder } from "@ndla/core";
13
13
  import DefaultSnack from "./DefaultSnackbar";
14
14
 
15
15
  export interface Snack {
@@ -121,7 +121,7 @@ interface SnackbarContainerProps {
121
121
 
122
122
  const StyledSnackList = styled.ul`
123
123
  position: fixed;
124
- z-index: 99999;
124
+ z-index: ${stackOrder.toast};
125
125
  display: flex;
126
126
  flex-direction: column;
127
127
  pointer-events: none;
@@ -1073,6 +1073,25 @@ const messages = {
1073
1073
  title: "Arena administrator",
1074
1074
  description: "Tools to moderate and administer the arena.",
1075
1075
  administrate: "Administrate",
1076
+ category: {
1077
+ deleteSnack: "The category has been deleted.",
1078
+ notVisible: "The category is not visible",
1079
+ edit: "Edit category",
1080
+ startEditing: "Edit categories",
1081
+ stopEditing: "Stop editing",
1082
+ form: {
1083
+ formTitle: "Category",
1084
+ newCategory: "New category",
1085
+ editCategory: "Edit category",
1086
+ title: "Title",
1087
+ description: "Description",
1088
+ visible: "Visibility",
1089
+ deleteText: "Delete category",
1090
+ modalTitle: "Delete category",
1091
+ modalDescription:
1092
+ "Are you sure you would like to delete the category, including all content? This is irreversible and cannot be undone.",
1093
+ },
1094
+ },
1076
1095
  users: {
1077
1096
  title: "Users",
1078
1097
  description: "List of all users of the arena. Select a user to moderate them.",
@@ -1084,6 +1103,7 @@ const messages = {
1084
1103
  isAdmin: "Administrator",
1085
1104
  selectAdministrator: "Make {{user}} a administrator.",
1086
1105
  enableArena: "Give {{user}} access to the arena.",
1106
+ noUsers: "No users found.",
1087
1107
  },
1088
1108
  flags: {
1089
1109
  title: "Flag",
@@ -1100,6 +1120,8 @@ const messages = {
1100
1120
  numFlags: "Number of flags",
1101
1121
  latestFlag: "Last flag",
1102
1122
  noflags: "No flagged posts found",
1123
+ solvedFor: "Solved",
1124
+ goToTopic: "Go to topic",
1103
1125
  status: {
1104
1126
  title: "Status",
1105
1127
  resolved: "Resolved",
@@ -1263,6 +1285,15 @@ const messages = {
1263
1285
  onDragCancel: "Dragging was cancelled. The resource {{name}} was dropped",
1264
1286
  dragHandle: "Drag the resource {{name}}",
1265
1287
  },
1288
+ category: {
1289
+ onDragStart: "Picked up the category {{name}}. The category is in position {{index}} of {{length}}",
1290
+ onDragOver: "The category {{name}} was moved into position {{index}} of {{length}}",
1291
+ onDragOverMissingOver: "The category {{name}} is no longer over a droppable area",
1292
+ onDragEnd: "The category {{name}} was dropped at position {{index}} og {{length}}",
1293
+ onDragEndMissingOver: "The category {{name}} was dropped",
1294
+ onDragCancel: "Dragging was cancelled. The category {{name}} was dropped",
1295
+ dragHandle: "Drag the category {{name}}",
1296
+ },
1266
1297
  favoriteSubjects: {
1267
1298
  title: "My favorite subjects",
1268
1299
  subjects: "{{count}} subject",
@@ -1072,6 +1072,25 @@ const messages = {
1072
1072
  title: "Arena administrator",
1073
1073
  description: "Verktøy for å moderere og administrere arenaen.",
1074
1074
  administrate: "Administrer",
1075
+ category: {
1076
+ deleteSnack: "Kategorien har blitt slettet.",
1077
+ notVisible: "Kategorien er ikke synlig",
1078
+ edit: "Rediger kategori",
1079
+ startEditing: "Rediger kategorier",
1080
+ stopEditing: "Avslutt redigering",
1081
+ form: {
1082
+ formTitle: "Kategori",
1083
+ newCategory: "Ny kategori",
1084
+ editCategory: "Rediger kategori",
1085
+ title: "Tittel",
1086
+ description: "Beskrivelse",
1087
+ visible: "Synlighet",
1088
+ deleteText: "Slett kategori",
1089
+ modalTitle: "Slett kategori",
1090
+ modalDescription:
1091
+ "Er du sikker på at du vil slette kategorien, med alt innhold? Dette er irreversibelt og kan ikke angres.",
1092
+ },
1093
+ },
1075
1094
  users: {
1076
1095
  title: "Brukere",
1077
1096
  description: "Liste over alle brukere av arena. Trykk på brukere for å moderere de.",
@@ -1083,6 +1102,7 @@ const messages = {
1083
1102
  isAdmin: "Administrator",
1084
1103
  selectAdministrator: 'Gjør "{{user}}" til administrator.',
1085
1104
  enableArena: 'Gi "{{user}}" tilgang til arena.',
1105
+ noUsers: "Ingen brukere funnet.",
1086
1106
  },
1087
1107
  flags: {
1088
1108
  title: "Flagg",
@@ -1099,6 +1119,8 @@ const messages = {
1099
1119
  numFlags: "Antall flagg",
1100
1120
  latestFlag: "Siste flagging",
1101
1121
  noflags: "Ingen flaggede poster funnet",
1122
+ solvedFor: "Løst for",
1123
+ goToTopic: "Gå til tråd",
1102
1124
  status: {
1103
1125
  title: "Status",
1104
1126
  resolved: "Løst",
@@ -1261,6 +1283,15 @@ const messages = {
1261
1283
  onDragCancel: "Flytting avbrutt. Ressursen {{name}} ble sluppet",
1262
1284
  dragHandle: "Sorter ressursen {{name}}",
1263
1285
  },
1286
+ category: {
1287
+ onDragStart: "Plukket opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
1288
+ onDragOver: "Kategorien {{name}} ble flyttet til posisjon {{index}} av {{length}}",
1289
+ onDragOverMissingOver: "Kategorien {{name}} er ikke lenger over et slippbart område",
1290
+ onDragEnd: "Kategorien {{name}} ble sluppet på posisjon {{index}} av {{length}}",
1291
+ onDragEndMissingOver: "Kategorien {{name}} ble sluppet",
1292
+ onDragCancel: "Flytting avbrutt. Kategorien {{name}} ble sluppet",
1293
+ dragHandle: "Sorter kategorien {{name}}",
1294
+ },
1264
1295
  favoriteSubjects: {
1265
1296
  title: "Mine favorittfag",
1266
1297
  subjects: "{{count}} fag",
@@ -1072,6 +1072,25 @@ const messages = {
1072
1072
  title: "Arena administrator",
1073
1073
  description: "Verktøy for å moderere og administrere arenaen.",
1074
1074
  administrate: "Administrer",
1075
+ category: {
1076
+ deleteSnack: "Kategorien har vorte sletta.",
1077
+ notVisible: "Kategorien er ikkje synleg",
1078
+ edit: "Rediger kategori",
1079
+ startEditing: "Rediger kategoriar",
1080
+ stopEditing: "Avslutt redigering",
1081
+ form: {
1082
+ formTitle: "Kategori",
1083
+ newCategory: "Ny kategori",
1084
+ editCategory: "Rediger kategori",
1085
+ title: "Tittel",
1086
+ description: "Beskriving",
1087
+ visible: "Synlighet",
1088
+ deleteText: "Slett kategori",
1089
+ modalTitle: "Slett kategori",
1090
+ modalDescription:
1091
+ "Er du sikker på at du vil sletta kategorien, med alt innhald? Dette er irreversibelt og kan ikkje angrast.",
1092
+ },
1093
+ },
1075
1094
  users: {
1076
1095
  title: "Brukarar",
1077
1096
  description: "Liste over alle brukarar av arena. Trykk på brukarar for å moderere dei.",
@@ -1083,6 +1102,7 @@ const messages = {
1083
1102
  isAdmin: "Administrator",
1084
1103
  selectAdministrator: 'Gjør "{{user}}" til administrator.',
1085
1104
  enableArena: 'Gi "{{user}}" tilgang til arena.',
1105
+ noUsers: "Ingen brukarar funne.",
1086
1106
  },
1087
1107
  flags: {
1088
1108
  title: "Flagg",
@@ -1099,6 +1119,8 @@ const messages = {
1099
1119
  numFlags: "Antal flagg",
1100
1120
  latestFlag: "Siste flagging",
1101
1121
  noflags: "Ingen flagga postar funne",
1122
+ solvedFor: "Løyst for",
1123
+ goToTopic: "Gå til tråd",
1102
1124
  status: {
1103
1125
  title: "Status",
1104
1126
  resolved: "Løyst",
@@ -1261,6 +1283,15 @@ const messages = {
1261
1283
  onDragCancel: "Flytting avbrutt. Ressursen {{name}} blei sleppt",
1262
1284
  dragHandle: "Sorter ressursen {{name}}",
1263
1285
  },
1286
+ category: {
1287
+ onDragStart: "Plukka opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
1288
+ onDragOver: "Kategorien {{name}} vart flytta til posisjon {{index}} av {{length}}",
1289
+ onDragOverMissingOver: "Kategorien {{name}} er ikkje lenger over eit slippbart område",
1290
+ onDragEnd: "Kategorien {{name}} vart sleppt på posisjon {{index}} av {{length}}",
1291
+ onDragEndMissingOver: "Kategorien {{name}} vart sleppt",
1292
+ onDragCancel: "Flytting avbrote. Kategorien {{name}} vart sleppt",
1293
+ dragHandle: "Sorter kategorien {{name}}",
1294
+ },
1264
1295
  favoriteSubjects: {
1265
1296
  title: "Mine favorittfag",
1266
1297
  subjects: "{{count}} fag",
@@ -1074,6 +1074,25 @@ const messages = {
1074
1074
  title: "Arena administrator",
1075
1075
  description: "Verktøy for å moderere og administrere arenaen.",
1076
1076
  administrate: "Administrer",
1077
+ category: {
1078
+ deleteSnack: "Kategorien har blitt slettet.",
1079
+ notVisible: "Kategorien er ikke synlig",
1080
+ edit: "Rediger kategori",
1081
+ startEditing: "Rediger kategorier",
1082
+ stopEditing: "Avslutt redigering",
1083
+ form: {
1084
+ formTitle: "Kategori",
1085
+ newCategory: "Ny kategori",
1086
+ editCategory: "Rediger kategori",
1087
+ title: "Tittel",
1088
+ description: "Beskrivelse",
1089
+ visible: "Synlighet",
1090
+ deleteText: "Slett kategori",
1091
+ modalTitle: "Slett kategori",
1092
+ modalDescription:
1093
+ "Er du sikker på at du vil slette kategorien, med alt innhold? Dette er irreversibelt og kan ikke angres.",
1094
+ },
1095
+ },
1077
1096
  users: {
1078
1097
  title: "Brukere",
1079
1098
  description: "Liste over alle brukere av arena. Trykk på brukere for å moderere de.",
@@ -1085,6 +1104,7 @@ const messages = {
1085
1104
  isAdmin: "Administrator",
1086
1105
  selectAdministrator: 'Gjør "{{user}}" til administrator.',
1087
1106
  enableArena: 'Gi "{{user}}" tilgang til arena.',
1107
+ noUsers: "Ingen brukere funnet.",
1088
1108
  },
1089
1109
  flags: {
1090
1110
  title: "Flagg",
@@ -1101,6 +1121,8 @@ const messages = {
1101
1121
  numFlags: "Antall flagg",
1102
1122
  latestFlag: "Siste flagging",
1103
1123
  noflags: "Ingen flaggede poster funnet",
1124
+ solvedFor: "Løst for",
1125
+ goToTopic: "Gå til tråd",
1104
1126
  status: {
1105
1127
  title: "Status",
1106
1128
  resolved: "Løst",
@@ -1263,6 +1285,15 @@ const messages = {
1263
1285
  onDragCancel: "Flytting avbrutt. Ressursen {{name}} ble sluppet",
1264
1286
  dragHandle: "Sorter ressursen {{name}}",
1265
1287
  },
1288
+ category: {
1289
+ onDragStart: "Plukket opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
1290
+ onDragOver: "Kategorien {{name}} ble flyttet til posisjon {{index}} av {{length}}",
1291
+ onDragOverMissingOver: "Kategorien {{name}} er ikke lenger over et slippbart område",
1292
+ onDragEnd: "Kategorien {{name}} ble sluppet på posisjon {{index}} av {{length}}",
1293
+ onDragEndMissingOver: "Kategorien {{name}} ble sluppet",
1294
+ onDragCancel: "Flytting avbrutt. Kategorien {{name}} ble sluppet",
1295
+ dragHandle: "Sorter kategorien {{name}}",
1296
+ },
1266
1297
  favoriteSubjects: {
1267
1298
  title: "Mine favorittfag",
1268
1299
  subjects: "{{count}} fag",