diff options
Diffstat (limited to 'ufund-ui/src')
| -rw-r--r-- | ufund-ui/src/app/app.component.css | 1 | ||||
| -rw-r--r-- | ufund-ui/src/app/app.component.html | 7 | ||||
| -rw-r--r-- | ufund-ui/src/app/app.component.ts | 21 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/funding-basket/funding-basket.component.css | 6 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/home-page/home-page.component.css | 16 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/home-page/home-page.component.html | 10 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/home-page/home-page.component.ts | 16 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/login/login.component.css | 54 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/login/login.component.html | 15 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/need-list/need-list.component.css | 6 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/need-list/need-list.component.html | 6 | ||||
| -rw-r--r-- | ufund-ui/src/index.html | 2 | ||||
| -rw-r--r-- | ufund-ui/src/styles.css | 63 | 
13 files changed, 173 insertions, 50 deletions
diff --git a/ufund-ui/src/app/app.component.css b/ufund-ui/src/app/app.component.css index 8b6b28a..2ed8131 100644 --- a/ufund-ui/src/app/app.component.css +++ b/ufund-ui/src/app/app.component.css @@ -54,7 +54,6 @@      /*}*/      a { -        color: light-dark(black, white);          text-decoration: none;      } diff --git a/ufund-ui/src/app/app.component.html b/ufund-ui/src/app/app.component.html index 30a5347..8a0fd04 100644 --- a/ufund-ui/src/app/app.component.html +++ b/ufund-ui/src/app/app.component.html @@ -6,12 +6,13 @@              </a>          </div>          <div> -            <a *ngIf="(currentUser | async)?.type === userType.MANAGER" routerLink="/dashboard">Dashboard</a> -            <a routerLink="/cupboard">Cupboard</a> -            <a *ngIf="(currentUser | async)?.type === userType.HELPER" routerLink="/basket">Basket</a> +            <button *ngIf="(currentUser | async)?.type === userType.MANAGER" routerLink="/dashboard">Dashboard</button> +            <button routerLink="/cupboard">Cupboard</button> +            <button *ngIf="(currentUser | async)?.type === userType.HELPER" routerLink="/basket">Basket</button>      <!--        <span>{{currentUser$ | async}}</span>-->              <button *ngIf="currentUser | async" (click)="logout()">Log Out</button>              <button *ngIf="!(currentUser | async)" (click)="login()">Log In</button> +            <button class="button" (click)="toggleColorScheme()"><span class="icon">brightness_7</span></button>          </div>      </div> diff --git a/ufund-ui/src/app/app.component.ts b/ufund-ui/src/app/app.component.ts index 615397f..78fd050 100644 --- a/ufund-ui/src/app/app.component.ts +++ b/ufund-ui/src/app/app.component.ts @@ -40,6 +40,15 @@ export class AppComponent implements OnInit {              this.authService.restoreLogin(dataParsed.username, dataParsed.key)              console.log("Key found", dataParsed.key)          } + +        let theme = localStorage.getItem("theme") +        if(!theme) { +            // if no color scheme is set, get the system settings +            let preferredTheme = this.document.defaultView?.matchMedia('(prefers-color-scheme: light)').matches ? "light" : "dark"; +            localStorage.setItem("theme",preferredTheme); +            theme = preferredTheme; +        } +        this.document.body.parentElement!.setAttribute("theme",theme);      }      login() { @@ -51,5 +60,17 @@ export class AppComponent implements OnInit {          location.reload()      } +    toggleColorScheme() { +        let theme = localStorage.getItem("theme"); +        // fallback +        if (!theme) { +            theme = "light"; +        } +        let newTheme = theme == "light" ? "dark" : "light"; +        this.document.body.parentElement!.setAttribute("theme",newTheme); +        localStorage.setItem("theme", newTheme); +        console.log(newTheme, this.document.body.parentElement); +    } +      protected readonly userType = userType;  } diff --git a/ufund-ui/src/app/components/funding-basket/funding-basket.component.css b/ufund-ui/src/app/components/funding-basket/funding-basket.component.css index a1485a0..4764b0f 100644 --- a/ufund-ui/src/app/components/funding-basket/funding-basket.component.css +++ b/ufund-ui/src/app/components/funding-basket/funding-basket.component.css @@ -11,7 +11,7 @@  }  .needEntry { -    background-color: #2e2e2e; +    background-color: var(--tertiary-color);      display: flex;      flex-direction: column;      border-radius: 5px; @@ -66,13 +66,13 @@  .clickable {      padding: 10px; -    background-color: #3a3a3a; +    background-color: var(--secondary-color);      border-radius: 5px;      cursor: pointer;  }  .clickable:hover { -    background-color: #444444; +    background-color: var(--tertiary-color);  }  .actionArea { diff --git a/ufund-ui/src/app/components/home-page/home-page.component.css b/ufund-ui/src/app/components/home-page/home-page.component.css index b64be18..47e6ebd 100644 --- a/ufund-ui/src/app/components/home-page/home-page.component.css +++ b/ufund-ui/src/app/components/home-page/home-page.component.css @@ -6,7 +6,6 @@      justify-content: center;      overflow: clip;  } -  #hero {      display: flex;      /*flex-direction: column;*/ @@ -19,12 +18,21 @@ h1 {      max-width: 1200px;  } +#cr { +    opacity: var(--opacity-cr); +} +  #jf { -    /*position: absolute;*/ +    opacity: var(--opacity-jf); +} + +.text-highlight { +    text-decoration: underline; +    color: var(--highlight-color);  }  #right { -    max-width: 500px; +    max-width: 450px;      max-height: 500px;      display: flex;      justify-content: center; @@ -33,6 +41,6 @@ h1 {  }  #left { -    max-width: 500px; +    max-width: 550px;      z-index: 1;  } diff --git a/ufund-ui/src/app/components/home-page/home-page.component.html b/ufund-ui/src/app/components/home-page/home-page.component.html index 7a7ff96..051132e 100644 --- a/ufund-ui/src/app/components/home-page/home-page.component.html +++ b/ufund-ui/src/app/components/home-page/home-page.component.html @@ -1,10 +1,14 @@  <div id="hero">      <div id="left"> -        <h1>Helping fund coral reef and marine life conservation</h1> +        <h1>Helping fund <span class="text-highlight">coral reef</span> and  +            <span class="text-highlight">marine life</span> conservation.</h1>          <p>View our online cupboard holding all needs related to sea life preservation</p> -        <button class="button2" routerLink="/cupboard">View needs</button> +        <button class="button2" routerLink="/cupboard">View Needs</button>      </div>      <div id="right"> -        <img id="jf" src="jf.png" height="1024" width="1024"/> +        <!-- <img id="jf" src="jf.png" height="1024" width="1024"/> --> +         <div style="width: 500px; height: 500px;"></div> +        <img style="position: absolute;" id="cr" src="cr.png" height="700" width="700"/> +        <img style="position: absolute;" id="jf" src="jf.png" height="700" width="700"/>      </div>  </div> diff --git a/ufund-ui/src/app/components/home-page/home-page.component.ts b/ufund-ui/src/app/components/home-page/home-page.component.ts index 95e8962..71c2549 100644 --- a/ufund-ui/src/app/components/home-page/home-page.component.ts +++ b/ufund-ui/src/app/components/home-page/home-page.component.ts @@ -1,4 +1,5 @@ -import {Component} from '@angular/core'; +import {Component, Inject, OnInit} from '@angular/core'; +import { DOCUMENT } from '@angular/common';  @Component({      selector: 'app-home-page', @@ -6,6 +7,17 @@ import {Component} from '@angular/core';      templateUrl: './home-page.component.html',      styleUrl: './home-page.component.css'  }) -export class HomePageComponent { +export class HomePageComponent implements OnInit { + +    constructor( +        @Inject(DOCUMENT) private document: Document +    ) {} +    ngOnInit(): void { +        console.log(this.document.documentElement); +    } + +     + +      } diff --git a/ufund-ui/src/app/components/login/login.component.css b/ufund-ui/src/app/components/login/login.component.css index b56b4eb..fc1d9da 100644 --- a/ufund-ui/src/app/components/login/login.component.css +++ b/ufund-ui/src/app/components/login/login.component.css @@ -2,29 +2,60 @@      display: flex;      align-items: center;      justify-content: center; -    height: 100%; -    /*background-image: url("https://www.fineshare.com/background/jellyfish-under-fluorescent-illumination.jpg");*/ -    background: rgba(0, 0, 0, .65) url("https://4kwallpapers.com/images/wallpapers/blue-jellyfish-aquarium-underwater-glowing-marine-life-1920x1080-3546.jpg"); +    width: 100vw; +    height: 150vh; +    overflow: hidden; +    background-color: transparent;      background-blend-mode: darken; -    margin-top: -66px +    margin-top: -150px; +    overflow: hidden; +} + +#bg-cr { +    position: absolute; +    margin-top: -150px; +    top:0; +    width: 100vw; +    height: calc(100vh + 150px); +    background: linear-gradient(to bottom, rgba(84, 45, 0, 0) 30%, rgba(84, 45, 0, 0.1) 40%), url("/login-cr.png"); +    opacity: calc(var(--opacity-cr)); +    z-index: 1; +} +#bg-jf { +    position: absolute; +    top:0; +    width: 100vw; +    height: 100vh; +    background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 30%), url("/login-jf.png"); +    opacity: var(--opacity-jf); +    z-index: 1;  }  #box {      display: flex;      flex-direction: column; -    max-width: 350px; +    align-items: center; +    aspect-ratio: 4/5; +    min-height: 50vh; +    margin-top: 15vh;      gap: 10px; +    /* background-color: var(--background-color); */      backdrop-filter: blur(10px); -    background-color: rgba(0, 0, 0, 0.1); -    padding: 30px; +    padding: 50px 40px;      color: white;      border-radius: 5px;      border-style: solid;      border-width: 1px; -    border-color: rgb(140, 140, 255); +    border-color: var(--highlight-color); +    z-index: 2;  } +#greeting { +    font-size: 32px; +    /* text-decoration: underline; +    text-decoration-color: var(--highlight-color); */ +}  .border {      border-style: solid;      border-width: 1px; @@ -34,3 +65,10 @@      background-color: white;      box-shadow: 0 0 10px 10px black;  } + +#signup { +    color: var(--highlight-color); +    text-decoration: underline; +    text-decoration-thickness: 1px; +    text-decoration-color: var(--highlight-color); +}
\ No newline at end of file diff --git a/ufund-ui/src/app/components/login/login.component.html b/ufund-ui/src/app/components/login/login.component.html index 1017d0f..27eab96 100644 --- a/ufund-ui/src/app/components/login/login.component.html +++ b/ufund-ui/src/app/components/login/login.component.html @@ -1,9 +1,12 @@  <div id="box"> -    <h1>Login</h1> -    <input placeholder="Username" type="text" #username (keydown.enter)="login(username.value, password.value)"> -    <input placeholder="Password" type="password" #password (keydown.enter)="login(username.value, password.value)"> -    <button type="button" (click)="login(username.value, password.value)">Login</button> -    <div> -        New? <a routerLink="/signup">Create an account</a> +    <h1 id="greeting">Login</h1> +    <input class="form-input" placeholder="Username" type="text" #username (keydown.enter)="login(username.value, password.value)"> +    <input class="form-input" placeholder="Password" type="password" #password (keydown.enter)="login(username.value, password.value)"> +    <button  class="form-submit" type="button" (click)="login(username.value, password.value)">Login</button> +    <div style="display: flex; column-gap: 4px;"> +        <p>New?</p> <a routerLink="/signup"><p id="signup">Create an account.</p></a>      </div>  </div> +<div id="bg-cr"></div> +<div id="bg-jf"></div> + diff --git a/ufund-ui/src/app/components/need-list/need-list.component.css b/ufund-ui/src/app/components/need-list/need-list.component.css index 60af7bb..b3af85f 100644 --- a/ufund-ui/src/app/components/need-list/need-list.component.css +++ b/ufund-ui/src/app/components/need-list/need-list.component.css @@ -1,5 +1,5 @@  .needEntry { -    background-color: #2e2e2e; +    background-color: var(--tertiary-color);      display: flex;      flex-direction: column;      border-radius: 5px; @@ -88,7 +88,7 @@  .clickable {      padding: 10px; -    background-color: #3a3a3a; +    background-color: var(--secondary-color);      border-radius: 5px;      cursor: pointer;      height: 130px; @@ -98,7 +98,7 @@  }  .clickable:hover { -    background-color: #444444; +    background-color: var(--tertiary-color);  }  .actionArea { diff --git a/ufund-ui/src/app/components/need-list/need-list.component.html b/ufund-ui/src/app/components/need-list/need-list.component.html index 1410ce6..0e5b762 100644 --- a/ufund-ui/src/app/components/need-list/need-list.component.html +++ b/ufund-ui/src/app/components/need-list/need-list.component.html @@ -2,12 +2,12 @@  <div id="needList">      <div *ngFor="let need of visibleNeeds" class="needEntry">          <div [routerLink]="'/need/' + need.id" class="clickable"> -            +              <div class="split">                  <div class="left">                      <img *ngIf="need.image" alt="Need image" class="need-image" [src]="need.image"/>                  </div> -                 +                  <div class="middle">                      <span class="needName">{{need.name}}</span>                      <span class="needType">{{need.type}}</span> @@ -25,7 +25,7 @@                  <progress [value]="need.current" [max]="need.maxGoal"></progress>              </div>          </div> -     +          <div *ngIf="actionArea" class="actionArea">              <ng-container [ngTemplateOutlet]="actionArea" [ngTemplateOutletContext]="{$implicit: need}"/>          </div> diff --git a/ufund-ui/src/index.html b/ufund-ui/src/index.html index b6ae1a2..34b631c 100644 --- a/ufund-ui/src/index.html +++ b/ufund-ui/src/index.html @@ -1,5 +1,5 @@  <!doctype html> -<html lang="en"> +<html lang="en" theme="light">  <head>      <meta charset="utf-8">      <title>UfundUi</title> diff --git a/ufund-ui/src/styles.css b/ufund-ui/src/styles.css index 527408a..44f6107 100644 --- a/ufund-ui/src/styles.css +++ b/ufund-ui/src/styles.css @@ -1,17 +1,44 @@  /* You can add global styles to this file, and also import other style files */ -:root { -    color-scheme: /*light*/ dark; -} +/* :root { +    color-scheme: dark; +} */  * {      box-sizing: border-box; +    color: var(--foreground-color); +    transition: all ease-in-out .3s; +} + +[theme="light"] { +    --background-color: #e6e4df; +    --secondary-color: #e0dcd4; +    --tertiary-color: #cac6be; +    --foreground-color: #000000; +    --highlight-color: #cf9451; +    --dark-highlight-clor: #582f00; +    --hover-color: #d8cdc0; +    --opacity-cr: 1; +    --opacity-jf: 0; +} + +[theme="dark"] { +    --background-color: #000715; +    --secondary-color: #444444; +    --tertiary-color: #3a3a3a; +    --foreground-color: #ffffff; +    --highlight-color: #6091e8; +    --dark-highlight-clor: #002846; +    --hover-color: #394559; +    --opacity-cr: 0; +    --opacity-jf: 1;  }  html, body {      margin: 0;      height: 100%; -    background-color: light-dark(white, #000715); +    background-color: var(--background-color); +    color: var(--foreground-color);  }  body { @@ -27,19 +54,20 @@ input, textarea {      border-radius: 5px;      border-style: solid;      border-width: 1px; -    background-color: light-dark(#ebebeb, #3a3a3a); +    background-color: var(--background-color);      &:hover { -        background-color: light-dark(#e1e1e1, #444444); +        background-color: var(--hover-color);      }  }  button, input[type=button], input[type=reset], input[type=submit], .button { -    font-size: 14pt; +    font-size: 12pt;      padding: 6px 16px;      border-radius: 9999px;      border-style: none; -    background-color: light-dark(#ebebeb, #3a3a3a); +    font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; +    background-color: var(--tertiary-color);      display: flex;      gap: 5px;      text-align: center; @@ -47,24 +75,33 @@ button, input[type=button], input[type=reset], input[type=submit], .button {      align-items: center;      &:hover { -        background-color: light-dark(#e1e1e1, #444444); +        background-color: var(--hover-color);      }  }  .button2 { -    text-transform: uppercase; -    border: 1px solid #5cdbff; +    /* text-transform: uppercase; */ +    border: 3px solid var(--highlight-color);      padding: 10px 25px; +    font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;      font-size: 12pt; -    font-weight: 600; +    font-weight: 700;      background-color: transparent; -    text-shadow: #5cdbff 0 0 50px; +    text-shadow: var(--highlight-color) 0 0 50px;  }  .icon {      font-family: 'Material Symbols Outlined'  } +.sort-scheme { +    background-color: var(--background-color); +    border-style: solid; +    border-color: var(--tertiary-color); +    border-radius: 5px; +    border-width: 1px; +} +  h1 {      font-size: 40px;  }  | 
