From 0cf96be6d8a347bcef26ee0da45edbcda8ea15c6 Mon Sep 17 00:00:00 2001 From: Vladislav Ahmetvaliev Date: Wed, 23 Jan 2019 10:22:40 +0300 Subject: [PATCH] feat: add product hunt banner (#2003) --- .../pages/home/banner/banner.component.scss | 82 ++++++++++++++++++ .../app/pages/home/banner/banner.component.ts | 63 ++++++++++++++ .../pages/home/landing-home.component.html | 2 +- docs/app/pages/home/landing-home.module.ts | 4 +- .../pages/home/ribbon/ribbon.component.html | 8 -- .../pages/home/ribbon/ribbon.component.scss | 19 ---- .../app/pages/home/ribbon/ribbon.component.ts | 15 ---- docs/assets/img/product-hunt-cat.png | Bin 0 -> 11939 bytes .../banner/_banner.component.theme.scss | 26 ------ .../components/banner/banner.component.scss | 54 ++++++++---- .../components/banner/banner.component.ts | 54 +++++------- src/app/@theme/styles/styles.scss | 4 - src/assets/images/product-hunt-cat.png | Bin 0 -> 11939 bytes 13 files changed, 205 insertions(+), 126 deletions(-) create mode 100644 docs/app/pages/home/banner/banner.component.scss create mode 100644 docs/app/pages/home/banner/banner.component.ts delete mode 100644 docs/app/pages/home/ribbon/ribbon.component.html delete mode 100644 docs/app/pages/home/ribbon/ribbon.component.scss delete mode 100644 docs/app/pages/home/ribbon/ribbon.component.ts create mode 100644 docs/assets/img/product-hunt-cat.png delete mode 100644 src/app/@theme/components/banner/_banner.component.theme.scss create mode 100644 src/assets/images/product-hunt-cat.png diff --git a/docs/app/pages/home/banner/banner.component.scss b/docs/app/pages/home/banner/banner.component.scss new file mode 100644 index 00000000..71b31bbc --- /dev/null +++ b/docs/app/pages/home/banner/banner.component.scss @@ -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; + } +} diff --git a/docs/app/pages/home/banner/banner.component.ts b/docs/app/pages/home/banner/banner.component.ts new file mode 100644 index 00000000..80eddab3 --- /dev/null +++ b/docs/app/pages/home/banner/banner.component.ts @@ -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: ` +
+ Product Hunt + + +
+ `, + 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; + } +} diff --git a/docs/app/pages/home/landing-home.component.html b/docs/app/pages/home/landing-home.component.html index 64cb1186..4af48655 100644 --- a/docs/app/pages/home/landing-home.component.html +++ b/docs/app/pages/home/landing-home.component.html @@ -5,7 +5,7 @@ - + diff --git a/docs/app/pages/home/landing-home.module.ts b/docs/app/pages/home/landing-home.module.ts index 7072deec..9a181c89 100644 --- a/docs/app/pages/home/landing-home.module.ts +++ b/docs/app/pages/home/landing-home.module.ts @@ -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({ diff --git a/docs/app/pages/home/ribbon/ribbon.component.html b/docs/app/pages/home/ribbon/ribbon.component.html deleted file mode 100644 index ab14ed03..00000000 --- a/docs/app/pages/home/ribbon/ribbon.component.html +++ /dev/null @@ -1,8 +0,0 @@ -
- - - - - - Please, don't hunt me! -
diff --git a/docs/app/pages/home/ribbon/ribbon.component.scss b/docs/app/pages/home/ribbon/ribbon.component.scss deleted file mode 100644 index c0510406..00000000 --- a/docs/app/pages/home/ribbon/ribbon.component.scss +++ /dev/null @@ -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; -} diff --git a/docs/app/pages/home/ribbon/ribbon.component.ts b/docs/app/pages/home/ribbon/ribbon.component.ts deleted file mode 100644 index 9dd0c51d..00000000 --- a/docs/app/pages/home/ribbon/ribbon.component.ts +++ /dev/null @@ -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 { -} diff --git a/docs/assets/img/product-hunt-cat.png b/docs/assets/img/product-hunt-cat.png new file mode 100644 index 0000000000000000000000000000000000000000..e06b88c824bd099a168cf002c8a82900f33dae38 GIT binary patch literal 11939 zcmV;UE?m)xP)o?uZ72@Ai6d9ih8f=D|hA|yXOJ;=z%wRvi(Y+adL zO{YQ}Q6CWE;o;rg-Oy?ib}K&(R?)zi~;a&n<%R+LyunV6WAl9G;#i#9Yhd@vTOK@$7*^ZD@Y+1S`^ zY-^-xTGde_hfF;Y4-eXSK5jZLW;7|sTqV6zAZ{oUd3kv4rFVTpHu3QAqoJXPhK5=q z5cl`@^z`(hJ{g)j86^%0z`(%Zh*M8ZPDL0D1py4fkAp!S7I!ERI28@;?d-X@xPgCv zs&8RmTwV0#;Mi|2vrHV&(9mOIV&jfnc0Mu7V=BQ|C8IkH8wm*OwVa-voUd_W$Z0#& za5vm`GqzMI)o3QtVjhw>7-b|7n>7mX-r4WMt*54@?yG=9H8hJf783;n>FMa`%E82n zdhDNT&~icHfIj4SFV9aS2>}+jLI(8CxyO}>+ki~ITrY$&7WV4r^U}o3ppz7(mK|r!M0OGx{*RrR2Xk*NGQ46iBF$0+_r#!QSXN*>Gov#CP&6%!f`H3} zXLCtCfIB0ED-2y03Y`l8jb>b}XGoq;Fq}msnR987L@IL?2A_g>Wi1nC?M`}`Ezvh3?t2>WuPJj43MDY6ZNALDq z9hQJhNC;c)x9aw&m~3A+uut&Ny2AgMZhPsGIe+lGpAAe3S?z(ih>(7_$9io9;DJLm zsB8W+y;?JreLVz4#)gC;{!yM=ik}7i(GxrWo4(jx^JP59Rm>_RVi^j%JqT1^K;v(4 zJ4>$~$kK?-g+oyKmITDI<+<4xf9JwL|lRV-c!3oREl_# z^}g5a)!1Dd`osqxjJT#S7J_1tR{$2)@Vr_BxZs*<=0GdEL^co{mLo7jEs!S9B2s*?kx>w*FsSdSB%ExTF1Bo zMYnX-jvdRV30u5E8@^H~x&*y?ipcJc+5_OVyz8N%h$~!~Vj{=V**T_EcfaMCf%wOH zyU4fQ9kLkhM3;rZ&hx0W8Xv?+NHtxQnoe9tYo3*o(Abs)Ul7B9^qzf&) zYB5@4mqKB)ldP~iXkrR?{QO%ehc=G9aRq2`^J2gTQ$gS`T`xX2^ zJbGanG|&}bL7DYbCTw>)Sy=9w-`)xI?Cka{XwU^Qi$x?-u((bM(UtSuiNANXRV9rl zO7@0jAdyH!+T+O{zh$?2_IVIAJVtMXDHyxm$;5K*`0a@pDDuI}-2#fhO%s`*fqdH$S** z^ezqk&C!DgD^8tQo!@JcDr`!*9!JHA1_neJqLKLZAAREsZNAJlMXle%1s%!~vtSrY zwYKtLfmFTk)CW7j!UlLA34knQXlC!aGeQD>Kfg;_+eYYdwkX@`=sNnFAKgMf>QRHi zOQ!`4v=N6hgZ^}4V7-0zLbp8f$i!up+v_6_mrSy_6c%U&7D(w>E01LF>Q=mT)DN(M zoB$hMdG!6a#>sg6bWwLv9Y8ZFm2DbZE#Jg<)#>)1$QmZ_r||+d$!H|?3ji7mht-BH zYHBF*^kt3P_$T&Gin$b649X3rQmLI19!=P_O);%I(VT(Ee`cm}%`tk1dV0DGRJyuj ze}}H6O`~bk@=Yd)w7D)tC zWRtqt?hAYB=<{XWIXT_kWnEH5nUr3)k1v!9<%|}gkgVycGimDT$soZZ0#48FBlReI zWCR!|yABD^7N;~cZl!2Dv!Tt1j9p@}151I4A~BIlHB+%xT)$Jq@9HY5?fUXlo2jTf z2e5%K*3xyg0F7a!%FXo*hD^w4(ULU`K3-?Sn<(t2J~o5U)53(Q1G5=_o;$hF&>Ji4 zff>jbbYQhZ%r#OdFh<0}S{YO?o5;yXbVXNvG7c)oC=YdNYmJYJ@FgRwFFe%9J+Ov`a@O z)YY~1%IjNtFmlf55{D27ZGLq{L2HEkk-wr5(KHg3$^~o$A=SvB6*l#&r8#OvjzTIe zla@`}Ok}bW4`xP>R>y!utrOF;p??60z{pa zMV00c-HrhI06oca&}g7LVW*hT!cM6l*5aqtU0rHvx76jDmP%a$jSNE&m^3{t7+nif ze@JB!Iyz~3w2?xv6Eqq-k;##hORH^Y z`PaS^*ZL&xN`ca5G705On1yW_#^9A0 z3&^Kg-`Yyk8*x@Elf@zkv0N^Zg(28%fKL5f5@LxSh5VO2+jhr5>wmu$=$o2y(0J{< zl%`ZLK{W&!JSLRc1$^+EbUiRAB0fMfn?)4kIFoN@T4*F81C2)W^hV>D1;cU@gcyf| z%XNsrBf6q{x2?U135|qCmc2cF9`XC_sU7Pkr=}$BKz+STB_GdM3SpRR7d!EMfxvmT zUMaxiWh9iD1zTIq0uctsBQbD#8jaRUYPArVSQ$Zv;c_@2ZUnLkuf8YrVt0l~P;|sH zcT^)3@W+KkwM=wY#Vc)ZPZcT!e7peE7C|&1m=xjhWIT*^zevWVu#GIM1ZT&Hs5GOQ zgiZlysxi0|3(E*hCKEV5E{lveDRS=3nLBSh{@e?mkAyF?5h9AA^54lan%DGDRJ``m zRJ2S00tH5xuoEM4l0{Cul1$L6h)z5n)}zowtAq;d7>UMalhCQ4aa3bgEJg-~3VFau zzBNAm~ z4rhR17fP&Lj1pr-(O_;TRs>V^XgM2)=D8*5#JEGsoW!s=OoxLgz;{i*cu&q|YP|?C*xh+_k0_+B%vUq%NuRGW1$Njo`J}y=+mo6 zD6EJpksL4{ker=5%aLK292ptrU@%N zFd8NoLxdeuppYzjw8deel1Qz3v`TddsMTCwKRWu+nPbP!9DC=TcW$}mqmPa?vGp3Y z*TvA*LvzcqM(ZB&SyT?y6Gu)iG{NVlR3Mj~Q&UrC&vIo10bYOsyOBWTGT|vMhX}SN zS|ZWw^{BqSg$IrtJbL29Tx@J?baHTDc6tC%x?7=v$)`>g+9z$TZ^4e7gR3K~|a6jV!<%VlIcHgP5 zf&&4Q7l=o^udh#hq*r!vbZk`l?S_z&hSk-ZyfefXK)t zA3hX7L)$Oi1@YH=E^1Ij^)54aioyn!tx~BZonxH`R4EI0o+=1R2Wj$;j0Z_e56CW# z*_^khq@j85rcK`7Zkz|Jwq|}-7$IjLQUTFug@vi5JLBRq6SMODqI_ciiWUXMUfQ%h zwb2K;hz#-6xlYQ|fkW*;hj_f>UxQeI^o4r43klTq`lz)@v4+!$-qoJF;y`>#KXa>{ zH@g8?f(RqFbIgLZP>d0Js)dwNm|9r4)BEN8sKBLt5OnFGdjtyo(~)PKh@Svkjj>ZJ~g8~o8 z4hYE328}oqvi8THfBGTRKll3ZpBht9sVLO^qp2hs8d$Xm61wprHVKvaSbkb{e*R-$ ze36+Mhl(JP^eKgsm>@4GI>`_x>_bJQteY^BNN5t4%09m3jIhr;-=i}7+rj*ozoV7LeO6k? zOG({%az68mBSCp#$iI5F_(z_)6xt_qP!wX(@Yv-{IauuTL}VyniZ(QC_5xuG3<@q@ zp9IK$N-7B27@oI&PukaJwj70;n8#XhMhXM>z=%vX|4e@MVDj8xvqu(=R$7{RylHfN zv}JgheP0N22^zxd($iyiG?cd(?R3P1e|UJjKPa&Dxji%GUfJ0JfGl}^(odm3B>fl| z2?ef=u6!nofu+dVcT}>$F&HD1A3R8|&+^Es9-JF8lsxmyaWpT2imjv9f%`4`{u?Tg z$cr2hMlOk#432q=*s6|3$LIRSpJxj;7z#k80WvU8fAsS83XY5qj|`68T#=u@K(WB= z-ocXurc9}kpSTfoJS)FCAK7detOjU$l36c*?Y-y9z`yrC{>n2UEMdu!ukn&TG8hV3 zWQjglpBoz=>FXv-2bl~6WWmv!^9+NP$)RADZ7vUKXq=nK&(DvGz`;Vst+PD@a42P; zxUDJf<>snqJP=_eRnO#`g+eol)c5Ybefv6I+4kbMhKdA_r8D zgM0Q2&OUY0thBEKA*llS%CD-sdrerFDEB?)e^MW6{0;F99`g_oDAkha14mnd92Ekid~5)HZ0WPd($choA*}j zt!U0q^WLzgyn#7hF$|71O5u$Y>n0v+t}1D$%Jy@Fa>+M%Eal9Q7I zeb*Wq8Y@p(~kdAH)Euw1gMkRi3Jtcqczph zYw2{?J0+_QKOh4!gPGt8fj@fi=xBc%y{L`QGTzk0sAqtCYHCwcUteF-==SRYXC*)TY>WmipN=GLw5bbj|8Fyc5jo60DcSg96ppWIek+fh_h^ukU3WDOYu zbC@!dj$Tv*E-i~Xy6akc`sExlS@Tc_j8U~mn$y{FCgE1Ozf zH`+V?X8_r-hSWBgX^*MQ6QMgB2zLn;Sn$~`yT_-XI)`NT}O z+G$p*q?N>09a2fCW~{cqWj`Ru0c0I?I=+Y9$CiKp{r6|h{k3KLiaG!u_&njwdUO47 ze;dPsYekRuvfl(~;4gqy?sDUP;oRzD+9<=gy!3j<-4%M}BRIa+1IlRm7%e?ZT4iYm z6eZLvFpkC%G{TuIVO9d8jfo%4R?4Vp%oLkxHDrDaZRvE`5Aq`&+~hp_j%vDzBah?;rDBMjJ5B7yLRs4!Z#h4E_HMa zLdSXtaGgDL_K`rDL~48oYbg zQ5Z1Xcj&hJ9z3yhVhTJrHufmc^URs6SJ%IkZ2hvsaWXPL`^@a4kIv3V*XAN~;LcY8 z+1a|cV?nn88UN3U>d7tY0S4Ie!;ke(t^L$`|96*0Mh5H7!dm&BQ!v^+^VXTAwR4M* z0kEm@=-BKtQ_YTM$K`cEb~$7bqSF0Y*kV`?udRK2>b~dScm&o~(^0?QWvDONp?0LE zXi?fWY>M&kBmGN<&Q5>V(J|6m_sDB7r9JfgnF~PKxoC8Lu^&QSimU!bQmMOq6-c{! zlEdc~`z2%#!0p9wWNvBc%!P|E1etUDT|xh+DZONgZS>@hW*(3STU`q0J3d>SIyybr zvG-VO-P3Q}cF)m;)zu5Ig>YhNYIZgn1<9Z9@9zfyIJe=_4o->9EiOK@ffs%rx%ly| z_q=howXW{%gu(A}?Ri#_ngzQCcQPqDD637|j;%z!99fv|xHJM;aMxW&KZdE#>ZvoQ z?mKmAVQL->@P)(SNC0EBs>b#8t3NZMaxOaGKmQDnx)||6sNHkh({)!`-(F3)3_oCKmt>ya;+x&*gB@me02o&ax zg}q)M@8eejHb|gtKF$AiEV?w^I5NEo z&>=M{hc?g~N1Jbt$y z6(};&x6c21(NOEoPAU|k-jp+iweNj3H?=xAIK8kysNjRp3ULg>s8w%dE*!?f;i;I< zM{;nV2*Gk;h6Rj(P2@3-5CqlNxKc+@ae*L{F1J5#zdB{rQn1qr_(LzDlyM0J+`UhI z&abVltxmIqmJ>0aCn*ufMJ2>O$w%e_zOaviB(QYeAz7!H&=DNZ>AwBYOfwAhbeze= z5^*eHaQnMUQlvv+m!xBd)A<%f$}#ieabtDRZ9ooKM9$?)u@fYWL^zIuN za_RNKMDUknfKuW(j%@(sG58d<97*9AMLQ)_4hM{1oShTSPUlQ%U!NwH=p2Uie$05#eh;F6Vhf|^#W349I z;sijB^{Y@1)@f&Fr?a%wYGQRloQZ20@HL~NVs3+>FqJdV+k<;|z8~6#)Z3mbJw2nL zYmDOS~heFPfd859c)B(y+$gE)@XX6|vLVD;l zjCUDG>s6$cjTdiy@!&Ssfns=nX@)X_;9?)lIz_e?9dLZoco` zgW9)21J=sYuDO#u9*B4Y$%Mz_Sy_oiFbKMs&+El0hEQqDA%~VK&B+Ow%$*L4*~)4` zO;{E#;7lciJqGgj@_S95M zuj9yUqq({8R?|?`?(+JBs0&EDG1}ByQ&e4&_QZadAA}X)U^r+-AO`h^=Y1o)OM-91IHdJ$C z=Q$zT_GDbI26yJyd|#w@xmIGNB(^?YIT!JfILXJ7E8!KMlqwM}aORN3Y$>%^EY?yp ztyNheLrv#1yQ_MS<1u$K_6tHSc3F95Q&VP_-T>w|l-p3b>S9tJ~L|X{l#xE zc!G%}PjQrh^B68Nf|gS0R631T6=w;CVMIz9;3-jHD2mb1CX3Z+L@n)UrJ3^4{5|fV z%kKusZQqT$6?U0k58lnSp{mxD-Mbg|7gzk7Co39fo={gd)ihQ1{w>-MXME~{KkN1^ z2f$@O8WaIeWT4FfVN-T zk*%ag23Y{tD9W>>#&{K~?)d1rf8uNJOixic+B8{xw_@{5a*++71)&J=aY`iP;7#Br z4w9;c3y_)UzCJTcQ4oV#aAqF>v&{6Oyo}F?^KeRUIN=Efg9g9cxE~EQJ z54M50<)iG*TvYSI=_hhNN@Z;C@frzNIlSZ9R8??u7ecmfU@m>KXVfOw8(fKSfajTb zTogD)DPRl%2H1c#ng*WwzM@$x%>u4cFv~}SqSY`z!6+y zxlL|>91Vwk7$b68sXY{+a7)mjgzHQu6K%E9AO497F3BdlWVJK8&-Ot<{x%$lc|5^4 ze}r!`vfv?uW3vXdYco4LdTRD{4;`gCQie)y%XIz{jeJh?KH7ako_V}!O%;QG3PyPzDW9?P@tEwxD6&b~lB!^ooDzb0c zip(fOyYr7UZph5uafIsgiX1nM3?0ZUM>QowU3$^1(slN2*a_x>chk1v0SwY$2*H@p#6@#@tB$()BV>;egJ)v-wy~6)L>< zmei!}m7$`Bi9ajtlf!m2(9n?H4EJ~K??JZOef4swvKSKKh$LtnWC8R;N(megC$R>| zB-X&K&ZlN1w_5sU)Ca1|8gh|(f`&DV!25ieE%N;L#>SRsgJ|>ZmRqFj_G1d6vT-8Tv6>64>VBIWNBAG*+EH zwn3g6jh1Dn%)QU&qJs3l@Mf!#z1H#fn9^8@3VQr<83Nwi%Mns!L}@vNfk{3UDGrvz zERY6y0H06oLdMQe$RZKgXYK?S9+6OM2qr#Uk9v-e%`YZpsM3)Q$j%qGWKBwS);=u7 zUGo97|Be)YHV>h^lE1+?vf$5MZ`XgwMD?fremx|DAE0>!K!$DFhDSNA)S9u-s6i9% zthJ+Rb+3BTLPOkHYC+VTlCIFK_Ctx3ufBihdxVT7Qay4Mpz^MwLe$cN#w$SYhg(ql z;goS-u}s!}$8&$l+i7G|G;Uck52Ny8cQ6R6J;|da1ySZDy?~1(C2S%GEy(9HGtTob z51+0a$VD4g_(wNa^P5T?MVZSuzE+v49VWv!<0}??d__SdHGvcuC^SRTLJka=|5nii7{yt7n+*q!i9-(>CQ7nTl^OD7RI}1_#7_3 zbMHCl{>sduhVGh1YD>#6Bkg;4PFqy3eal-^^ACcbyxr^$6?r!ir&=kTMP2)-==hC* zDi(Cn{KUO_doZE6$5aWVUwiZIw?LJjyz>}h_F~wF-5o>v1jwZ4-)LE!a9>)mqS@k% zA3lfF4&4;4p?d-7y?ZA`;;*h+=Oa8^aZ@*EHcwld+B7nR*8_sNt`@`F^AcE?*8&! z73;8v_5iiqd03{<%y<1F$-&4b#}1V+NG?u*$biP3*L6!oDFF#I7HC zus@ObnTyK#&qMUWo1eY$8FtIIx6d!)WV<@w-X8Y>i0&b_%ByMsyBR=`xx4)A%gb1* zNe!5*sJEj=io{&O4PUaVE!qy5+Lw_tXoB3;4c1Eb8>fU9)^9ay z%}qP`NwmEbiq1b+vJt)Z_Gce{cz(Wpezi(FT57ZKx|%)05Pa6Ion761cxa+hPLl^s zAMOtmWG_7VGUEO#OPZv5{UFtxF7GB=8zt>nC=$oleB{gP*8QT30*jHn4Kj4IPCiQA z+!<+Fk-g2V=^=1t1h{&N^x~W6?`c++&v4Sk`Rw+XK_IC2ddJoGdv~6G(#~?yT}>XI zMd`m%CJVE77yZ#!Q zyqv9eV~PhtoFyN#a*g|vmFNv@6`fy%$rSzQF^$_^-Q0ZXsi!WaBnxCtUcd5!tY6lc zQ_BUOm4a3nt*b|{|1qQQ!s zd96vSS)}VIimP)hm18k0IdhjM2_n8kb2Y(=%3D#~q~<+X(-4)sM1H1wE3P{aA9+gmXZ>fb7;LST zVI)OauSB$@)&*r>L-j6x$_FWoUX)23oKKZi|djC*^$C%&U% z4}QjBkK4S*0k(L65~q^VOSoOEiHr+deHQeueP)6qn|{4l$+*kNY$AkJvJ^&RJVlaY zx=};eOaZ)v-@&x|r~A4_&l}npBDa;E&nclc)Guw6Jlux+^yKUuSm2_cAW23&+CMI9cZpOWBB4xN-8PC@vEs&V-38=N?1^ zH5waR$-+$#Cn#Pkn5m`bi)bm4 zNX=>KlnY^^xk7%eG|D1Ij>fzsvgHU%W#It^LbGL{Pd@j57ztug+juL zhgREzab~C}sRet~JZ95@X2Vcb7d+(F*XCSBlBD7)ne`q@g4fC9s8AaHQsi?-CmY6= z)XrXywJHuZN$Uy2XzCO1*TB)%63bo*W{L~rqODU}4X_+9G+Xd5BPH%Gw=ED65BZIm zvdD(X7|#&DLz*w?p}n~c2{7*Gqx$@~ma_TmBz0EFl$-kOUd*MehcR#o$3cb*Y>iX% z8D++Tq`Lhy$?-*8DVPG;uN(&0J|H39l+>}mdAH0<`1rG?yOwh+}u z>QSs4`6u5$4y!zE7X(vy(>g4h7!9D{ySGnZG~?%J$4DYe=BT1;lsg%VAveGVg)+c* zTKr3X+Q0nO_s2KiofgkiBb9e`^QxJLBeqOT#$7LQ1lIMip!{e)f@BX2%(X%J2kWG$ zz4?hs^Jx}n%FHyY5d{@CcJ(TYk#FLeO_4HIL!rr6c_x3|T$c^d`9F%r4mod+l~p;a z!eUGp^I@{#O}K$kGC4Wq!F>m=S7}jEvQuLbnkd`(p$pAC^)bM*Nkz-!qylr^{LKa6 zf&k^;1PC@`2>z1UNr*xYVfu@f$>iza5b3(3wy1k#0rD67N-!w&Z4g - bell -

