fix(site): remove canvas frame, invert logos, new footer text

The canvas had a 1px frame. The company logos are opaque white, so
invert them to match the dark tiles. Core fetches the Auth public key
(JWKS), so the To Be Played diagram now shows that arrow.
This commit is contained in:
lobo committed 2026-10-14 08:49:00 +02:00
1 parent 93e9c59436
commit 07a9b8bc11
9 files changed
+84 -19

No files matched your search

+2 -1
View File
@@ -73,7 +73,8 @@
<div class="relative pl-14 pb-fluid-sm">
@if (isFirstRoleAtCompany(i)) {
<img src="{{entry.logo}}" alt="" aria-hidden="true"
class="absolute left-0 top-0 w-10 h-10 object-contain opacity-90 rounded-[10%] bg-logo-bg" />
class="absolute left-0 top-0 w-10 h-10 object-contain opacity-90 rounded-[10%] bg-logo-bg"
[class.invert]="entry.invertLogo" />
<div class="font-semibold opacity-90 text-[clamp(0.9rem,2.2vw,1.05rem)] leading-10" data-testid="company">
{{ (entry.key + '.COMPANY') | translate }}
</div>
+15 -1
View File
@@ -5,6 +5,7 @@ import { MatIconRegistry } from '@angular/material/icon';
import { provideRouter } from '@angular/router';
import { provideTranslateService } from '@ngx-translate/core';
import { AboutComponent } from './about.component';
import { AssetsConstants } from '../../constants/AssetsConstants';
/**
* No translations are loaded, so the translate pipe echoes the key back. That is
@@ -110,6 +111,16 @@ describe('AboutComponent', () => {
expect(textOf('[data-testid="role"]')).not.toContain('ABOUT.XP.COMPANY0.ROLE');
});
it('inverts the opaque white logos so they read as dark tiles', () => {
const inverted = fixture.debugElement
.queryAll(By.css('img.invert'))
.map(img => new URL(img.nativeElement.src, 'http://localhost').pathname);
const expected = [AssetsConstants.COLORDIGITAL_LOGO, AssetsConstants.TERAPORT_LOGO]
.map(src => new URL(src, 'http://localhost/').pathname);
expect(new Set(inverted)).toEqual(new Set(expected));
});
it('reveals the earlier positions when the toggle button is clicked', () => {
click('toggle-experience');
@@ -166,11 +177,14 @@ describe('AboutComponent', () => {
describe('education', () => {
it('shows only the post-school entries until the toggle button is clicked', () => {
expect(textOf('[data-testid="education-where"]')).toContain('ABOUT.EDUCATION.E6.WHERE');
expect(textOf('[data-testid="education-where"]')).not.toContain('ABOUT.EDUCATION.E0.WHERE');
expect(textOf('[data-testid="education-where"]')).not.toContain('ABOUT.EDUCATION.E2.WHERE');
expect(textOf('[data-testid="education-where"]').length).toBe(3);
click('toggle-education');
expect(textOf('[data-testid="education-where"]')).toContain('ABOUT.EDUCATION.E2.WHERE');
expect(textOf('[data-testid="education-where"]')).toContain('ABOUT.EDUCATION.E0.WHERE');
expect(textOf('[data-testid="education-where"]').length).toBe(7);
});
});
+10 -4
View File
@@ -17,6 +17,8 @@ interface ExperienceEntry {
company: string;
logo: string;
highlightCount: number;
/** The source file is opaque white; inverting gives the same dark tile as the other logos. */
invertLogo?: boolean;
}
interface SkillGroup {
@@ -50,25 +52,29 @@ export class AboutComponent {
key: 'ABOUT.XP.COMPANY9',
company: 'colordigital',
logo: AssetsConstants.COLORDIGITAL_LOGO,
highlightCount: 3
highlightCount: 3,
invertLogo: true
},
{
key: 'ABOUT.XP.COMPANY8',
company: 'teraport',
logo: AssetsConstants.TERAPORT_LOGO,
highlightCount: 3
highlightCount: 3,
invertLogo: true
},
{
key: 'ABOUT.XP.COMPANY7',
company: 'colordigital-earlier',
logo: AssetsConstants.COLORDIGITAL_LOGO,
highlightCount: 3
highlightCount: 3,
invertLogo: true
},
{
key: 'ABOUT.XP.COMPANY6',
company: 'colordigital-earlier',
logo: AssetsConstants.COLORDIGITAL_LOGO,
highlightCount: 3
highlightCount: 3,
invertLogo: true
},
{
key: 'ABOUT.XP.COMPANY5',