@shift72/core-template 0.5.1 → 1.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. package/.github/pull_request_template.md +47 -0
  2. package/.github/workflows/node.js.yml +1 -1
  3. package/.nvmrc +1 -0
  4. package/CHANGELOG.md +65 -10
  5. package/kibble.json +4 -4
  6. package/package.json +1 -2
  7. package/scripts/translate.mjs +30 -22
  8. package/site/ar_LB.all.json +99 -23
  9. package/site/ca_ES.all.json +91 -23
  10. package/site/da_DK.all.json +90 -22
  11. package/site/de_DE.all.json +90 -22
  12. package/site/el_EL.all.json +90 -22
  13. package/site/en_AU.all.json +87 -19
  14. package/site/es_ES.all.json +92 -24
  15. package/site/es_MX.all.json +89 -21
  16. package/site/{ee_EE.all.json → et_ET.all.json} +90 -22
  17. package/site/fi_FI.all.json +93 -25
  18. package/site/fr_FR.all.json +91 -23
  19. package/site/hr_HR.all.json +93 -23
  20. package/site/hu_HU.all.json +91 -23
  21. package/site/it_IT.all.json +91 -23
  22. package/site/ja_JP.all.json +88 -22
  23. package/site/lt_LT.all.json +94 -22
  24. package/site/nl_BE.all.json +90 -22
  25. package/site/no_NO.all.json +91 -23
  26. package/site/pl_PL.all.json +95 -23
  27. package/site/plans.html.jet +17 -17
  28. package/site/pt_BR.all.json +91 -23
  29. package/site/pt_PT.all.json +91 -23
  30. package/site/ru_RU.all.json +103 -31
  31. package/site/sr_SR.all.json +95 -25
  32. package/site/static/fonts/fa-s72.woff +0 -0
  33. package/site/static/js/main.js +2 -1
  34. package/site/static/scripts/main.js.map +1 -1
  35. package/site/styles/_availability-tags.scss +63 -31
  36. package/site/styles/_awards.scss +4 -3
  37. package/site/styles/_buttons.scss +46 -29
  38. package/site/styles/_can-be-watched-button.scss +0 -20
  39. package/site/styles/_carousel.scss +126 -311
  40. package/site/styles/_collections.scss +6 -11
  41. package/site/styles/_cta-buttons.scss +262 -0
  42. package/site/styles/_forms.scss +6 -2
  43. package/site/styles/_icons.scss +182 -9
  44. package/site/styles/_legacy.scss +1 -50
  45. package/site/styles/_meta-detail.scss +80 -229
  46. package/site/styles/_meta-item-tagline.scss +33 -0
  47. package/site/styles/_meta-item.scss +0 -4
  48. package/site/styles/_meta-sub-item.scss +116 -0
  49. package/site/styles/_mixins.scss +45 -0
  50. package/site/styles/_nav.scss +6 -5
  51. package/site/styles/_pages.scss +4 -13
  52. package/site/styles/_plans.scss +24 -17
  53. package/site/styles/_poster.scss +3 -9
  54. package/site/styles/_share-modal.scss +86 -0
  55. package/site/styles/_shift72.scss +11 -0
  56. package/site/styles/_shopping.scss +0 -1
  57. package/site/styles/_skip-link.scss +1 -1
  58. package/site/styles/_tooltips.scss +7 -0
  59. package/site/styles/_variables.scss +11 -12
  60. package/site/styles/_wishlist.scss +2 -2
  61. package/site/styles/main.scss +5 -3
  62. package/site/subscriptions.html.jet +11 -0
  63. package/site/templates/application/application.jet +2 -2
  64. package/site/templates/application/google.jet +8 -13
  65. package/site/templates/application/nav/user_logged_in.jet +7 -2
  66. package/site/templates/bundle/item.jet +2 -4
  67. package/site/templates/collection/carousel/carousel.jet +27 -0
  68. package/site/templates/collection/carousel/item/image.jet +5 -0
  69. package/site/templates/collection/carousel/item/synopsis.jet +5 -0
  70. package/site/templates/collection/carousel/item/tagline.jet +7 -0
  71. package/site/templates/collection/carousel/item/title.jet +3 -0
  72. package/site/templates/collection/carousel/item.jet +41 -0
  73. package/site/templates/collection/carousel/pagination.jet +9 -0
  74. package/site/templates/collection/page_collection.jet +2 -2
  75. package/site/templates/common/cta_buttons.jet +70 -0
  76. package/site/templates/common/social-media-buttons.jet +2 -38
  77. package/site/templates/common/sponsor-image.jet +18 -0
  78. package/site/templates/film/item.jet +98 -102
  79. package/site/templates/items/sub_item.jet +22 -0
  80. package/site/templates/items/tagline.jet +2 -2
  81. package/site/templates/page/homepage.jet +2 -3
  82. package/site/templates/tv/detail.jet +39 -38
  83. package/site/tr_TR.all.json +90 -22
  84. package/site/uk_UA.all.json +95 -23
  85. package/site/zh_TW.all.json +88 -22
  86. package/site/static/fonts/FontAwesome.otf +0 -0
  87. package/site/static/fonts/fontawesome-webfont.eot +0 -0
  88. package/site/static/fonts/fontawesome-webfont.svg +0 -565
  89. package/site/static/fonts/fontawesome-webfont.ttf +0 -0
  90. package/site/static/fonts/fontawesome-webfont.woff +0 -0
  91. package/site/static/fonts/fontawesome-webfont.woff2 +0 -0
  92. package/site/styles/_homepage.scss +0 -3
  93. package/site/styles/_social-media-buttons.scss +0 -159
  94. package/site/templates/bundle/buttons.jet +0 -6
  95. package/site/templates/bundle/extras.jet +0 -13
  96. package/site/templates/collection/carousel.jet +0 -27
  97. package/site/templates/collection/carousel_item.jet +0 -66
  98. package/site/templates/items/bonus_item.jet +0 -23
  99. package/site/templates/items/featured_item.jet +0 -61
  100. package/site/templates/tv/episode.jet +0 -21
