| @@ -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() { | ||||
| } | } | ||||