53 lines
2.4 KiB
TypeScript
53 lines
2.4 KiB
TypeScript
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
import { RouterLink } from '@angular/router';
|
|
import { PageShellComponent } from '../../core/layout/page-shell.component';
|
|
import { SeoService } from '../../core/services/seo.service';
|
|
import { CV_URL, MAIN_NAVIGATION } from '../../shared/config/navigation.config';
|
|
|
|
@Component({
|
|
selector: 'app-cv-page',
|
|
standalone: true,
|
|
imports: [PageShellComponent, RouterLink],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
template: `
|
|
<app-page-shell [sections]="sections">
|
|
<header class="page-head shell">
|
|
<nav class="breadcrumb" aria-label="Breadcrumb"><a routerLink="/">~/</a><span>cv.pdf</span></nav>
|
|
<span class="label">// curriculum vitae</span>
|
|
<h1>Amar Džanan — CV</h1>
|
|
<p class="lead">Read it here, or take the PDF with you.</p>
|
|
<div class="actions">
|
|
<a class="btn btn-accent" [href]="cvUrl" download="Amar-Dzanan-CV.pdf">download cv.pdf
|
|
<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><path d="M8 2v9M4.5 7.5 8 11l3.5-3.5M3 13.5h10"/></svg>
|
|
</a>
|
|
<a class="btn btn-line" [href]="cvUrl" target="_blank" rel="noopener">open in new tab ↗</a>
|
|
</div>
|
|
</header>
|
|
|
|
<section class="section tight shell" aria-label="CV document">
|
|
<div class="panel cv-frame">
|
|
<div class="terminal-bar"><div class="terminal-dots" aria-hidden="true"><span></span><span></span><span></span></div><span class="terminal-title">cv.pdf</span><span class="terminal-spacer"></span></div>
|
|
<object data="/cv.pdf" type="application/pdf" aria-label="Amar Džanan CV (PDF)">
|
|
<div class="cv-fallback">
|
|
<p>Your browser doesn't display PDFs inline.</p>
|
|
<a class="btn btn-accent" [href]="cvUrl" download="Amar-Dzanan-CV.pdf">download cv.pdf</a>
|
|
</div>
|
|
</object>
|
|
</div>
|
|
</section>
|
|
</app-page-shell>
|
|
`
|
|
})
|
|
export class CvPageComponent {
|
|
readonly sections = MAIN_NAVIGATION;
|
|
readonly cvUrl = CV_URL;
|
|
|
|
constructor() {
|
|
inject(SeoService).update({
|
|
title: 'CV — Amar Džanan, Senior Software Engineer',
|
|
description: 'Curriculum vitae of Amar Džanan: senior full-stack engineer and product owner working with .NET, Angular, and AI integration.',
|
|
path: '/cv'
|
|
});
|
|
}
|
|
}
|