@@ -1,14 +1,7 @@ | |||||
<section class="notifications"> | |||||
<header> | |||||
<h4> Notifications </h4> | |||||
</header> | |||||
<ul> | |||||
<li *ngFor="let notification of notifications"> | |||||
<h5> {{ notification.text }} </h5> | |||||
<p *ngIf="notification.description"> {{ notification.description }} </p> | |||||
<span class="time-stamp"> {{ notification.timeStamp }} </span> | |||||
</li> | |||||
</ul> | |||||
</section> | |||||
<ul> | |||||
<li *ngFor="let notification of notifications"> | |||||
<h5> {{ notification.text }} </h5> | |||||
<p *ngIf="notification.description"> {{ notification.description }} </p> | |||||
<span class="time-stamp"> {{ notification.timeStamp }} </span> | |||||
</li> | |||||
</ul> |
@@ -1,29 +1,31 @@ | |||||
header { | |||||
background-color: white; | |||||
position: sticky; | |||||
top: 0; | |||||
padding: 1.5rem 2rem; | |||||
border-bottom: 1px solid var(--border-grey); | |||||
h4{ | |||||
font-size: 1.8rem; | |||||
color: var(--primary); | |||||
font-weight: 500; | |||||
} | |||||
} | |||||
ul { | ul { | ||||
list-style: none; | list-style: none; | ||||
height: 100%; | |||||
overflow: auto; | |||||
min-height: 10rem; | |||||
max-height: 40rem; | |||||
li { | li { | ||||
display: block; | display: block; | ||||
padding: 1.5rem 2rem; | |||||
width: calc(100% - 2rem); | |||||
padding: 1.5rem; | |||||
cursor: pointer; | |||||
position: relative; | |||||
margin: 1rem auto; | |||||
border: 1px solid var(--border-grey); | |||||
border-radius: 1rem; | |||||
line-height: 1.5; | |||||
&:hover { | |||||
box-shadow: 0px 0px 10px -4px var(--dark-grey); | |||||
} | |||||
h5 { | h5 { | ||||
font-size: 1.4rem; | font-size: 1.4rem; | ||||
margin: 0 0 0.5rem; | margin: 0 0 0.5rem; | ||||
font-weight: 500; | font-weight: 500; | ||||
color: var(--highlight); | |||||
filter: brightness(80%); | |||||
} | } | ||||
p { | p { | ||||
@@ -12,7 +12,8 @@ | |||||
<img src="assets/icons/search.svg" alt="search icon"> | <img src="assets/icons/search.svg" alt="search icon"> | ||||
</div> | </div> | ||||
<button class="notification-button"> | |||||
<button class="notification-button" (click)="showNotifications = true" | |||||
[ngClass]="{'active' : showNotifications}"> | |||||
<img src="assets/icons/bell.svg" alt="bell icon"> | <img src="assets/icons/bell.svg" alt="bell icon"> | ||||
<span class="badge"> 9+ </span> | <span class="badge"> 9+ </span> | ||||
@@ -26,10 +27,15 @@ | |||||
</section> | </section> | ||||
<div class="notifications-window"> | |||||
<div class="notifications-window" *ngIf="showNotifications"> | |||||
<div class="backdrop" (click)="showNotifications = false"></div> | |||||
<header> | |||||
<h4> Notifications </h4> | |||||
</header> | |||||
<app-notifications></app-notifications> | <app-notifications></app-notifications> | ||||
</div> | </div> | ||||
<div class="page"> | |||||
<div class="page" [ngClass]="{'blur' : showNotifications}"> | |||||
<router-outlet></router-outlet> | <router-outlet></router-outlet> | ||||
</div> | </div> |
@@ -85,6 +85,24 @@ $header-height: 10rem; | |||||
background-color: white; | background-color: white; | ||||
margin-left: 2rem; | margin-left: 2rem; | ||||
&.active { | |||||
box-shadow: 0px 0px 10px -3px var(--primary); | |||||
img { | |||||
filter: brightness(500%); | |||||
} | |||||
.badge { | |||||
transform: scale(0); | |||||
} | |||||
&::before { | |||||
background-color: var(--highlight); | |||||
opacity: 1; | |||||
filter: none; | |||||
} | |||||
} | |||||
&:hover { | &:hover { | ||||
box-shadow: 0px 0px 10px -3px var(--primary); | box-shadow: 0px 0px 10px -3px var(--primary); | ||||
} | } | ||||
@@ -104,6 +122,7 @@ $header-height: 10rem; | |||||
align-items: center; | align-items: center; | ||||
justify-content: center; | justify-content: center; | ||||
font-weight: 600; | font-weight: 600; | ||||
transition: transform 0.1s; | |||||
} | } | ||||
&::before { | &::before { | ||||
@@ -177,14 +196,53 @@ $header-height: 10rem; | |||||
position: fixed; | position: fixed; | ||||
top: calc(#{$header-height} - 1rem); | top: calc(#{$header-height} - 1rem); | ||||
background-color: white; | background-color: white; | ||||
width: 40rem; | |||||
min-height: 10rem; | |||||
max-height: 40rem; | |||||
box-shadow: 0px 0px 15px -7px var(--dark-grey); | |||||
width: 40rem; | |||||
box-shadow: 0px 0px 15px -3px var(--dark-grey); | |||||
z-index: 2; | z-index: 2; | ||||
right: 26rem; | right: 26rem; | ||||
border-radius: 1.5rem; | border-radius: 1.5rem; | ||||
overflow: auto; | |||||
overflow: hidden; | |||||
header { | |||||
height: 5rem; | |||||
padding: 0 2rem; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: flex-start; | |||||
width: calc(100% - 2rem); | |||||
border-radius: 1rem; | |||||
margin: 1rem auto 0; | |||||
position: relative; | |||||
overflow: hidden; | |||||
&::before { | |||||
content: ''; | |||||
position: absolute; | |||||
left: 0; | |||||
top: 0; | |||||
width: 100%; | |||||
height: 100%; | |||||
background-color: var(--border-grey); | |||||
opacity: 0.7; | |||||
} | |||||
h4{ | |||||
position: relative; | |||||
font-size: 1.7rem; | |||||
color: var(--primary); | |||||
font-weight: 500; | |||||
} | |||||
} | |||||
.backdrop { | |||||
position: fixed; | |||||
left: 0; | |||||
top: 0; | |||||
width: 100vw; | |||||
height: 100vw; | |||||
z-index: 0; | |||||
} | |||||
} | } | ||||
.page { | .page { | ||||
@@ -192,4 +250,8 @@ $header-height: 10rem; | |||||
margin: 0 auto; | margin: 0 auto; | ||||
overflow: auto; | overflow: auto; | ||||
width: calc(100% - 4rem); | width: calc(100% - 4rem); | ||||
&.blur { | |||||
filter: blur(5px); | |||||
} | |||||
} | } |
@@ -6,7 +6,8 @@ import { Component, OnInit } from '@angular/core'; | |||||
styleUrls: ['./tabs.component.scss'] | styleUrls: ['./tabs.component.scss'] | ||||
}) | }) | ||||
export class TabsComponent implements OnInit { | export class TabsComponent implements OnInit { | ||||
showNotifications: boolean = false; | |||||
constructor() { | constructor() { | ||||
} | } | ||||