+
diff --git a/src/app/components/settings/settings.component.scss b/src/app/components/settings/settings.component.scss
index d4b557d..7664513 100644
--- a/src/app/components/settings/settings.component.scss
+++ b/src/app/components/settings/settings.component.scss
@@ -3,7 +3,7 @@
.banner {
background-color: var.$sidebar-footer;
- padding: 1.6rem 0 1.3rem 0;
+ padding: 1.3rem 0 1.1rem 0;
margin: -1.5rem -1.5rem 1.5rem -1.5rem;
/*
background-color: mat.get-color-from-palette(var.$md-custom-warn, 700);
@@ -33,6 +33,17 @@
font-weight: 300;
}
}
+
+.settings-page > .container {
+ margin-top: 2.4rem;
+ margin-bottom: 2.6rem;
+ padding-bottom: 1rem;
+}
+img.avatar {
+ max-height: 32px;
+ margin-right: 8px;
+}
+
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
@@ -44,4 +55,4 @@ input::-webkit-inner-spin-button {
input[type=number] {
appearance: textfield;
-moz-appearance: textfield;
-}
\ No newline at end of file
+}
diff --git a/src/app/components/settings/settings.component.ts b/src/app/components/settings/settings.component.ts
index c5aa06d..6ada870 100644
--- a/src/app/components/settings/settings.component.ts
+++ b/src/app/components/settings/settings.component.ts
@@ -8,6 +8,7 @@ import { MatDividerModule } from '@angular/material/divider';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
+import { MatSelectModule } from '@angular/material/select';
import { Observable, Subscription } from 'rxjs';
@@ -20,7 +21,7 @@ import { ListErrorsComponent } from 'src/app/components/shared';
standalone: true,
imports: [
RouterLink, FormsModule, ReactiveFormsModule,
- MatButtonModule, MatIconModule, MatFormFieldModule, MatInputModule, MatDividerModule,
+ MatButtonModule, MatIconModule, MatDividerModule, MatFormFieldModule, MatInputModule, MatSelectModule,
ListErrorsComponent
],
styleUrl: './settings.component.scss',
@@ -38,6 +39,18 @@ export class SettingsComponent implements OnInit, OnDestroy {
errors: Errors = { errors: {} };
isSubmitting = false;
destroyRef = inject(DestroyRef);
+ imgPath = '/assets/images/avatars/';
+ imgExt = '.jpg';
+ avatars = [
+ `${this.imgPath}animal_001${this.imgExt}`, `${this.imgPath}animal_002${this.imgExt}`,
+ `${this.imgPath}animal_003${this.imgExt}`, `${this.imgPath}animal_004${this.imgExt}`,
+ `${this.imgPath}animal_005${this.imgExt}`, `${this.imgPath}animal_006${this.imgExt}`,
+ `${this.imgPath}animal_007${this.imgExt}`, `${this.imgPath}animal_008${this.imgExt}`,
+ `${this.imgPath}animal_009${this.imgExt}`, `${this.imgPath}animal_010${this.imgExt}`,
+ `${this.imgPath}animal_011${this.imgExt}`, `${this.imgPath}animal_012${this.imgExt}`,
+ `${this.imgPath}animal_013${this.imgExt}`, `${this.imgPath}animal_014${this.imgExt}`,
+ `${this.imgPath}animal_015${this.imgExt}`, `${this.imgPath}animal_016${this.imgExt}`
+ ];
constructor(
private router: Router,
@@ -52,10 +65,7 @@ export class SettingsComponent implements OnInit, OnDestroy {
firstname: ['', Validators.required],
lastname: ['', Validators.required],
phone: ['', Validators.required],
- licence: '',
- poids: '',
- image: '',
- bg_image: ''
+ image: ''
});
// Optional: subscribe to changes on the form :
// this.settingsForm.valueChanges.pipe(this._scavenger.collect()).subscribe(values => this.updateUser(values));
@@ -94,7 +104,10 @@ export class SettingsComponent implements OnInit, OnDestroy {
submitForm() {
this.isSubmitting = true;
- // update the model
+ /* Update the model */
+ if (this.avatars.indexOf(this.settingsForm.value.image) === -1) {
+ this.settingsForm.value.image = `${this.imgPath}animal_001${this.imgExt}`;
+ }
this.updateUser(this.settingsForm.value);
const user$: Observable<{ user: User }> = this.userService.update(this.user).pipe(takeUntilDestroyed(this.destroyRef));
diff --git a/src/app/components/shared/layout/full.component.html b/src/app/components/shared/layout/full.component.html
index 9fd7194..4385b94 100755
--- a/src/app/components/shared/layout/full.component.html
+++ b/src/app/components/shared/layout/full.component.html
@@ -106,67 +106,75 @@
- @for (menuitem of menuItems.getMenuItems(); track menuitem) {
+ @for (menuitem of getMenuItems(); track menuitem) {
- @if (menuitem.type === 'link') {
+ @if (!menuitem.parent && menuitem.type === 'link') {
-
+ @if (menuitem.icontype === 'mat') {
+
+ }
+ @else {
+
+ }
{{ menuitem.name }}
@for (badge of menuitem.badge; track badge) {
}
- }
- @if (menuitem.type === 'menu') {
-
-
+ }
+ @if (menuitem.type === 'menu') {
+
+ @if (menuitem.icontype === 'mat') {
+
+ }
+ @else {
+
+ }
{{ menuitem.name }}
@for (badge of menuitem.badge; track badge) {
}
- }
+ }
- }
- @if (showQCMMenu) {
-
}
+ }
-
+
@for (menuitem of menuItems.getMenuAuth(); track menuitem) {
@if (menuitem.type === 'link') {
-
- {{ menuitem.name }}
-
- @for (badge of menuitem.badge; track badge) {
-
+ @if (menuitem.icontype === 'mat') {
+
+ }
+ @else {
+
}
-
- }
- @if (menuitem.type === 'menu') {
-
-
{{ menuitem.name }}
@for (badge of menuitem.badge; track badge) {
@@ -176,21 +184,6 @@
}
}
- @if (showQCMMenu) {
-
- @for (menuqcm of menuItems.getMenuQCM(); track menuqcm) {
-
- @if ( menuqcm.type === 'link') {
-
-
- {{ menuqcm.name }}
-
-
- }
-
- }
-
- }
diff --git a/src/app/components/shared/layout/full.component.ts b/src/app/components/shared/layout/full.component.ts
index 34a215e..7bc9123 100755
--- a/src/app/components/shared/layout/full.component.ts
+++ b/src/app/components/shared/layout/full.component.ts
@@ -11,7 +11,7 @@ import { MatToolbarModule } from '@angular/material/toolbar';
import { MatMenuModule } from '@angular/material/menu';
import { Observable, Subscription } from 'rxjs';
-import { User } from 'src/app/core/models';
+import { Menu, User } from 'src/app/core/models';
import { UserService } from 'src/app/core/services';
import { MenuItems, ShowAuthedDirective, AccordionAnchorDirective, AccordionLinkDirective, AccordionDirective } from 'src/app/components/shared';
//import { SpinnerComponent } from 'src/app/components/shared';
@@ -43,10 +43,12 @@ export class FullComponent implements OnInit, OnDestroy {
private _mobileQueryListener: () => void;
mobileQuery: MediaQueryList;
currentUser: User = {} as User;
- showQCMMenu = false;
today: number = Date.now();
- siteLink = 'https://www.rampeur.com';
- author = 'Solide Apps';
+ siteLink = 'https://www.adastra-cbd.com';
+ author = 'Ad Astra';
+ links: Menu[] = [];
+ visibleMenu: string[] = ['products', 'page'];
+ //visibleMenu: string[] = ['products'];
constructor(
private router: Router,
@@ -65,10 +67,29 @@ export class FullComponent implements OnInit, OnDestroy {
this._currentUser = user$.subscribe(
(userData) => {
this.currentUser = userData;
+ if (this.currentUser.role === 'Admin') {
+ //this.links = this.menuItems.getMenuItemsAdmin();
+ this.links = this.menuItems.getMenuItems();
+ } else {
+ this.links = this.menuItems.getMenuItems();
+ }
}
);
}
+ getMenuItems(): Menu[] {
+ return this.links;
+ }
+
+ isVisibleMenu(state: string): boolean {
+ const indexOf: number = this.visibleMenu.indexOf(state);
+ if (indexOf !== -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
ngOnDestroy(): void {
this._currentUser.unsubscribe();
this.mobileQuery.removeListener(this._mobileQueryListener);
@@ -78,8 +99,13 @@ export class FullComponent implements OnInit, OnDestroy {
window.open('https://github.com/rampeur', '_blank');
}
- toggleShowQCMMenu() {
- this.showQCMMenu = !this.showQCMMenu;
+ toggleShowMenu(state: string) {
+ const indexOf: number = this.visibleMenu.indexOf(state);
+ if (indexOf !== -1) {
+ this.visibleMenu.splice(indexOf, 1);
+ } else {
+ this.visibleMenu.push(state);
+ }
}
logout() {
diff --git a/src/app/components/shared/menu-items.ts b/src/app/components/shared/menu-items.ts
index ac4a668..fabd906 100755
--- a/src/app/components/shared/menu-items.ts
+++ b/src/app/components/shared/menu-items.ts
@@ -3,50 +3,67 @@ import { Injectable } from '@angular/core';
import { Menu } from 'src/app/core/models/menu.model';
const MENUAUTH: Menu[] = [
- { state: 'home', type: 'link', name: 'Accueil', icon: 'home', desc: '' },
- { state: 'login', type: 'link', name: 'Se connecter', icon: 'fingerprint', desc: '' },
- { state: 'register', type: 'link', name: 'Créer un compte', icon: 'person_add_alt', desc: '' }
+ { state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
+ { state: 'login', type: 'link', name: 'Se connecter', icon: 'fingerprint', icontype: 'mat', desc: '' },
+ { state: 'register', type: 'link', name: 'Créer un compte', icon: 'person_add_alt', icontype: 'mat', desc: '' }
+];
+
+const MENUITEMSADMIN: Menu[] = [
+ { state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
+ { state: 'products', type: 'menu', name: 'Produits', icon: 'barcode', desc: '' },
+ { parent: 'products', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
+ { parent: 'products', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
+ { parent: 'products', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
+ { state: 'page', type: 'menu', name: 'Documentation', icon: 'books', desc: '' },
+ { parent: 'page', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
+ { parent: 'page', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
+ { parent: 'page', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
+ { state: 'dashboard', type: 'link', name: 'Dashboard', icon: 'dashboard', icontype: 'mat', desc: '' },
+ { state: 'logbook', type: 'link', name: 'Carnet de saut', icon: 'assignment_turned_in', icontype: 'mat', desc: '' },
+ { state: 'aeronefs', type: 'link', name: 'Aéronefs', icon: 'flight', icontype: 'mat', desc: '' },
+ { state: 'dropzones', type: 'link', name: 'Drop Zones', icon: 'flight_takeoff', icontype: 'mat', desc: '' },
+ { state: 'canopies', type: 'link', name: 'Voiles', icon: 'paragliding', icontype: 'mat', desc: '' },
+ { state: 'jumps', type: 'link', name: 'Sauts', icon: 'filter_drama', icontype: 'mat', desc: '' },
+ { state: 'calculator', type: 'link', name: 'Taille de voile', icon: 'calculate', icontype: 'mat', desc: '' },
+ { state: 'qcm', type: 'menu', name: 'QCM Brevets', icon: 'rule_folder', icontype: 'mat', desc: '' },
+ { parent: 'qcm', state: 'bpa', type: 'link', name: 'BPA', icon: 'rule', icontype: 'mat' },
+ { parent: 'qcm', state: 'c', type: 'link', name: 'Brevet C', icon: 'rule', icontype: 'mat' },
+ { parent: 'qcm', state: 'd', type: 'link', name: 'Brevet D', icon: 'rule', icontype: 'mat' }
];
const MENUITEMS: Menu[] = [
- { state: 'home', type: 'link', name: 'Accueil', icon: 'home', desc: '' },
- { state: 'dashboard', type: 'link', name: 'Dashboard', icon: 'dashboard', desc: '' },
- { state: 'logbook', type: 'link', name: 'Carnet de saut', icon: 'assignment_turned_in', desc: '' },
- { state: 'aeronefs', type: 'link', name: 'Aéronefs', icon: 'flight', desc: '' },
- { state: 'dropzones', type: 'link', name: 'Drop Zones', icon: 'flight_takeoff', desc: '' },
- { state: 'canopies', type: 'link', name: 'Voiles', icon: 'paragliding', desc: '' },
- { state: 'jumps', type: 'link', name: 'Sauts', icon: 'filter_drama', desc: '' },
- { state: 'calculator', type: 'link', name: 'Taille de voile', icon: 'calculate', desc: '' },
- { state: 'qcm', type: 'menu', name: 'QCM Brevets', icon: 'rule_folder', desc: '' }
+ { state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
+ { state: 'products', type: 'menu', name: 'Produits', icon: 'barcode', desc: '' },
+ { parent: 'products', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
+ { parent: 'products', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
+ { parent: 'products', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
+ { state: 'page', type: 'menu', name: 'Documentation', icon: 'books', desc: '' },
+ { parent: 'page', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
+ { parent: 'page', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
+ { parent: 'page', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' }
];
const MENUPJUMP: Menu[] = [
- { state: '#', type: 'link', name: 'Modifier', icon: 'edit', desc: '', color: 'primary' },
- { state: '#', type: 'link', name: 'Supprimer', icon: 'delete', desc: '', color: 'raspberry' }
-];
-
-const MENUQCM: Menu[] = [
- { state: 'bpa', type: 'link', name: 'BPA', icon: 'rule' },
- { state: 'c', type: 'link', name: 'Brevet C', icon: 'rule' },
- { state: 'd', type: 'link', name: 'Brevet D', icon: 'rule' }
+ { state: '#', type: 'link', name: 'Modifier', icon: 'edit', icontype: 'mat', desc: '', color: 'primary' },
+ { state: '#', type: 'link', name: 'Supprimer', icon: 'delete', icontype: 'mat', desc: '', color: 'raspberry' }
];
const MENUPANEL: Menu[] = [
- { state: '#', type: 'link', name: 'Retirer du dashboard', icon: 'add_notes', desc: '' },
- { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' }
+ { state: '#', type: 'link', name: 'Retirer du dashboard', icon: 'add_notes', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' }
];
const MENUCALCULATOR: Menu[] = [
- { state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', desc: '' },
- { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' },
- { state: '#', type: 'link', name: 'Partager', icon: 'share', desc: '' }
+ { state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Partager', icon: 'share', icontype: 'mat', desc: '' }
];
const MENULOGBOOK: Menu[] = [
- { state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', desc: '' },
- { state: '#', type: 'link', name: 'Recherche par participant', icon: 'person_search', desc: '' },
- { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' },
- { state: '#', type: 'link', name: 'Import CSV', icon: 'upload_file', desc: '' }
+ { state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Recherche par participant', icon: 'person_search', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' },
+ { state: '#', type: 'link', name: 'Import CSV', icon: 'upload_file', icontype: 'mat', desc: '' }
];
@Injectable()
@@ -60,12 +77,12 @@ export class MenuItems {
getMenuItems(): Menu[] {
return MENUITEMS;
}
+ getMenuItemsAdmin(): Menu[] {
+ return MENUITEMSADMIN;
+ }
getMenuLogbook(): Menu[] {
return MENULOGBOOK;
}
- getMenuQCM(): Menu[] {
- return MENUQCM;
- }
getMenuPanel(): Menu[] {
return MENUPANEL;
}
diff --git a/src/app/core/models/article-list-config.model.ts b/src/app/core/models/article-list-config.model.ts
new file mode 100755
index 0000000..a1e9872
--- /dev/null
+++ b/src/app/core/models/article-list-config.model.ts
@@ -0,0 +1,12 @@
+export interface ArticleListConfig {
+ type: string;
+ filters: ArticleListFilters;
+}
+
+export interface ArticleListFilters {
+ tag?: string,
+ author?: string,
+ favorited?: string,
+ limit?: number,
+ offset?: number
+}
diff --git a/src/app/core/models/article-list.model.ts b/src/app/core/models/article-list.model.ts
new file mode 100644
index 0000000..e741db8
--- /dev/null
+++ b/src/app/core/models/article-list.model.ts
@@ -0,0 +1,6 @@
+import { Article } from './article.model';
+
+export interface ArticleList {
+ articles: Array
;
+ articlesCount: number;
+}
diff --git a/src/app/core/models/article.model.ts b/src/app/core/models/article.model.ts
new file mode 100755
index 0000000..b377ab3
--- /dev/null
+++ b/src/app/core/models/article.model.ts
@@ -0,0 +1,28 @@
+import { Profile } from './profile.model';
+import { PageLinks, PageMeta } from './shared.model';
+import { Tag } from './tag.model';
+
+export interface Article {
+ slug: string;
+ title: string;
+ description: string;
+ body: string;
+ author: Profile;
+ createdAt: string;
+ updatedAt: string;
+ tagList: Tag[];
+ favorited: boolean;
+ favoritesCount: number;
+}
+
+export interface ArticlePageData {
+ article: Article;
+ _links: PageLinks;
+ _meta: PageMeta;
+}
+
+export interface ArticlesPageData {
+ articles: Array;
+ _links: PageLinks;
+ _meta: PageMeta;
+}
diff --git a/src/app/core/models/email.model.ts b/src/app/core/models/email.model.ts
new file mode 100755
index 0000000..5aae6e9
--- /dev/null
+++ b/src/app/core/models/email.model.ts
@@ -0,0 +1,10 @@
+import { Article } from './article.model';
+
+export interface Email {
+ from: string;
+ to: string;
+ subject: string;
+ text: string;
+ html: string;
+ article?: Article;
+}
diff --git a/src/app/core/models/index.ts b/src/app/core/models/index.ts
index 25c978e..700af0b 100644
--- a/src/app/core/models/index.ts
+++ b/src/app/core/models/index.ts
@@ -1,5 +1,8 @@
export * from './aeronef.model';
export * from './aeronef-list.model';
+export * from './article.model';
+export * from './article-list.model';
+export * from './article-list-config.model';
export * from './application.model';
export * from './application-list.model';
export * from './application-list-config.model';
@@ -11,7 +14,12 @@ export * from './errors.model';
export * from './jump.model';
export * from './jump-list.model';
export * from './jump-list-config.model';
+export * from './menu.model';
+export * from './product.model';
+export * from './product-list.model';
+export * from './product-list-config.model';
export * from './profile.model';
export * from './qcm.model';
export * from './shared.model';
+export * from './tag.model';
export * from './user.model';
diff --git a/src/app/core/models/jump.model.ts b/src/app/core/models/jump.model.ts
index 2abd26e..45c9aac 100644
--- a/src/app/core/models/jump.model.ts
+++ b/src/app/core/models/jump.model.ts
@@ -1,7 +1,7 @@
import { FormControl } from '@angular/forms';
import { Profile } from './profile.model';
-import { PageLinks, PageMeta } from './shared.model';
+import { ColumnDefinition, PageLinks, PageMeta } from './shared.model';
export interface Jump {
slug: string;
@@ -200,16 +200,6 @@ export interface JumpsPageData {
jumpsByModuleCount: number;*/
}
-export interface ColumnDefinition {
- key: string;
- type: string;
- label: string;
- required?: boolean;
- pattern?: string;
- min?: number;
- step?: number;
-}
-
export const jumpColumns: Array = [
{
key: 'isSelected',
diff --git a/src/app/core/models/menu.model.ts b/src/app/core/models/menu.model.ts
index 111471a..ec4e5a6 100644
--- a/src/app/core/models/menu.model.ts
+++ b/src/app/core/models/menu.model.ts
@@ -1,10 +1,12 @@
import { Badge } from './badge.model';
export interface Menu {
+ parent?: string;
state: string;
name: string;
type: string;
icon: string;
+ icontype?: string;
desc?: string;
badge?: Badge[];
color?: string;
diff --git a/src/app/core/models/product-list-config.model.ts b/src/app/core/models/product-list-config.model.ts
new file mode 100644
index 0000000..8e9780b
--- /dev/null
+++ b/src/app/core/models/product-list-config.model.ts
@@ -0,0 +1,18 @@
+export interface ProductListConfig {
+ type: string;
+ filters: ProductListFilters;
+}
+
+export interface ProductListFilters {
+ slug?: string;
+ name?: string;
+ numero?: number;
+ barcode?: number;
+ poid?: number;
+ sachets?: string;
+ molecules?: string;
+ numeroRangeStart?: number;
+ numeroRangeEnd?: number;
+ sachetsRangeStart?: number;
+ sachetsRangeEnd?: number;
+}
diff --git a/src/app/core/models/product-list.model.ts b/src/app/core/models/product-list.model.ts
new file mode 100644
index 0000000..3e82683
--- /dev/null
+++ b/src/app/core/models/product-list.model.ts
@@ -0,0 +1,6 @@
+import { Product } from './product.model';
+
+export interface ProductList {
+ products: Array;
+ productsCount: number;
+}
diff --git a/src/app/core/models/product.model.ts b/src/app/core/models/product.model.ts
new file mode 100644
index 0000000..8329a5f
--- /dev/null
+++ b/src/app/core/models/product.model.ts
@@ -0,0 +1,86 @@
+import { FormControl } from '@angular/forms';
+
+import { ColumnDefinition, PageLinks, PageMeta } from './shared.model';
+
+export interface Product {
+ slug: string;
+ name: string;
+ numero: number;
+ barcode: number;
+ poid?: number;
+ sachets?: string;
+ molecules?: string;
+ isSelected?: boolean;
+ createdAt: string;
+ updatedAt: string;
+}
+
+export interface ProductForm {
+ slug: FormControl;
+ name: FormControl;
+ numero: FormControl;
+ barcode: FormControl;
+ poid: FormControl;
+ sachets: FormControl>;
+ molecules: FormControl>;
+}
+
+export interface ProductPageData {
+ product: Product;
+ _links: PageLinks;
+ _meta: PageMeta;
+}
+
+export interface ProductsPageData {
+ products: Array;
+ _links: PageLinks;
+ _meta: PageMeta;
+}
+
+
+export const productColumns: Array = [
+ {
+ key: 'isSelected',
+ type: 'isSelected',
+ label: ''
+ },
+ {
+ key: 'name',
+ type: 'text',
+ label: 'Libellé',
+ required: true
+ },
+ {
+ key: 'numero',
+ type: 'numeric',
+ label: 'Numéro',
+ required: true,
+ min: 0,
+ step: 1
+ },
+ {
+ key: 'barcode',
+ type: 'numeric',
+ label: 'Code EAN13',
+ required: true,
+ min: 0,
+ step: 1
+ },
+ {
+ key: 'poid',
+ type: 'numeric',
+ label: 'Poid',
+ min: 0,
+ step: 1
+ },
+ {
+ key: 'sachets',
+ type: 'text',
+ label: 'Sachets'
+ },
+ {
+ key: 'molecules',
+ type: 'text',
+ label: 'Molécules'
+ }
+];
\ No newline at end of file
diff --git a/src/app/core/models/shared.model.ts b/src/app/core/models/shared.model.ts
index 2eb45c7..8016d68 100644
--- a/src/app/core/models/shared.model.ts
+++ b/src/app/core/models/shared.model.ts
@@ -28,3 +28,13 @@ export interface ReduceRow {
key: string[];
value: number;
}
+
+export interface ColumnDefinition {
+ key: string;
+ type: string;
+ label: string;
+ required?: boolean;
+ pattern?: string;
+ min?: number;
+ step?: number;
+}
diff --git a/src/app/core/models/tag.model.ts b/src/app/core/models/tag.model.ts
new file mode 100644
index 0000000..3ecfee4
--- /dev/null
+++ b/src/app/core/models/tag.model.ts
@@ -0,0 +1,5 @@
+export interface Tag {
+ name: string;
+ createdAt: string;
+ updatedAt: string;
+}
\ No newline at end of file
diff --git a/src/app/core/models/user.model.ts b/src/app/core/models/user.model.ts
index b83edd2..d785b1e 100644
--- a/src/app/core/models/user.model.ts
+++ b/src/app/core/models/user.model.ts
@@ -5,9 +5,9 @@ export interface User {
firstname: string;
lastname: string;
phone: string;
+ token: string;
licence?: number;
poids?: number;
image?: string;
bg_image?: string;
- token: string;
}
diff --git a/src/app/core/resolvers/article-resolver.service.ts b/src/app/core/resolvers/article-resolver.service.ts
new file mode 100644
index 0000000..4441872
--- /dev/null
+++ b/src/app/core/resolvers/article-resolver.service.ts
@@ -0,0 +1,12 @@
+import { inject } from '@angular/core';
+import { ActivatedRouteSnapshot, ResolveFn } from '@angular/router';
+import { take } from 'rxjs/operators';
+
+import { ArticlePageData } from 'src/app/core/models';
+import { ArticlesService } from 'src/app/core/services';
+
+export const articleResolver: ResolveFn = (
+ route: ActivatedRouteSnapshot
+) => {
+ return inject(ArticlesService).get(route.params['slug']).pipe(take(1));
+};
\ No newline at end of file
diff --git a/src/app/core/resolvers/articles-resolver.service.ts b/src/app/core/resolvers/articles-resolver.service.ts
new file mode 100644
index 0000000..a47bc5a
--- /dev/null
+++ b/src/app/core/resolvers/articles-resolver.service.ts
@@ -0,0 +1,10 @@
+import { inject } from '@angular/core';
+import { ResolveFn } from '@angular/router';
+import { take } from 'rxjs/operators';
+
+import { Article } from 'src/app/core/models';
+import { ArticlesService } from 'src/app/core/services';
+
+export const articlesResolver: ResolveFn> = () => {
+ return inject(ArticlesService).getAll().pipe(take(1));
+};
\ No newline at end of file
diff --git a/src/app/core/resolvers/index.ts b/src/app/core/resolvers/index.ts
index 981d8e2..cdb151a 100644
--- a/src/app/core/resolvers/index.ts
+++ b/src/app/core/resolvers/index.ts
@@ -1,4 +1,6 @@
export * from './aeronefs-page-resolver.service';
+export * from './article-resolver.service';
+export * from './articles-resolver.service';
export * from './auth-resolver.service';
export * from './canopies-page-resolver.service';
export * from './dropzones-page-resolver.service';
@@ -6,5 +8,7 @@ export * from './jump-resolver.service';
export * from './jumps-page-resolver.service';
export * from './jumps-resolver.service';
export * from './lastjump-resolver.service';
+export * from './product-resolver.service';
+export * from './products-resolver.service';
export * from './profile-resolver.service';
export * from './qcm-resolver.service';
diff --git a/src/app/core/resolvers/product-resolver.service.ts b/src/app/core/resolvers/product-resolver.service.ts
new file mode 100644
index 0000000..bf3fe54
--- /dev/null
+++ b/src/app/core/resolvers/product-resolver.service.ts
@@ -0,0 +1,12 @@
+import { inject } from '@angular/core';
+import { ActivatedRouteSnapshot, ResolveFn } from '@angular/router';
+import { take } from 'rxjs/operators';
+
+import { ProductPageData } from 'src/app/core/models';
+import { ProductsService } from 'src/app/core/services';
+
+export const productResolver: ResolveFn = (
+ route: ActivatedRouteSnapshot
+) => {
+ return inject(ProductsService).get(route.params['slug']).pipe(take(1));
+};
\ No newline at end of file
diff --git a/src/app/core/resolvers/products-resolver.service.ts b/src/app/core/resolvers/products-resolver.service.ts
new file mode 100644
index 0000000..bf50a90
--- /dev/null
+++ b/src/app/core/resolvers/products-resolver.service.ts
@@ -0,0 +1,10 @@
+import { inject } from '@angular/core';
+import { ResolveFn } from '@angular/router';
+import { take } from 'rxjs/operators';
+
+import { Product } from 'src/app/core/models';
+import { ProductsService } from 'src/app/core/services';
+
+export const productsResolver: ResolveFn> = () => {
+ return inject(ProductsService).getAll().pipe(take(1));
+};
\ No newline at end of file
diff --git a/src/app/core/services/articles.service.ts b/src/app/core/services/articles.service.ts
new file mode 100755
index 0000000..1feb304
--- /dev/null
+++ b/src/app/core/services/articles.service.ts
@@ -0,0 +1,65 @@
+import { Injectable } from '@angular/core';
+import { HttpParams } from '@angular/common/http';
+import { Observable } from 'rxjs';
+
+import { ApiService } from './api.service';
+import { Article, ArticleList, ArticleListConfig, ArticleListFilters, ArticlePageData } from '../models';
+import { map } from 'rxjs/operators';
+
+@Injectable({ providedIn: 'root' })
+export class ArticlesService {
+ constructor(
+ private apiService: ApiService
+ ) { }
+
+ query(config: ArticleListConfig): Observable {
+ // Convert any filters over to Angular's URLSearchParams
+ const params: ArticleListFilters = {} as ArticleListFilters;
+ Object.assign(params, config.filters);
+ return this.apiService
+ .get(
+ '/articles' + ((config.type === 'feed') ? '/feed' : ''),
+ new HttpParams({ fromObject: <{
+ [param: string]: string | number | boolean | readonly (string | number | boolean)[];
+ }>params })
+ );
+ }
+
+ get(slug: string): Observable {
+ return this.apiService.get('/articles/' + slug)/*.pipe(map(data => {
+ data.article.tagList = data.article.tagNameTagTagLists;
+ delete data.article.tagNameTagTagLists;
+ return data;
+ }));*/
+ }
+
+ getAll(): Observable> {
+ return this.apiService.get('/articles').pipe(map(data => data.articles));
+ }
+
+ destroy(slug: string) {
+ return this.apiService.delete('/articles/' + slug);
+ }
+
+ save(article: Article): Observable {
+ // If we're updating an existing article
+ if (article.slug) {
+ return this.apiService.put('/articles/' + article.slug, { article: article })
+ .pipe(map(data => data.article));
+
+ // Otherwise, create a new article
+ } else {
+ return this.apiService.post('/articles/', { article: article })
+ .pipe(map(data => data.article));
+ }
+ }
+
+ favorite(slug: string): Observable {
+ return this.apiService.post('/articles/' + slug + '/favorite');
+ }
+
+ unfavorite(slug: string): Observable {
+ return this.apiService.delete('/articles/' + slug + '/favorite');
+ }
+
+}
diff --git a/src/app/core/services/index.ts b/src/app/core/services/index.ts
index 9ddf580..fb7e92b 100644
--- a/src/app/core/services/index.ts
+++ b/src/app/core/services/index.ts
@@ -1,6 +1,7 @@
export * from './aeronefs.service';
export * from './api.service';
export * from './applications.service';
+export * from './articles.service';
export * from './calculator.service';
export * from './canopies.service';
export * from './dropzones.service';
@@ -8,6 +9,7 @@ export * from './jumps.service';
export * from './jump-table.service';
export * from './jwt.service';
export * from './pages.service';
+export * from './products.service';
export * from './profiles.service';
export * from './qcm.service';
export * from './user.service';
diff --git a/src/app/core/services/products.service.ts b/src/app/core/services/products.service.ts
new file mode 100644
index 0000000..a107186
--- /dev/null
+++ b/src/app/core/services/products.service.ts
@@ -0,0 +1,94 @@
+import { Injectable } from '@angular/core';
+import { HttpParams } from '@angular/common/http';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
+
+import { ApiService } from './api.service';
+import {
+ ProductList, ProductListConfig, ProductListFilters,
+ Product, ProductPageData
+} from 'src/app/core/models';
+
+@Injectable({ providedIn: 'root' })
+export class ProductsService {
+ constructor(
+ private apiService: ApiService
+ ) { }
+
+ query(config: ProductListConfig): Observable {
+ // Convert any filters over to Angular's URLSearchParams
+ /*
+ const params: ProductListFilters = {
+ date: config.filters.date,
+ lieu: config.filters.lieu,
+ oaci: config.filters.oaci,
+ aeronef: config.filters.aeronef,
+ imat: config.filters.imat,
+ hauteur: config.filters.hauteur,
+ voile: config.filters.voile,
+ taille: config.filters.taille,
+ categorie: config.filters.categorie,
+ module: config.filters.module,
+ participants: config.filters.participants,
+ accessoires: config.filters.accessoires,
+ zone: config.filters.zone,
+ author: config.filters.author,
+ limit: config.filters.limit,
+ offset: config.filters.offset,
+ numeroRangeStart: config.filters.numeroRangeStart!,
+ numeroRangeEnd: config.filters.numeroRangeEnd!,
+ tailleRangeStart: config.filters.tailleRangeStart!,
+ tailleRangeEnd: config.filters.tailleRangeEnd!,
+ participantsRangeStart: config.filters.participantsRangeStart!,
+ participantsRangeEnd: config.filters.participantsRangeEnd!,
+ hauteurRangeStart: config.filters.hauteurRangeStart!,
+ hauteurRangeEnd: config.filters.hauteurRangeEnd!
+ };
+ */
+ const params: ProductListFilters = {} as ProductListFilters;
+ Object.assign(params, config.filters);
+ return this.apiService
+ .get(
+ '/products' + ((config.type === 'feed') ? '/feed' : ''),
+ new HttpParams({ fromObject: <{
+ [param: string]: string | number | boolean | readonly (string | number | boolean)[];
+ }>params })
+ );
+ }
+
+ get(slug: string): Observable {
+ return this.apiService.get(`/products/${slug}`);
+ }
+
+ getAll(): Observable> {
+ return this.apiService.get('/products').pipe(map(data => data.products));
+ }
+
+ getAllByCategorie(): Observable> {
+ return this.apiService.get('/products/allByCategorie').pipe(map(data => data.products));
+ }
+
+ create(product: Product): Observable {
+ return this.apiService.post('/products/', { product: product }).pipe(map(data => data.product));
+ }
+
+ update(product: Product): Observable {
+ return this.apiService.put(`/products/${product.slug}`, { product: product }).pipe(map(data => data.product));
+ }
+
+ destroy(slug: string): Observable {
+ return this.apiService.delete(`/products/${slug}`).pipe(map(data => data.deleted));
+ }
+
+ save(product: Product): Observable {
+ // If we're updating an existing product
+ if (product.slug) {
+ return this.apiService.put(`/products/${product.slug}`, { product: product }).pipe(map(data => data.product));
+
+ // Otherwise, create a new product
+ } else {
+ return this.apiService.post('/products/', { product: product }).pipe(map(data => data.product));
+ }
+ }
+
+}
diff --git a/src/app/core/services/user.service.ts b/src/app/core/services/user.service.ts
index 682d846..b07b6b2 100644
--- a/src/app/core/services/user.service.ts
+++ b/src/app/core/services/user.service.ts
@@ -63,7 +63,7 @@ export class UserService implements OnDestroy {
attemptAuth(type: string, credentials?: { email: string; password: string; }): Observable<{ user: User }> {
const route = (type === 'login') ? '/login' : '';
- const user$: Observable<{ user: User }> = this.http.post<{ user: User }>(`/users${route}`, { user: credentials });
+ const user$: Observable<{ user: User }> = this.http.post<{ user: User }>(`/user${route}`, { user: credentials });
/*return user$.pipe(map(
(data: any) => {
this.setAuth(data.user);
diff --git a/src/app/routes/auth.routes.ts b/src/app/routes/auth.routes.ts
index 84103f7..f6ca842 100644
--- a/src/app/routes/auth.routes.ts
+++ b/src/app/routes/auth.routes.ts
@@ -3,19 +3,19 @@ import { Routes } from '@angular/router';
import {
AeronefsComponent, CalculatorComponent, CanopiesComponent, CredentialsComponent,
DashboardComponent, DropzonesComponent, JumpComponent, JumpsComponent,
- LogbookComponent, ProfileComponent, QcmComponent, SettingsComponent
+ LogbookComponent, PageComponent, PagesComponent, ProductComponent, ProductsComponent, ProfileComponent, QcmComponent, SettingsComponent
} from 'src/app/components';
-import { authGuard } from 'src/app/core/guards';
+import { authGuard, adminGuard } from 'src/app/core/guards';
import {
- aeronefsPageResolver, authResolver, canopiesPageResolver, dropZonesPageResolver,
- jumpResolver, jumpsPageResolver, lastjumpResolver, profileResolver, qcmResolver
+ aeronefsPageResolver, articleResolver, articlesResolver, authResolver, canopiesPageResolver, dropZonesPageResolver,
+ jumpResolver, jumpsPageResolver, lastjumpResolver, productResolver, productsResolver, profileResolver, qcmResolver
} from 'src/app/core/resolvers';
export const AUTH_ROUTES: Routes = [
{
path: 'aeronefs',
component: AeronefsComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
aeronefsPageData: aeronefsPageResolver
}
@@ -31,7 +31,7 @@ export const AUTH_ROUTES: Routes = [
{
path: 'canopies',
component: CanopiesComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
canopiesPageData: canopiesPageResolver
}
@@ -39,7 +39,7 @@ export const AUTH_ROUTES: Routes = [
{
path: 'dashboard',
component: DashboardComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
isAuthenticated: authResolver
}
@@ -47,7 +47,7 @@ export const AUTH_ROUTES: Routes = [
{
path: 'dropzones',
component: DropzonesComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
dropZonesPageData: dropZonesPageResolver
}
@@ -55,7 +55,7 @@ export const AUTH_ROUTES: Routes = [
{
path: 'jumps',
component: JumpsComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
pageData: jumpsPageResolver
}
@@ -63,7 +63,7 @@ export const AUTH_ROUTES: Routes = [
{
path: 'jump/:slug',
component: JumpComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
pageData: jumpResolver
}
@@ -71,12 +71,52 @@ export const AUTH_ROUTES: Routes = [
{
path: 'logbook',
component: LogbookComponent,
- canActivate: [ authGuard ],
+ canActivate: [ authGuard, adminGuard ],
resolve: {
isAuthenticated: authResolver,
lastjump: lastjumpResolver
}
},
+ {
+ path: 'page/:slug',
+ component: PageComponent,
+ canActivate: [ authGuard ],
+ resolve: {
+ pageData: articleResolver
+ }
+ },
+ {
+ path: 'pages',
+ component: PagesComponent,
+ canActivate: [ authGuard ],
+ resolve: {
+ pageData: articlesResolver
+ }
+ },
+ {
+ path: 'products',
+ component: ProductsComponent,
+ canActivate: [ authGuard, adminGuard ],
+ resolve: {
+ pageData: productsResolver
+ }
+ },
+ {
+ path: 'products/:category',
+ component: ProductsComponent,
+ canActivate: [ authGuard, adminGuard ],
+ resolve: {
+ pageData: productsResolver
+ }
+ },
+ {
+ path: 'product/:slug',
+ component: ProductComponent,
+ canActivate: [ authGuard, adminGuard ],
+ resolve: {
+ pageData: productResolver
+ }
+ },
{
path: 'profile',
component: ProfileComponent,
diff --git a/src/app/routes/noauth.routes.ts b/src/app/routes/noauth.routes.ts
index d084fd6..a300334 100644
--- a/src/app/routes/noauth.routes.ts
+++ b/src/app/routes/noauth.routes.ts
@@ -1,7 +1,8 @@
import { Routes } from '@angular/router';
-import { AuthComponent, HomeComponent } from 'src/app/components';
+import { AuthComponent, HomeComponent, PageComponent, PagesComponent } from 'src/app/components';
import { noauthGuard } from 'src/app/core/guards';
+import { articleResolver, articlesResolver } from 'src/app/core/resolvers';
export const NOAUTH_ROUTES: Routes = [
{
@@ -18,6 +19,22 @@ export const NOAUTH_ROUTES: Routes = [
component: AuthComponent,
canActivate: [ noauthGuard ]
},
+ {
+ path: 'pages',
+ component: PagesComponent,
+ canActivate: [ noauthGuard ],
+ resolve: {
+ pageData: articlesResolver
+ }
+ },
+ {
+ path: 'page/:slug',
+ component: PageComponent,
+ canActivate: [ noauthGuard ],
+ resolve: {
+ pageData: articleResolver
+ }
+ },
{
path: '',
redirectTo: 'home',
diff --git a/src/assets/favicon/android-icon-144x144.png b/src/assets/favicon/android-icon-144x144.png
new file mode 100644
index 0000000..1756cfa
Binary files /dev/null and b/src/assets/favicon/android-icon-144x144.png differ
diff --git a/src/assets/favicon/android-icon-192x192.png b/src/assets/favicon/android-icon-192x192.png
new file mode 100644
index 0000000..005b8be
Binary files /dev/null and b/src/assets/favicon/android-icon-192x192.png differ
diff --git a/src/assets/favicon/android-icon-36x36.png b/src/assets/favicon/android-icon-36x36.png
new file mode 100644
index 0000000..7950d61
Binary files /dev/null and b/src/assets/favicon/android-icon-36x36.png differ
diff --git a/src/assets/favicon/android-icon-48x48.png b/src/assets/favicon/android-icon-48x48.png
new file mode 100644
index 0000000..478ee74
Binary files /dev/null and b/src/assets/favicon/android-icon-48x48.png differ
diff --git a/src/assets/favicon/android-icon-72x72.png b/src/assets/favicon/android-icon-72x72.png
new file mode 100644
index 0000000..d1afc2a
Binary files /dev/null and b/src/assets/favicon/android-icon-72x72.png differ
diff --git a/src/assets/favicon/android-icon-96x96.png b/src/assets/favicon/android-icon-96x96.png
new file mode 100644
index 0000000..5fbc574
Binary files /dev/null and b/src/assets/favicon/android-icon-96x96.png differ
diff --git a/src/assets/favicon/apple-icon-114x114.png b/src/assets/favicon/apple-icon-114x114.png
new file mode 100644
index 0000000..2144585
Binary files /dev/null and b/src/assets/favicon/apple-icon-114x114.png differ
diff --git a/src/assets/favicon/apple-icon-120x120.png b/src/assets/favicon/apple-icon-120x120.png
new file mode 100644
index 0000000..4de33fb
Binary files /dev/null and b/src/assets/favicon/apple-icon-120x120.png differ
diff --git a/src/assets/favicon/apple-icon-144x144.png b/src/assets/favicon/apple-icon-144x144.png
new file mode 100644
index 0000000..1756cfa
Binary files /dev/null and b/src/assets/favicon/apple-icon-144x144.png differ
diff --git a/src/assets/favicon/apple-icon-152x152.png b/src/assets/favicon/apple-icon-152x152.png
new file mode 100644
index 0000000..dd139b0
Binary files /dev/null and b/src/assets/favicon/apple-icon-152x152.png differ
diff --git a/src/assets/favicon/apple-icon-180x180.png b/src/assets/favicon/apple-icon-180x180.png
new file mode 100644
index 0000000..1a2bdd5
Binary files /dev/null and b/src/assets/favicon/apple-icon-180x180.png differ
diff --git a/src/assets/favicon/apple-icon-57x57.png b/src/assets/favicon/apple-icon-57x57.png
new file mode 100644
index 0000000..c67eb88
Binary files /dev/null and b/src/assets/favicon/apple-icon-57x57.png differ
diff --git a/src/assets/favicon/apple-icon-60x60.png b/src/assets/favicon/apple-icon-60x60.png
new file mode 100644
index 0000000..8b7b2e9
Binary files /dev/null and b/src/assets/favicon/apple-icon-60x60.png differ
diff --git a/src/assets/favicon/apple-icon-72x72.png b/src/assets/favicon/apple-icon-72x72.png
new file mode 100644
index 0000000..d1afc2a
Binary files /dev/null and b/src/assets/favicon/apple-icon-72x72.png differ
diff --git a/src/assets/favicon/apple-icon-76x76.png b/src/assets/favicon/apple-icon-76x76.png
new file mode 100644
index 0000000..341eb7b
Binary files /dev/null and b/src/assets/favicon/apple-icon-76x76.png differ
diff --git a/src/assets/favicon/apple-icon-precomposed.png b/src/assets/favicon/apple-icon-precomposed.png
new file mode 100644
index 0000000..d60cb69
Binary files /dev/null and b/src/assets/favicon/apple-icon-precomposed.png differ
diff --git a/src/assets/favicon/apple-icon.png b/src/assets/favicon/apple-icon.png
new file mode 100644
index 0000000..d60cb69
Binary files /dev/null and b/src/assets/favicon/apple-icon.png differ
diff --git a/src/assets/favicon/browserconfig.xml b/src/assets/favicon/browserconfig.xml
new file mode 100644
index 0000000..d4a6c5d
--- /dev/null
+++ b/src/assets/favicon/browserconfig.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ #da532c
+
+
+
\ No newline at end of file
diff --git a/src/assets/favicon/favicon-128x128.png b/src/assets/favicon/favicon-128x128.png
new file mode 100644
index 0000000..1f91574
Binary files /dev/null and b/src/assets/favicon/favicon-128x128.png differ
diff --git a/src/assets/favicon/favicon-144x144.png b/src/assets/favicon/favicon-144x144.png
new file mode 100644
index 0000000..016eb0f
Binary files /dev/null and b/src/assets/favicon/favicon-144x144.png differ
diff --git a/src/assets/favicon/favicon-152x152.png b/src/assets/favicon/favicon-152x152.png
new file mode 100644
index 0000000..59410fb
Binary files /dev/null and b/src/assets/favicon/favicon-152x152.png differ
diff --git a/src/assets/favicon/favicon-16x16.png b/src/assets/favicon/favicon-16x16.png
new file mode 100644
index 0000000..09101e0
Binary files /dev/null and b/src/assets/favicon/favicon-16x16.png differ
diff --git a/src/assets/favicon/favicon-192x192.png b/src/assets/favicon/favicon-192x192.png
new file mode 100644
index 0000000..94ce3c3
Binary files /dev/null and b/src/assets/favicon/favicon-192x192.png differ
diff --git a/src/assets/favicon/favicon-32x32.png b/src/assets/favicon/favicon-32x32.png
new file mode 100644
index 0000000..01cc8b1
Binary files /dev/null and b/src/assets/favicon/favicon-32x32.png differ
diff --git a/src/assets/favicon/favicon-384x384.png b/src/assets/favicon/favicon-384x384.png
new file mode 100644
index 0000000..e1b4663
Binary files /dev/null and b/src/assets/favicon/favicon-384x384.png differ
diff --git a/src/assets/favicon/favicon-512x512.png b/src/assets/favicon/favicon-512x512.png
new file mode 100644
index 0000000..e5c7e6d
Binary files /dev/null and b/src/assets/favicon/favicon-512x512.png differ
diff --git a/src/assets/favicon/favicon-72x72.png b/src/assets/favicon/favicon-72x72.png
new file mode 100644
index 0000000..8792849
Binary files /dev/null and b/src/assets/favicon/favicon-72x72.png differ
diff --git a/src/assets/favicon/favicon-96x96.png b/src/assets/favicon/favicon-96x96.png
new file mode 100644
index 0000000..6224b2c
Binary files /dev/null and b/src/assets/favicon/favicon-96x96.png differ
diff --git a/src/assets/favicon/favicon.ico b/src/assets/favicon/favicon.ico
new file mode 100644
index 0000000..2ebd85f
Binary files /dev/null and b/src/assets/favicon/favicon.ico differ
diff --git a/src/assets/favicon/favicon.png b/src/assets/favicon/favicon.png
new file mode 100644
index 0000000..e5c7e6d
Binary files /dev/null and b/src/assets/favicon/favicon.png differ
diff --git a/src/assets/favicon/favicon.svg b/src/assets/favicon/favicon.svg
new file mode 100644
index 0000000..de151f1
--- /dev/null
+++ b/src/assets/favicon/favicon.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/assets/favicon/ms-icon-144x144.png b/src/assets/favicon/ms-icon-144x144.png
new file mode 100644
index 0000000..1756cfa
Binary files /dev/null and b/src/assets/favicon/ms-icon-144x144.png differ
diff --git a/src/assets/favicon/ms-icon-150x150.png b/src/assets/favicon/ms-icon-150x150.png
new file mode 100644
index 0000000..af3a104
Binary files /dev/null and b/src/assets/favicon/ms-icon-150x150.png differ
diff --git a/src/assets/favicon/ms-icon-310x310.png b/src/assets/favicon/ms-icon-310x310.png
new file mode 100644
index 0000000..791acef
Binary files /dev/null and b/src/assets/favicon/ms-icon-310x310.png differ
diff --git a/src/assets/favicon/ms-icon-70x70.png b/src/assets/favicon/ms-icon-70x70.png
new file mode 100644
index 0000000..c7185e6
Binary files /dev/null and b/src/assets/favicon/ms-icon-70x70.png differ
diff --git a/src/assets/images/avatars/animal_001.jpg b/src/assets/images/avatars/animal_001.jpg
new file mode 100644
index 0000000..2b43754
Binary files /dev/null and b/src/assets/images/avatars/animal_001.jpg differ
diff --git a/src/assets/images/avatars/animal_002.jpg b/src/assets/images/avatars/animal_002.jpg
new file mode 100644
index 0000000..1f21a93
Binary files /dev/null and b/src/assets/images/avatars/animal_002.jpg differ
diff --git a/src/assets/images/avatars/animal_003.jpg b/src/assets/images/avatars/animal_003.jpg
new file mode 100644
index 0000000..c061e18
Binary files /dev/null and b/src/assets/images/avatars/animal_003.jpg differ
diff --git a/src/assets/images/avatars/animal_004.jpg b/src/assets/images/avatars/animal_004.jpg
new file mode 100644
index 0000000..2686212
Binary files /dev/null and b/src/assets/images/avatars/animal_004.jpg differ
diff --git a/src/assets/images/avatars/animal_005.jpg b/src/assets/images/avatars/animal_005.jpg
new file mode 100644
index 0000000..e7a6b08
Binary files /dev/null and b/src/assets/images/avatars/animal_005.jpg differ
diff --git a/src/assets/images/avatars/animal_006.jpg b/src/assets/images/avatars/animal_006.jpg
new file mode 100644
index 0000000..e77da7a
Binary files /dev/null and b/src/assets/images/avatars/animal_006.jpg differ
diff --git a/src/assets/images/avatars/animal_007.jpg b/src/assets/images/avatars/animal_007.jpg
new file mode 100644
index 0000000..e8b844a
Binary files /dev/null and b/src/assets/images/avatars/animal_007.jpg differ
diff --git a/src/assets/images/avatars/animal_008.jpg b/src/assets/images/avatars/animal_008.jpg
new file mode 100644
index 0000000..ea09988
Binary files /dev/null and b/src/assets/images/avatars/animal_008.jpg differ
diff --git a/src/assets/images/avatars/animal_009.jpg b/src/assets/images/avatars/animal_009.jpg
new file mode 100644
index 0000000..6e25617
Binary files /dev/null and b/src/assets/images/avatars/animal_009.jpg differ
diff --git a/src/assets/images/avatars/animal_010.jpg b/src/assets/images/avatars/animal_010.jpg
new file mode 100644
index 0000000..387b181
Binary files /dev/null and b/src/assets/images/avatars/animal_010.jpg differ
diff --git a/src/assets/images/avatars/animal_011.jpg b/src/assets/images/avatars/animal_011.jpg
new file mode 100644
index 0000000..b51d80a
Binary files /dev/null and b/src/assets/images/avatars/animal_011.jpg differ
diff --git a/src/assets/images/avatars/animal_012.jpg b/src/assets/images/avatars/animal_012.jpg
new file mode 100644
index 0000000..3a9a084
Binary files /dev/null and b/src/assets/images/avatars/animal_012.jpg differ
diff --git a/src/assets/images/avatars/animal_013.jpg b/src/assets/images/avatars/animal_013.jpg
new file mode 100644
index 0000000..e244959
Binary files /dev/null and b/src/assets/images/avatars/animal_013.jpg differ
diff --git a/src/assets/images/avatars/animal_014.jpg b/src/assets/images/avatars/animal_014.jpg
new file mode 100644
index 0000000..91c87b6
Binary files /dev/null and b/src/assets/images/avatars/animal_014.jpg differ
diff --git a/src/assets/images/avatars/animal_015.jpg b/src/assets/images/avatars/animal_015.jpg
new file mode 100644
index 0000000..3b57ac2
Binary files /dev/null and b/src/assets/images/avatars/animal_015.jpg differ
diff --git a/src/assets/images/avatars/animal_016.jpg b/src/assets/images/avatars/animal_016.jpg
new file mode 100644
index 0000000..22bba49
Binary files /dev/null and b/src/assets/images/avatars/animal_016.jpg differ
diff --git a/src/assets/images/avatars/default.jpg b/src/assets/images/avatars/default.jpg
new file mode 100644
index 0000000..2b43754
Binary files /dev/null and b/src/assets/images/avatars/default.jpg differ
diff --git a/src/assets/images/big/img1.jpg b/src/assets/images/big/img1.jpg
deleted file mode 100755
index e728c1e..0000000
Binary files a/src/assets/images/big/img1.jpg and /dev/null differ
diff --git a/src/assets/images/big/img2.jpg b/src/assets/images/big/img2.jpg
deleted file mode 100755
index a2f0661..0000000
Binary files a/src/assets/images/big/img2.jpg and /dev/null differ
diff --git a/src/assets/images/big/img3.jpg b/src/assets/images/big/img3.jpg
deleted file mode 100755
index f68ecb7..0000000
Binary files a/src/assets/images/big/img3.jpg and /dev/null differ
diff --git a/src/assets/images/big/img4.jpg b/src/assets/images/big/img4.jpg
deleted file mode 100755
index c3eca75..0000000
Binary files a/src/assets/images/big/img4.jpg and /dev/null differ
diff --git a/src/assets/images/big/img5.jpg b/src/assets/images/big/img5.jpg
deleted file mode 100755
index fb9f924..0000000
Binary files a/src/assets/images/big/img5.jpg and /dev/null differ
diff --git a/src/assets/images/big/img6.jpg b/src/assets/images/big/img6.jpg
deleted file mode 100755
index 9489b33..0000000
Binary files a/src/assets/images/big/img6.jpg and /dev/null differ
diff --git a/src/assets/manifest.json b/src/assets/manifest.json
new file mode 100644
index 0000000..2ce8d8d
--- /dev/null
+++ b/src/assets/manifest.json
@@ -0,0 +1,71 @@
+{
+ "name": "adastra-app",
+ "short_name": "adastra-app",
+ "theme_color": "#2c4aa3",
+ "background_color": "#fafafa",
+ "display": "standalone",
+ "scope": "./",
+ "start_url": "./",
+ "icons": [
+ {
+ "src": "assets/favicon/favicon-16x16.png",
+ "sizes": "16x16",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-32x32.png",
+ "sizes": "32x32",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-72x72.png",
+ "sizes": "72x72",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-96x96.png",
+ "sizes": "96x96",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-128x128.png",
+ "sizes": "128x128",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-152x152.png",
+ "sizes": "152x152",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-384x384.png",
+ "sizes": "384x384",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable any"
+ }
+ ]
+}
diff --git a/src/environments/environment.development.ts b/src/environments/environment.development.ts
index c244a89..894f648 100644
--- a/src/environments/environment.development.ts
+++ b/src/environments/environment.development.ts
@@ -1,6 +1,6 @@
export const environment = {
production: false,
- api_url: 'http://localhost:3200/api', //'https://api.rampeur.com/api'
+ api_url: 'http://localhost:3201/api', //'https://api.rampeur.com/api'
api_key: '9f5a9b80a39b4788be2f12941b766aba',
use_api_key: true,
refresh_interval: 30000,
diff --git a/src/environments/environment.local.ts b/src/environments/environment.local.ts
index c244a89..894f648 100644
--- a/src/environments/environment.local.ts
+++ b/src/environments/environment.local.ts
@@ -1,6 +1,6 @@
export const environment = {
production: false,
- api_url: 'http://localhost:3200/api', //'https://api.rampeur.com/api'
+ api_url: 'http://localhost:3201/api', //'https://api.rampeur.com/api'
api_key: '9f5a9b80a39b4788be2f12941b766aba',
use_api_key: true,
refresh_interval: 30000,
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 9d73c74..70589a0 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,6 +1,6 @@
export const environment = {
production: true,
- api_url: 'http://localhost:3200/api', //'https://api.rampeur.com/api'
+ api_url: 'http://localhost:3201/api', //'https://api.rampeur.com/api'
api_key: '9f5a9b80a39b4788be2f12941b766aba',
use_api_key: true,
refresh_interval: 30000,
diff --git a/src/favicon.ico b/src/favicon.ico
index 57614f9..103fbbe 100644
Binary files a/src/favicon.ico and b/src/favicon.ico differ
diff --git a/src/index.html b/src/index.html
index 02572b9..055f625 100644
--- a/src/index.html
+++ b/src/index.html
@@ -2,17 +2,37 @@
- HeadUp
+ Ad Astra
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/manifest.webmanifest b/src/manifest.webmanifest
index dd930d3..2ce8d8d 100644
--- a/src/manifest.webmanifest
+++ b/src/manifest.webmanifest
@@ -1,56 +1,68 @@
{
- "name": "acp-angular",
- "short_name": "acp-angular",
- "theme_color": "#1976d2",
+ "name": "adastra-app",
+ "short_name": "adastra-app",
+ "theme_color": "#2c4aa3",
"background_color": "#fafafa",
"display": "standalone",
"scope": "./",
"start_url": "./",
"icons": [
{
- "src": "assets/icons/icon-72x72.png",
+ "src": "assets/favicon/favicon-16x16.png",
+ "sizes": "16x16",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-32x32.png",
+ "sizes": "32x32",
+ "type": "image/png",
+ "purpose": "maskable any"
+ },
+ {
+ "src": "assets/favicon/favicon-72x72.png",
"sizes": "72x72",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-96x96.png",
+ "src": "assets/favicon/favicon-96x96.png",
"sizes": "96x96",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-128x128.png",
+ "src": "assets/favicon/favicon-128x128.png",
"sizes": "128x128",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-144x144.png",
+ "src": "assets/favicon/favicon-144x144.png",
"sizes": "144x144",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-152x152.png",
+ "src": "assets/favicon/favicon-152x152.png",
"sizes": "152x152",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-192x192.png",
+ "src": "assets/favicon/favicon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-384x384.png",
+ "src": "assets/favicon/favicon-384x384.png",
"sizes": "384x384",
"type": "image/png",
"purpose": "maskable any"
},
{
- "src": "assets/icons/icon-512x512.png",
+ "src": "assets/favicon/favicon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable any"
diff --git a/src/styles/_header.scss b/src/styles/_header.scss
index 17a1f95..24a8ac2 100755
--- a/src/styles/_header.scss
+++ b/src/styles/_header.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
diff --git a/src/styles/_icomoon.scss b/src/styles/_icomoon.scss
new file mode 100644
index 0000000..38830bf
--- /dev/null
+++ b/src/styles/_icomoon.scss
@@ -0,0 +1,198 @@
+@font-face {
+ font-family: 'icomoon';
+ src: url('./fonts/icomoon.eot?9zw590');
+ src: url('./fonts/icomoon.eot?9zw590#iefix') format('embedded-opentype'),
+ url('./fonts/icomoon.ttf?9zw590') format('truetype'),
+ url('./fonts/icomoon.woff?9zw590') format('woff'),
+ url('./fonts/icomoon.svg?9zw590#icomoon') format('svg');
+ font-weight: normal;
+ font-style: normal;
+ font-display: block;
+}
+
+[class^="icosvg-"], [class*=" icosvg-"] {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'icomoon' !important;
+ /* speak: never; */
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icosvg-home:before {
+ content: "\e900";
+}
+.icosvg-user:before {
+ content: "\e901";
+}
+.icosvg-switch:before {
+ content: "\e902";
+}
+.icosvg-cog:before {
+ content: "\e903";
+}
+.icosvg-pencil:before {
+ content: "\e904";
+}
+.icosvg-floppy-disk:before {
+ content: "\e905";
+}
+.icosvg-bin:before {
+ content: "\e906";
+}
+.icosvg-search:before {
+ content: "\e907";
+}
+.icosvg-image:before {
+ content: "\e908";
+}
+.icosvg-bullhorn:before {
+ content: "\e909";
+}
+.icosvg-hour-glass:before {
+ content: "\e90a";
+}
+.icosvg-library:before {
+ content: "\e90b";
+}
+.icosvg-books:before {
+ content: "\e90c";
+}
+.icosvg-barcode:before {
+ content: "\e90d";
+}
+.icosvg-cart:before {
+ content: "\e90e";
+}
+.icosvg-credit-card:before {
+ content: "\e90f";
+}
+.icosvg-calendar:before {
+ content: "\e910";
+}
+.icosvg-phone:before {
+ content: "\e911";
+}
+.icosvg-envelop:before {
+ content: "\e912";
+}
+.icosvg-location:before {
+ content: "\e913";
+}
+.icosvg-equalizer:before {
+ content: "\e914";
+}
+.icosvg-briefcase:before {
+ content: "\e915";
+}
+.icosvg-truck:before {
+ content: "\e916";
+}
+.icosvg-earth:before {
+ content: "\e917";
+}
+.icosvg-link:before {
+ content: "\e918";
+}
+.icosvg-new-tab:before {
+ content: "\e919";
+}
+.icosvg-checkmark:before {
+ content: "\e91a";
+}
+.icosvg-close:before {
+ content: "\e91b";
+}
+.icosvg-warning:before {
+ content: "\e91c";
+}
+.icosvg-notification:before {
+ content: "\e91d";
+}
+.icosvg-question:before {
+ content: "\e91e";
+}
+.icosvg-cancel-circle:before {
+ content: "\e91f";
+}
+.icosvg-circle-up:before {
+ content: "\e920";
+}
+.icosvg-circle-right:before {
+ content: "\e921";
+}
+.icosvg-circle-down:before {
+ content: "\e922";
+}
+.icosvg-circle-left:before {
+ content: "\e923";
+}
+.icosvg-lock:before {
+ content: "\e924";
+}
+.icosvg-unlocked:before {
+ content: "\e925";
+}
+.icosvg-checkbox-checked:before {
+ content: "\e926";
+}
+.icosvg-checkbox-unchecked:before {
+ content: "\e927";
+}
+.icosvg-radio-checked:before {
+ content: "\e928";
+}
+.icosvg-radio-unchecked:before {
+ content: "\e929";
+}
+.icosvg-star-empty:before {
+ content: "\e92a";
+}
+.icosvg-star-full:before {
+ content: "\e92b";
+}
+.icosvg-eye:before {
+ content: "\e92c";
+}
+.icosvg-eye-blocked:before {
+ content: "\e92d";
+}
+.icosvg-heart:before {
+ content: "\e92e";
+}
+.icosvg-power:before {
+ content: "\e92f";
+}
+.icosvg-trophy:before {
+ content: "\e930";
+}
+.icosvg-gift:before {
+ content: "\e931";
+}
+.icosvg-rocket:before {
+ content: "\e932";
+}
+.icosvg-fire:before {
+ content: "\e933";
+}
+.icosvg-lab:before {
+ content: "\e934";
+}
+.icosvg-cannabis:before {
+ content: "\e935";
+}
+.icosvg-marijuana:before {
+ content: "\e936";
+}
+.icosvg-butter:before {
+ content: "\e937";
+}
+.icosvg-molecule:before {
+ content: "\e938";
+}
diff --git a/src/styles/_sidebar.scss b/src/styles/_sidebar.scss
index 6e6365d..4cd6618 100755
--- a/src/styles/_sidebar.scss
+++ b/src/styles/_sidebar.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
diff --git a/src/styles/app.scss b/src/styles/app.scss
index 186133d..3a72588 100755
--- a/src/styles/app.scss
+++ b/src/styles/app.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
@@ -7,6 +7,8 @@ File: scss
@use 'sass:color';
html {
+ --mat-expansion-header-collapsed-state-height: 48px;
+ --mat-expansion-header-expanded-state-height: 48px;
height: 100%;
position: relative;
min-height: 100%;
@@ -121,6 +123,9 @@ a.accent:hover {
}
}
}
+ dl.dl-horizontal dt {
+ color: $light;
+ }
}
app-full-layout {
--mat-card-title-text-size: 22px;
@@ -186,8 +191,7 @@ dl.dl-horizontal {
width: 120px;
overflow: hidden;
clear: left;
- color: $light;
- font-weight: normal;
+ font-weight: 500;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
diff --git a/src/styles/fonts/icomoon.eot b/src/styles/fonts/icomoon.eot
new file mode 100644
index 0000000..34516d3
Binary files /dev/null and b/src/styles/fonts/icomoon.eot differ
diff --git a/src/styles/fonts/icomoon.svg b/src/styles/fonts/icomoon.svg
new file mode 100644
index 0000000..0d2ae12
--- /dev/null
+++ b/src/styles/fonts/icomoon.svg
@@ -0,0 +1,67 @@
+
+
+
\ No newline at end of file
diff --git a/src/styles/fonts/icomoon.ttf b/src/styles/fonts/icomoon.ttf
new file mode 100644
index 0000000..20ea669
Binary files /dev/null and b/src/styles/fonts/icomoon.ttf differ
diff --git a/src/styles/fonts/icomoon.woff b/src/styles/fonts/icomoon.woff
new file mode 100644
index 0000000..619940f
Binary files /dev/null and b/src/styles/fonts/icomoon.woff differ
diff --git a/src/styles/responsive.scss b/src/styles/responsive.scss
index 5bbc1c3..a89aa6e 100755
--- a/src/styles/responsive.scss
+++ b/src/styles/responsive.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
diff --git a/src/styles/styles.scss b/src/styles/styles.scss
index 202369e..caa4703 100644
--- a/src/styles/styles.scss
+++ b/src/styles/styles.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
@@ -18,7 +18,7 @@ File: scss
// Required Bootstrap imports
@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
+//@import "bootstrap/scss/variables-dark";
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/utilities";
@@ -159,6 +159,7 @@ $background: map.get($adastra_app-theme, background);
//@import "chartist/dist/index";
@import 'spinner';
+@import 'icomoon';
@import 'header';
@import 'sidebar';
@import 'tables';
diff --git a/src/styles/tables.scss b/src/styles/tables.scss
index 8162e4d..888b0b4 100644
--- a/src/styles/tables.scss
+++ b/src/styles/tables.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
diff --git a/src/styles/variable.scss b/src/styles/variable.scss
index 4c1211f..a8c285a 100755
--- a/src/styles/variable.scss
+++ b/src/styles/variable.scss
@@ -1,5 +1,5 @@
/*
-Template Name: Material HeadUp
+Template Name: Material Ad Astra
Author: UnEspace
Email: rampeur@gmail.com
File: scss
@@ -17,7 +17,7 @@ $font-size-base: 0.875rem;
$badge-font-size: .76rem;
$badge-font-weight: 600;
-$user-img-size: 84px;
+$user-img-size: 54px;
$user-img-height: 158px;
$sidenav-width: 237px;
$sidenav-height: 35px;