Nebular 3.0 stable
with 30+ components is out!

+ Product Hunt + -

- Don't forget to - - check out - - and star our repo :) -

`, styleUrls: ['./banner.component.scss'], }) -export class BannerComponent implements OnInit, OnDestroy { +export class BannerComponent implements OnInit { - private alive = true; storage: Storage; - isDarkTheme: boolean; @HostBinding('attr.hidden') isHidden: true | null = null; @@ -40,7 +44,6 @@ export class BannerComponent implements OnInit, OnDestroy { constructor( @Inject(NB_WINDOW) private window, - private themeService: NbThemeService, ) {} ngOnInit() { @@ -49,11 +52,6 @@ export class BannerComponent implements OnInit, OnDestroy { this.isHidden = this.storage && this.storage.getItem(HIDE_BANNER_KEY) ? true : null; - - this.isDarkTheme = this.themeService.currentTheme === 'cosmic'; - this.themeService.onThemeChange() - .pipe(takeWhile(() => this.alive)) - .subscribe(({ name }) => this.isDarkTheme = name === 'cosmic'); } closeBanner() { @@ -62,12 +60,4 @@ export class BannerComponent implements OnInit, OnDestroy { } this.isHidden = true; } - - getBellPath() { - return `assets/images/bell${this.isDarkTheme ? '' : '-white'}.svg`; - } - - ngOnDestroy() { - this.alive = false; - } } diff --git a/src/app/@theme/styles/styles.scss b/src/app/@theme/styles/styles.scss index dac33370..6721bfb0 100644 --- a/src/app/@theme/styles/styles.scss +++ b/src/app/@theme/styles/styles.scss @@ -15,8 +15,6 @@ @import './bootstrap-rtl'; -@import '../components/banner/banner.component.theme'; - // install the framework and custom global styles @include nb-install() { @@ -28,8 +26,6 @@ // loading progress bar @include ngx-pace-theme(); - @include ngx-release-banner-component(); - // fixed in rc.9 and can be removed after upgrade .custom-control .custom-control-indicator { border-radius: 50%; // TODO: quickfix for https://github.com/akveo/nebular/issues/275 diff --git a/src/assets/images/product-hunt-cat.png b/src/assets/images/product-hunt-cat.png new file mode 100644 index 0000000000000000000000000000000000000000..e06b88c824bd099a168cf002c8a82900f33dae38 GIT binary patch literal 11939 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