Redesign landing page (again) (#6486)
* Redesign landing page (again) * Move login form in small version to the right column * Display closed registrations message * Add site setting for the hero image * Fix test * Increase spacing, maximum width, change call to action section
This commit is contained in:
		
							parent
							
								
									d8bc64bb09
								
							
						
					
					
						commit
						c71aa468b5
					
				
					 38 changed files with 553 additions and 306 deletions
				
			
		| 
						 | 
				
			
			@ -16,6 +16,7 @@ module Admin
 | 
			
		|||
      show_staff_badge
 | 
			
		||||
      bootstrap_timeline_accounts
 | 
			
		||||
      thumbnail
 | 
			
		||||
      hero
 | 
			
		||||
      min_invite_role
 | 
			
		||||
      activity_api_enabled
 | 
			
		||||
      peers_api_enabled
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +35,7 @@ module Admin
 | 
			
		|||
 | 
			
		||||
    UPLOAD_SETTINGS = %w(
 | 
			
		||||
      thumbnail
 | 
			
		||||
      hero
 | 
			
		||||
    ).freeze
 | 
			
		||||
 | 
			
		||||
    def edit
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,130 @@
 | 
			
		|||
$maximum-width: 1235px;
 | 
			
		||||
$fluid-breakpoint: $maximum-width + 20px;
 | 
			
		||||
$column-breakpoint: 700px;
 | 
			
		||||
$small-breakpoint: 960px;
 | 
			
		||||
 | 
			
		||||
.container {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  max-width: $maximum-width;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
  position: relative;
 | 
			
		||||
 | 
			
		||||
  @media screen and (max-width: $fluid-breakpoint) {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    padding: 0 10px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.show-xs,
 | 
			
		||||
.show-sm {
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.show-m {
 | 
			
		||||
  display: block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media screen and (max-width: $small-breakpoint) {
 | 
			
		||||
  .hide-sm {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .show-sm {
 | 
			
		||||
    display: block !important;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
  .hide-xs {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .show-xs {
 | 
			
		||||
    display: block !important;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.row {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-wrap: wrap;
 | 
			
		||||
  margin: 0 -5px;
 | 
			
		||||
 | 
			
		||||
  @for $i from 1 through 15 {
 | 
			
		||||
    .column-#{$i} {
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      min-height: 1px;
 | 
			
		||||
      flex: 0 0 percentage($i / 15);
 | 
			
		||||
      max-width: percentage($i / 15);
 | 
			
		||||
      padding: 0 5px;
 | 
			
		||||
 | 
			
		||||
      @media screen and (max-width: $small-breakpoint) {
 | 
			
		||||
        &-sm {
 | 
			
		||||
          box-sizing: border-box;
 | 
			
		||||
          min-height: 1px;
 | 
			
		||||
          flex: 0 0 percentage($i / 15);
 | 
			
		||||
          max-width: percentage($i / 15);
 | 
			
		||||
          padding: 0 5px;
 | 
			
		||||
 | 
			
		||||
          @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
            max-width: 100%;
 | 
			
		||||
            flex: 0 0 100%;
 | 
			
		||||
            margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
            &:last-child {
 | 
			
		||||
              margin-bottom: 0;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
        max-width: 100%;
 | 
			
		||||
        flex: 0 0 100%;
 | 
			
		||||
        margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          margin-bottom: 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.column-flex {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.separator-or {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  margin: 40px 0;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
 | 
			
		||||
  &::before {
 | 
			
		||||
    content: "";
 | 
			
		||||
    display: block;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 0;
 | 
			
		||||
    border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 50%;
 | 
			
		||||
    left: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  span {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    background: $ui-base-color;
 | 
			
		||||
    font-size: 12px;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    color: $ui-primary-color;
 | 
			
		||||
    text-transform: uppercase;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    z-index: 1;
 | 
			
		||||
    padding: 0 8px;
 | 
			
		||||
    cursor: default;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.landing-page {
 | 
			
		||||
  p,
 | 
			
		||||
  li {
 | 
			
		||||
| 
						 | 
				
			
			@ -116,10 +243,14 @@
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  hr {
 | 
			
		||||
    border-color: rgba($ui-base-lighter-color, .6);
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 0;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
 | 
			
		||||
    margin: 20px 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .container {
 | 
			
		||||
  .container-alt {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    max-width: 800px;
 | 
			
		||||
| 
						 | 
				
			
			@ -152,24 +283,20 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    .mascot-container {
 | 
			
		||||
      max-width: 800px;
 | 
			
		||||
      margin: 0 auto;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      right: 0;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
  .brand {
 | 
			
		||||
    a {
 | 
			
		||||
      padding-left: 0;
 | 
			
		||||
      padding-right: 0;
 | 
			
		||||
      color: $white;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .mascot {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      bottom: -14px;
 | 
			
		||||
      width: auto;
 | 
			
		||||
      height: auto;
 | 
			
		||||
      left: 60px;
 | 
			
		||||
      z-index: 3;
 | 
			
		||||
    img {
 | 
			
		||||
      height: 32px;
 | 
			
		||||
      position: relative;
 | 
			
		||||
      top: 4px;
 | 
			
		||||
      left: -10px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -177,7 +304,7 @@
 | 
			
		|||
    line-height: 30px;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
 | 
			
		||||
    .container {
 | 
			
		||||
    .container-alt {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -203,21 +330,6 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .brand {
 | 
			
		||||
        a {
 | 
			
		||||
          padding-left: 0;
 | 
			
		||||
          padding-right: 0;
 | 
			
		||||
          color: $white;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        img {
 | 
			
		||||
          height: 32px;
 | 
			
		||||
          position: relative;
 | 
			
		||||
          top: 4px;
 | 
			
		||||
          left: -10px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      ul {
 | 
			
		||||
        list-style: none;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -243,53 +355,6 @@
 | 
			
		|||
      align-items: center;
 | 
			
		||||
      position: relative;
 | 
			
		||||
 | 
			
		||||
      .floats {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
        top: 0;
 | 
			
		||||
        left: 0;
 | 
			
		||||
 | 
			
		||||
        div {
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          transition: all 0.1s linear;
 | 
			
		||||
          animation-name: floating;
 | 
			
		||||
          animation-iteration-count: infinite;
 | 
			
		||||
          animation-direction: alternate;
 | 
			
		||||
          animation-timing-function: ease-in-out;
 | 
			
		||||
          z-index: 2;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .float-1 {
 | 
			
		||||
          width: 324px;
 | 
			
		||||
          height: 170px;
 | 
			
		||||
          right: -120px;
 | 
			
		||||
          bottom: 0;
 | 
			
		||||
          animation-duration: 3s;
 | 
			
		||||
          background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447.1875 234.375" height="170" width="324"><path fill="#{hex-color($ui-base-lighter-color)}" d="M21.69 233.366c-6.45-1.268-13.347-5.63-16.704-10.564-10.705-15.734-1.513-37.724 18.632-44.57l4.8-1.632.173-17.753c.146-14.77.515-19.063 2.2-25.55 6.736-25.944 24.46-46.032 47.766-54.137 11.913-4.143 19.558-5.366 34.178-5.47l13.828-.096V71.12c0-4.755 2.853-17.457 5.238-23.327 8.588-21.137 26.735-35.957 52.153-42.593 23.248-6.07 50.153-6.415 71.863-.923 11.14 2.82 25.686 9.957 33.857 16.615 19.335 15.756 31.82 41.05 35.183 71.275.59 5.305.672 5.435 3.11 4.926 11.833-2.474 30.4-3.132 40.065-1.42 24.388 4.32 40.568 19.076 47.214 43.058 2.16 7.8 3.953 23.894 3.59 32.237l-.24 5.498 5.156 1.317c6.392 1.633 14.55 7.098 18.003 12.062 1.435 2.062 3.305 6.597 4.156 10.078 1.428 5.84 1.43 6.8.04 12.44-1.807 7.318-5.672 13.252-10.872 16.694-8.508 5.63 3.756 5.33-211.916 5.216-108.56-.056-199.22-.464-201.47-.906z"/></svg>');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .float-2 {
 | 
			
		||||
          width: 241px;
 | 
			
		||||
          height: 100px;
 | 
			
		||||
          right: 210px;
 | 
			
		||||
          bottom: 0;
 | 
			
		||||
          animation-duration: 3.5s;
 | 
			
		||||
          animation-delay: 0.2s;
 | 
			
		||||
          background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 536.25 222.1875" height="100" width="241"><path fill="#{hex-color($ui-base-lighter-color)}" d="M42.626 221.23c-14.104-1.174-26.442-5.133-32.825-10.534-4.194-3.548-7.684-10.66-8.868-18.075-1.934-12.102.633-22.265 7.528-29.81 7.61-8.328 19.998-12.76 39.855-14.257l8.47-.638-2.08-6.223c-4.826-14.422-6.357-24.813-6.37-43.255-.012-14.923.28-18.513 2.1-25.724 2.283-9.048 8.483-23.034 13.345-30.1 14.76-21.45 43.505-38.425 70.535-41.65 30.628-3.655 64.47 12.073 89.668 41.673l5.955 6.995 2.765-4.174c1.52-2.296 5.74-6.93 9.376-10.295 18.382-17.02 43.436-20.676 73.352-10.705 12.158 4.052 21.315 9.53 29.64 17.733 12.752 12.562 18.16 25.718 18.19 44.26l.02 10.98 2.312-3.01c15.64-20.365 42.29-20.485 62.438-.28 3.644 3.653 7.558 8.593 8.697 10.976 4.895 10.24 5.932 25.688 2.486 37.046-.76 2.507-1.388 4.816-1.393 5.13-.006.316 6.845.87 15.224 1.234 53.06 2.297 76.356 12.98 81.817 37.526 3.554 15.973-3.71 28.604-19.566 34.02-4.554 1.555-17.922 1.655-234.517 1.757-126.327.06-233.497-.21-238.154-.597z"/></svg>');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .float-3 {
 | 
			
		||||
          width: 267px;
 | 
			
		||||
          height: 140px;
 | 
			
		||||
          right: 110px;
 | 
			
		||||
          top: -30px;
 | 
			
		||||
          animation-duration: 4s;
 | 
			
		||||
          animation-delay: 0.5s;
 | 
			
		||||
          background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 388.125 202.5" height="140" width="267"><path fill="#{hex-color($ui-base-lighter-color)}" d="M181.37 201.458c-17.184-1.81-36.762-8.944-49.523-18.05l-5.774-4.12-8.074 2.63c-11.468 3.738-21.382 4.962-35.815 4.422-14.79-.554-24.577-2.845-36.716-8.594-15.483-7.332-28.498-19.98-35.985-34.968C2.44 128.675-.94 108.435.9 91.356c3.362-31.234 18.197-53.698 43.63-66.074 12.803-6.23 22.384-8.55 37.655-9.122 14.433-.54 24.347.684 35.814 4.42l8.073 2.633 5.635-4.01c24.81-17.656 60.007-23.332 92.914-14.985 10.11 2.565 25.498 9.62 33.102 15.178l5.068 3.704 7.632-2.564c10.89-3.66 21.086-4.916 35.516-4.376 45.816 1.716 76.422 30.03 81.285 75.196 1.84 17.08-1.54 37.32-8.585 51.422-7.487 14.99-20.502 27.636-35.984 34.968-12.14 5.75-21.926 8.04-36.716 8.593-14.43.54-24.626-.716-35.516-4.376l-7.632-2.564-5.068 3.704c-12.844 9.387-32.714 16.488-51.545 18.42-10.607 1.09-13.916 1.08-24.81-.066z"/></svg>');
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .heading {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        z-index: 4;
 | 
			
		||||
| 
						 | 
				
			
			@ -346,18 +411,18 @@
 | 
			
		|||
    background: darken($ui-base-color, 4%);
 | 
			
		||||
    padding: 20px 0;
 | 
			
		||||
 | 
			
		||||
    .container {
 | 
			
		||||
    .container-alt {
 | 
			
		||||
      position: relative;
 | 
			
		||||
      padding-right: 280px + 15px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .information-board-sections {
 | 
			
		||||
    &__sections {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      flex-wrap: wrap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .section {
 | 
			
		||||
    &__section {
 | 
			
		||||
      flex: 1 0 0;
 | 
			
		||||
      font-family: 'mastodon-font-sans-serif', sans-serif;
 | 
			
		||||
      font-size: 16px;
 | 
			
		||||
| 
						 | 
				
			
			@ -382,6 +447,10 @@
 | 
			
		|||
        font-size: 32px;
 | 
			
		||||
        line-height: 48px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
        text-align: center;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .panel {
 | 
			
		||||
| 
						 | 
				
			
			@ -460,111 +529,282 @@
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .features {
 | 
			
		||||
    padding: 50px 0;
 | 
			
		||||
  &.alternative {
 | 
			
		||||
    padding: 10px 0;
 | 
			
		||||
 | 
			
		||||
    .container {
 | 
			
		||||
      display: flex;
 | 
			
		||||
    .brand {
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      padding: 30px 0;
 | 
			
		||||
      margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
      img {
 | 
			
		||||
        position: static;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      @media screen and (max-width: $small-breakpoint) {
 | 
			
		||||
        padding: 15px 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
        padding: 0;
 | 
			
		||||
        margin-bottom: -10px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__information,
 | 
			
		||||
  &__forms {
 | 
			
		||||
    padding: 20px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__call-to-action {
 | 
			
		||||
    margin-bottom: 10px;
 | 
			
		||||
    background: darken($ui-base-color, 4%);
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
    padding: 25px 40px;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
 | 
			
		||||
    .row {
 | 
			
		||||
      align-items: center;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #mastodon-timeline {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      -webkit-overflow-scrolling: touch;
 | 
			
		||||
      -ms-overflow-style: -ms-autohiding-scrollbar;
 | 
			
		||||
      font-family: 'mastodon-font-sans-serif', sans-serif;
 | 
			
		||||
      font-size: 13px;
 | 
			
		||||
      line-height: 18px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
    .information-board__section {
 | 
			
		||||
      padding: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__logo {
 | 
			
		||||
    margin-right: 20px;
 | 
			
		||||
 | 
			
		||||
    img {
 | 
			
		||||
      height: 50px;
 | 
			
		||||
      width: auto;
 | 
			
		||||
      mix-blend-mode: lighten;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__information {
 | 
			
		||||
    padding: 45px 40px;
 | 
			
		||||
    margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
    &:last-child {
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
      padding: 25px 20px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__information,
 | 
			
		||||
  &__forms,
 | 
			
		||||
  #mastodon-timeline {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    background: $ui-base-color;
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
    box-shadow: 0 0 6px rgba($black, 0.1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__mascot {
 | 
			
		||||
    height: 104px;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    left: -40px;
 | 
			
		||||
    bottom: 25px;
 | 
			
		||||
 | 
			
		||||
    img {
 | 
			
		||||
      height: 190px;
 | 
			
		||||
      width: auto;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__short-description {
 | 
			
		||||
    .row {
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      margin-bottom: 40px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
      .row {
 | 
			
		||||
        margin-bottom: 20px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    p a {
 | 
			
		||||
      color: $ui-secondary-color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    h1 {
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
      color: $primary-text-color;
 | 
			
		||||
      width: 330px;
 | 
			
		||||
      margin-right: 30px;
 | 
			
		||||
      flex: 0 0 auto;
 | 
			
		||||
      background: $ui-base-color;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
      border-radius: 4px;
 | 
			
		||||
      box-shadow: 0 0 6px rgba($black, 0.1);
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
 | 
			
		||||
      .column-header {
 | 
			
		||||
        color: inherit;
 | 
			
		||||
        font-family: inherit;
 | 
			
		||||
        font-size: 16px;
 | 
			
		||||
        line-height: inherit;
 | 
			
		||||
        font-weight: inherit;
 | 
			
		||||
        margin: 0;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
      }
 | 
			
		||||
      small {
 | 
			
		||||
        color: $ui-primary-color;
 | 
			
		||||
 | 
			
		||||
      .column {
 | 
			
		||||
        padding: 0;
 | 
			
		||||
        border-radius: 4px;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .scrollable {
 | 
			
		||||
        height: 400px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      p {
 | 
			
		||||
        font-size: inherit;
 | 
			
		||||
        line-height: inherit;
 | 
			
		||||
        font-weight: inherit;
 | 
			
		||||
        color: $primary-text-color;
 | 
			
		||||
        margin-bottom: 20px;
 | 
			
		||||
 | 
			
		||||
        &:last-child {
 | 
			
		||||
          margin-bottom: 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        a {
 | 
			
		||||
        span {
 | 
			
		||||
          color: $ui-secondary-color;
 | 
			
		||||
          text-decoration: none;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .about-mastodon {
 | 
			
		||||
      max-width: 675px;
 | 
			
		||||
    p:last-child {
 | 
			
		||||
      margin-bottom: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
      p {
 | 
			
		||||
        margin-bottom: 20px;
 | 
			
		||||
  &__hero {
 | 
			
		||||
    margin-bottom: 10px;
 | 
			
		||||
 | 
			
		||||
    img {
 | 
			
		||||
      display: block;
 | 
			
		||||
      margin: 0;
 | 
			
		||||
      max-width: 100%;
 | 
			
		||||
      height: auto;
 | 
			
		||||
      border-radius: 4px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__forms {
 | 
			
		||||
    height: 100%;
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $small-breakpoint) {
 | 
			
		||||
      margin-bottom: 10px;
 | 
			
		||||
      height: auto;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
      background: transparent;
 | 
			
		||||
      box-shadow: none;
 | 
			
		||||
      padding: 0 20px;
 | 
			
		||||
      margin-top: 30px;
 | 
			
		||||
      margin-bottom: 40px;
 | 
			
		||||
 | 
			
		||||
      .separator-or {
 | 
			
		||||
        span {
 | 
			
		||||
          background: darken($ui-base-color, 8%);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    hr {
 | 
			
		||||
      margin: 40px 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .button {
 | 
			
		||||
      display: block;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .subtle-hint a {
 | 
			
		||||
      text-decoration: none;
 | 
			
		||||
 | 
			
		||||
      &:hover,
 | 
			
		||||
      &:focus,
 | 
			
		||||
      &:active {
 | 
			
		||||
        text-decoration: underline;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  #mastodon-timeline {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    -webkit-overflow-scrolling: touch;
 | 
			
		||||
    -ms-overflow-style: -ms-autohiding-scrollbar;
 | 
			
		||||
    font-family: 'mastodon-font-sans-serif', sans-serif;
 | 
			
		||||
    font-size: 13px;
 | 
			
		||||
    line-height: 18px;
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
    color: $primary-text-color;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    flex: 1 1 auto;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
 | 
			
		||||
    .column-header {
 | 
			
		||||
      color: inherit;
 | 
			
		||||
      font-family: inherit;
 | 
			
		||||
      font-size: 16px;
 | 
			
		||||
      line-height: inherit;
 | 
			
		||||
      font-weight: inherit;
 | 
			
		||||
      margin: 0;
 | 
			
		||||
      padding: 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .column {
 | 
			
		||||
      padding: 0;
 | 
			
		||||
      border-radius: 4px;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .scrollable {
 | 
			
		||||
      height: 400px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: inherit;
 | 
			
		||||
      line-height: inherit;
 | 
			
		||||
      font-weight: inherit;
 | 
			
		||||
      color: $primary-text-color;
 | 
			
		||||
      margin-bottom: 20px;
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        margin-bottom: 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .features-list {
 | 
			
		||||
        margin-top: 20px;
 | 
			
		||||
      a {
 | 
			
		||||
        color: $ui-secondary-color;
 | 
			
		||||
        text-decoration: none;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        .features-list__row {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          padding: 10px 0;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
    @media screen and (max-width: $column-breakpoint) {
 | 
			
		||||
      height: 90vh;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
          &:first-child {
 | 
			
		||||
            padding-top: 0;
 | 
			
		||||
          }
 | 
			
		||||
  &__features {
 | 
			
		||||
    .features-list {
 | 
			
		||||
      margin: 40px 0 !important;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
          .visual {
 | 
			
		||||
            flex: 0 0 auto;
 | 
			
		||||
            display: flex;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            margin-left: 15px;
 | 
			
		||||
    &__action {
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
            .fa {
 | 
			
		||||
              display: block;
 | 
			
		||||
              color: $ui-primary-color;
 | 
			
		||||
              font-size: 48px;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
  .features-list {
 | 
			
		||||
    margin-top: 20px;
 | 
			
		||||
 | 
			
		||||
          .text {
 | 
			
		||||
            font-size: 16px;
 | 
			
		||||
            line-height: 30px;
 | 
			
		||||
            color: $ui-primary-color;
 | 
			
		||||
    .features-list__row {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      padding: 10px 0;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
 | 
			
		||||
            h6 {
 | 
			
		||||
              font-size: inherit;
 | 
			
		||||
              line-height: inherit;
 | 
			
		||||
              margin-bottom: 0;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
      &:first-child {
 | 
			
		||||
        padding-top: 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .visual {
 | 
			
		||||
        flex: 0 0 auto;
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        margin-left: 15px;
 | 
			
		||||
 | 
			
		||||
        .fa {
 | 
			
		||||
          display: block;
 | 
			
		||||
          color: $ui-primary-color;
 | 
			
		||||
          font-size: 48px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .text {
 | 
			
		||||
        font-size: 16px;
 | 
			
		||||
        line-height: 30px;
 | 
			
		||||
        color: $ui-primary-color;
 | 
			
		||||
 | 
			
		||||
        h6 {
 | 
			
		||||
          font-size: inherit;
 | 
			
		||||
          line-height: inherit;
 | 
			
		||||
          margin-bottom: 0;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -600,21 +840,31 @@
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &__footer {
 | 
			
		||||
    margin-top: 10px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    color: $ui-base-lighter-color;
 | 
			
		||||
 | 
			
		||||
    p {
 | 
			
		||||
      font-size: 14px;
 | 
			
		||||
 | 
			
		||||
      a {
 | 
			
		||||
        color: inherit;
 | 
			
		||||
        text-decoration: underline;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @media screen and (max-width: 840px) {
 | 
			
		||||
    .container {
 | 
			
		||||
    .container-alt {
 | 
			
		||||
      padding: 0 20px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .information-board {
 | 
			
		||||
 | 
			
		||||
      .container {
 | 
			
		||||
      .container-alt {
 | 
			
		||||
        padding-right: 20px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .section {
 | 
			
		||||
        text-align: center;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .panel {
 | 
			
		||||
        position: static;
 | 
			
		||||
        margin-top: 20px;
 | 
			
		||||
| 
						 | 
				
			
			@ -626,16 +876,6 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .header-wrapper .mascot {
 | 
			
		||||
      left: 20px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @media screen and (max-width: 689px) {
 | 
			
		||||
    .header-wrapper .mascot {
 | 
			
		||||
      display: none;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @media screen and (max-width: 675px) {
 | 
			
		||||
| 
						 | 
				
			
			@ -651,13 +891,12 @@
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .header .container,
 | 
			
		||||
    .features .container {
 | 
			
		||||
    .header .container-alt,
 | 
			
		||||
    .features .container-alt {
 | 
			
		||||
      display: block;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .header {
 | 
			
		||||
 | 
			
		||||
      .links {
 | 
			
		||||
        padding-top: 15px;
 | 
			
		||||
        background: darken($ui-base-color, 4%);
 | 
			
		||||
| 
						 | 
				
			
			@ -682,10 +921,6 @@
 | 
			
		|||
        margin-top: 30px;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
 | 
			
		||||
        .floats {
 | 
			
		||||
          display: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .heading {
 | 
			
		||||
          padding: 30px 20px;
 | 
			
		||||
          text-align: center;
 | 
			
		||||
| 
						 | 
				
			
			@ -700,16 +935,6 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .features #mastodon-timeline {
 | 
			
		||||
      height: 70vh;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      margin-bottom: 50px;
 | 
			
		||||
 | 
			
		||||
      .column {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .cta {
 | 
			
		||||
| 
						 | 
				
			
			@ -720,7 +945,7 @@
 | 
			
		|||
    .features {
 | 
			
		||||
      padding: 30px 0;
 | 
			
		||||
 | 
			
		||||
      .container {
 | 
			
		||||
      .container-alt {
 | 
			
		||||
        max-width: 820px;
 | 
			
		||||
 | 
			
		||||
        #mastodon-timeline {
 | 
			
		||||
| 
						 | 
				
			
			@ -772,7 +997,7 @@
 | 
			
		|||
      .features {
 | 
			
		||||
        padding: 10px 0;
 | 
			
		||||
 | 
			
		||||
        .container {
 | 
			
		||||
        .container-alt {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          flex-direction: column;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -808,17 +1033,3 @@
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@keyframes floating {
 | 
			
		||||
  from {
 | 
			
		||||
    transform: translate(0, 0);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  65% {
 | 
			
		||||
    transform: translate(0, 4px);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  to {
 | 
			
		||||
    transform: translate(0, -0);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,14 +40,20 @@
 | 
			
		|||
    cursor: default;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &.button-alternative {
 | 
			
		||||
  &.button-primary,
 | 
			
		||||
  &.button-alternative,
 | 
			
		||||
  &.button-secondary,
 | 
			
		||||
  &.button-alternative-2 {
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
    line-height: 36px;
 | 
			
		||||
    height: auto;
 | 
			
		||||
    color: $ui-base-color;
 | 
			
		||||
    background: $ui-primary-color;
 | 
			
		||||
    text-transform: none;
 | 
			
		||||
    padding: 4px 16px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &.button-alternative {
 | 
			
		||||
    color: $ui-base-color;
 | 
			
		||||
    background: $ui-primary-color;
 | 
			
		||||
 | 
			
		||||
    &:active,
 | 
			
		||||
    &:focus,
 | 
			
		||||
| 
						 | 
				
			
			@ -56,15 +62,20 @@
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &.button-alternative-2 {
 | 
			
		||||
    background: $ui-base-lighter-color;
 | 
			
		||||
 | 
			
		||||
    &:active,
 | 
			
		||||
    &:focus,
 | 
			
		||||
    &:hover {
 | 
			
		||||
      background-color: lighten($ui-base-lighter-color, 4%);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  &.button-secondary {
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
    line-height: 36px;
 | 
			
		||||
    height: auto;
 | 
			
		||||
    color: $ui-primary-color;
 | 
			
		||||
    text-transform: none;
 | 
			
		||||
    background: transparent;
 | 
			
		||||
    padding: 3px 15px;
 | 
			
		||||
    border-radius: 4px;
 | 
			
		||||
    border: 1px solid $ui-primary-color;
 | 
			
		||||
 | 
			
		||||
    &:active,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
.container {
 | 
			
		||||
.container-alt {
 | 
			
		||||
  width: 700px;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
  margin-top: 40px;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,4 +39,8 @@ class InstancePresenter
 | 
			
		|||
  def thumbnail
 | 
			
		||||
    @thumbnail ||= Rails.cache.fetch('site_uploads/thumbnail') { SiteUpload.find_by(var: 'thumbnail') }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def hero
 | 
			
		||||
    @hero ||= Rails.cache.fetch('site_uploads/hero') { SiteUpload.find_by(var: 'hero') }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								app/views/about/_forms.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								app/views/about/_forms.html.haml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
- if @instance_presenter.open_registrations
 | 
			
		||||
  = render 'registration'
 | 
			
		||||
- else
 | 
			
		||||
  - if @instance_presenter.closed_registrations_message.blank?
 | 
			
		||||
    %p= t('about.closed_registrations')
 | 
			
		||||
  - else
 | 
			
		||||
    = @instance_presenter.closed_registrations_message.html_safe
 | 
			
		||||
 | 
			
		||||
  = link_to t('auth.register'), 'https://joinmastodon.org', class: 'button button-primary'
 | 
			
		||||
 | 
			
		||||
.separator-or
 | 
			
		||||
  %span= t('auth.or')
 | 
			
		||||
 | 
			
		||||
= link_to t('auth.login'), new_user_session_path, class: 'button button-alternative-2 webapp-btn'
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
.container.links
 | 
			
		||||
.container-alt.links
 | 
			
		||||
  .brand
 | 
			
		||||
    = link_to root_url do
 | 
			
		||||
      = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,6 @@
 | 
			
		|||
  = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }
 | 
			
		||||
 | 
			
		||||
  .actions
 | 
			
		||||
    = f.button :button, t('auth.register'), type: :submit, class: 'button button-alternative'
 | 
			
		||||
    = f.button :button, t('auth.register'), type: :submit, class: 'button button-primary'
 | 
			
		||||
 | 
			
		||||
  %p.hint.subtle-hint=t('auth.agreement_html', rules_path: about_more_path, terms_path: terms_path)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,34 +10,34 @@
 | 
			
		|||
    .header
 | 
			
		||||
      = render 'links'
 | 
			
		||||
 | 
			
		||||
      .container.hero
 | 
			
		||||
      .container-alt.hero
 | 
			
		||||
        .heading
 | 
			
		||||
          %h3= t('about.description_headline', domain: site_hostname)
 | 
			
		||||
          %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
 | 
			
		||||
 | 
			
		||||
  .information-board
 | 
			
		||||
    .container
 | 
			
		||||
      .information-board-sections
 | 
			
		||||
        .section
 | 
			
		||||
    .container-alt
 | 
			
		||||
      .information-board__sections
 | 
			
		||||
        .information-board__section
 | 
			
		||||
          %span= t 'about.user_count_before'
 | 
			
		||||
          %strong= number_with_delimiter @instance_presenter.user_count
 | 
			
		||||
          %span= t 'about.user_count_after'
 | 
			
		||||
        .section
 | 
			
		||||
        .information-board__section
 | 
			
		||||
          %span= t 'about.status_count_before'
 | 
			
		||||
          %strong= number_with_delimiter @instance_presenter.status_count
 | 
			
		||||
          %span= t 'about.status_count_after'
 | 
			
		||||
        .section
 | 
			
		||||
        .information-board__section
 | 
			
		||||
          %span= t 'about.domain_count_before'
 | 
			
		||||
          %strong= number_with_delimiter @instance_presenter.domain_count
 | 
			
		||||
          %span= t 'about.domain_count_after'
 | 
			
		||||
      = render 'contact', contact: @instance_presenter
 | 
			
		||||
 | 
			
		||||
  .extended-description
 | 
			
		||||
    .container
 | 
			
		||||
    .container-alt
 | 
			
		||||
      = @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
 | 
			
		||||
 | 
			
		||||
  .footer-links
 | 
			
		||||
    .container
 | 
			
		||||
    .container-alt
 | 
			
		||||
      %p
 | 
			
		||||
        = link_to t('about.source_code'), @instance_presenter.source_url
 | 
			
		||||
        = " (#{@instance_presenter.version_number})"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,51 +6,74 @@
 | 
			
		|||
  = javascript_pack_tag 'about', integrity: true, crossorigin: 'anonymous'
 | 
			
		||||
  = render partial: 'shared/og'
 | 
			
		||||
 | 
			
		||||
.landing-page
 | 
			
		||||
  .header-wrapper
 | 
			
		||||
    .mascot-container
 | 
			
		||||
      = image_tag asset_pack_path('elephant-fren.png'), alt: '', role: 'presentation', class: 'mascot'
 | 
			
		||||
.landing-page.alternative
 | 
			
		||||
  .container
 | 
			
		||||
    .row
 | 
			
		||||
      .column-4.hide-sm.show-xs.show-m
 | 
			
		||||
        .landing-page__forms
 | 
			
		||||
          .brand
 | 
			
		||||
            = link_to root_url do
 | 
			
		||||
              = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
			
		||||
 | 
			
		||||
    .header
 | 
			
		||||
      = render 'links'
 | 
			
		||||
          .hide-xs
 | 
			
		||||
            = render 'forms'
 | 
			
		||||
 | 
			
		||||
      .container.hero
 | 
			
		||||
        .floats
 | 
			
		||||
          %div{ role: 'presentation', class: 'float-1' }
 | 
			
		||||
          %div{ role: 'presentation', class: 'float-2' }
 | 
			
		||||
          %div{ role: 'presentation', class: 'float-3' }
 | 
			
		||||
        .heading
 | 
			
		||||
          %h1
 | 
			
		||||
            = @instance_presenter.site_title
 | 
			
		||||
            %small= t 'about.hosted_on', domain: site_hostname
 | 
			
		||||
        - if @instance_presenter.open_registrations
 | 
			
		||||
          = render 'registration'
 | 
			
		||||
        - else
 | 
			
		||||
          .closed-registrations-message
 | 
			
		||||
            %div
 | 
			
		||||
              - if @instance_presenter.closed_registrations_message.blank?
 | 
			
		||||
                %p= t('about.closed_registrations')
 | 
			
		||||
              - else
 | 
			
		||||
                = @instance_presenter.closed_registrations_message.html_safe
 | 
			
		||||
            = link_to t('about.find_another_instance'), 'https://joinmastodon.org/', class: 'button button-alternative button--block'
 | 
			
		||||
      .column-7.column-9-sm
 | 
			
		||||
        .landing-page__hero
 | 
			
		||||
          = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title
 | 
			
		||||
 | 
			
		||||
  .about-short
 | 
			
		||||
    .container
 | 
			
		||||
      %h3= t('about.description_headline', domain: site_hostname)
 | 
			
		||||
      %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
 | 
			
		||||
        .landing-page__information
 | 
			
		||||
          .landing-page__short-description
 | 
			
		||||
            .row
 | 
			
		||||
              .landing-page__logo.hide-xs
 | 
			
		||||
                = image_tag asset_pack_path('logo_transparent.svg'), alt: 'Mastodon'
 | 
			
		||||
 | 
			
		||||
  .features
 | 
			
		||||
    .container
 | 
			
		||||
      - if Setting.timeline_preview
 | 
			
		||||
        #mastodon-timeline{ data: { props: Oj.dump(default_props) } }
 | 
			
		||||
              %h1
 | 
			
		||||
                = @instance_presenter.site_title
 | 
			
		||||
                %small!= t 'about.hosted_on', domain: content_tag(:span, site_hostname)
 | 
			
		||||
 | 
			
		||||
      .about-mastodon
 | 
			
		||||
        %h3= t 'about.what_is_mastodon'
 | 
			
		||||
        %p= t 'about.about_mastodon_html'
 | 
			
		||||
        = link_to t('about.learn_more'), 'https://joinmastodon.org/', class: 'button button-secondary'
 | 
			
		||||
        = render 'features'
 | 
			
		||||
  .footer-links
 | 
			
		||||
    .container
 | 
			
		||||
      %p
 | 
			
		||||
        = link_to t('about.source_code'), @instance_presenter.source_url
 | 
			
		||||
        = " (#{@instance_presenter.version_number})"
 | 
			
		||||
            %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
 | 
			
		||||
 | 
			
		||||
        .show-xs
 | 
			
		||||
          .landing-page__forms
 | 
			
		||||
            = render 'forms'
 | 
			
		||||
        .landing-page__call-to-action.hide-xs
 | 
			
		||||
          .row
 | 
			
		||||
            .column-5
 | 
			
		||||
              .landing-page__mascot
 | 
			
		||||
                = image_tag asset_pack_path('elephant_ui_plane.svg')
 | 
			
		||||
            .column-5
 | 
			
		||||
              .information-board__section
 | 
			
		||||
                %span= t 'about.user_count_before'
 | 
			
		||||
                %strong= number_with_delimiter @instance_presenter.user_count
 | 
			
		||||
                %span= t 'about.user_count_after'
 | 
			
		||||
            .column-5
 | 
			
		||||
              .information-board__section
 | 
			
		||||
                %span= t 'about.status_count_before'
 | 
			
		||||
                %strong= number_with_delimiter @instance_presenter.status_count
 | 
			
		||||
                %span= t 'about.status_count_after'
 | 
			
		||||
        .landing-page__information
 | 
			
		||||
          .landing-page__features
 | 
			
		||||
            %h3= t 'about.what_is_mastodon'
 | 
			
		||||
            %p= t 'about.about_mastodon_html'
 | 
			
		||||
 | 
			
		||||
            = render 'features'
 | 
			
		||||
 | 
			
		||||
            .landing-page__features__action
 | 
			
		||||
              = link_to t('about.learn_more'), 'https://joinmastodon.org/', class: 'button button-alternative'
 | 
			
		||||
 | 
			
		||||
          .landing-page__footer
 | 
			
		||||
            %p
 | 
			
		||||
              = link_to t('about.source_code'), @instance_presenter.source_url
 | 
			
		||||
              = " (#{@instance_presenter.version_number})"
 | 
			
		||||
 | 
			
		||||
      .column-4.column-6-sm.column-flex
 | 
			
		||||
        .show-sm.hide-xs
 | 
			
		||||
          .landing-page__forms
 | 
			
		||||
            .brand
 | 
			
		||||
              = link_to root_url do
 | 
			
		||||
                = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
 | 
			
		||||
 | 
			
		||||
            = render 'forms'
 | 
			
		||||
        - if Setting.timeline_preview
 | 
			
		||||
          #mastodon-timeline{ data: { props: Oj.dump(default_props) } }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,5 +7,5 @@
 | 
			
		|||
      = render 'links'
 | 
			
		||||
 | 
			
		||||
  .extended-description
 | 
			
		||||
    .container
 | 
			
		||||
    .container-alt
 | 
			
		||||
      = @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@
 | 
			
		|||
 | 
			
		||||
  .fields-group
 | 
			
		||||
    = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: t('admin.settings.thumbnail.desc_html')
 | 
			
		||||
    = f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: t('admin.settings.hero.desc_html')
 | 
			
		||||
 | 
			
		||||
  %hr/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,6 @@ ar:
 | 
			
		|||
      humane_approach_title: أسلوب يعيد الإعتبار للإنسان
 | 
			
		||||
      not_a_product_title: إنك إنسان و لست سلعة
 | 
			
		||||
      real_conversation_title: مبني لتحقيق تواصل حقيقي
 | 
			
		||||
    find_another_instance: إبحث عن مثيل خادوم آخر
 | 
			
		||||
    generic_description: "%{domain} هو سيرفر من بين سيرفرات الشبكة"
 | 
			
		||||
    hosted_on: ماستدون مُستضاف على %{domain}
 | 
			
		||||
    learn_more: تعلم المزيد
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ ca:
 | 
			
		|||
      real_conversation_title: Construït per a converses reals
 | 
			
		||||
      within_reach_body: Diverses aplicacions per a iOS, Android i altres plataformes gràcies a un ecosistema API amable amb el desenvolupador, et permet mantenir-te al dia amb els amics en qualsevol lloc..
 | 
			
		||||
      within_reach_title: Sempre a l'abast
 | 
			
		||||
    find_another_instance: Troba altres instàncies
 | 
			
		||||
    generic_description: "%{domain} és un servidor a la xarxa"
 | 
			
		||||
    hosted_on: Mastodon allotjat a %{domain}
 | 
			
		||||
    learn_more: Més informació
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ de:
 | 
			
		|||
      real_conversation_title: Für das echte Gespräch gemacht
 | 
			
		||||
      within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben dir dank unserem blühenden API-Ökosystem, dich von überall auf dem Laufenden zu halten.
 | 
			
		||||
      within_reach_title: Immer für dich da
 | 
			
		||||
    find_another_instance: Eine andere Instanz finden
 | 
			
		||||
    generic_description: "%{domain} ist ein Server im Netzwerk"
 | 
			
		||||
    hosted_on: Mastodon, beherbergt auf %{domain}
 | 
			
		||||
    learn_more: Mehr erfahren
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ en:
 | 
			
		|||
      real_conversation_title: Built for real conversation
 | 
			
		||||
      within_reach_body: Multiple apps for iOS, Android, and other platforms thanks to a developer-friendly API ecosystem allow you to keep up with your friends anywhere.
 | 
			
		||||
      within_reach_title: Always within reach
 | 
			
		||||
    find_another_instance: Find another instance
 | 
			
		||||
    generic_description: "%{domain} is one server in the network"
 | 
			
		||||
    hosted_on: Mastodon hosted on %{domain}
 | 
			
		||||
    learn_more: Learn more
 | 
			
		||||
| 
						 | 
				
			
			@ -274,6 +273,9 @@ en:
 | 
			
		|||
      contact_information:
 | 
			
		||||
        email: Business e-mail
 | 
			
		||||
        username: Contact username
 | 
			
		||||
      hero:
 | 
			
		||||
        desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
 | 
			
		||||
        title: Hero image
 | 
			
		||||
      peers_api_enabled:
 | 
			
		||||
        desc_html: Domain names this instance has encountered in the fediverse
 | 
			
		||||
        title: Publish list of discovered instances
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ es:
 | 
			
		|||
      real_conversation_title: Hecho para verdaderas conversaciones
 | 
			
		||||
      within_reach_body: Aplicaciones múltiples para iOS, Android, y otras plataformas gracias a un ecosistema de APIs amigable al desarrollador para permitirte estar con tus amigos donde sea.
 | 
			
		||||
      within_reach_title: Siempre al alcance
 | 
			
		||||
    find_another_instance: Busca otra instancia
 | 
			
		||||
    generic_description: "%{domain} es un servidor en la red"
 | 
			
		||||
    hosted_on: Mastodon hosteado en %{domain}
 | 
			
		||||
    learn_more: Aprende más
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ fa:
 | 
			
		|||
      real_conversation_title: برای گفتگوهای واقعی
 | 
			
		||||
      within_reach_body: اپهای متنوع برای iOS، اندروید، و سیستمهای دیگر به خاطر وجود یک اکوسیستم API دوستانه برای برنامهنویسان. از همه جا با دوستان خود ارتباط داشته باشید.
 | 
			
		||||
      within_reach_title: همیشه در دسترس
 | 
			
		||||
    find_another_instance: یافتن سرورهای دیگر
 | 
			
		||||
    generic_description: "%{domain} یک سرور روی شبکه است"
 | 
			
		||||
    hosted_on: ماستدون، میزبانیشده روی %{domain}
 | 
			
		||||
    learn_more: بیشتر بدانید
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,6 @@ fi:
 | 
			
		|||
      real_conversation_title: Rakennettu oikealle keskustelulle
 | 
			
		||||
      within_reach_body: Kehittäjäystävällisen rajapintaekosysteemin ansiosta useita appeja Androidille, iOS:lle ja muille alustoille, jotka mahdollistavat yhteydenpidon ystäviesi kanssa missä vain.
 | 
			
		||||
      within_reach_title: Aina lähellä
 | 
			
		||||
    find_another_instance: Löydä toinen instanssi
 | 
			
		||||
    learn_more: Lisätietoja
 | 
			
		||||
    other_instances: Muut palvelimet
 | 
			
		||||
    source_code: Lähdekoodi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ fr:
 | 
			
		|||
      real_conversation_title: Construit pour de vraies conversations
 | 
			
		||||
      within_reach_body: Grâce à l’existence d’un environnement API accueillant pour les développeur·se·s, de multiples applications pour iOS, Android et d’autres plateformes vous permettent de rester en contact avec vos ami·e·s où que vous soyez.
 | 
			
		||||
      within_reach_title: Toujours à portée de main
 | 
			
		||||
    find_another_instance: Trouver une autre instance
 | 
			
		||||
    generic_description: "%{domain} est seulement un serveur du réseau"
 | 
			
		||||
    hosted_on: Instance Mastodon hébergée par %{domain}
 | 
			
		||||
    learn_more: En savoir plus
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ gl:
 | 
			
		|||
      real_conversation_title: Construído para conversacións reais
 | 
			
		||||
      within_reach_body: Existen múltiples aplicativos para iOS, Android e outras plataformas grazas a un entorno API amigable para o desenvolvedor que lle permite estar ao tanto cos seus amigos en calquer lugar.
 | 
			
		||||
      within_reach_title: Sempre en contacto
 | 
			
		||||
    find_another_instance: Atope outra instancia
 | 
			
		||||
    generic_description: "%{domain} é un servidor na rede"
 | 
			
		||||
    hosted_on: Mastodon aloxado en %{domain}
 | 
			
		||||
    learn_more: Coñeza máis
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ he:
 | 
			
		|||
      real_conversation_title: בנוי לשיחות אמתיות
 | 
			
		||||
      within_reach_body: שלל אפליקציות עבור iOS, אנדרואיד ופלטפורמות אחרות שיאפשרו לך לשמור על קשר עם חברים בכל מקום, תודות למערכת מנשקי תוכנה ידידותיים למפתחים.
 | 
			
		||||
      within_reach_title: תמיד במרחק נגיעה
 | 
			
		||||
    find_another_instance: לאיתור שרת אחר
 | 
			
		||||
    generic_description: "%{domain} הוא שרת אחד בתוך הרשת"
 | 
			
		||||
    hosted_on: מסטודון שיושב בכתובת %{domain}
 | 
			
		||||
    learn_more: מידע נוסף
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ hu:
 | 
			
		|||
      real_conversation_title: Valódi beszélgetésekre tervezve
 | 
			
		||||
      within_reach_body: A fejlesztőbarát API-nak köszönhetően számos iOS, Android és egyéb platformra írt alkalmazás teszi lehetővé, hogy bármikor, bárhonnan részt vehess a társalgásban.
 | 
			
		||||
      within_reach_title: Mindig elérhetőnek lenni
 | 
			
		||||
    find_another_instance: További instanciák keresése
 | 
			
		||||
    generic_description: "%{domain} csak egy a számtalan szerver közül a föderációban"
 | 
			
		||||
    hosted_on: "%{domain} Mastodon instancia"
 | 
			
		||||
    learn_more: Tudj meg többet
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ ja:
 | 
			
		|||
      real_conversation_title: 本当のコミュニケーションのために
 | 
			
		||||
      within_reach_body: デベロッパーフレンドリーな API により実現された、iOS や Android、その他様々なプラットフォームのためのアプリでどこでも友人とやりとりできます。
 | 
			
		||||
      within_reach_title: いつでも身近に
 | 
			
		||||
    find_another_instance: 他のインスタンスを探す
 | 
			
		||||
    generic_description: "%{domain} は、Mastodon インスタンスの一つです"
 | 
			
		||||
    hosted_on: Mastodon hosted on %{domain}
 | 
			
		||||
    learn_more: もっと詳しく
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ ko:
 | 
			
		|||
      real_conversation_title: 진정한 커뮤니케이션을 위하여
 | 
			
		||||
      within_reach_body: 개발자 친화적인 API에 의해서 실현된 iOS나 Android, 그 외의 여러 Platform들 덕분에 어디서든 친구들과 자유롭게 메세지를 주고 받을 수 있습니다.
 | 
			
		||||
      within_reach_title: 언제나 유저의 곁에서
 | 
			
		||||
    find_another_instance: 다른 인스턴스 찾기
 | 
			
		||||
    generic_description: "%{domain} 은 Mastodon의 인스턴스 입니다."
 | 
			
		||||
    hosted_on: "%{domain}에서 호스팅 되는 마스토돈"
 | 
			
		||||
    learn_more: 자세히
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ nl:
 | 
			
		|||
      real_conversation_title: Voor echte gesprekken gemaakt
 | 
			
		||||
      within_reach_body: Meerdere apps voor iOS, Android en andere platformen, met dank aan het ontwikkelaarsvriendelijke API-systeem, zorgen ervoor dat je overal op de hoogte blijft.
 | 
			
		||||
      within_reach_title: Altijd binnen bereik
 | 
			
		||||
    find_another_instance: Vind een andere server
 | 
			
		||||
    generic_description: "%{domain} is een server in het Mastodonnetwerk"
 | 
			
		||||
    hosted_on: Mastodon op %{domain}
 | 
			
		||||
    learn_more: Meer leren
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@
 | 
			
		|||
      real_conversation_title: Laget for ekte samtaler
 | 
			
		||||
      within_reach_body: Takket være et utviklingsvennlig API-økosystem vil flere apper for iOS, Android og andre plattformer la deg holde kontakten med dine venner hvor som helst.
 | 
			
		||||
      within_reach_title: Alltid innen rekkevidde
 | 
			
		||||
    find_another_instance: Finn en annen instans
 | 
			
		||||
    generic_description: "%{domain} er en tjener i nettverket"
 | 
			
		||||
    hosted_on: Mastodon driftet på %{domain}
 | 
			
		||||
    learn_more: Lær mer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ oc:
 | 
			
		|||
      real_conversation_title: Fach per de conversacions vertadièras
 | 
			
		||||
      within_reach_body: Multiplas aplicacion per iOS, Android, e autras plataformas mercés a un entorn API de bon utilizar, vos permet de gardar lo contacte pertot.
 | 
			
		||||
      within_reach_title: Totjorn al costat
 | 
			
		||||
    find_another_instance: Trobar mai instàncias
 | 
			
		||||
    generic_description: "%{domain} es un dels servidors del malhum"
 | 
			
		||||
    hosted_on: Mastodon albergat sus %{domain}
 | 
			
		||||
    learn_more: Ne saber mai
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ pl:
 | 
			
		|||
      real_conversation_title: Zaprojektowany do prawdziwych rozmów
 | 
			
		||||
      within_reach_body: Wiele aplikacji dla Androida, iOS i innych platform dzięki przyjaznemu programistom API sprawia, że możesz utrzymywać kontakt ze znajomymi praktycznie wszędzie.
 | 
			
		||||
      within_reach_title: Zawsze w Twoim zasięgu
 | 
			
		||||
    find_another_instance: Znajdź inną instancję
 | 
			
		||||
    generic_description: "%{domain} jest jednym z serwerów sieci"
 | 
			
		||||
    hosted_on: Mastodon uruchomiony na %{domain}
 | 
			
		||||
    learn_more: Dowiedz się więcej
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ pt-BR:
 | 
			
		|||
      real_conversation_title: Feito para conversas reais
 | 
			
		||||
      within_reach_body: Vários apps para iOS, Android e outras plataformas graças a um ecossistema de API amigável para desenvolvedores permitem que você possa se manter atualizado sobre seus amigos de qualquer lugar.
 | 
			
		||||
      within_reach_title: Sempre ao seu alcance
 | 
			
		||||
    find_another_instance: Encontre outra instância
 | 
			
		||||
    generic_description: "%{domain} é um servidor na rede"
 | 
			
		||||
    hosted_on: Mastodon hospedado em %{domain}
 | 
			
		||||
    learn_more: Saiba mais
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ pt:
 | 
			
		|||
      real_conversation_title: Feito para conversas reais
 | 
			
		||||
      within_reach_body: Várias aplicações para iOS, Android e outras plataformas graças a um ecossistema de API amigável para desenvolvedores, permitem-te que te mantenhas em contacto com os teus amigos em qualquer lugar.
 | 
			
		||||
      within_reach_title: Sempre ao teu alcance
 | 
			
		||||
    find_another_instance: Encontra outra instância
 | 
			
		||||
    generic_description: "%{domain} é um servidor na rede"
 | 
			
		||||
    hosted_on: Mastodon em %{domain}
 | 
			
		||||
    learn_more: Saber mais
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ ru:
 | 
			
		|||
      real_conversation_title: Создан для настоящего общения
 | 
			
		||||
      within_reach_body: Различные приложения для iOS, Android и других платформ, написанные благодаря дружественной к разработчикам экосистеме API, позволят Вам держать связь с Вашими друзьями где угодно.
 | 
			
		||||
      within_reach_title: Всегда под рукой
 | 
			
		||||
    find_another_instance: Найти другой узел
 | 
			
		||||
    generic_description: "%{domain} - один из серверов сети"
 | 
			
		||||
    hosted_on: Mastodon размещен на %{domain}
 | 
			
		||||
    learn_more: Узнать больше
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ sk:
 | 
			
		|||
      real_conversation_title: Vytvorený pre reálnu konverzáciu
 | 
			
		||||
      within_reach_body: Viacero aplikácií pre iOS, Android a iné platformy, ktoré vďaka jednoduchému API ekosystému vám dovoľujú byť online so svojimi priateľmi kdekoľvek.
 | 
			
		||||
      within_reach_title: Stále v dosahu
 | 
			
		||||
    find_another_instance: Nájdi inú inštanciu
 | 
			
		||||
    generic_description: "%{domain} je jeden server v sieti"
 | 
			
		||||
    hosted_on: Mastodon hostovaný na %{domain}
 | 
			
		||||
    learn_more: Dozvedieť sa viac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ sr-Latn:
 | 
			
		|||
      real_conversation_title: Pravljen za pravi razgovor
 | 
			
		||||
      within_reach_body: Više aplikacija za iOS, Android, kao i druge platforme zahvaljujući ekosistemu dobrih API-ja će Vam omogućiti da ostanete u kontaktu sa prijateljima svuda.
 | 
			
		||||
      within_reach_title: Uvek u kontaktu
 | 
			
		||||
    find_another_instance: Nađite drugu instancu
 | 
			
		||||
    generic_description: "%{domain} je server na mreži"
 | 
			
		||||
    hosted_on: Mastodont hostovan na %{domain}
 | 
			
		||||
    learn_more: Saznajte više
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ sr:
 | 
			
		|||
      real_conversation_title: Прављен за прави разговор
 | 
			
		||||
      within_reach_body: Више апликација за iOS, Андроид, као и друге платформе захваљујући екосистему добрих API-ја ће Вам омогућити да останете у контакту са пријатељима свуда.
 | 
			
		||||
      within_reach_title: Увек у контакту
 | 
			
		||||
    find_another_instance: Нађите другу инстанцу
 | 
			
		||||
    generic_description: "%{domain} је сервер на мрежи"
 | 
			
		||||
    hosted_on: Мастодонт хостован на %{domain}
 | 
			
		||||
    learn_more: Сазнајте више
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ sv:
 | 
			
		|||
      real_conversation_title: Byggd för riktiga konversationer
 | 
			
		||||
      within_reach_body: Flera appar för iOS, Android och andra plattformar tack vare ett utvecklingsvänligt API-ekosystem gör att du kan hålla kontakten med dina vänner var som helst.
 | 
			
		||||
      within_reach_title: Alltid inom räckhåll
 | 
			
		||||
    find_another_instance: Hitta en annan instans
 | 
			
		||||
    generic_description: "%{domain} är en server i nätverket"
 | 
			
		||||
    hosted_on: Mastodon värd på %{domain}
 | 
			
		||||
    learn_more: Lär dig mer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ zh-CN:
 | 
			
		|||
      real_conversation_title: 为真正的交流而生
 | 
			
		||||
      within_reach_body: 通过一个面向开发者友好的 API 生态系统,Mastodon 让你可以随时随地通过众多 iOS、Android 以及其他平台的应用与朋友们保持联系。
 | 
			
		||||
      within_reach_title: 始终触手可及
 | 
			
		||||
    find_another_instance: 寻找另一个实例
 | 
			
		||||
    generic_description: "%{domain} 是这个庞大网络中的一台服务器"
 | 
			
		||||
    hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例
 | 
			
		||||
    learn_more: 详细了解
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,9 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
 | 
			
		|||
                                source_url: 'https://github.com/tootsuite/mastodon',
 | 
			
		||||
                                open_registrations: false,
 | 
			
		||||
                                thumbnail: nil,
 | 
			
		||||
                                hero: nil,
 | 
			
		||||
                                user_count: 0,
 | 
			
		||||
                                status_count: 0,
 | 
			
		||||
                                closed_registrations_message: 'yes')
 | 
			
		||||
    assign(:instance_presenter, instance_presenter)
 | 
			
		||||
    render
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue