@ndla/ui 16.0.0 → 16.2.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 (86) hide show
  1. package/es/NDLAFilm/CategorySelect.js +51 -25
  2. package/es/NDLAFilm/FilmMovieList.js +14 -10
  3. package/es/NDLAFilm/FilmMovieSearch.js +23 -10
  4. package/es/NDLAFilm/FilmSlideshow.js +117 -19
  5. package/es/NDLAFilm/MovieGrid.js +23 -14
  6. package/es/NDLAFilm/NavigationArrow.js +33 -7
  7. package/es/NDLAFilm/SlideshowIndicator.js +27 -11
  8. package/es/NDLAFilm/filmStyles.js +23 -0
  9. package/es/Notion/ConceptNotion.js +1 -1
  10. package/es/Notion/index.js +2 -1
  11. package/es/RadioButtonGroup/RadioButtonGroup.js +28 -9
  12. package/es/Resource/resourceComponents.js +17 -9
  13. package/es/TreeStructure/FolderItem.js +39 -28
  14. package/es/TreeStructure/FolderItems.js +8 -5
  15. package/es/TreeStructure/TreeStructure.js +10 -11
  16. package/es/TreeStructure/TreeStructureWrapper.js +2 -2
  17. package/es/all.css +1 -1
  18. package/es/index.js +1 -1
  19. package/es/locale/messages-en.js +1 -1
  20. package/es/locale/messages-nb.js +1 -1
  21. package/es/locale/messages-nn.js +1 -1
  22. package/es/locale/messages-se.js +1 -1
  23. package/es/locale/messages-sma.js +1 -1
  24. package/lib/Breadcrumblist/index.d.ts +1 -0
  25. package/lib/NDLAFilm/CategorySelect.js +52 -30
  26. package/lib/NDLAFilm/FilmMovieList.js +17 -13
  27. package/lib/NDLAFilm/FilmMovieSearch.js +29 -17
  28. package/lib/NDLAFilm/FilmSlideshow.js +113 -24
  29. package/lib/NDLAFilm/MovieGrid.js +26 -16
  30. package/lib/NDLAFilm/NavigationArrow.d.ts +5 -1
  31. package/lib/NDLAFilm/NavigationArrow.js +34 -10
  32. package/lib/NDLAFilm/SlideshowIndicator.js +34 -13
  33. package/lib/NDLAFilm/filmStyles.d.ts +8 -0
  34. package/lib/NDLAFilm/filmStyles.js +38 -0
  35. package/lib/Notion/ConceptNotion.d.ts +1 -1
  36. package/lib/Notion/ConceptNotion.js +1 -1
  37. package/lib/Notion/index.d.ts +4 -1
  38. package/lib/Notion/index.js +11 -3
  39. package/lib/RadioButtonGroup/RadioButtonGroup.js +28 -13
  40. package/lib/Resource/resourceComponents.js +17 -9
  41. package/lib/TreeStructure/FolderItem.d.ts +3 -2
  42. package/lib/TreeStructure/FolderItem.js +38 -28
  43. package/lib/TreeStructure/FolderItems.d.ts +1 -1
  44. package/lib/TreeStructure/FolderItems.js +8 -5
  45. package/lib/TreeStructure/TreeStructure.d.ts +1 -1
  46. package/lib/TreeStructure/TreeStructure.js +10 -11
  47. package/lib/TreeStructure/TreeStructure.types.d.ts +6 -3
  48. package/lib/TreeStructure/TreeStructureWrapper.js +2 -2
  49. package/lib/all.css +1 -1
  50. package/lib/index.d.ts +6 -2
  51. package/lib/index.js +7 -0
  52. package/lib/locale/messages-en.js +1 -1
  53. package/lib/locale/messages-nb.js +1 -1
  54. package/lib/locale/messages-nn.js +1 -1
  55. package/lib/locale/messages-se.js +1 -1
  56. package/lib/locale/messages-sma.js +1 -1
  57. package/package.json +13 -13
  58. package/src/Breadcrumblist/{index.tsx → index.ts} +1 -0
  59. package/src/NDLAFilm/CategorySelect.tsx +110 -23
  60. package/src/NDLAFilm/FilmMovieList.tsx +13 -11
  61. package/src/NDLAFilm/FilmMovieSearch.tsx +45 -14
  62. package/src/NDLAFilm/FilmSlideshow.tsx +186 -25
  63. package/src/NDLAFilm/MovieGrid.tsx +33 -25
  64. package/src/NDLAFilm/NavigationArrow.tsx +76 -10
  65. package/src/NDLAFilm/SlideshowIndicator.tsx +53 -11
  66. package/src/NDLAFilm/component.film-movielist.scss +0 -46
  67. package/src/NDLAFilm/filmStyles.ts +33 -0
  68. package/src/Notion/ConceptNotion.tsx +2 -1
  69. package/src/Notion/index.ts +4 -1
  70. package/src/RadioButtonGroup/RadioButtonGroup.tsx +82 -11
  71. package/src/Resource/resourceComponents.tsx +1 -3
  72. package/src/TreeStructure/FolderItem.tsx +40 -19
  73. package/src/TreeStructure/FolderItems.tsx +3 -0
  74. package/src/TreeStructure/TreeStructure.tsx +7 -11
  75. package/src/TreeStructure/TreeStructure.types.ts +7 -3
  76. package/src/TreeStructure/TreeStructureWrapper.tsx +1 -1
  77. package/src/index.ts +15 -2
  78. package/src/locale/messages-en.ts +1 -1
  79. package/src/locale/messages-nb.ts +1 -1
  80. package/src/locale/messages-nn.ts +1 -1
  81. package/src/locale/messages-se.ts +1 -1
  82. package/src/locale/messages-sma.ts +1 -1
  83. package/src/main.scss +0 -3
  84. package/src/NDLAFilm/component.film-moviesearch.scss +0 -127
  85. package/src/NDLAFilm/component.film-slideshow.scss +0 -258
  86. package/src/RadioButtonGroup/component.radio-button-group.scss +0 -67