@@ -32,21 +32,13 @@ s72-plan-label {
32
32
  }
33
33
  }
34
34
 
35
- .poster {
36
- s72-plan-label {
37
- @extend .position-absolute;
38
- @extend .mx-auto;
39
- left: 5px !important;
40
- top: 5px;
35
+ s72-plan-label {
36
+ @extend .position-absolute;
37
+ @extend .mx-auto;
41
38
 
42
- z-index: 99;
43
-
44
- .s72-plan-owned {
45
- @extend .availability-bg;
46
-
47
- background-color: $button-background;
48
- }
49
- }
39
+ left: 0;
40
+ top: 0;
41
+ z-index: 99;
50
42
  }
51
43
 
52
44
  s72-pricing-buttons:not(.s72-show) {
@@ -55,10 +47,11 @@ s72-plan-label {
55
47
 
56
48
  .plan-caption-details .s72-plan-owned {
57
49
  @extend .d-inline-block;
58
- @extend .availability-bg;
59
- @extend .mb-p5;
60
50
 
61
- background-color: $button-background;
51
+ background-color: var(--primary);
52
+ border-radius: $border-radius 0 $border-radius 0;
53
+ line-height: 20px;
54
+ padding: 0 5px;
62
55
  }
63
56
 
64
57
  s72-user-anon a {
@@ -90,3 +83,17 @@ s72-plan-label {
90
83
  display: inline !important;
91
84
  }
92
85
  }
86
+
87
+ .s72-subscribe-trial-label {
88
+ display: none;
89
+ flex-grow: 1;
90
+ font-size: 12px;
91
+ text-align: center;
92
+ white-space: nowrap;
93
+ width: 1px;
94
+
95
+ @include media-breakpoint-up(md) {
96
+ display: block;
97
+ margin: 4px 0 0 18px;
98
+ }
99
+ }
@@ -6,14 +6,9 @@
6
6
  width: 100%;
7
7
  z-index: 1;
8
8
 
9
- s72-availability-status {
10
- left: $meta-item-availability-tag-margin;
11
- top: $meta-item-availability-tag-margin;
12
- }
13
-
14
- s72-availability-label {
15
- bottom: $meta-item-availability-tag-margin;
16
- left: $meta-item-availability-tag-margin;
9
+ s72-availability-status,
10
+ s72-plan-label {
11
+ color: $button-text-color;
17
12
  }
18
13
 
19
14
  .poster-overlay-top {
@@ -21,7 +16,6 @@
21
16
  @extend .justify-content-between;
22
17
  @extend .position-absolute;
23
18
 
24
- @extend .p-p5;
25
19
  @extend .mw-100;
26
20
  width: 100%;
27
21
 
@@ -0,0 +1,86 @@
1
+ s72-share-modal .fa-share-alt {
2
+ font-size: 20px;
3
+ }
4
+
5
+ .s72-share-modal {
6
+ .s72-modal-dialog {
7
+ @extend .p-0;
8
+ max-width: 320px;
9
+ top: 50%;
10
+ transform: translateY(-50%);
11
+
12
+ @include media-breakpoint-up(sm) {
13
+ top: 90px;
14
+ transform: none;
15
+ }
16
+ .s72-modal-content {
17
+ @extend .p-0;
18
+ }
19
+ }
20
+
21
+ .modal-header {
22
+ border-bottom: 1px solid rgba(var(--body-color-rgb), 0.2);
23
+ }
24
+
25
+ .modal-title {
26
+ color: var(--body-color);
27
+ word-break: break-word;
28
+ }
29
+
30
+ .s72-modal-content {
31
+ background: none;
32
+ }
33
+
34
+ .modal-content {
35
+ background-color: var(--body-bg);
36
+ border: 0;
37
+ }
38
+
39
+ ul {
40
+ @extend .mb-0;
41
+ }
42
+
43
+ li {
44
+ @extend .list-unstyled;
45
+ @extend .position-relative;
46
+ i {
47
+ @extend .position-absolute;
48
+ font-size: 20px;
49
+ left: -30px;
50
+ }
51
+ }
52
+
53
+ a {
54
+ @extend .d-flex;
55
+ @extend .align-items-center;
56
+ color: var(--body-color);
57
+ padding: 0.7rem 0;
58
+ text-decoration: inherit;
59
+ word-break: break-word;
60
+
61
+ &:hover {
62
+ color: var(--link-color-hover);
63
+ }
64
+ }
65
+
66
+ [type='button'] {
67
+ // for testers on their ipod touch
68
+ appearance: none;
69
+ }
70
+
71
+ .close {
72
+ align-self: center;
73
+ color: var(--body-color);
74
+ opacity: 1;
75
+ text-shadow: none;
76
+
77
+ &:hover {
78
+ opacity: 0.8;
79
+ }
80
+ }
81
+ }
82
+
83
+ // Close gap if wishlist button isn't present
84
+ s72-userwishlist-button:empty + .social-media-buttons {
85
+ margin-left: -10px;
86
+ }
@@ -9,10 +9,17 @@
9
9
  .s72-icon {
10
10
  margin-left: 0.3em;
11
11
  }
12
+
13
+ &:focus:not(:focus-visible) {
14
+ box-shadow: none;
15
+ }
12
16
  }
13
17
 
18
+ // exists once in <s72-searchresults/>
14
19
  .s72-btn-search {
15
20
  @extend .btn-primary-override;
21
+ font-size: 24px;
22
+ line-height: 0;
16
23
  }
17
24
 
18
25
  .s72-btn-purchase {
@@ -23,6 +30,10 @@
23
30
  @extend .btn-primary-override;
24
31
  }
25
32
 
33
+ .s72-btn-subscribe {
34
+ @extend .btn-primary-override;
35
+ }
36
+
26
37
  .s72-btn-close {
27
38
  @extend .close;
28
39
  }
@@ -17,7 +17,6 @@
17
17
  display: block;
18
18
  height: 30px;
19
19
  line-height: 30px;
20
- opacity: 1;
21
20
  position: absolute;
22
21
  right: 0;
23
22
  text-shadow: none;
@@ -16,4 +16,4 @@
16
16
  left: 0;
17
17
  position: fixed;
18
18
  }
19
- }
19
+ }
@@ -0,0 +1,7 @@
1
+ .s72-tooltip {
2
+ display: none;
3
+
4
+ @include media-breakpoint-up(lg) {
5
+ display: block;
6
+ }
7
+ }
@@ -1,11 +1,11 @@
1
- @use "sass:math";
1
+ @use 'sass:math';
2
2
 
3
3
  // This file contains any variables used by the site.
4
4
  // These variables should be reasonably generic so that overrides are placed in main.scss.
5
5
 
6
6
  :root {
7
- --primary-rgb: 53, 160, 168;
8
- --secondary-rgb: 76, 211, 221;
7
+ --primary-rgb: 0, 163, 255;
8
+ --secondary-rgb: 102, 199, 255;
9
9
  --body-color-rgb: 255, 255, 255;
10
10
  --body-bg-rgb: 15, 15, 15;
11
11
  --body-bg-accent-rgb: 25, 25, 25; // darken(body-bg, 10%) OR lighten(body-bg, 10%)
@@ -31,10 +31,8 @@
31
31
 
32
32
  --carousel-height: 560px;
33
33
  --carousel-height-sm: 560px;
34
- --carousel-height-md: 620px;
35
- --carousel-caption-top: 125px;
36
- --carousel-caption-top-xs: 150px;
37
- --carousel-caption-top-md: 175px;
34
+ --carousel-height-lg: 620px;
35
+ --carousel-bottom-gradient-height: 220px; // Increase this to 800px for light theme.
38
36
 
39
37
  --page-padding-top: 120px;
40
38
  --page-padding-top-md: 120px;
@@ -98,6 +96,8 @@ $spacers: (
98
96
  // 7.5px
99
97
  '1': $spacer,
100
98
  // 10px
99
+ '1p5': $spacer * 1.5,
100
+ // 15px
101
101
  '2': $spacer * 2,
102
102
  // 20px
103
103
  '2p5': $spacer * 2.5,
@@ -108,7 +108,7 @@ $spacers: (
108
108
  // 40px
109
109
  '5': $spacer * 5,
110
110
  // 50px
111
- '1rem': 1rem
111
+ '1rem': 1rem,
112
112
  );
113
113
 
114
114
  // Cookie Consent
@@ -137,8 +137,8 @@ $subnav-nav-item-active-background-color: var(--primary) !default;
137
137
  $subnav-dropdown-background: var(--body-bg-accent) !default;
138
138
 
139
139
  // Buttons
140
- $button-text-color: var(--body-color) !default;
141
- $button-text-color-hover: var(--body-color) !default;
140
+ $button-text-color: var(--body-bg) !default;
141
+ $button-text-color-hover: var(--body-bg) !default;
142
142
  $button-background: var(--primary) !default;
143
143
  $button-background-hover: var(--secondary) !default;
144
144
  $trailer-button-text-color: var(--body-color) !default;
@@ -190,11 +190,10 @@ $letterboxd-color: var(--body-color) !default;
190
190
 
191
191
  // Meta Items
192
192
  // ------------------------------------
193
- $meta-item-border-radius: 3px !default;
193
+ $meta-item-border-radius: 4px !default;
194
194
  $featured-meta-item-body-padding: 10px !default;
195
195
  $meta-item-body-color: var(--body-color) !default;
196
196
  $meta-item-tagline-classification-border-radius: $meta-item-border-radius !default;
197
- $meta-item-availability-tag-margin: 5px !default;
198
197
 
199
198
  // Posters
200
199
  // ------------------------------------
@@ -28,10 +28,10 @@
28
28
  @extend .btn;
29
29
  padding-left: 0;
30
30
 
31
-
32
31
  .s72-icon {
33
- font-size: 32px !important;
32
+ font-size: 28px !important;
34
33
  opacity: 0.8;
34
+ padding: 2px 0;
35
35
  }
36
36
  }
37
37
  }
@@ -4,10 +4,10 @@
4
4
  @import '_mixins';
5
5
  @import '_globals';
6
6
  @import '_shift72';
7
- @import 'font-awesome/scss/font-awesome';
8
7
 
9
8
  @import '_icons';
10
9
  @import '_buttons';
10
+ @import '_cta-buttons';
11
11
  @import '_pages';
12
12
  @import '_forms';
13
13
  @import '_card';
@@ -18,6 +18,7 @@
18
18
  @import '_swiper';
19
19
 
20
20
  @import '_meta-item';
21
+ @import '_meta-sub-item';
21
22
  @import '_meta-item-tagline';
22
23
  @import '_availability-tags';
23
24
 
@@ -26,7 +27,6 @@
26
27
  @import '_carousel';
27
28
  @import '_poster';
28
29
 
29
- @import '_homepage';
30
30
  @import '_meta-detail';
31
31
  @import '_footer';
32
32
 
@@ -37,7 +37,7 @@
37
37
  @import '_devices';
38
38
  @import '_gradients';
39
39
 
40
- @import '_social-media-buttons';
40
+ @import '_share-modal';
41
41
  @import '_cookie-consent';
42
42
  @import '_pin-codes';
43
43
  @import '_language-selector';
@@ -47,6 +47,8 @@
47
47
 
48
48
  @import '_awards';
49
49
 
50
+ @import '_tooltips';
51
+
50
52
  @import '_legacy';
51
53
 
52
54
  // @import local must be last in this file.
@@ -0,0 +1,11 @@
1
+ {{extends "templates/application/application.jet"}}
2
+
3
+ {{block head()}}
4
+ {{yield seo(title=i18n("usersubscriptions_page_header"), index=false)}}
5
+ {{end}}
6
+
7
+ {{block body()}}
8
+ <div class="page form-page usersubscriptions-page">
9
+ <s72-usersubscription></s72-usersubscription>
10
+ </div>
11
+ {{end}}
@@ -21,6 +21,8 @@
21
21
  <link rel="manifest" href="/manifest.json">
22
22
  <link rel="preload" href="/{{lang.DefinitionFilePath}}" as="fetch" crossorigin type="application/json">
23
23
  <link rel="preload" href="/classifications.all.json" as="fetch" crossorigin type="application/json">
24
+ <link rel="preload" href="/urlmap.json" as="fetch" crossorigin type="application/json">
25
+
24
26
  <!-- Kibble: {{version}} -->
25
27
  {{if site.SiteConfig.CoreTemplateVersion != ""}}
26
28
  <!-- Core-Template: {{site.SiteConfig.CoreTemplateVersion}} -->
@@ -65,8 +67,6 @@
65
67
  </script>
66
68
 
67
69
  <script type="text/javascript" src="/scripts/swiper.min.js"></script>
68
-
69
- {{yield googleGa4Script()}}
70
70
  </head>
71
71
  <body>
72
72
 
@@ -1,24 +1,19 @@
1
- {{block googleGa4Script(analyticsId=config("google_analytics_id"))}}
2
- {{if hasPrefix(analyticsId,"G")}}
3
- <!-- GA4 script if G tracking code is provided -->
4
- <script async src="https://www.googletagmanager.com/gtag/js?id={{analyticsId}}"></script>
5
- {{end}}
6
- {{end}}
7
-
8
1
  {{block googleScripts(tagManagerId=config("google_tag_manager_id"), analyticsId=config("google_analytics_id"))}}
9
2
  <!-- Google integration scripts -->
10
3
  <script>
11
4
  function loadGoogleTagManager() {
12
- (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
13
- new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
14
- j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
15
- 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
16
- })(window,document,'script','dataLayer','{{ tagManagerId }}')
17
- }
5
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
6
+ var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
7
+ j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
8
+ })(window,document,'script','dataLayer','{{ tagManagerId }}')}
18
9
 
