Chocobozzz/PeerTube

View on GitHub
client/src/app/+video-channels/video-channels.component.scss

Summary

Maintainability
Test Coverage
@use '_variables' as *;
@use '_mixins' as *;
@use '_account-channel-page' as *;
@use '_miniature' as *;

.root {
  --myGlobalTopPadding: 60px;
  --myChannelImgMargin: 30px;
  --myFontSize: 16px;
  --myGreyChannelFontSize: 16px;
  --myGreyOwnerFontSize: 14px;
}

.section-label {
  @include section-label-responsive;
}

.links {
  @include grid-videos-miniature-margins;
}

.actor-info {
  min-width: 1px;
  width: 100%;

  > h4,
  > .actor-handle {
    @include ellipsis;
  }
}

.channel-info {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;

  background-color: pvar(--channelBackgroundColor);
  padding-top: var(--myGlobalTopPadding);
  font-size: var(--myFontSize);

  // Use the same margin as the videos grid
  @include grid-videos-miniature-margins(false, 15px);
  @include margin-bottom(3rem);
}

.channel-avatar-row {
  @include avatar-row-responsive(var(--myChannelImgMargin), var(--myGreyChannelFontSize));
}

.support-button {
  @include button-with-icon(21px, 0, -1px);
}

.channel-description {
  grid-column: 1;
  word-break: break-word;
  padding-bottom: var(--myGlobalTopPadding);
}

.show-more {
  display: none;

  @include show-more-description;
}

.channel-buttons {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;

  &.right {
    @include margin-left(3rem);
  }

  // Only used on small screen
  &.bottom {
    justify-content: center;
    display: none;

    @include margin-bottom(2rem);
  }
}

.owner-card {
  grid-column: 2;
  // Takes all the column
  grid-row: 1 / 3;
  place-self: end;

  @include margin-left(105px);
}

// Only used on mobile
.bottom-owner {
  display: none;
}

.owner-block {
  background-color: pvar(--mainBackgroundColor);
  padding: 30px;
  width: 300px;
  font-size: var(--myFontSize);

  .avatar-row {
    display: flex;
    margin-bottom: 15px;

    .actor-info {
      @include margin-left(15px);
    }

    h4 {
      font-size: 18px;
      margin: 0;

      a {
        color: pvar(--mainForegroundColor);
      }
    }

    .actor-handle {
      font-size: var(--myGreyOwnerFontSize);
      color: pvar(--greyForegroundColor);
    }
  }

  .owner-description {
    max-height: 140px;
    word-break: break-word;

    @include fade-text(120px, pvar(--mainBackgroundColor));
  }
}

.view-account.short {
  margin-top: 30px;

  @include peertube-button-link;
  @include orange-button-inverted;
}

.view-account.complete {
  display: none;
}

my-copy-button {
  @include margin-left(3px);
}

@media screen and (max-width: 1400px) {
  // Takes all the row width
  .channel-avatar-row {
    grid-column: 1 / 3;
  }

  .owner-card {
    grid-row: 2;

    @include margin-left(60px);
  }
}

@media screen and (max-width: 1100px) {
  .root {
    --myGlobalTopPadding: 45px;
    --myChannelImgMargin: 15px;
  }

  .channel-info {
    display: flex;
    flex-direction: column;
    margin-bottom: 0;
  }

  .channel-description:not(.expanded) {
    max-height: 70px;

    @include fade-text(30px, pvar(--channelBackgroundColor));
  }

  .show-more {
    display: inline-block;
  }

  .channel-buttons {
    &.right {
      display: none;
    }

    &.bottom {
      display: flex;
    }
  }

  .owner-card {
    display: none;
  }

  .bottom-owner {
    display: block;
    width: 100%;
    border-bottom: 2px solid $separator-border-color;
    padding: var(--myGlobalTopPadding) 45px;
    margin-bottom: 60px;
  }

  .owner-block {
    display: grid;
    width: 100%;
    padding: 0;

    .avatar-row {
      grid-column: 1;

      @include margin-right(30px);
    }

    .owner-description {
      grid-column: 2;
      max-height: 70px;

      @include fade-text(30px, pvar(--mainBackgroundColor));
    }

    .view-account {
      grid-column: 2;
    }
  }

  .view-account.complete {
    display: block;
    text-align: end;
    margin-top: 10px;
    color: pvar(--mainColor);
  }

  .view-account.short {
    display: none;
  }
}

@media screen and (max-width: $mobile-view) {
  .root {
    --myGlobalTopPadding: 15px;
    --myFontSize: 14px;
    --myGreyChannelFontSize: 13px;
    --myGreyOwnerFontSize: 13px;
  }

  .links {
    margin: auto !important;
    width: min-content;
  }

  .bottom-owner {
    padding: 15px;
    margin-bottom: 30px;

    .section-label {
      display: none;
    }
  }

  .owner-block {
    display: block;

    .avatar-row {
      display: flex;
      flex-direction: row-reverse;
      margin: 0;

      h4 {
        font-size: 16px;
      }

      .actor-info {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        justify-content: flex-end;
        margin-top: -5px;
      }

      .account-avatar {
        // Resized to 64px by JS component
        margin: -30px 0 0 15px;
      }
    }

    .owner-description {
      display: none;
    }
  }
}