package/lib/index.d.ts CHANGED
@@ -25,9 +25,12 @@ export { default as InfoWidget } from './InfoWidget';
25
25
  export { FrontpageInfo, FrontpageFilm, FrontpageToolbox, FrontpageMultidisciplinarySubject, FrontpageHeader, FrontpageSubjectIllustration, FrontpageSearch, FrontpageProgramMenu, } from './Frontpage';
26
26
  export { default as FactBox } from './FactBox';
27
27
  export { default as Image, ImageLink, makeSrcQueryString } from './Image';
28
+ export type { ImageCrop, ImageFocalPoint } from './Image';
29
+ export type { HeroContentType } from './Hero';
28
30
  export { SubjectMaterialHero, TasksAndActivitiesHero, AssessmentResourcesHero, SubjectHero, ExternalLearningResourcesHero, SourceMaterialHero, Hero, NdlaFilmHero, } from './Hero';
29
31
  export { Footer, EditorName, FooterText, FooterAuth } from './Footer';
30
- export { Figure, FigureCaption, FigureLicenseDialog, FigureExpandButton, FigureOpenDialogButton } from './Figure';
32
+ export { Figure, FigureCaption, FigureLicenseDialog, FigureExpandButton, FigureOpenDialogButton, FigureBylineExpandButton, } from './Figure';
33
+ export type { FigureType } from './Figure';
31
34
  export { LanguageSelector } from './LanguageSelector';
32
35
  export { LearningPathWrapper, LearningPathContent, LearningPathMenu, LearningPathSticky, LearningPathInformation, LearningPathStickySibling, LearningPathStickyPlaceholder, LearningPathLastStepNavigation, LearningPathMobileStepInfo, LearningPathMobileHeader, } from './LearningPaths';
33
36
  export { Translation, TranslationLine, TranslationBox } from './Translation';
