/ src / components / ProductPageArcadeBanner.svelte
ProductPageArcadeBanner.svelte
  1  <script lang="ts">
  2      import AppleArcadeLogo from '~/components/icons/AppleArcadeLogo.svg';
  3      import { getI18n } from '~/stores/i18n';
  4  
  5      const i18n = getI18n();
  6  </script>
  7  
  8  <aside>
  9      <div class="arcade-banner">
 10          <div class="metadata-container">
 11              <div class="logo-container">
 12                  <AppleArcadeLogo />
 13              </div>
 14  
 15              <h2>
 16                  {$i18n.t('ASE.Web.AppStore.Arcade.UpsellFooter.LineOne')}
 17                  <br />
 18                  {$i18n.t('ASE.Web.AppStore.Arcade.UpsellFooter.LineTwo')}
 19                  {$i18n.t('ASE.Web.AppStore.Arcade.UpsellFooter.LineThree')}
 20              </h2>
 21  
 22              <a href="https://www.apple.com/apple-arcade/" target="_blank">
 23                  <span>
 24                      {$i18n.t(
 25                          'ASE.Web.AppStore.Arcade.UpsellFooter.CallToActionText',
 26                      )}
 27                  </span>
 28                  {$i18n.t(
 29                      'ASE.Web.AppStore.Arcade.UpsellFooter.CallToActionDisclaimerMark',
 30                  )}
 31              </a>
 32          </div>
 33      </div>
 34  </aside>
 35  
 36  <style lang="scss">
 37      @use '@amp/web-shared-styles/app/core/globalvars' as *;
 38      @use '@amp/web-shared-styles/sasskit-stylekit/ac-sasskit-config';
 39      @use 'ac-sasskit/core/locale' as *;
 40      @use 'ac-sasskit/modules/viewportcontent/core' as *;
 41      @use 'amp/stylekit/core/viewports' as *;
 42  
 43      .logo-container {
 44          width: 62px;
 45          margin-bottom: 10px;
 46          line-height: 0;
 47  
 48          @media (--range-xsmall-only) {
 49              width: 48px;
 50              margin-bottom: 8px;
 51          }
 52      }
 53  
 54      .logo-container :global(path) {
 55          color: var(--systemPrimary-onDark);
 56      }
 57  
 58      .metadata-container {
 59          display: flex;
 60          flex-direction: column;
 61          justify-content: center;
 62          width: 60%;
 63          height: 100%;
 64          padding: 0 20px;
 65  
 66          @media (--range-xsmall-only) {
 67              align-items: flex-start;
 68              justify-content: center;
 69          }
 70      }
 71  
 72      h2 {
 73          margin-bottom: 10px;
 74          font: var(--title-1-emphasized);
 75  
 76          @media (--range-xsmall-only) {
 77              margin-bottom: 8px;
 78              font: var(--title-3-emphasized);
 79          }
 80      }
 81  
 82      a {
 83          display: flex;
 84          font: var(--title-3-emphasized);
 85  
 86          @media (--range-xsmall-only) {
 87              font: var(--body-emphasized);
 88          }
 89      }
 90  
 91      a::after {
 92          content: '↗';
 93          font-weight: normal;
 94          margin-inline-start: 4px;
 95      }
 96  
 97      a:hover {
 98          text-decoration: none;
 99      }
100  
101      a:hover span {
102          text-decoration: underline;
103      }
104  
105      aside {
106          width: 100%;
107          max-width: calc(viewport-content-for(xlarge));
108          height: 152px;
109          margin: 0 auto 32px;
110          padding: 0 var(--bodyGutter);
111  
112          @media (--range-xsmall-only) {
113              max-width: 100%;
114              padding: 0;
115          }
116      }
117  
118      .arcade-banner {
119          width: 100%;
120          height: 100%;
121          color: var(--systemPrimary-onDark);
122          border-radius: var(--global-border-radius-medium);
123          background: #000;
124          background-repeat: no-repeat;
125          background-position: right;
126          background-size: contain;
127  
128          @media (prefers-color-scheme: dark) {
129              border: 1px solid var(--systemQuaternary-onDark);
130          }
131  
132          @media (--range-xsmall-only) {
133              border-radius: 0;
134              background-image: url('/assets/images/arcade/upsell/banner-692@1x_LTR.png');
135              background-size: cover;
136  
137              @include rtl {
138                  background-image: url('/assets/images/arcade/upsell/banner-692@1x_RTL.png');
139                  background-position: left;
140              }
141  
142              @media (resolution >= 192dpi) {
143                  background-image: url('/assets/images/arcade/upsell/banner-692@2x_LTR.png');
144  
145                  @include rtl {
146                      background-image: url('/assets/images/arcade/upsell/banner-692@2x_RTL.png');
147                      background-position: left;
148                  }
149              }
150          }
151  
152          @media (--range-small-only) {
153              background-image: url('/assets/images/arcade/upsell/banner-692@1x_LTR.png');
154  
155              @include rtl {
156                  background-image: url('/assets/images/arcade/upsell/banner-692@1x_RTL.png');
157                  background-position: left;
158              }
159  
160              @media (resolution >= 192dpi) {
161                  background-image: url('/assets/images/arcade/upsell/banner-692@2x_LTR.png');
162  
163                  @include rtl {
164                      background-image: url('/assets/images/arcade/upsell/banner-692@2x_RTL.png');
165                      background-position: left;
166                  }
167              }
168          }
169  
170          @media (--range-medium-up) {
171              background-image: url('/assets/images/arcade/upsell/banner-980@1x_LTR.png');
172  
173              @include rtl {
174                  background-image: url('/assets/images/arcade/upsell/banner-980@1x_RTL.png');
175                  background-position: left;
176              }
177  
178              @media (resolution >= 192dpi) {
179                  background-image: url('/assets/images/arcade/upsell/banner-980@2x_LTR.png');
180  
181                  @include rtl {
182                      background-image: url('/assets/images/arcade/upsell/banner-980@2x_RTL.png');
183                      background-position: left;
184                  }
185              }
186          }
187      }
188  </style>