HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/quadcode.com/src/components/blocks/main/NextGenPlatform.svelte
<script lang="ts">
  import { t } from '$lib/translations';

  import browser from '../../../assets/images/main/ng-platform/browser.svg';
  import android from '../../../assets/images/main/ng-platform/android.svg';
  import apple from '../../../assets/images/main/ng-platform/apple.svg';
  import appStore from '../../../assets/images/main/ng-platform/appStore.webp';
  import appStore2x from '../../../assets/images/main/ng-platform/appStore_2x.webp';
  import windows from '../../../assets/images/main/ng-platform/windows.svg';
  import chrome from '../../../assets/images/main/ng-platform/chrome.webp';
  import chrome2x from '../../../assets/images/main/ng-platform/chrome_2x.webp';
  import safari from '../../../assets/images/main/ng-platform/safari.webp';
  import safari2x from '../../../assets/images/main/ng-platform/safari_2x.webp';
  import edge from '../../../assets/images/main/ng-platform/edge.webp';
  import edge2x from '../../../assets/images/main/ng-platform/edge_2x.webp';
  import firefox from '../../../assets/images/main/ng-platform/firefox.webp';
  import firefox2x from '../../../assets/images/main/ng-platform/firefox_2x.webp';

  import slide1__thumb from '../../../assets/images/main/ng-platform/slide1_thumb.webp';
  import slide2__thumb from '../../../assets/images/main/ng-platform/slide2_thumb.webp';
  import slide3__thumb from '../../../assets/images/main/ng-platform/slide3_thumb.webp';
  import slide4__thumb from '../../../assets/images/main/ng-platform/slide4_thumb.webp';

  import slide1 from '../../../assets/images/main/ng-platform/slide1.webp';
  import slide21 from '../../../assets/images/main/ng-platform/slide2-1.webp';
  import slide22 from '../../../assets/images/main/ng-platform/slide2-2.webp';
  import slide3 from '../../../assets/images/main/ng-platform/slide3.webp';
  import slide4 from '../../../assets/images/main/ng-platform/slide4.webp';

  let activeIndex = 1;
  const setIndex = (index: number) => {
    activeIndex = index;
  };
</script>