@@ -62,7 +65,7 @@ export { default as Aside } from './Aside';
62
65
  export { default as AuthorInfo } from './AuthorInfo';
63
66
  export { default as Breadcrumb, HeaderBreadcrumb, HomeBreadcrumb, ActionBreadcrumb } from './Breadcrumb';
64
67
  export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from './Breadcrumb';
65
- export type { BreadcrumbItemProps } from './Breadcrumblist/Breadcrumblist';
68
+ export type { BreadcrumbItemProps } from './Breadcrumblist';
66
69
  export { i18nInstance, formatNestedMessages, formatMessage } from './i18n';
67
70
  export { default as ResourceGroup } from './ResourceGroup';
68
71
  export { default as LayoutItem, OneColumn, PageContainer, Content } from './Layout';
@@ -75,6 +78,7 @@ export { default as ContentCard } from './ContentCard';
75
78
  export { default as CopyParagraphButton } from './CopyParagraphButton';
76
79
  export { default as ContentPlaceholder } from './ContentPlaceholder';
77
80
  export { Notion, ConceptNotion } from './Notion';
81
+ export type { NotionVisualElementType, ConceptNotionType } from './Notion';
78
82
  export { BannerCard } from './BannerCard';
79
83
  export { VerticalNavigation, Folder, FolderInput } from './MyNdla';
80
84
  export { ListResource, BlockResource } from './Resource';
package/lib/index.js CHANGED
@@ -68,6 +68,7 @@ var _exportNames = {
68
68
  FigureLicenseDialog: true,
69
69
  FigureExpandButton: true,
70
70
  FigureOpenDialogButton: true,
71
+ FigureBylineExpandButton: true,
71
72
  LanguageSelector: true,
72
73
  LearningPathWrapper: true,
73
74
  LearningPathContent: true,
@@ -560,6 +561,12 @@ Object.defineProperty(exports, "FigureOpenDialogButton", {
560
561
  return _Figure.FigureOpenDialogButton;
561
562
  }
562
563
  });
