Add hobbies page and update projects WIP UI
Introduced a new HobbiesComponent with routing and navigation updates. Removed unused ProjectDetailsComponent. Enhanced the projects page with a new 'work in progress' UI and improved .gitattributes for better file handling.
This commit is contained in:
67
.gitattributes
vendored
67
.gitattributes
vendored
@@ -1,9 +1,60 @@
|
|||||||
* text=auto eol=lf
|
# ---- Standard: All textfiles normalize to LF also during checkout ----
|
||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
*.png binary
|
# ---- Sourcecode / Build ----
|
||||||
*.jpg binary
|
*.java text eol=lf
|
||||||
*.svg text
|
*.kt text eol=lf
|
||||||
*.ts text
|
*.kts text eol=lf
|
||||||
*.html text
|
*.groovy text eol=lf
|
||||||
*.scss text
|
*.gradle text eol=lf
|
||||||
*.json text
|
gradlew text eol=lf
|
||||||
|
# Windows wrapper keeps CRLF
|
||||||
|
gradlew.bat text eol=crlf
|
||||||
|
|
||||||
|
# ---- Scripts ----
|
||||||
|
*.sh text eol=lf
|
||||||
|
*.bash text eol=lf
|
||||||
|
*.cmd text eol=crlf
|
||||||
|
*.bat text eol=crlf
|
||||||
|
*.ps1 text eol=crlf
|
||||||
|
|
||||||
|
# ---- Configuration / Resources ----
|
||||||
|
*.properties text eol=lf
|
||||||
|
*.yml text eol=lf
|
||||||
|
*.yaml text eol=lf
|
||||||
|
*.xml text eol=lf
|
||||||
|
*.json text eol=lf
|
||||||
|
*.sql text eol=lf
|
||||||
|
*.conf text eol=lf
|
||||||
|
Dockerfile text eol=lf
|
||||||
|
*.dockerfile text eol=lf
|
||||||
|
|
||||||
|
# ---- Document ----
|
||||||
|
*.md text eol=lf
|
||||||
|
*.adoc text eol=lf
|
||||||
|
*.txt text eol=lf
|
||||||
|
*.csv text eol=lf
|
||||||
|
*.svg text eol=lf # svg ist Text
|
||||||
|
|
||||||
|
# ---- binary files never convert ----
|
||||||
|
*.jar binary
|
||||||
|
*.war binary
|
||||||
|
*.ear binary
|
||||||
|
*.class binary
|
||||||
|
*.png binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.gif binary
|
||||||
|
*.ico binary
|
||||||
|
*.pdf binary
|
||||||
|
*.zip binary
|
||||||
|
*.tar binary
|
||||||
|
*.gz binary
|
||||||
|
*.7z binary
|
||||||
|
*.ttf binary
|
||||||
|
*.woff binary
|
||||||
|
*.woff2 binary
|
||||||
|
*.so binary
|
||||||
|
*.dll binary
|
||||||
|
*.dylib binary
|
||||||
|
*.exe binary
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
import { Routes } from '@angular/router';
|
import { Routes } from '@angular/router';
|
||||||
import {AboutComponent} from './pages/about/about.component';
|
import {AboutComponent} from './pages/about/about.component';
|
||||||
import {ProjectsComponent} from './pages/projects/projects.component';
|
import {ProjectsComponent} from './pages/projects/projects.component';
|
||||||
|
import {HobbiesComponent} from './pages/hobbies/hobbies.component';
|
||||||
|
|
||||||
export const routes: Routes = [
|
export const routes: Routes = [
|
||||||
{ path: '', component: AboutComponent },
|
{ path: '', component: AboutComponent },
|
||||||
{ path: 'about', component: AboutComponent},
|
{ path: 'about', component: AboutComponent},
|
||||||
{ path: 'projects', component: ProjectsComponent},
|
{ path: 'projects', component: ProjectsComponent},
|
||||||
|
{ path: 'hobbies', component: HobbiesComponent},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<nav class="nav">
|
<nav class="nav">
|
||||||
<a routerLink="/about" mat-button>{{ 'TOPBAR.ABOUT' | translate }}</a>
|
<a routerLink="/about" mat-button>{{ 'TOPBAR.ABOUT' | translate }}</a>
|
||||||
<a routerLink="/projects" mat-button>{{ 'TOPBAR.PROJECTS' | translate }}</a>
|
<a routerLink="/projects" mat-button>{{ 'TOPBAR.PROJECTS' | translate }}</a>
|
||||||
<a routerLink="/projects" mat-button>{{ 'TOPBAR.HOBBY' | translate }}</a>
|
<a routerLink="/hobbies" mat-button>{{ 'TOPBAR.HOBBY' | translate }}</a>
|
||||||
<a routerLink="/projects" mat-button>{{ 'TOPBAR.CONTACT' | translate }}</a>
|
<a routerLink="/projects" mat-button>{{ 'TOPBAR.CONTACT' | translate }}</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
|||||||
3
src/app/pages/hobbies/hobbies.component.html
Normal file
3
src/app/pages/hobbies/hobbies.component.html
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="terminal-loader">
|
||||||
|
<span>> Work in progress</span><span class="cursor"></span>
|
||||||
|
</div>
|
||||||
19
src/app/pages/hobbies/hobbies.component.scss
Normal file
19
src/app/pages/hobbies/hobbies.component.scss
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
.terminal-loader {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor {
|
||||||
|
width: 10px;
|
||||||
|
height: 1.1rem;
|
||||||
|
background: var(--app-fg);
|
||||||
|
margin-left: .25rem;
|
||||||
|
animation: blink .8s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
0%, 50% { opacity: 1; }
|
||||||
|
51%, 100% { opacity: 0; }
|
||||||
|
}
|
||||||
11
src/app/pages/hobbies/hobbies.component.ts
Normal file
11
src/app/pages/hobbies/hobbies.component.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-hobbies',
|
||||||
|
imports: [],
|
||||||
|
templateUrl: './hobbies.component.html',
|
||||||
|
styleUrl: './hobbies.component.scss',
|
||||||
|
})
|
||||||
|
export class HobbiesComponent {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
<p>project-details works!</p>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import { Component } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-project-details',
|
|
||||||
imports: [],
|
|
||||||
templateUrl: './project-details.component.html',
|
|
||||||
styleUrl: './project-details.component.scss',
|
|
||||||
})
|
|
||||||
export class ProjectDetailsComponent {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +1,6 @@
|
|||||||
<p>Working in progress!</p>
|
<div class="wip">
|
||||||
|
<div class="dots">
|
||||||
|
<span></span><span></span><span></span>
|
||||||
|
</div>
|
||||||
|
<p>Work in progress…</p>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
.wip {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: .75rem;
|
||||||
|
padding: 2rem;
|
||||||
|
opacity: .9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dots {
|
||||||
|
display: flex;
|
||||||
|
gap: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dots span {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: var(--app-fg);
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: pulse 1.4s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dots span:nth-child(2) { animation-delay: .2s; }
|
||||||
|
.dots span:nth-child(3) { animation-delay: .4s; }
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 80%, 100% { opacity: .3; transform: scale(1); }
|
||||||
|
40% { opacity: 1; transform: scale(1.4); }
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user