* Redesign the landing page, mount public timeline on it * Adjust the standalone mounted component to the lacking of router * Adjust auth layout pages to new design * Fix tests * Standalone public timeline polling every 5 seconds * Remove now obsolete translations * Add responsive design for new landing page * Address reviews * Add floating clouds behind frontpage form * Use access token from public page when available * Fix mentions and hashtags links, cursor on status content in standalone mode * Add footer link to source code * Fix errors on pages that don't embed the component, use classnames * Fix tests * Change anonymous autoPlayGif default to false * When gif autoplay is disabled, hover to play * Add option to hide the timeline preview * Slightly improve alt layout * Add elephant friend to new frontpage * Display "back to mastodon" in place of "login" when logged in on frontpage * Change polling time to 3s
		
			
				
	
	
		
			735 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
			
		
		
	
	
			735 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			SCSS
		
	
	
	
	
	
| .about-body {
 | |
|   .wrapper {
 | |
|     max-width: 600px;
 | |
|     margin: 0 auto;
 | |
|     color: $ui-primary-color;
 | |
|     padding-top: 50px;
 | |
|     padding-bottom: 50px;
 | |
| 
 | |
|     &.thicc {
 | |
|       max-width: 800px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   h1 {
 | |
|     font: 46px/52px 'mastodon-font-sans-serif', sans-serif;
 | |
|     font-weight: 600;
 | |
|     margin-bottom: 20px;
 | |
|     color: $ui-highlight-color;
 | |
|     padding: 20px 0;
 | |
| 
 | |
|     img {
 | |
|       margin-bottom: -5px;
 | |
|       margin-right: 5px;
 | |
|       width: 46px;
 | |
|       height: 46px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   h2 {
 | |
|     font-family: 'mastodon-font-display', sans-serif;
 | |
|     font-size: 24px;
 | |
|     line-height: 28px;
 | |
|     font-weight: 400;
 | |
|     margin-bottom: 20px;
 | |
|     color: $primary-text-color;
 | |
|   }
 | |
| 
 | |
|   h3 {
 | |
|     font-family: 'mastodon-font-display', sans-serif;
 | |
|     font-size: 20px;
 | |
|     line-height: 28px;
 | |
|     font-weight: 400;
 | |
|     margin-bottom: 20px;
 | |
|     color: $ui-secondary-color;
 | |
|   }
 | |
| 
 | |
|   ul,
 | |
|   ol {
 | |
|     list-style: inherit;
 | |
|     margin-left: 20px;
 | |
| 
 | |
|     &[type='a'] {
 | |
|       list-style-type: lower-alpha;
 | |
|     }
 | |
| 
 | |
|     &[type='i'] {
 | |
|       list-style-type: lower-roman;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   li > ol,
 | |
|   li > ul {
 | |
|     margin-top: 20px;
 | |
|   }
 | |
| 
 | |
|   p,
 | |
|   li {
 | |
|     font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
 | |
|     font-weight: 400;
 | |
|     margin-bottom: 12px;
 | |
| 
 | |
|     a {
 | |
|       color: $ui-highlight-color;
 | |
|       text-decoration: underline;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   em {
 | |
|     display: inline-block;
 | |
|     padding: 7px 7px 5px;
 | |
|     margin: 0 2px;
 | |
|     background: $ui-primary-color;
 | |
|     color: $ui-base-color;
 | |
|     font: 16px/16px 'mastodon-font-sans-serif', sans-serif;
 | |
|     font-weight: 300;
 | |
|   }
 | |
| 
 | |
|   .screenshot {
 | |
|     box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
 | |
|     margin-bottom: 26px;
 | |
| 
 | |
|     img {
 | |
|       max-width: 100%;
 | |
|       height: auto;
 | |
|       display: block;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .actions {
 | |
|     overflow: hidden;
 | |
|     margin-bottom: 20px;
 | |
| 
 | |
|     .info {
 | |
|       float: right;
 | |
|       text-align: right;
 | |
|       line-height: 36px;
 | |
| 
 | |
|       a {
 | |
|         color: $ui-primary-color;
 | |
|         text-decoration: underline;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 625px) {
 | |
|     .wrapper {
 | |
|       padding: 20px;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .information-board {
 | |
|   margin: 20px 0;
 | |
|   display: flex;
 | |
|   justify-content: space-between;
 | |
|   border-top: 1px solid lighten($ui-base-color, 10%);
 | |
|   border-bottom: 1px solid lighten($ui-base-color, 10%);
 | |
|   padding-right: 14px;
 | |
| 
 | |
|   .section {
 | |
|     flex: 1 0 0;
 | |
|     padding: 14px;
 | |
|     text-align: right;
 | |
|     font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
 | |
| 
 | |
|     span,
 | |
|     strong {
 | |
|       display: block;
 | |
|     }
 | |
| 
 | |
|     span {
 | |
|       font-size: 16px;
 | |
| 
 | |
|       &:last-child {
 | |
|         color: $ui-secondary-color;
 | |
|         font-size: 14px;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     strong {
 | |
|       font-weight: 500;
 | |
|       font-size: 32px;
 | |
|       line-height: 48px;
 | |
|       color: $primary-text-color;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 500px) {
 | |
|     flex-direction: column;
 | |
| 
 | |
|     .section {
 | |
|       text-align: left;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .owner {
 | |
|   text-align: center;
 | |
| 
 | |
|   .avatar {
 | |
|     width: 80px;
 | |
|     height: 80px;
 | |
|     margin: 0 auto;
 | |
|     margin-bottom: 15px;
 | |
| 
 | |
|     img {
 | |
|       display: block;
 | |
|       width: 80px;
 | |
|       height: 80px;
 | |
|       border-radius: 48px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .name {
 | |
|     font-size: 14px;
 | |
| 
 | |
|     a {
 | |
|       display: block;
 | |
|       color: $primary-text-color;
 | |
|       text-decoration: none;
 | |
| 
 | |
|       &:hover {
 | |
|         .display_name {
 | |
|           text-decoration: underline;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     .username {
 | |
|       display: block;
 | |
|       color: $ui-primary-color;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .contact-email {
 | |
|   text-align: center;
 | |
|   margin: 40px 0;
 | |
| 
 | |
|   strong {
 | |
|     display: block;
 | |
|     color: $primary-text-color;
 | |
|     word-break: break-word;
 | |
|   }
 | |
| }
 | |
| 
 | |
| .sidebar-layout {
 | |
|   display: flex;
 | |
| 
 | |
|   .main {
 | |
|     flex: 1 1 auto;
 | |
|     padding: 14px 0;
 | |
| 
 | |
|     .panel {
 | |
|       padding-right: 14px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .sidebar {
 | |
|     border-left: 1px solid lighten($ui-base-color, 10%);
 | |
|     width: 200px;
 | |
|     flex: 0 0 auto;
 | |
|   }
 | |
| 
 | |
|   .panel {
 | |
|     .panel-header {
 | |
|       background: lighten($ui-base-color, 10%);
 | |
|       padding: 7px 14px;
 | |
|       text-transform: uppercase;
 | |
|       font-size: 12px;
 | |
|       font-weight: 500;
 | |
|     }
 | |
| 
 | |
|     .panel-body {
 | |
|       padding: 14px;
 | |
|     }
 | |
| 
 | |
|     .panel-list {
 | |
|       ul {
 | |
|         list-style: none;
 | |
|         margin: 0;
 | |
| 
 | |
|         li {
 | |
|           margin: 0;
 | |
|           font-family: inherit;
 | |
|           font-size: 13px;
 | |
|           line-height: 18px;
 | |
| 
 | |
|           a {
 | |
|             display: block;
 | |
|             padding: 7px 14px;
 | |
|             color: rgba($primary-text-color, 0.7);
 | |
|             text-decoration: none;
 | |
|             transition: all 200ms linear;
 | |
| 
 | |
|             i.fa {
 | |
|               margin-right: 5px;
 | |
|             }
 | |
| 
 | |
|             &:hover {
 | |
|               color: $primary-text-color;
 | |
|               background-color: darken($ui-base-color, 5%);
 | |
|               transition: all 100ms linear;
 | |
|             }
 | |
| 
 | |
|             &.selected {
 | |
|               color: $primary-text-color;
 | |
|               background-color: $ui-highlight-color;
 | |
| 
 | |
|               &:hover {
 | |
|                 background-color: lighten($ui-highlight-color, 5%);
 | |
|               }
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 625px) {
 | |
|     flex-direction: column;
 | |
| 
 | |
|     .sidebar {
 | |
|       border: 1px solid lighten($ui-base-color, 10%);
 | |
|       width: auto;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .features-list__row {
 | |
|   display: flex;
 | |
|   padding: 10px 0;
 | |
|   justify-content: space-between;
 | |
| 
 | |
|   &: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: lighten($ui-base-color, 26%);
 | |
| 
 | |
|     h6 {
 | |
|       font-weight: 500;
 | |
|       color: $ui-primary-color;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| .landing-page {
 | |
|   .header-wrapper {
 | |
|     padding-top: 15px;
 | |
|     background: $ui-base-color;
 | |
|     background: linear-gradient(150deg, lighten($ui-base-color, 8%), $ui-base-color);
 | |
|     position: relative;
 | |
| 
 | |
|     .mascot-container {
 | |
|       max-width: 800px;
 | |
|       margin: 0 auto;
 | |
|       position: absolute;
 | |
|       top: 0;
 | |
|       left: 0;
 | |
|       right: 0;
 | |
|       height: 100%;
 | |
|     }
 | |
| 
 | |
|     .mascot {
 | |
|       position: absolute;
 | |
|       bottom: -14px;
 | |
|       width: auto;
 | |
|       height: auto;
 | |
|       left: 60px;
 | |
|       z-index: 3;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   p,
 | |
|   li {
 | |
|     font: inherit;
 | |
|     font-weight: inherit;
 | |
|     margin-bottom: 0;
 | |
|   }
 | |
| 
 | |
|   .header {
 | |
|     line-height: 30px;
 | |
|     overflow: hidden;
 | |
| 
 | |
|     .container {
 | |
|       display: flex;
 | |
|       justify-content: space-between;
 | |
|     }
 | |
| 
 | |
|     .hero {
 | |
|       margin-top: 50px;
 | |
|       align-items: center;
 | |
|       position: relative;
 | |
| 
 | |
|       .floats {
 | |
|         position: absolute;
 | |
|         width: 100%;
 | |
|         height: 100%;
 | |
|         top: 0;
 | |
|         left: 0;
 | |
| 
 | |
|         img {
 | |
|           position: absolute;
 | |
|           transition: all 0.1s linear;
 | |
|           animation-name: floating;
 | |
|           animation-duration: 1.7s;
 | |
|           animation-iteration-count: infinite;
 | |
|           animation-direction: alternate;
 | |
|           animation-timing-function: linear;
 | |
|           z-index: 2;
 | |
|         }
 | |
| 
 | |
|         .float-1 {
 | |
|           height: 170px;
 | |
|           right: -120px;
 | |
|           bottom: 0;
 | |
|         }
 | |
| 
 | |
|         .float-2 {
 | |
|           height: 100px;
 | |
|           right: 210px;
 | |
|           bottom: 0;
 | |
|           animation-delay: 0.2s;
 | |
|         }
 | |
| 
 | |
|         .float-3 {
 | |
|           height: 140px;
 | |
|           right: 110px;
 | |
|           top: -30px;
 | |
|           animation-delay: 0.1s;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       .simple_form,
 | |
|       .closed-registrations-message {
 | |
|         background: darken($ui-base-color, 4%);
 | |
|         width: 280px;
 | |
|         padding: 15px 20px;
 | |
|         border-radius: 4px 4px 0 0;
 | |
|         line-height: initial;
 | |
|         position: relative;
 | |
|         z-index: 4;
 | |
| 
 | |
|         .actions {
 | |
|           margin-bottom: 0;
 | |
| 
 | |
|           button,
 | |
|           .button,
 | |
|           .block-button {
 | |
|             margin-bottom: 0;
 | |
|           }
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       .heading {
 | |
|         position: relative;
 | |
|         z-index: 4;
 | |
|         padding-bottom: 150px;
 | |
|       }
 | |
| 
 | |
|       .closed-registrations-message {
 | |
|         min-height: 330px;
 | |
|         display: flex;
 | |
|         flex-direction: column;
 | |
|         justify-content: space-between;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     ul {
 | |
|       list-style: none;
 | |
|       margin: 0;
 | |
| 
 | |
|       li {
 | |
|         display: inline-block;
 | |
|         vertical-align: bottom;
 | |
|         margin: 0;
 | |
| 
 | |
|         &:first-child a {
 | |
|           padding-left: 0;
 | |
|         }
 | |
| 
 | |
|         &:last-child a {
 | |
|           padding-right: 0;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     .links {
 | |
|       position: relative;
 | |
|       z-index: 4;
 | |
| 
 | |
|       a {
 | |
|         display: flex;
 | |
|         justify-content: center;
 | |
|         align-items: center;
 | |
|         color: $ui-primary-color;
 | |
|         text-decoration: none;
 | |
|         padding: 12px 16px;
 | |
|         line-height: 32px;
 | |
|         font-family: 'mastodon-font-display', sans-serif;
 | |
|         font-weight: 500;
 | |
|         font-size: 14px;
 | |
| 
 | |
|         &:hover {
 | |
|           color: $ui-secondary-color;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       .brand {
 | |
|         a {
 | |
|           padding-left: 0;
 | |
|           color: $white;
 | |
|         }
 | |
| 
 | |
|         img {
 | |
|           width: 32px;
 | |
|           height: 32px;
 | |
|           margin-right: 10px;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .container {
 | |
|     width: 100%;
 | |
|     box-sizing: border-box;
 | |
|     max-width: 800px;
 | |
|     margin: 0 auto;
 | |
|   }
 | |
| 
 | |
|   .wrapper {
 | |
|     max-width: 800px;
 | |
|     margin: 0 auto;
 | |
|     padding: 0;
 | |
|   }
 | |
| 
 | |
|   .learn-more-cta {
 | |
|     background: darken($ui-base-color, 4%);
 | |
|     padding: 50px 0;
 | |
|   }
 | |
| 
 | |
|   h3 {
 | |
|     font-family: 'mastodon-font-display', sans-serif;
 | |
|     font-size: 16px;
 | |
|     line-height: 24px;
 | |
|     font-weight: 500;
 | |
|     margin-bottom: 20px;
 | |
|     color: $ui-primary-color;
 | |
|   }
 | |
| 
 | |
|   p {
 | |
|     font-size: 16px;
 | |
|     line-height: 30px;
 | |
|     color: lighten($ui-base-color, 26%);
 | |
|   }
 | |
| 
 | |
|   .features {
 | |
|     padding: 50px 0;
 | |
| 
 | |
|     .container {
 | |
|       display: flex;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   #mastodon-timeline {
 | |
|     -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: 330px;
 | |
|     margin-right: 30px;
 | |
|     flex: 0 0 auto;
 | |
|     background: $ui-base-color;
 | |
|     overflow: hidden;
 | |
|     box-shadow: 0 0 6px rgba($black, 0.1);
 | |
| 
 | |
|     .column {
 | |
|       padding: 0;
 | |
|       border-radius: 4px;
 | |
|       overflow: hidden;
 | |
|       height: 100%;
 | |
|     }
 | |
| 
 | |
|     .scrollable {
 | |
|       height: 400px;
 | |
|     }
 | |
| 
 | |
|     p {
 | |
|       font-size: inherit;
 | |
|       line-height: inherit;
 | |
|       font-weight: inherit;
 | |
|       color: $primary-text-color;
 | |
| 
 | |
|       a {
 | |
|         color: $ui-secondary-color;
 | |
|         text-decoration: none;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .about-mastodon {
 | |
|     max-width: 675px;
 | |
| 
 | |
|     p {
 | |
|       margin-bottom: 20px;
 | |
|     }
 | |
| 
 | |
|     .features-list {
 | |
|       margin-top: 20px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   em {
 | |
|     display: inline;
 | |
|     margin: 0;
 | |
|     padding: 0;
 | |
|     font-weight: 500;
 | |
|     background: transparent;
 | |
|     font-family: inherit;
 | |
|     font-size: inherit;
 | |
|     line-height: inherit;
 | |
|     color: $ui-primary-color;
 | |
|   }
 | |
| 
 | |
|   h1 {
 | |
|     font-family: 'mastodon-font-display', sans-serif;
 | |
|     font-size: 26px;
 | |
|     line-height: 30px;
 | |
|     margin-bottom: 0;
 | |
|     font-weight: 500;
 | |
|     color: $ui-secondary-color;
 | |
| 
 | |
|     small {
 | |
|       font-family: 'mastodon-font-sans-serif', sans-serif;
 | |
|       display: block;
 | |
|       font-size: 18px;
 | |
|       font-weight: 400;
 | |
|       color: lighten($ui-base-color, 26%);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .footer-links {
 | |
|     padding-bottom: 50px;
 | |
|     text-align: right;
 | |
|     color: lighten($ui-base-color, 26%);
 | |
| 
 | |
|     p {
 | |
|       font-size: 14px;
 | |
|     }
 | |
| 
 | |
|     a {
 | |
|       color: inherit;
 | |
|       text-decoration: underline;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 800px) {
 | |
|     .container {
 | |
|       padding: 0 20px;
 | |
|     }
 | |
| 
 | |
|     .header-wrapper .mascot {
 | |
|       left: 20px;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 689px) {
 | |
|     .header-wrapper .mascot {
 | |
|       display: none;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   @media screen and (max-width: 675px) {
 | |
|     .header-wrapper {
 | |
|       padding-top: 0;
 | |
|     }
 | |
| 
 | |
|     .header .container,
 | |
|     .features .container {
 | |
|       display: block;
 | |
|     }
 | |
| 
 | |
|     .links {
 | |
|       padding-top: 15px;
 | |
|       background: darken($ui-base-color, 4%);
 | |
|     }
 | |
| 
 | |
|     .header {
 | |
|       padding-top: 0;
 | |
| 
 | |
|       .hero {
 | |
|         margin-top: 30px;
 | |
|         padding: 0;
 | |
| 
 | |
|         .heading {
 | |
|           padding-bottom: 20px;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       .floats {
 | |
|         display: none;
 | |
|       }
 | |
| 
 | |
|       .heading,
 | |
|       .nav {
 | |
|         text-align: center;
 | |
|       }
 | |
| 
 | |
|       .heading h1 {
 | |
|         padding: 30px 0;
 | |
|       }
 | |
| 
 | |
|       .hero {
 | |
|         .simple_form,
 | |
|         .closed-registrations-message {
 | |
|           background: darken($ui-base-color, 8%);
 | |
|           width: 100%;
 | |
|           border-radius: 0;
 | |
|           box-sizing: border-box;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     #mastodon-timeline {
 | |
|       height: 70vh;
 | |
|       width: 100%;
 | |
|       margin-bottom: 50px;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| @keyframes floating {
 | |
|   from {
 | |
|     transform: translate(0, 0);
 | |
|   }
 | |
| 
 | |
|   65% {
 | |
|     transform: translate(0, 4px);
 | |
|   }
 | |
| 
 | |
|   to {
 | |
|     transform: translate(0, -0);
 | |
|   }
 | |
| }
 |