@shift72/core-template 0.5.1 → 1.0.0-alpha.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 (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}}