19
10
  <!-- GA4 code snippet if G tracking code is provided, else use legacy UA code snippet -->
20
11
  {{if hasPrefix(analyticsId,"G")}}
21
12
  function loadGoogleAnalytics() {
13
+ (function(d, googleId){var f = d.getElementsByTagName('script')[0];var s = d.createElement('script');
14
+ s.src = 'https://www.googletagmanager.com/gtag/js?id=' + googleId;s.async = true;f.parentNode.insertBefore(s,f);
15
+ }(document,'{{analyticsId}}'));
16
+
22
17
  window.dataLayer = window.dataLayer || [];
23
18
  function gtag(){dataLayer.push(arguments);}
24
19
  gtag('js', new Date());
@@ -3,8 +3,8 @@
3
3
  <s72-dropdown class="navbar-nav-user-nav">
4
4
  <div>
5
5
  <a href="#" class="s72-btn s72-dropdown-toggle">
6
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="user-icon" width="24" height="24" x="0px" y="0px" viewBox="-241 245 24 24" xml:space="preserve">
7
- <path d="M-231,247c-5.5,0-10,4.5-10,10c0,5.5,4.5,10,10,10s10-4.5,10-10C-221,251.5-225.5,247-231,247 M-224.6,261.8c-1.4-1.7-4.9-2.3-6.4-2.3s-4.9,0.6-6.4,2.3c-1-1.3-1.6-3-1.6-4.8c0-4.4,3.6-8,8-8s8,3.6,8,8C-223,258.8-223.6,260.5-224.6,261.8M-231,251c-1.9,0-3.5,1.6-3.5,3.5s1.6,3.5,3.5,3.5s3.5-1.6,3.5-3.5S-229.1,251-231,251"/>
6
+ <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
7
+ <path d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 5C13.66 5 15 6.34 15 8C15 9.66 13.66 11 12 11C10.34 11 9 9.66 9 8C9 6.34 10.34 5 12 5ZM12 19.2C9.5 19.2 7.29 17.92 6 15.98C6.03 13.99 10 12.9 12 12.9C13.99 12.9 17.97 13.99 18 15.98C16.71 17.92 14.5 19.2 12 19.2Z"/>
8
8
  </svg>
9
9
  <s72-username class="username-mobile"></s72-username>
10
10
  </a>
@@ -26,6 +26,11 @@
26
26
  <li>
27
27
  <a class="s72-dropdown-item" href="{{ routeToPath("/devices.html") }}">{{i18n("nav_devices")}}</a>
28
28
  </li>
29
+ {{if config("account_show_plans") == "true" }}
30
+ <li>
31
+ <a class="s72-dropdown-item" href="{{ routeToPath("/subscriptions.html") }}">{{i18n("nav_subscriptions")}}</a>
32
+ </li>
33
+ {{ end }}
29
34
  <li>
30
35
  <a class="s72-dropdown-item" href="{{ routeToPath("/account.html") }}">{{i18n("nav_account")}}</a>
31
36
  </li>
@@ -4,9 +4,8 @@
4
4
  {{import "./title.jet"}}
5
5
  {{import "./tagline.jet"}}
6
6
  {{import "./synopsis.jet"}}
7
- {{import "./buttons.jet"}}
8
- {{import "./extras.jet"}}
9
7
  {{import "./list.jet"}}
8
+ {{import "../common/cta_buttons.jet"}}
10
9
 
11
10
  {{block head()}}
12
11
  {{yield seo() bundle}}
@@ -28,10 +27,9 @@
28
27
 
29
28
  {{yield bundleTagline(class="meta-detail-tagline") bundle}}
30
29
 
31
- {{yield bundleButtons(class="meta-detail-buttons", slug=bundle.Slug, title=bundle.Title, promoURL=bundle.PromoURL)}}
30
+ {{yield ctaButtons(itemType="bundle") bundle}}
32
31
 
33
32
  {{yield bundleSynopsis(class="meta-detail-synopsis", synopsis=bundle.Description)}}
34
-
35
33
  </div>
36
34
 
37
35
  {{yield bundleList(items=bundle.Items)}}
@@ -0,0 +1,27 @@
1
+ {{import "./item.jet"}}
2
+ {{import "./pagination.jet"}}
3
+
4
+ {{block carousel()}}
5
+ {{maxSlides := configInt("carousel_max_slides", 7)}}
6
+ {{if len(.Items) < maxSlides}}
7
+ {{maxSlides = len(.Items)}}
8
+ {{end}}
9
+ {{items := .Items[0:maxSlides]}}
10
+
11
+ {{if len(items) > 0}}
12
+ <s72-carousel>
13
+ <section class="page-collection page-collection-carousel" aria-label="{{i18n("wcag_aria_label_carousel")}}">
14
+ <h2 class="sr-only">{{i18n("wcag_carousel_h2")}}</h2>
15
+
16
+ <div class="s72-carousel-slides">
17
+ {{range index, item := items}}
18
+ {{yield carouselItem(item=item)}}
19
+ {{end}}
20
+ </div>
21
+
22
+ {{yield carouselPagination(items=items)}}
23
+
24
+ </section>
25
+ </s72-carousel>
26
+ {{end}}
27
+ {{end}}
@@ -0,0 +1,5 @@
1
+ {{block carouselItemImage()}}
2
+ {{if isset(.Images["Carousel"])}}
3
+ <s72-image src="{{.Images.Carousel}}" alt="{{.Title}}" class="carousel-item-image"></s72-image>
4
+ {{end}}
5
+ {{end}}
@@ -0,0 +1,5 @@
1
+ {{block carouselItemSynopsis(synopsis)}}
2
+ <div class="meta-item-synopsis">
3
+ <p>{{synopsis | stripHTML}}</p>
4
+ </div>
5
+ {{end}}
@@ -0,0 +1,7 @@
1
+ {{import "../../../items/tagline.jet"}}
2
+
3
+ {{block carouselItemTagline()}}
4
+ <div class="meta-item-tagline-and-classification">
5
+ {{yield metaItemTagline(genresLimit=1) .}}
6
+ </div>
7
+ {{end}}
@@ -0,0 +1,3 @@
1
+ {{block carouselItemTitle(title)}}
2
+ <h3>{{title}}</h3>
3
+ {{end}}
@@ -0,0 +1,41 @@
1
+ {{import "../../common/awards/carousel.jet"}}
2
+ {{import "./item/title.jet"}}
3
+ {{import "./item/tagline.jet"}}
4
+ {{import "./item/image.jet"}}
5
+ {{import "./item/synopsis.jet"}}
6
+ {{import "../../common/sponsor-image.jet"}}
7
+ {{import "../../common/cta_buttons.jet"}}
8
+
9
+ {{block carouselItem(item)}}
10
+ {{showItemContent := !isset(item["PageType"]) || item.PageType != "external"}}
11
+
12
+ <div class="s72-carousel-item" data-slug="{{item.Slug}}">
13
+ <a href="{{routeToSlug(item.Slug)}}" class="carousel-item-link" aria-label="{{item.Title}}">
14
+
15
+ {{yield carouselItemImage() item}}
16
+
17
+ {{if showItemContent}}
18
+ <div class="carousel-item-caption">
19
+ {{if item.ItemType == "film"}}
20
+ {{yield sponsor(hideLink="true") item.InnerItem}}
21
+ {{end}}
22
+ <div class="meta-item-content">
23
+ {{yield carouselItemTitle(title=item.GetTitle(i18n))}}
24
+
25
+ {{yield carouselItemTagline() item.InnerItem}}
26
+
27
+ {{if isset(item.InnerItem["Tagline"])}}
28
+ {{yield carouselItemSynopsis(synopsis=item.InnerItem.Tagline)}}
29
+ {{end}}
30
+
31
+ {{yield ctaButtons(itemType=item.ItemType, trailerRedirect=true) item.InnerItem}}
32
+
33
+ <s72-availability-label data-slug="{{item.Slug}}"></s72-availability-label>
34
+
35
+ {{yield awardsCarousel() item.InnerItem}}
36
+ </div>
37
+ </div>
38
+ {{end}}
39
+ </a>
40
+ </div>
41
+ {{end}}
@@ -0,0 +1,9 @@
1
+ {{block carouselPagination(items)}}
2
+ <div class="s72-carousel-pagination">
3
+ {{range index, item := items}}
4
+ <button class="s72-carousel-page" data-page-index="{{index}}" data-slug="{{item.Slug}}" aria-label="{{i18n("wcag_aria_label_carousel_pagination")}} {{item.Title}}">
5
+ <div class="s72-carousel-line"></div>
6
+ </button>
7
+ {{end}}
8
+ </div>
9
+ {{end}}
@@ -1,10 +1,10 @@
1
- {{import "./carousel.jet"}}
1
+ {{import "./carousel/carousel.jet"}}
2
2
  {{import "./slider.jet"}}
3
3
  {{import "./list.jet"}}
4
4
 
5
5
  {{block pageCollection(showTitle=true)}}
6
6
  {{if .Layout == "carousel"}}
7
- {{yield pageCollectionCarousel()}}
7
+ {{yield carousel()}}
8
8
  {{else if .Layout == "slider"}}
9
9
  {{yield pageCollectionSlider()}}
10
10
  {{else}}
@@ -0,0 +1,70 @@
1
+ {{import "./social-media-buttons.jet"}}
2
+
3
+ {{block ctaButtons(itemType, trailerRedirect=false)}}
4
+ {{isFilm := itemType == "film"}}
5
+ {{isSeason := itemType == "tvseason"}}
6
+ {{isEpisode := itemType == "tvepisode"}}
7
+ {{isBundle := itemType == "bundle"}}
8
+
9
+ {{slug := .Slug}}
10
+ {{trailerURL := isBundle ? .PromoURL : (isFilm || isSeason) && len(.Trailers) > 0 ? .Trailers[0].URL : ""}}
11
+
12
+ {{showPricingButtons := isFilm || isSeason || isBundle}}
13
+ {{showPlayButton := isFilm || isSeason || isEpisode}}
14
+ {{showCanBeWatchedButton := isFilm}}
15
+ {{showTrailerButton := trailerURL != ""}}
16
+ {{showWishlistButton := isFilm || isSeason || isEpisode}}
17
+ {{showShareButton := isFilm || isSeason || isEpisode || isBundle}}
18
+
19
+ {{showCtaButtons := showPricingButtons || showPlayButton || showCanBeWatchedButton || showTrailerButton || showWishlistButton || showShareButton}}
20
+ {{showExtraButtons := showTrailerButton || showWishlistButton || showShareButton}}
21
+
22
+ {{if showCtaButtons}}
23
+ <div class="cta-buttons">
24
+
25
+ {{if showPricingButtons}}
26
+ <s72-pricing-buttons data-slug="{{slug}}"></s72-pricing-buttons>
27
+ {{end}}
28
+
29
+ {{if showPlayButton}}
30
+ <s72-play-button data-slug="{{slug}}"></s72-play-button>
31
+ {{end}}
32
+
33
+ {{if showCanBeWatchedButton}}
34
+ {{dataURL := .CustomFields.GetString("can_be_watched_button_link", "")}}
35
+ {{dataLabel := .CustomFields.GetString("can_be_watched_button_text", "")}}
36
+ <can-be-watched-button data-slug="{{slug}}" data-url="{{dataURL}}" data-label="{{dataLabel}}"></can-be-watched-button>
37
+ {{end}}
38
+
39
+ {{if showExtraButtons}}
40
+ <div class="extra-buttons">
41
+
42
+ {{if showTrailerButton}}
43
+ {{if trailerRedirect}}
44
+ <div class="s72-btn-trailer" data-url="{{routeToSlug(slug)}}?autoplay">
45
+ <button class="s72-btn s72-btn-play">
46
+ <span class="s72-btn-play-icon"><s72-play-icon></s72-play-icon></span>
47
+ </button>
48
+ </div>
49
+ {{else}}
50
+ {{dataLabel := i18n("play_trailer")}}
51
+ <s72-modal-player src="{{trailerURL}}" class="s72-btn-trailer" data-slug="{{slug}}" data-label="{{dataLabel}}" autoplay="querystring"></s72-modal-player>
52
+ {{end}}
53
+ {{end}}
54
+
55
+ {{if showWishlistButton}}
56
+ <s72-userwishlist-button data-slug="{{slug}}" class="btn-wishlist"></s72-userwishlist-button>
57
+ {{end}}
58
+
59
+ {{if showShareButton}}
60
+ {{letterboxdID := isFilm ? .Refs.LetterboxdID : ""}}
61
+ {{shareURL := site.SiteConfig.SiteURL + routeToSlug(slug)}}
62
+ {{yield socialMediaButtons(url=shareURL, letterboxdID=letterboxdID)}}
63
+ {{end}}
64
+
65
+ </div>
66
+ {{end}}
67
+
68
+ </div>
69
+ {{end}}
70
+ {{end}}