564
+ Object.defineProperty(exports, "FigureBylineExpandButton", {
565
+ enumerable: true,
566
+ get: function get() {
567
+ return _Figure.FigureBylineExpandButton;
568
+ }
569
+ });
563
570
  Object.defineProperty(exports, "LanguageSelector", {
564
571
  enumerable: true,
565
572
  get: function get() {
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
318
318
  feide: 'This resource is accessible only to teachers who are logged in with Feide.',
319
319
  resources: 'This is not a complete course produced by NDLA, but a collection of resources we hope you will find useful.',
320
320
  subjectOutdated: 'This course is not updated to the current curriculum.',
321
- subjectBeta: 'This course is in beta.',
321
+ subjectBeta: 'This course is in beta. New resources are being added continously.',
322
322
  newVersion: 'This learning resource is not updated to the current curriculum. You can find an updated version here: ',
323
323
  frontPageBeta: 'Revised subjects have been revised in accordance with the new curriculum that will be put into effect from August 2022. Beta versions of subjects are subjects we are still working on. We hope, however, that the learning resources available by now may come in useful already.',
324
324
  frontPageExpired: 'Expired subjects are not being taught any longer, but it may still be possible to take exams in these subjects.',
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
318
318
  feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
319
319
  resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
320
320
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
321
- subjectBeta: 'Dette faget er i betaversjon.',
321
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
322
322
  newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
323
323
  frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
324
324
  frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
318
318
  feide: 'Denne ressursen er berre tilgjengeleg for lærarar som er pålogga med Feide.',
319
319
  resources: 'Dette er ikkje eit komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan vere nyttig for deg.',
320
320
  subjectOutdated: 'Dette faget følgjer ein utgått læreplan.',
321
- subjectBeta: 'Dette faget er i betaversjon.',
321
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpande.',
322
322
  newVersion: 'Denne læringsressursen er ikkje oppdatert etter gjeldande læreplan. Du finn ein oppdatert versjon her: ',
323
323
  frontPageBeta: 'Kommande fag er tilpassa ny læreplan som gjeld fra hausten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursane i betafaga kan vere nyttige allereie no.',
324
324
  frontPageExpired: 'Utgåtte fag blir det ikkje undervist i lenger, men det kan framleis vere mogleg å ta eksamen i faget som privatist.',
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
318
318
  feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
319
319
  resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
320
320
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
321
- subjectBeta: 'Dette faget er i betaversjon.',
321
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
322
322
  newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
323
323
  frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
324
324
  frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
318
318
  feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
319
319
  resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
320
320
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
321
- subjectBeta: 'Dette faget er i betaversjon.',
321
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
322
322
  newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
323
323
  frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
324
324
  frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "16.0.0",
3
+ "version": "16.2.0",
4
4
  "description": "UI component library for NDLA.",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -31,18 +31,18 @@
31
31
  "types"
32
32
  ],
33
33
  "dependencies": {
34
- "@ndla/button": "^2.4.0",
35
- "@ndla/carousel": "^1.2.9",
36
- "@ndla/core": "^2.1.1",
34
+ "@ndla/button": "^2.5.0",
35
+ "@ndla/carousel": "^1.2.10",
36
+ "@ndla/core": "^2.2.0",
37
37
  "@ndla/hooks": "^1.1.4",
38
- "@ndla/icons": "^1.8.1",
39
- "@ndla/licenses": "^5.0.0",
40
- "@ndla/modal": "^1.2.10",
41
- "@ndla/notion": "^3.1.13",
42
- "@ndla/safelink": "^2.0.4",
43
- "@ndla/switch": "^0.1.5",
44
- "@ndla/tabs": "^1.1.8",
45
- "@ndla/tooltip": "^2.1.0",
38
+ "@ndla/icons": "^1.9.0",
39
+ "@ndla/licenses": "^5.0.1",
40
+ "@ndla/modal": "^1.2.11",
41
+ "@ndla/notion": "^3.1.15",
42
+ "@ndla/safelink": "^2.0.6",
43
+ "@ndla/switch": "^0.1.6",
44
+ "@ndla/tabs": "^1.1.9",
45
+ "@ndla/tooltip": "^2.1.1",
46
46
  "@ndla/util": "^3.0.0",
47
47
  "@reach/menu-button": "^0.16.2",
48
48
  "@reach/slider": "^0.16.0",
@@ -81,5 +81,5 @@
81
81
  "publishConfig": {
82
82
  "access": "public"
83
83
  },
84
- "gitHead": "765457c9aae617b16a3a17269f4e9401f70057cc"
84
+ "gitHead": "97d16d07a6f4d4fc04c5114f01aac6c9480b0341"
85
85
  }
@@ -1,3 +1,4 @@
1
1
  import Breadcrumblist from './Breadcrumblist';
2
2
 
3
+ export type { BreadcrumbItemProps } from './Breadcrumblist';
3
4
  export default Breadcrumblist;
@@ -1,14 +1,109 @@
1
1
  import React, { Component } from 'react';
2
- import BEMHelper from 'react-bem-helper';
3
2
  import FocusTrapReact from 'focus-trap-react';
3
+ import styled from '@emotion/styled';
4
+ import { keyframes } from '@emotion/core';
5
+ import { breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
4
6
  import { ChevronDown } from '@ndla/icons/common';
5
7
  import { WithTranslation, withTranslation } from 'react-i18next';
6
8
  import { MovieResourceType } from './types';
7
9
 
8
- const classes = new BEMHelper({
9
- name: 'film-moviesearch',
10
- prefix: 'c-',
11
- });
10
+ const zoomInSelect = keyframes`
11
+ 0% {
12
+ display: none;
13
+ opacity: 0;
14
+ }
15
+ 1% {
16
+ display: flex;
17
+ transform: scale3d(0.95, 0.95, 0.95);
18
+ opacity: 0;
19
+ }
20
+ 100% {
21
+ opacity: 1;
22
+ transform: scale3d(1, 1, 1);
23
+ }
24
+ `;
25
+
26
+ const DropdownContainer = styled.div`
27
+ position: relative;
28
+ margin: 0 0 ${spacing.normal};
29
+ `;
30
+
31
+ const DropdownButton = styled.button`
32
+ border-radius: 4px;
33
+ ${fonts.sizes('22px', '26px')};
34
+ border: 0;
35
+ text-transform: uppercase;
36
+ background: ${colors.ndlaFilm.filmColorBright};
37
+ color: ${colors.white};
38
+ padding: ${spacing.small} ${spacing.nsmall};
39
+ font-weight: ${fonts.weight.semibold};
40
+ display: flex;
41
+ align-items: center;
42
+ text-align: left;
43
+ justify-content: space-between;
44
+ width: 100%;
45
+ letter-spacing: 0.05em;
46
+ ${mq.range({ from: breakpoints.tablet })} {
47
+ padding: ${spacing.small} ${spacing.normal};
48
+ }
49
+ div:first-child {
50
+ ${mq.range({ until: breakpoints.tablet })} {
51
+ display: flex;
52
+ flex-direction: column;
53
+ small {
54
+ padding: 0;
55
+ }
56
+ }
57
+ }
58
+ small {
59
+ text-transform: none;
60
+ padding-left: ${spacing.small};
61
+ font-weight: normal;
62
+ }
63
+ `;
64
+
65
+ interface DropdownWrapperProps {
66
+ offsetDropdown: number;
67
+ }
68
+
69
+ const DropdownWrapper = styled.div<DropdownWrapperProps>`
70
+ top: -${(props) => props.offsetDropdown * 52 + 13}px;
71
+ ${DropdownButton} {
72
+ border-radius: 0;
73
+ text-transform: 0;
74
+ letter-spacing: 0;
75
+ }
76
+ display: flex;
77
+ flex-direction: column;
78
+ padding: $spacing--small 0;
79
+ background: ${colors.brand.lighter};
80
+ border-radius: 4px;
81
+ left: 0;
82
+ right: 0;
83
+ animation: ${zoomInSelect} 200ms ease;
84
+ box-shadow: 0 0 30px rgba(${colors.black}, 0.6);
85
+ position: absolute;
86
+ z-index: 9999;
87
+ button,
88
+ a {
89
+ color: ${colors.text.primary};
90
+ border: 0;
91
+ outline: 0;
92
+ text-align: left;
93
+ background: transparent;
94
+ padding: ${spacing.small};
95
+ padding-left: ${spacing.normal};
96
+ font-weight: ${fonts.weight.semibold};
97
+ text-decoration: none;
98
+ box-shadow: none;
99
+ transition: background 200ms ease;
100
+ &:hover,
101
+ &:focus {
102
+ color: ${colors.brand.primary};
103
+ background: rgba(0, 0, 0, 0.2);
104
+ }
105
+ }
106
+ `;
12
107
 
13
108
  interface Props extends WithTranslation {
14
109
  resourceTypes: MovieResourceType[];
@@ -66,12 +161,11 @@ class CategorySelect extends Component<Props, State> {
66
161
  : 0;
67
162
 
68
163
  return (
69
- <div {...classes('dropdown-container', '', 'u-12/12')}>
70
- <button
164
+ <DropdownContainer className="u-12/12">
165
+ <DropdownButton
71
166
  aria-expanded={!resourceTypesIsOpen}
72
167
  aria-controls="selectCategory"
73
168
  type="button"
74
- {...classes('dropdown-button', 'toggleButton')}
75
169
  tabIndex={resourceTypesIsOpen ? -1 : 0}
76
170
  onClick={this.openSelect}>
77
171
  <div>
@@ -83,7 +177,7 @@ class CategorySelect extends Component<Props, State> {
83
177
  <div>
84
178
  <ChevronDown className="c-icon--22" />
85
179
  </div>
86
- </button>
180
+ </DropdownButton>
87
181
  {resourceTypesIsOpen && (
88
182
  <FocusTrapReact
89
183
  active={resourceTypesIsOpen}
@@ -94,32 +188,25 @@ class CategorySelect extends Component<Props, State> {
94
188
  clickOutsideDeactivates: true,
95
189
  escapeDeactivates: true,
96
190
  }}>
97
- <div id="selectCategory" {...classes('dropdown-wrapper')} style={{ top: `-${offsetDropDown * 52 + 13}px` }}>
98
- <button
99
- aria-controls={ariaControlId}
100
- type="button"
101
- onClick={() => this.onSelect()}
102
- {...classes('dropdown-button')}>
191
+ <DropdownWrapper id="selectCategory" offsetDropdown={offsetDropDown}>
192
+ <DropdownButton aria-controls={ariaControlId} type="button" onClick={() => this.onSelect()}>
103
193
  <span>{t('ndlaFilm.search.categoryFromNdla')}</span>
104
- </button>
194
+ </DropdownButton>
105
195
  {resourceTypes.map((resourceType) => (
106
- <button
196
+ <DropdownButton
107
197
  aria-controls={ariaControlId}
108
198
  type="button"
109
199
  ref={(el) => this.createRef(el, resourceType.id)}
110
200
  onClick={() => this.onSelect(resourceType.id)}
111
- {...classes('dropdown-button', {
112
- selected: !!resourceTypeSelected && resourceTypeSelected.id === resourceType.id,
113
- })}
114
201
  data-id={resourceType.id}
115
202
  key={resourceType.id}>
116
203
  <span>{resourceType.name}</span>
117
- </button>
204
+ </DropdownButton>
118
205
  ))}
119
- </div>
206
+ </DropdownWrapper>
120
207
  </FocusTrapReact>
121
208
  )}
122
- </div>
209
+ </DropdownContainer>
123
210
  );
124
211
  }
125
212
  }
@@ -6,15 +6,12 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import BEMHelper from 'react-bem-helper';
10
9
  import { Carousel, CalculatedCarouselProps } from '@ndla/carousel';
10
+ import styled from '@emotion/styled';
11
+ import { breakpoints, mq, spacing } from '@ndla/core';
11
12
  import FilmContentCard from './FilmContentCard';
12
13
  import { MovieResourceType, MovieType } from './types';
13
-
14
- const classes = new BEMHelper({
15
- name: 'film-movielist',
16
- prefix: 'c-',
17
- });
14
+ import { StyledHeadingH1 } from './filmStyles';
18
15
 
19
16
  interface Props {
20
17
  movies: MovieType[];
@@ -26,6 +23,13 @@ interface Props {
26
23
  resizeThumbnailImages?: boolean;
27
24
  }
28
25
 
26
+ const StyledSection = styled.section`
27
+ margin-bottom: ${spacing.normal};
28
+ ${mq.range({ from: breakpoints.tablet })} {
29
+ margin-bottom: ${spacing.large};
30
+ }
31
+ `;
32
+
29
33
  const FilmMovieList = ({
30
34
  name,
31
35
  movies = [],
@@ -35,10 +39,8 @@ const FilmMovieList = ({
35
39
  autoSizedProps,
36
40
  resizeThumbnailImages,
37
41
  }: Props) => (
38
- <section {...classes()}>
39
- <h1 {...classes('heading')} style={{ marginLeft: `${autoSizedProps.margin}px` }}>
40
- {name}
41
- </h1>
42
+ <StyledSection>
43
+ <StyledHeadingH1 marginLeft={autoSizedProps.margin}>{name}</StyledHeadingH1>
42
44
  <Carousel
43
45
  disableScroll={false}
44
46
  slideBackwardsLabel={slideBackwardsLabel}
@@ -56,7 +58,7 @@ const FilmMovieList = ({
56
58
  ))}
57
59
  {...autoSizedProps}
58
60
  />
59
- </section>
61
+ </StyledSection>
60
62
  );
61
63
 
62
64
  export default FilmMovieList;
@@ -7,22 +7,53 @@
7
7
  */
8
8
 
9
9
  import React from 'react';
10
- import BEMHelper from 'react-bem-helper';
11
10
  import SafeLink from '@ndla/safelink';
12
11
  import { useTranslation } from 'react-i18next';
12
+ import styled from '@emotion/styled';
13
+ import { spacing, mq, breakpoints, colors } from '@ndla/core';
13
14
  import CategorySelect from './CategorySelect';
14
15
  import { MovieResourceType } from './types';
15
16
  import { OneColumn } from '..';
17
+ import { StyledHeadingH2 } from './filmStyles';
16
18
 
17
- const classes = new BEMHelper({
18
- name: 'film-moviesearch',
19
- prefix: 'c-',
20
- });
19
+ const FilmMovieSearchContainer = styled.div`
20
+ margin: ${spacing.normal} 0 ${spacing.large};
21
+ `;
21
22
 
22
- const classesMovieList = new BEMHelper({
23
- name: 'film-movielist',
24
- prefix: 'c-',
25
- });
23
+ const TopicNavigation = styled.div`
24
+ margin: ${spacing.normal} 0;
25
+ ${mq.range({ from: breakpoints.tablet })} {
26
+ display: flex;
27
+ align-items: flex-start;
28
+ padding: 0 ${spacing.normal};
29
+ }
30
+ ul {
31
+ list-style-type: none;
32
+ list-style-image: none;
33
+ display: flex;
34
+ align-items: flex-start;
35
+ flex-wrap: wrap;
36
+ padding: 0;
37
+ margin: ${spacing.small} 0;
38
+ ${mq.range({ from: breakpoints.tablet })} {
39
+ padding-left: ${spacing.normal};
40
+ }
41
+ li {
42
+ padding: 0;
43
+ width: 100%;
44
+ ${mq.range({ from: breakpoints.tablet })} {
45
+ width: 50%;
46
+ }
47
+ a {
48
+ color: #fff;
49
+ &:hover,
50
+ &:focus {
51
+ color: ${colors.brand.light};
52
+ }
53
+ }
54
+ }
55
+ }
56
+ `;
26
57
 
27
58
  interface Props {
28
59
  topics?: { id: string; path: string; name: string }[];
@@ -41,10 +72,10 @@ const FilmMovieSearch = ({
41
72
  }: Props) => {
42
73
  const { t } = useTranslation();
43
74
  return (
44
- <div {...classes('')}>
75
+ <FilmMovieSearchContainer>
45
76
  <OneColumn>
46
- <div {...classes('topic-navigation')}>
47
- <h2 {...classesMovieList('heading', '', 'u-12/12 u-4/12@tablet')}>{t('ndlaFilm.subjectsInMovies')}:</h2>
77
+ <TopicNavigation>
78
+ <StyledHeadingH2 className="u-12/12 u-4/12@tablet">{t('ndlaFilm.subjectsInMovies')}:</StyledHeadingH2>
48
79
  <nav className="u-12/12 u-8/12@tablet">
49
80
  <ul>
50
81
  {topics.map((topic) => (
@@ -56,7 +87,7 @@ const FilmMovieSearch = ({
56
87
  ))}
57
88
  </ul>
58
89
  </nav>
59
- </div>
90
+ </TopicNavigation>
60
91
  <CategorySelect
61
92
  onChangeResourceType={onChangeResourceType}
62
93
  resourceTypes={resourceTypes}
@@ -64,7 +95,7 @@ const FilmMovieSearch = ({
64
95
  ariaControlId={ariaControlId}
65
96
  />
66
97
  </OneColumn>
67
- </div>
98
+ </FilmMovieSearchContainer>
68
99
  );
69
100
  };
70
101