<section class="ng-platform">
  <div class="container">
    <div class="ng-platform__header">
      <div class="ng-platform__left">
        <h1 class="ng-platform__title">{@html $t('Next-Generation Trading Platform')}</h1>
        <p class="ng-platform__subtitle">
          {$t('Give your traders a seamless, top-notch trading experience with our state-of-the-art platform')}
        </p>
      </div>
      <div class="ng-platform__right">
        <div class="ng-platform__right__description">
          {$t('All the popular assets your traders need')}
        </div>
        <div class="ng-platform__numbers">
          <div class="ng-platform__number">
            <span class="number">6</span>
            <span class="note">{$t('Markets')}</span>
          </div>
          <div class="ng-platform__number">
            <span class="number">700+</span>
            <span class="note">{$t('Instruments')}</span>
          </div>
          <div class="ng-platform__number">
            <span class="number">100+</span>
            <span class="note">{$t('Indicators')}</span>
          </div>
        </div>
      </div>
    </div>
    <div class="ng-platform__slider">
      <div class="ng-platform__slider__controls">
        <div class="ng-platform__slider__controls__scale-wrapper">
          <div
            role="button"
            tabindex="0"
            class="ng-platform__slider__control slide1 {activeIndex === 1 ? 'active' : ''}"
            on:click={() => setIndex(1)}
            on:keydown={() => setIndex(1)}
          >
            <img src={slide1__thumb} alt="pwa" />
            <div class="exclusive_badge">{$t('Exclusive')}</div>
            <div class="pwa_badge"><img src={browser} alt="browser-icon" /> {$t('PWA')}</div>
          </div>
          <div
            role="button"
            tabindex="0"
            class="ng-platform__slider__control slide2 {activeIndex === 2 ? 'active' : ''}"
            on:click={() => setIndex(2)}
            on:keydown={() => setIndex(2)}
          >
            <img src={slide2__thumb} alt="mobile" />
            <div class="badges">
              <div class="badge"><img src={android} alt="android-icon" /></div>
              <div class="badge"><img src={apple} alt="apple-icon" /></div>
            </div>
          </div>
          <div
            role="button"
            tabindex="0"
            class="ng-platform__slider__control slide3 {activeIndex === 3 ? 'active' : ''}"
            on:click={() => setIndex(3)}
            on:keydown={() => setIndex(3)}
          >
            <img src={slide3__thumb} alt="desktop" />
            <div class="badges">
              <div class="badge"><img src={appStore} alt="appStore-icon" /></div>
              <div class="badge"><img src={windows} alt="windows-icon" /></div>
            </div>
          </div>
          <div
            role="button"
            tabindex="0"
            class="ng-platform__slider__control slide4 {activeIndex === 4 ? 'active' : ''}"
            on:click={() => setIndex(4)}
            on:keydown={() => setIndex(4)}
          >
            <img src={slide4__thumb} alt="browser" />
            <div class="badges">
              <div class="badge"><img src={chrome} alt="chrome-icon" /></div>
              <div class="badge"><img src={safari} alt="safari-icon" /></div>
              <div class="badge"><img src={edge} alt="edge-icon" /></div>
              <div class="badge"><img src={firefox} alt="firefox-icon" /></div>
            </div>
          </div>
        </div>
      </div>
      <div class="ng-platform__slider__slides">
        <div class="ng-platform__slider__slides__slide slide1 {activeIndex === 1 ? 'active' : ''}">
          <img src={slide1} alt="pwa" />
        </div>
        <div class="ng-platform__slider__slides__slide slide2 {activeIndex === 2 ? 'active' : ''}">
          <img src={slide21} alt="mobile-portrait" />
          <img src={slide22} alt="mobile-landscape" />
        </div>
        <div class="ng-platform__slider__slides__slide slide3 {activeIndex === 3 ? 'active' : ''}">
          <img src={slide3} alt="desktop" />
        </div>
        <div class="ng-platform__slider__slides__slide slide4 {activeIndex === 4 ? 'active' : ''}">
          <img src={slide4} alt="browser" />
        </div>
      </div>
      <div class="ng-platform__slider__instructions">
        <div class="ng-platform__slider__instruction slide1 {activeIndex === 1 ? 'active' : ''}">
          <div class="ng-platform__slider__instruction__title">{$t('PWA')}</div>
          <div class="ng-platform__slider__instruction__details">
            <div class="ng-platform__slider__instruction__detail">
              {$t('No need to download app')}
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={browser} alt="browser-icon" />
              {$t('Instant mobile app')}
            </div>
          </div>
        </div>
        <div class="ng-platform__slider__instruction slide2 {activeIndex === 2 ? 'active' : ''}">
          <div class="ng-platform__slider__instruction__title">{$t('Mobile apps')}</div>
          <div class="ng-platform__slider__instruction__details">
            <div class="ng-platform__slider__instruction__detail">
              {$t('Available platforms')}
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={android} alt="android-icon" />
              {$t('Android')}
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={apple} alt="apple-icon" />
              {$t('iOS')}
            </div>
          </div>
        </div>
        <div class="ng-platform__slider__instruction slide3 {activeIndex === 3 ? 'active' : ''}">
          <div class="ng-platform__slider__instruction__title">{$t('Standalone apps')}</div>
          <div class="ng-platform__slider__instruction__details">
            <div class="ng-platform__slider__instruction__detail">
              {$t('Available platforms')}
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={windows} alt="android-icon" />
              <div>
                {$t('Windows')}<br />
                <span>.msi</span>
              </div>
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={appStore2x} alt="apple-icon" />
              <div>
                {$t('MacOS')}<br />
                <span>.dmg</span>
              </div>
            </div>
          </div>
        </div>
        <div class="ng-platform__slider__instruction slide4 {activeIndex === 4 ? 'active' : ''}">
          <div class="ng-platform__slider__instruction__title">{$t('Any browser')}</div>
          <div class="ng-platform__slider__instruction__details">
            <div class="ng-platform__slider__instruction__detail">
              <img src={chrome2x} alt="chrome-icon" />
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={safari2x} alt="safari-icon" />
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={edge2x} alt="edge-icon" />
            </div>
            <div class="ng-platform__slider__instruction__detail">
              <img src={firefox2x} alt="firefox-icon" />
            </div>
            <div class="ng-platform__slider__instruction__detail">
              and<br />
              etc.
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<style lang="scss">
  @import 'src/scss/variables';
  @import 'src/scss/media';
  @import 'src/scss/mixins';

  .ng-platform {
    background: $headerDark;
    padding: 120px 56px;
    overflow-x: hidden;

    @media (max-width: 1799px) {
      padding: 120px 40px;
    }

    @media (max-width: 1365px) {
      padding: 120px 32px;
    }

    @media (max-width: 719px) {
      padding: 120px 24px;
    }

    @media (max-width: 479px) {
      padding: 88px 20px;
    }

    .container {
      @media (max-width: 1365px) {
        max-width: 1286px;
        padding: 0;
      }
    }

    &__header {
      display: flex;
      margin-bottom: 55px;

      @media (max-width: 1023px) {
        flex-direction: column;
      }

      @media (max-width: 719px) {
        margin-bottom: 43px;
      }
    }

    &__title {
      flex: 1;
      font-weight: 400;
      font-size: 64px;
      line-height: 72px;
      max-width: 77%;
      background: linear-gradient(180deg, #f9fbfc 0%, #adb1b7 100%);
      -webkit-background-clip: text;
      background-clip: text;
      -webkit-text-fill-color: transparent;
      color: transparent;
      margin-bottom: 20px;

      @media (max-width: 1365px) {
        font-size: 56px;
        line-height: 68px;
        max-width: 80%;
      }

      @media (max-width: 1023px) {
        font-size: 52px;
        line-height: 64px;
        max-width: 100%;
      }

      @media (max-width: 479px) {
        font-size: 36px;
        line-height: 44px;
      }
    }

    &__subtitle {
      color: $textSecondaryDefault;
      font-weight: 400;
      font-size: 16px;
      line-height: 24px;
      max-width: 90%;

      @media (max-width: 1365px) {
        max-width: 80%;
      }

      @media (max-width: 1023px) {
        max-width: 100%;
      }
    }

    &__left {
      width: calc(100% - 377px);

      @media (max-width: 1023px) {
        width: 100%;
      }
    }

    &__right {
      display: flex;
      flex-direction: column;
      width: 377px;
      justify-content: space-between;

      @media (max-width: 479px) {
        width: 100%;
      }

      &__description {
        color: $textPrimaryDefault;
        font-size: 16px;
        line-height: 20px;
        margin-top: 32px;
        width: 50%;

        :global(body.th) & {
          margin-bottom: 16px;
        }

        :global(body.vi) & {
          margin-bottom: 16px;
        }

        @media (max-width: 1365px) {
          margin-top: 48px;
        }

        @media (max-width: 1023px) {
          margin-top: 32px;
          font-size: 14px;
          width: 100%;
        }
      }
    }

    &__numbers {
      display: flex;
      justify-content: space-between;

      @media (max-width: 1023px) {
        margin-top: 32px;
      }
    }

    &__number {
      span {
        &.number {
          background: linear-gradient(180deg, #ff564b 0%, #ff282b 100%);
          -webkit-background-clip: text;
          background-clip: text;
          -webkit-text-fill-color: transparent;
          color: transparent;
          font-size: 40px;
          line-height: 0.93;
          font-weight: 500;
          font-family: $Suisse;
          display: block;
          height: 37px;
          margin-bottom: 4px;
        }

        &.note {
          color: $textTertiaryDefault;
          font-size: 16px;
          line-height: 20px;
          display: block;
          height: 20px;
        }
      }
    }

    &__slider {
      display: flex;
      gap: 20px;
      flex-wrap: wrap;

      &__controls {
        width: 150px;

        @media (max-width: 1365px) {
          width: 120px;
          height: 511px;
        }

        @media (max-width: 1023px) {
          width: 98px;
          height: 414px;
        }

        @media (max-width: 719px) {
          order: 2;
          width: 100%;
          height: 102px;
        }

        @media (max-width: 479px) {
          width: 100vw;
          margin: 0 -20px;
          padding: 3px 0 3px 20px;
          overflow: hidden;
          height: 106px;
        }

        &__scale-wrapper {
          display: flex;
          flex-direction: column;
          gap: 12px;
          width: 150px;
          transform-origin: top left;

          @media (max-width: 1365px) {
            transform: scale(0.8);
          }

          @media (max-width: 1023px) {
            transform: scale(0.653);
          }

          @media (max-width: 719px) {
            flex-direction: row;
            width: 636px;
            transform: scale(0.673);
          }
        }
      }

      &__control {
        display: flex;
        justify-content: center;
        position: relative;
        cursor: pointer;
        width: 100%;
        aspect-ratio: 1;
        background: #28282c;
        border-radius: 28px;
        overflow: hidden;

        &::before {
          content: '';
          border-radius: 28px;
          position: absolute;
          inset: 0;
          border: 1px solid rgba(249, 251, 252, 0.3);
          pointer-events: none;
          mix-blend-mode: soft-light;
        }

        &:after {
          position: absolute;
          content: '';
          bottom: 1px;
          border-bottom-left-radius: 28px;
          border-bottom-right-radius: 28px;
          background: linear-gradient(360deg, #161618 0%, rgba(22, 22, 24, 0) 100%);
          height: 48px;
          width: 100%;
        }

        &.active {
          outline: 3px solid #ff282b;
        }

        &.slide1 {
          & > img {
            width: 104px;
            margin-top: 16px;
          }
        }

        &.slide2 {
          & > img {
            width: 104px;
            margin-top: 16px;
          }
        }

        &.slide4 {
          & > img {
            margin: 13px 0 0 16px;
          }
        }
      }

      &__slides {
        background: #28282c;
        border-radius: 40px;
        width: calc(100% - 170px);
        height: 667px;
        overflow: hidden;

        @media (max-width: 1365px) {
          width: calc(100% - 140px);
          height: 511px;
        }

        @media (max-width: 1023px) {
          width: calc(100% - 118px);
          height: 414px;
        }

        @media (max-width: 719px) {
          order: 1;
          width: 100%;
          height: 414px;
        }

        &__slide {
          display: none;
          justify-content: center;
          position: relative;
          overflow: hidden;

          &.active {
            display: flex;
          }

          &.slide1 {
            & > img {
              margin-top: 35px;
              width: 401px;

              @media (max-width: 479px) {
                width: 301px;
              }
            }
          }

          &.slide2 {
            height: 100%;

            & > img {
              &:nth-child(1) {
                margin-top: 62px;
                width: 432px;
                left: 7%;
                position: absolute;

                @media (max-width: 1365px) {
                  left: -74px;
                  width: 368px;
                }

                @media (max-width: 1023px) {
                  margin-top: 32px;
                  left: -174px;
                }

                @media (max-width: 719px) {
                  left: -214px;
                }

                @media (max-width: 479px) {
                  width: 268px;
                  left: -154px;
                  margin-top: 32px;
                }
              }

              &:nth-child(2) {
                margin-top: 114px;
                width: 593px;
                height: 436px;
                right: 0;
                position: absolute;

                @media (max-width: 1365px) {
                  right: -124px;
                  height: 368px;
                  width: 500px;
                  margin-top: 94px;
                }

                @media (max-width: 1023px) {
                  right: -304px;
                  margin-top: 64px;
                }

                @media (max-width: 719px) {
                  right: -354px;
                  margin-top: 44px;
                }

                @media (max-width: 479px) {
                  height: 268px;
                  width: 364px;
                  right: -154px;
                  margin-top: 84px;
                }
              }
            }
          }

          &.slide3 {
            & > img {
              margin-top: 54px;
              width: 948px;

              @media (max-width: 1365px) {
                margin-top: 46px;
                width: 701px;
              }

              @media (max-width: 1023px) {
                margin-top: 39px;
                width: 493px;
              }

              @media (max-width: 719px) {
                margin-top: 35px;
                margin-left: 131px;
                width: 490px;
              }

              @media (max-width: 479px) {
                margin-left: 199px;
                margin-top: 33px;
              }
            }
          }

          &.slide4 {
            & > img {
              margin-top: 40px;
              width: 1040px;

              @media (max-width: 1365px) {
                width: 780px;
              }

              @media (max-width: 1023px) {
                width: 500px;
                margin-top: 60px;
              }

              @media (max-width: 719px) {
                width: 400px;
                margin-top: 90px;
              }

              @media (max-width: 479px) {
                width: 340px;
                margin-top: 110px;
              }
            }
          }
        }
      }

      &__instructions {
        width: calc(100% - 170px);
        margin-left: auto;
        height: 56px;

        @media (max-width: 1365px) {
          width: 100%;
        }

        @media (max-width: 719px) {
          order: 0;
          height: 116px;
          margin-bottom: 24px;
        }
      }

      &__instruction {
        height: 56px;
        display: none;
        justify-content: space-between;
        align-items: center;
        margin-top: 12px;

        @media (max-width: 719px) {
          flex-direction: column;
          align-items: flex-start;
          justify-content: flex-start;
          gap: 32px;
          height: 116px;
        }

        &.active {
          display: flex;
        }

        &__title {
          flex: 1;
          font-weight: 400;
          font-size: 36px;
          line-height: 40px;
          background: linear-gradient(180deg, #f9fbfc 0%, #adb1b7 100%);
          -webkit-background-clip: text;
          background-clip: text;
          -webkit-text-fill-color: transparent;
          color: transparent;

          @media (max-width: 1365px) {
            font-size: 32px;
            line-height: 36px;
          }

          @media (max-width: 1023px) {
            max-width: 210px;
            font-size: 28px;
            line-height: 28px;
          }

          @media (max-width: 719px) {
            max-width: 100%;
          }

          @media (max-width: 479px) {
            font-size: 22px;
            line-height: 26px;
          }
        }

        &__details {
          display: flex;
          height: 100%;
        }

        &__detail {
          font-size: 16px;
          line-height: 20px;
          height: 100%;
          display: flex;
          justify-content: center;
          align-items: center;
        }

        &.slide1 {
          .ng-platform__slider__instruction__detail {
            &:nth-child(1) {
              border-right: 1px solid #353539;
              color: #7d8387;
              width: 141px;
            }

            &:nth-child(2) {
              width: 171px;
              color: #ffffff;
              display: flex;
              gap: 12px;
              padding-left: 24px;

              img {
                width: 48px;
                height: 48px;
              }
            }
          }
        }

        &.slide2 {
          .ng-platform__slider__instruction__details {
            @media (max-width: 393px) {
              width: 100%;
            }
          }

          .ng-platform__slider__instruction__detail {
            @media (max-width: 393px) {
              flex: 1;
              width: 0;
            }

            &:nth-child(1) {
              color: #7d8387;
              width: 80px;
              padding-right: 48px;

              @media (max-width: 720px) {
                padding-right: 48px;
              }

              @media (max-width: 719px) {
                padding-right: 0;
              }
            }

            &:nth-child(2) {
              border-right: 1px solid #353539;
              width: 171px;
              color: #ffffff;
              display: flex;
              gap: 12px;
              padding-right: 24px;

              img {
                border-radius: 50%;
                backdrop-filter: blur(48px);
                background: #f9fbfc1a;
                width: 48px;
                height: 48px;
              }
            }

            &:nth-child(3) {
              color: #ffffff;
              display: flex;
              gap: 12px;
              padding: 0 24px;

              img {
                border-radius: 50%;
                backdrop-filter: blur(48px);
                background: #f9fbfc1a;
                width: 48px;
                height: 48px;
              }
            }
          }
        }

        &.slide3 {
          .ng-platform__slider__instruction__details {
            @media (max-width: 393px) {
              width: 100%;
            }
          }

          .ng-platform__slider__instruction__detail {
            @media (max-width: 1023px) {
              font-size: 14px;
            }

            @media (max-width: 393px) {
              flex: 1;
              width: 0;
            }

            &:nth-child(1) {
              color: #7d8387;
              width: 80px;
              padding-right: 48px;

              @media (max-width: 1023px) {
                padding-right: 76px;
                width: auto;
              }

              @media (max-width: 720px) {
                width: 93px;
                padding-right: 48px;
              }

              @media (max-width: 719px) {
                padding-right: 0;
              }
            }

            span {
              color: #7d8387;
            }

            img {
              border-radius: 50%;
              backdrop-filter: blur(48px);
              background: #f9fbfc1a;
              width: 48px;
              height: 48px;

              @media (max-width: 1023px) {
                width: 32px;
                height: 32px;
              }
            }

            &:nth-child(2) {
              border-right: 1px solid #353539;
              width: 171px;
              color: #ffffff;
              display: flex;
              gap: 12px;
              padding-right: 6px;

              @media (max-width: 1023px) {
                padding-right: 16px;
                width: auto;
              }

              @media (max-width: 393px) {
                padding-right: 16px;
              }
            }

            &:nth-child(3) {
              color: #ffffff;
              display: flex;
              gap: 12px;
              padding: 0 2px 0 24px;

              @media (max-width: 1023px) {
                padding: 0 7px 0 16px;
              }

              @media (max-width: 719px) {
                padding-right: 95px;
              }

              @media (max-width: 479px) {
                padding-right: 16px;
              }

              @media (max-width: 393px) {
                padding-right: 8px;
              }
            }
          }
        }

        &.slide4 {
          .ng-platform__slider__instruction__detail {
            padding-right: 24px;

            img {
              border-radius: 50%;
              width: 48px;
              height: 48px;
            }

            &:nth-child(5) {
              color: #7d8387;
              padding-right: 24px;
            }
          }
        }
      }
    }
  }

  .exclusive_badge {
    position: absolute;
    top: 14px;
    left: 14px;

    display: flex;
    justify-content: center;
    align-items: center;

    padding: 0 6px;
    height: 17px;
    background: #f9fbfc1a;
    backdrop-filter: blur(20px);
    border-radius: 6px;

    color: #6ce9a6;
    font-family: $Suisse;
    font-weight: 500;
    font-size: 10px;
    line-height: 90%;
    text-transform: uppercase;
  }

  .badges {
    position: absolute;
    bottom: 14px;
    left: 14px;
    display: flex;
    gap: 6px;

    .badge {
      backdrop-filter: blur(20px);
      background: #f9fbfc1a;
      border-radius: 50%;
      width: 20px;
      height: 20px;
      z-index: 10;

      img {
        width: 20px;
        height: 20px;
      }
    }
  }

  .pwa_badge {
    position: absolute;
    bottom: 14px;
    left: 14px;

    backdrop-filter: blur(20px);
    background: #ffffff1a;
    border-radius: 10px;
    height: 20px;
    padding: 2px 6px;
    gap: 3px;
    z-index: 10;

    display: flex;
    justify-content: center;
    align-items: center;

    color: #ffffff;
    font-family: $Suisse;
    font-weight: 500;
    font-size: 10px;
    line-height: 90%;
    text-transform: uppercase;

    & > img {
      width: 12px;
      height: 12px;
    }
  }
</style>