Refactored detail-block into shared component

This commit is contained in:
AdamBtech
2025-06-02 18:22:59 +02:00
parent 7956755df0
commit 024be15cd5
12 changed files with 72 additions and 96 deletions

View File

@@ -125,44 +125,6 @@
text-shadow: 0 1px 2px rgba(0,0,0,0.1);
}
/* Detail Blocks */
.detail-block {
margin-bottom: var(--card-gap);
padding: 0.25rem;
border-left: 2px solid transparent;
transition: border-color 0.3s ease, padding-left 0.3s ease;
}
.detail-block:hover {
border-left-color: var(--color-nier-accent);
padding-left: 0.5rem;
}
.detail-label {
font-family: var(--font-terminal);
font-size: 0.75rem;
color: var(--color-nier-text-dark);
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.05em;
display: block;
margin-bottom: 0.25rem;
opacity: 0.8;
transition: opacity 0.3s ease;
}
.detail-block:hover .detail-label {
opacity: 1;
}
.detail-value {
font-family: var(--font-noto-jp);
color: var(--color-nier-text-dark);
font-size: 0.85rem;
line-height: 1.4;
display: block;
}
/* Tech Stack Section */
.tech-section {
margin-top: var(--card-gap);

View File

@@ -13,15 +13,8 @@
</header>
<div class="experience-body">
<div class="detail-block">
<span class="detail-label">PROGRAM:</span>
<span class="detail-value">{{ training.classification }}</span>
</div>
<div class="detail-block">
<span class="detail-label">INSTITUTION:</span>
<span class="detail-value">{{ training.timeline }}</span>
</div>
<app-detail-block label="PROGRAM:" [value]="training.classification"/>
<app-detail-block label="INSTITUTION:" [value]="training.timeline"/>
<div class="tech-section">
<div class="detail-label">CURRICULUM:</div>

View File

@@ -1,9 +1,10 @@
import { Component, signal } from '@angular/core';
import { type Experience } from '../../../../shared/models/experience.model';
import { DetailBlockComponent } from '../shared/detail-block/detail-block.component';
@Component({
selector: 'app-column-education-info',
imports: [],
imports: [DetailBlockComponent],
templateUrl: './column-education-info.component.html',
styleUrl: './column-education-info.component.css',
})

View File

@@ -150,44 +150,6 @@
color: var(--color-nier-text-light);
}
/* Detail Blocks */
.detail-block {
margin-bottom: var(--card-gap);
padding: 0.25rem;
border-left: 2px solid transparent;
transition: border-color 0.3s ease, padding-left 0.3s ease;
}
.detail-block:hover {
border-left-color: var(--color-nier-accent);
padding-left: 0.5rem;
}
.detail-label {
font-family: var(--font-terminal);
font-size: 0.75rem;
color: var(--color-nier-text-dark);
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.05em;
display: block;
margin-bottom: 0.25rem;
opacity: 0.8;
transition: opacity 0.3s ease;
}
.detail-block:hover .detail-label {
opacity: 1;
}
.detail-value {
font-family: var(--font-noto-jp);
color: var(--color-nier-text-dark);
font-size: 0.85rem;
line-height: 1.4;
display: block;
}
/* Tech Stack Section */
.tech-section {
margin-top: var(--card-gap);

View File

@@ -22,15 +22,8 @@
</header>
<div class="experience-body">
<div class="detail-block">
<span class="detail-label">CLASSIFICATION:</span>
<span class="detail-value">{{ experience.classification }}</span>
</div>
<div class="detail-block">
<span class="detail-label">TIMELINE:</span>
<span class="detail-value">{{ experience.timeline }}</span>
</div>
<app-detail-block label="CLASSIFICATION:" [value]="experience.classification"/>
<app-detail-block label="TIMELINE:" [value]="experience.timeline"/>
<div class="tech-section">
<div class="detail-label">TECH_STACK:</div>

View File

@@ -1,9 +1,10 @@
import { Component, signal } from '@angular/core';
import { Experience } from '../../../../shared/models/experience.model';
import { DetailBlockComponent } from '../shared/detail-block/detail-block.component';
@Component({
selector: 'app-column-professional-info',
imports: [],
imports: [DetailBlockComponent],
templateUrl: './column-professional-info.component.html',
styleUrl: './column-professional-info.component.css',
})

View File

@@ -0,0 +1,36 @@
.detail-block {
margin-bottom: var(--card-gap);
padding: 0.25rem;
border-left: 2px solid transparent;
transition: border-color 0.3s ease, padding-left 0.3s ease;
}
.detail-block:hover {
border-left-color: var(--color-nier-accent);
padding-left: 0.5rem;
}
.detail-label {
font-family: var(--font-terminal);
font-size: 0.75rem;
color: var(--color-nier-text-dark);
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.05em;
display: block;
margin-bottom: 0.25rem;
opacity: 0.8;
transition: opacity 0.3s ease;
}
.detail-block:hover .detail-label {
opacity: 1;
}
.detail-value {
font-family: var(--font-noto-jp);
color: var(--color-nier-text-dark);
font-size: 0.85rem;
line-height: 1.4;
display: block;
}

View File

@@ -0,0 +1,4 @@
<div class="detail-block">
<span class="detail-label">{{ label()}}</span>
<span class="detail-value">{{ value() }}</span>
</div>

View File

@@ -0,0 +1,12 @@
import { Component, input } from '@angular/core';
@Component({
selector: 'app-detail-block',
imports: [],
templateUrl: './detail-block.component.html',
styleUrl: './detail-block.component.css',
})
export class DetailBlockComponent {
label = input<string>();
value = input<string>();
}

View File

@@ -0,0 +1 @@
<p>info-card works!</p>

View File

@@ -0,0 +1,11 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-info-card',
imports: [],
templateUrl: './info-card.component.html',
styleUrl: './info-card.component.css'
})
export class InfoCardComponent {
}