feat: add product hunt banner (#2003)

This commit is contained in:
Vladislav Ahmetvaliev 2019-01-23 10:22:40 +03:00 committed by Sergey Andrievskiy
parent f719641e6d
commit 0cf96be6d8
13 changed files with 205 additions and 126 deletions

View file

@ -0,0 +1,82 @@
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
@import '../../../@theme/styles/themes';
:host {
position: fixed;
@include nb-ltr(right, 10px);
@include nb-rtl(left, 10px);
top: 80px;
border-radius: 5px;
background-color: #dc5425;
box-shadow: 0 2px 4px 0 rgba(189, 93, 60, 0.54);
z-index: 99999999;
.heading-with-icon {
display: flex;
align-items: center;
}
.icon {
height: auto;
width: 77px;
margin: 0 26px;
}
.banner-heading {
font-size: 14px;
line-height: 20px;
font-weight: 700;
margin: 0;
color: #ffffff;
}
.banner-content {
padding-top: 36px;
padding-bottom: 36px;
}
.close-button {
background: none;
border: none;
cursor: pointer;
margin-bottom: auto;
padding: 10px;
color: #ffffff;
}
.nb-close {
font-size: 24px;
font-weight: 600;
}
.cta {
margin: 8px 0 0;
font-size: 14px;
color: #ffffff;
}
.cta-link {
font-size: 10px;
border-radius: 2px;
display: inline-block;
padding: 4px 16px;
margin: 0 10px;
text-transform: uppercase;
font-weight: 700;
background: #ffffff;
color: #000000;
}
@media screen and (max-width: 991px) {
top: 20px;
}
@media screen and (max-width: 767px) {
display: none;
}
}

View file

@ -0,0 +1,63 @@
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, HostBinding, Inject, OnInit } from '@angular/core';
import { NB_WINDOW } from '@nebular/theme';
const HIDE_BANNER_KEY = 'HIDE_PRODUCT_HUNT_BANNER';
@Component({
selector: 'ngx-release-banner',
template: `
<div class="heading-with-icon">
<img class="icon" src="/assets/img/product-hunt-cat.png" alt="Product Hunt">
<div class="banner-content">
<h2 class="banner-heading">ngx-admin is on Product Hunt today!</h2>
<p class="cta">Please
<a class="cta-link"
href="https://www.producthunt.com/posts/ngx-admin"
target="_blank">
share
</a>
your feedback :)
</p>
</div>
<button class="close-button" aria-label="close" (click)="closeBanner()">
<span class="nb-close"></span>
</button>
</div>
`,
styleUrls: ['./banner.component.scss'],
})
export class BannerComponent implements OnInit {
storage: Storage;
@HostBinding('attr.hidden')
isHidden: true | null = null;
@HostBinding('attr.dir')
dir = 'ltr';
constructor(
@Inject(NB_WINDOW) private window,
) {}
ngOnInit() {
this.storage = this.window.localStorage;
this.isHidden = this.storage && this.storage.getItem(HIDE_BANNER_KEY)
? true
: null;
}
closeBanner() {
if (this.storage) {
this.storage.setItem(HIDE_BANNER_KEY, 'true');
}
this.isHidden = true;
}
}

View file

@ -5,7 +5,7 @@
<nb-layout-column>
<ngx-landing-sections-container></ngx-landing-sections-container>
<ngx-landing-ribbon></ngx-landing-ribbon>
<ngx-release-banner></ngx-release-banner>
</nb-layout-column>
<nb-layout-footer class="footer" fixed>

View file

@ -23,7 +23,7 @@ import { ContactSectionComponent } from './contact-section/contact-section.compo
import { OurProjectsSectionComponent } from './our-projects-section/our-projects-section.component';
import { LandingHomeRoutingModule } from './landing-home-routing.module';
import { NgxLandingSectionsContainerComponent } from './sections-container/ngx-landing-sections-container.component';
import { RibbonComponent } from './ribbon/ribbon.component';
import { BannerComponent } from './banner/banner.component';
// components
const COMPONENTS = [
@ -37,7 +37,7 @@ const COMPONENTS = [
OurProjectsSectionComponent,
SocialSectionComponent,
ContactSectionComponent,
RibbonComponent,
BannerComponent,
];
@NgModule({

View file

@ -1,8 +0,0 @@
<div class="ribbon-dont-hunt">
<svg style="padding-right:8px;" width="30" height="30" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path d="M40 20c0 11.046-8.954 20-20 20S0 31.046 0 20 8.954 0 20 0s20 8.954 20 20" fill="#DA552F"></path>
<path d="M22.667 20H17v-6h5.667a3 3 0 0 1 0 6m0-10H13v20h4v-6h5.667a7 7 0 1 0 0-14" fill="#FFF"></path>
</g>
</svg>Please, don't hunt me!
</div>

View file

@ -1,19 +0,0 @@
.ribbon-dont-hunt {
display: inline-flex;
justify-content: center;
align-items: center;
font-weight: 700;
font-size: 11px;
text-transform: uppercase;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
width: 300px;
color: rgb(218, 85, 47);
background: rgb(255, 255, 255);
position: fixed;
text-align: center;
line-height: 40px;
transform: rotate(40deg);
box-shadow: rgba(50, 69, 93, 0.15) 0px 4px 7px 0px, rgba(0, 0, 0, 0.08) 0px -1px 4px 0px;
top: 55px;
right: -60px;
}

View file

@ -1,15 +0,0 @@
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component } from '@angular/core';
@Component({
selector: 'ngx-landing-ribbon',
templateUrl: './ribbon.component.html',
styleUrls: ['./ribbon.component.scss'],
})
export class RibbonComponent {
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB