Archived
Private
Public Access
1
0

Initial commit

This commit is contained in:
2022-09-04 12:45:01 +02:00
commit f4a01d6a69
11601 changed files with 4206660 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }

View File

@@ -0,0 +1,58 @@
<app-navigation></app-navigation>
<div class="sidebar">
<div class="sites">
<div class="link selected">
<mat-icon>dashboard</mat-icon>
<span>Dashboard</span>
</div>
<div class="link">
<mat-icon>currency_exchange</mat-icon>
<span>Exchange</span>
</div>
<div class="link">
<mat-icon>account_balance_wallet</mat-icon>
<span>Wallet</span>
</div>
<div class="link">
<mat-icon>credit_card</mat-icon>
<span>Transactions</span>
</div>
<div class="link">
<mat-icon>pie_chart</mat-icon>
<span>Analytics</span>
</div>
<div class="link">
<mat-icon>chat</mat-icon>
<span>Messages</span>
</div>
<div class="link">
<mat-icon>help_center</mat-icon>
<span>Help Center</span>
</div>
<div class="link">
<mat-icon>settings</mat-icon>
<span>Settings</span>
</div>
</div>
<div class="update">
<mat-icon>update</mat-icon>
<h1>Updates Available</h1>
<span>Security Updates <br> General Updates</span>
<input type="button" value="Update Now">
</div>
</div>
<main class="content">
<div class="overview">
<h1>Overview</h1>
</div>
</main>

View File

@@ -0,0 +1,107 @@
$background: #f0eff6;
$selected: #460ccd;
$text: #929299;
.sidebar {
position: fixed;
width: 200px;
height: calc(100% - 50px);
background-color: $background;
user-select: none;
.link {
width: 80%;
height: 50px;
margin: 10px auto;
display: flex;
color: $text;
mat-icon {
width: 30px;
height: 30px;
font-size: 30px;
margin: 10px;
}
span {
align-self: center;
justify-self: center;
}
&.selected {
background: #fff;
color: $selected;
border-left: 5px solid $selected;
}
&:hover {
cursor: pointer;
background: #fff;
}
}
.update {
top: 100%;
left: 5%;
transform: translateY(-110%);
width: 90%;
height: 17%;
background-color: #fff;
border-radius: 20px;
position: absolute;
mat-icon {
margin-top: 5px;
width: 100%;
height: max-content;
line-height: 100%;
text-align: center;
font-size: 40px;
}
h1 {
text-align: center;
font-weight: bold;
font-size: 17px;
}
span {
display: block;
width: 100%;
text-align: center;
}
input {
display: block;
margin: 20px auto;
width: 80%;
height: 30px;
background-color: $selected;
border: none;
border-radius: 8px;
color: #fff;
&:hover {
cursor: pointer;
}
}
}
}
.content {
margin-left: 200px;
width: calc(100% - 200px);
height: calc(100% - 50px);
background-color: $background;
}
@media screen and (max-width: 750px) {
.sidebar {
display: none;
}
.content {
margin-left: 0;
width: 100%;
}
}

View File

@@ -0,0 +1,29 @@
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
title = 'AdminPanel';
ngOnInit(): void {
AppComponent.createClickable(".sites");
}
public static createClickable(querySelector: string) {
const container = document.querySelector(querySelector) as HTMLDivElement;
for (let index = 0; index < container.children.length; index++) {
const element = container.children[index] as HTMLDivElement;
element.onclick = () => {
for (let i = 0; i < container.children.length; i++)
container.children[i].classList.remove("selected");
element.classList.add("selected");
}
}
}
}

View File

@@ -0,0 +1,24 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NavigationComponent } from './navigation/navigation.component';
import {MatIconModule} from "@angular/material/icon";
@NgModule({
declarations: [
AppComponent,
NavigationComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MatIconModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

View File

@@ -0,0 +1,22 @@
<nav>
<mat-icon class="expander">menu</mat-icon>
<img src="assets/images/logo.png" alt="logo" id="logo">
<div class="search-bar">
<mat-icon>search</mat-icon>
<input type="text" placeholder="Search">
</div>
<div class="theme">
<mat-icon class="dark selected">dark_mode</mat-icon>
<mat-icon class="light">light_mode</mat-icon>
</div>
<div class="profile">
<img src="assets/images/profile-1.jpg" alt="profile">
<span class="name">Leon Hoppe</span>
<mat-icon>expand_more</mat-icon>
</div>
</nav>
<div class="spacer"></div>

View File

@@ -0,0 +1,154 @@
$background: #fff;
$search: #f0eff6;
$dark: #2c2830;
$light: #fafeff;
$icon: #929299;
nav {
position: fixed;
width: 100%;
height: 50px;
background-color: $background;
padding: 10px;
display: flex;
overflow: hidden;
.expander {
height: 30px;
width: 30px;
font-size: 30px;
margin-right: 15px;
display: none;
}
#logo {
height: 30px;
width: auto;
}
.search-bar {
width: 30%;
height: 30px;
background-color: $search;
border-radius: 5px;
margin-left: 10%;
position: relative;
mat-icon {
margin: 2px;
font-size: 26px;
color: $icon;
}
input {
position: absolute;
width: calc(100% - 30px);
height: 100%;
left: 30px;
top: 0;
background: none;
border: none;
font-size: 15px;
&:focus {
outline: none;
}
}
}
.theme {
width: 50px;
height: 25px;
background-color: $search;
position: absolute;
left: 70%;
border-radius: 5px;
margin-top: 2.5px;
mat-icon {
width: 25px;
height: 25px;
line-height: 25px;
font-size: 15px;
text-align: center;
display: inline-block;
color: $dark;
background: none;
border-radius: inherit;
transition: 200ms;
&.selected {
background-color: $dark;
color: $light;
}
&:hover {
cursor: pointer;
}
}
}
.profile {
position: absolute;
left: 100%;
top: 5px;
transform: translateX(-110%);
width: 170px;
height: 40px;
display: flex;
user-select: none;
img {
width: 30px;
height: 30px;
margin: 5px;
border-radius: 50%;
}
.name {
align-self: center;
justify-self: center;
margin-left: 10px;
color: $dark;
}
mat-icon {
align-self: center;
justify-self: center;
margin-left: auto;
color: $dark;
}
&:hover {
cursor: pointer;
}
}
@media screen and (max-width: 750px) {
.expander {
display: block;
}
.profile {
width: 40px;
.name, mat-icon {
display: none;
}
}
.theme {
left: 85%;
}
.search-bar {
width: 50%;
margin-left: 5%;
}
}
}
.spacer {
width: 100%;
height: 50px;
}

View File

@@ -0,0 +1,17 @@
import { Component, OnInit } from '@angular/core';
import {AppComponent} from "../app.component";
@Component({
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.scss']
})
export class NavigationComponent implements OnInit {
constructor() { }
ngOnInit(): void {
AppComponent.createClickable(".theme");
}
}

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -0,0 +1,3 @@
export const environment = {
production: true
};

View File

@@ -0,0 +1,16 @@
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

View File

@@ -0,0 +1,17 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>AdminPanel</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body class="mat-typography">
<app-root></app-root>
</body>
</html>

View File

@@ -0,0 +1,12 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));

View File

@@ -0,0 +1,53 @@
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes recent versions of Safari, Chrome (including
* Opera), Edge on the desktop, and iOS and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/

View File

@@ -0,0 +1,9 @@
/* You can add global styles to this file, and also import other style files */
html, body { height: 100%; }
body { margin: 0; }
* {
box-sizing: border-box;
font-family: Poppins, "Helvetica Neue", sans-serif;
}

View File

@@ -0,0 +1,26 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
<T>(id: string): T;
keys(): string[];
};
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);