mirror of
https://github.com/kogakure/website-astro-stefanimhoff.de.git
synced 2026-02-03 20:15:27 +00:00
feat: remove backlink
This commit is contained in:
committed by
Stefan Imhoff
parent
30d02803c6
commit
4fd145f387
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
import { ArrowLeft } from './icons';
|
|
||||||
import Link from './Link.astro';
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
class?: string;
|
|
||||||
backLink?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { backLink, class: className, ...props } = Astro.props;
|
|
||||||
---
|
|
||||||
|
|
||||||
{
|
|
||||||
backLink && (
|
|
||||||
<Link
|
|
||||||
aria-label="Back to overview"
|
|
||||||
class:list={[
|
|
||||||
'col-span-2 col-start-1 h-clickarea w-clickarea items-center justify-center self-center justify-self-center transition-transform duration-500 ease-in-out hover:-translate-x-1 focus:-translate-x-1 md:col-span-1 print:hidden',
|
|
||||||
className,
|
|
||||||
]}
|
|
||||||
data-umami-event="Back to overview"
|
|
||||||
href={backLink}
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
aria-hidden="true"
|
|
||||||
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center border-none text-[0]"
|
|
||||||
type="button"
|
|
||||||
tabindex={-1}
|
|
||||||
>
|
|
||||||
<ArrowLeft aria-hidden="true" className="icon h-icon w-icon" />
|
|
||||||
</button>
|
|
||||||
</Link>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
@@ -1,15 +1,13 @@
|
|||||||
---
|
---
|
||||||
import Backlink from '../components/Backlink.astro';
|
|
||||||
import MainNavigation from '../components/MainNavigation.astro';
|
import MainNavigation from '../components/MainNavigation.astro';
|
||||||
import ThemeToggle from '../components/ThemeToggle.astro';
|
import ThemeToggle from '../components/ThemeToggle.astro';
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
backLink?: string;
|
|
||||||
class?: string;
|
class?: string;
|
||||||
navigation?: boolean;
|
navigation?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { backLink, class: className, navigation = true } = Astro.props;
|
const { class: className, navigation = true } = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
||||||
<header
|
<header
|
||||||
@@ -19,7 +17,6 @@ const { backLink, class: className, navigation = true } = Astro.props;
|
|||||||
]}
|
]}
|
||||||
role="banner"
|
role="banner"
|
||||||
>
|
>
|
||||||
<Backlink backLink={backLink} />
|
|
||||||
{navigation && <MainNavigation />}
|
{navigation && <MainNavigation />}
|
||||||
<ThemeToggle />
|
<ThemeToggle />
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const schema = JSON.stringify({
|
|||||||
});
|
});
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={frontmatter.title} grid="narrow" backLink="/" {...frontmatter}>
|
<GridLayout title={frontmatter.title} grid="narrow" {...frontmatter}>
|
||||||
<PageTitle grid="narrow" slot="title" {...frontmatter}>
|
<PageTitle grid="narrow" slot="title" {...frontmatter}>
|
||||||
{frontmatter.title}
|
{frontmatter.title}
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import SearchModal from '../components/SearchModal.astro';
|
|||||||
import Scripts from '../components/Scripts.astro';
|
import Scripts from '../components/Scripts.astro';
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
backLink?: string;
|
|
||||||
cover?: string;
|
cover?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
footer?: boolean;
|
footer?: boolean;
|
||||||
@@ -23,7 +22,6 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
backLink,
|
|
||||||
description,
|
description,
|
||||||
footer = true,
|
footer = true,
|
||||||
header = true,
|
header = true,
|
||||||
@@ -165,7 +163,7 @@ const webManifest = isProduction && {
|
|||||||
class="flex grow flex-col bg-shibui-100 font-sans font-normal leading-relaxed text-shibui-950 common-ligatures dark:bg-shibui-900 dark:text-shibui-200/[0.87]"
|
class="flex grow flex-col bg-shibui-100 font-sans font-normal leading-relaxed text-shibui-950 common-ligatures dark:bg-shibui-900 dark:text-shibui-200/[0.87]"
|
||||||
>
|
>
|
||||||
<div class="flex h-screen grow flex-col">
|
<div class="flex h-screen grow flex-col">
|
||||||
{header && <PageHeader backLink={backLink} />}
|
{header && <PageHeader />}
|
||||||
<div class="page-content flex grow">
|
<div class="page-content flex grow">
|
||||||
<main class="h-full w-full" {...pagefind}>
|
<main class="h-full w-full" {...pagefind}>
|
||||||
<slot />
|
<slot />
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
import BaseLayout from './BaseLayout.astro';
|
import BaseLayout from './BaseLayout.astro';
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
backLink?: string;
|
|
||||||
class?: string;
|
class?: string;
|
||||||
cover?: string;
|
cover?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
@@ -18,7 +17,6 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
backLink,
|
|
||||||
class: className,
|
class: className,
|
||||||
cover,
|
cover,
|
||||||
description,
|
description,
|
||||||
@@ -35,7 +33,6 @@ const {
|
|||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout
|
<BaseLayout
|
||||||
backLink={backLink}
|
|
||||||
cover={cover}
|
cover={cover}
|
||||||
description={description}
|
description={description}
|
||||||
footer={footer}
|
footer={footer}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ const description = 'Page not found.';
|
|||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout
|
<GridLayout
|
||||||
backLink="/"
|
|
||||||
class="grid"
|
class="grid"
|
||||||
description={description}
|
description={description}
|
||||||
grid="wide"
|
grid="wide"
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ const schema = JSON.stringify({
|
|||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout
|
<GridLayout
|
||||||
backLink="/journal/"
|
|
||||||
cover={entry.data.cover}
|
cover={entry.data.cover}
|
||||||
description={description}
|
description={description}
|
||||||
grid="fullsize"
|
grid="fullsize"
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ layout: ../layouts/AboutLayout.astro
|
|||||||
title: About
|
title: About
|
||||||
updated: 2025-12-15
|
updated: 2025-12-15
|
||||||
description: I’m Stefan Imhoff, a Web Developer from Hamburg, Germany.
|
description: I’m Stefan Imhoff, a Web Developer from Hamburg, Germany.
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ const description = 'The resume of Stefan Imhoff, Senior Software Engineer from
|
|||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout
|
<GridLayout
|
||||||
backLink="/"
|
|
||||||
class="grid"
|
class="grid"
|
||||||
description={description}
|
description={description}
|
||||||
grid="wide"
|
grid="wide"
|
||||||
@@ -93,19 +92,20 @@ const description = 'The resume of Stefan Imhoff, Senior Software Engineer from
|
|||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Accelerated XING Design System adoption by 278%</strong> (cumulative growth
|
<strong>Accelerated XING Design System adoption by 278%</strong> (cumulative growth
|
||||||
by Q3 2025), successfully deprecating legacy systems and reducing technical debt through
|
by Q3 2025), successfully deprecating legacy systems and reducing technical debt
|
||||||
aggressive migration strategies acknowledged as <q>technically demanding</q> successes.
|
through aggressive migration strategies acknowledged as <q
|
||||||
|
>technically demanding</q
|
||||||
|
> successes.
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Spearheaded WCAG 2.2 AA compliance</strong> for the EU Accessibility Act,
|
<strong>Spearheaded WCAG 2.2 AA compliance</strong> for the EU Accessibility Act,
|
||||||
conducting comprehensive audits on 50+ core components and implementing semantic standards,
|
conducting comprehensive audits on 50+ core components and implementing semantic
|
||||||
focus management, and high-contrast support.
|
standards, focus management, and high-contrast support.
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Recognized as a <q>Role Model for AI Tooling</q></strong> by leadership, integrating
|
<strong>Recognized as a <q>Role Model for AI Tooling</q></strong> by leadership,
|
||||||
generative AI into daily workflows for debugging and documentation, and winning <strong
|
integrating generative AI into daily workflows for debugging and documentation, and
|
||||||
>2nd Place in the 2023 AI Hackweek</strong
|
winning <strong>2nd Place in the 2023 AI Hackweek</strong> for profile image generation.
|
||||||
> for profile image generation.
|
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Engineered a scalable Dark Mode architecture</strong> by creating a dual-mode
|
<strong>Engineered a scalable Dark Mode architecture</strong> by creating a dual-mode
|
||||||
@@ -119,8 +119,8 @@ const description = 'The resume of Stefan Imhoff, Senior Software Engineer from
|
|||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Lead the technical upgrade to Styled Components</strong> and TypeScript modernization,
|
<strong>Lead the technical upgrade to Styled Components</strong> and TypeScript modernization,
|
||||||
refactoring complex types and eliminating “snowflake” implementations to enhance build
|
refactoring complex types and eliminating “snowflake” implementations to enhance
|
||||||
performance and developer experience.
|
build performance and developer experience.
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Mentored junior engineers and working students</strong> through dedicated
|
<strong>Mentored junior engineers and working students</strong> through dedicated
|
||||||
@@ -145,7 +145,8 @@ const description = 'The resume of Stefan Imhoff, Senior Software Engineer from
|
|||||||
<Text>
|
<Text>
|
||||||
<em
|
<em
|
||||||
>Key contributor to high-traffic product verticals including Onboarding, SEO,
|
>Key contributor to high-traffic product verticals including Onboarding, SEO,
|
||||||
Mobile, and Jobs. Consistently rated <q>Expectations Clearly Exceeded</q> (2018, 2019).</em
|
Mobile, and Jobs. Consistently rated <q>Expectations Clearly Exceeded</q> (2018,
|
||||||
|
2019).</em
|
||||||
>
|
>
|
||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
@@ -177,9 +178,9 @@ const description = 'The resume of Stefan Imhoff, Senior Software Engineer from
|
|||||||
Vitals.
|
Vitals.
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<strong>Pioneered the first production usage of CSS Grid</strong> at XING during the
|
<strong>Pioneered the first production usage of CSS Grid</strong> at XING during
|
||||||
relaunch of Public Search, setting the standard for modern layout implementation across
|
the relaunch of Public Search, setting the standard for modern layout implementation
|
||||||
the company.
|
across the company.
|
||||||
</ListItem>
|
</ListItem>
|
||||||
</UnorderedList>
|
</UnorderedList>
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const description =
|
|||||||
'This is an ever-growing collection of Haiku I have written. My Haiku reflect my own unique perspective on the world, and I hope they bring a bit of beauty and insight to the reader.';
|
'This is an ever-growing collection of Haiku I have written. My Haiku reflect my own unique perspective on the world, and I hope they bring a bit of beauty and insight to the reader.';
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={title} description={description} grid="wide" backLink="/" class="grid" innerGrid>
|
<GridLayout title={title} description={description} grid="wide" class="grid" innerGrid>
|
||||||
<PageTitle grid="wide" innerGrid>Haiku</PageTitle>
|
<PageTitle grid="wide" innerGrid>Haiku</PageTitle>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ const description = `Haiku ${entry.slug} in German and English.`;
|
|||||||
<PageHeader
|
<PageHeader
|
||||||
class="z-10 col-span-full row-start-1 bg-transparent !mbe-0 dark:bg-transparent"
|
class="z-10 col-span-full row-start-1 bg-transparent !mbe-0 dark:bg-transparent"
|
||||||
navigation={false}
|
navigation={false}
|
||||||
backLink="/haiku/"
|
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
class="min-[700px]:grid-cols-[repeat(auto-fit,_minmax(25rem,_1fr)] col-span-full row-start-1 row-end-3 grid w-full grid-cols-[repeat(auto-fit,_minmax(15rem,_1fr))] print:block"
|
class="min-[700px]:grid-cols-[repeat(auto-fit,_minmax(25rem,_1fr)] col-span-full row-start-1 row-end-3 grid w-full grid-cols-[repeat(auto-fit,_minmax(15rem,_1fr))] print:block"
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ title: Imprint
|
|||||||
description: The imprint of this website.
|
description: The imprint of this website.
|
||||||
noindex: true
|
noindex: true
|
||||||
nofollow: true
|
nofollow: true
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const title = 'Journal';
|
|||||||
const description = 'I am writing essays about various topics in this Journal.';
|
const description = 'I am writing essays about various topics in this Journal.';
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={title} description={description} grid="wide" backLink="/" innerGrid>
|
<GridLayout title={title} description={description} grid="wide" innerGrid>
|
||||||
<PageTitle grid="wide" innerGrid>Journal</PageTitle>
|
<PageTitle grid="wide" innerGrid>Journal</PageTitle>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ description: This site serves as an extensive collection of libertarian resource
|
|||||||
updated: 2025-06-13
|
updated: 2025-06-13
|
||||||
intro: Libertarianism is a political philosophy and movement that upholds liberty as a core principle.
|
intro: Libertarianism is a political philosophy and movement that upholds liberty as a core principle.
|
||||||
cover: /assets/images/cover/anarcho-capitalist-city.webp
|
cover: /assets/images/cover/anarcho-capitalist-city.webp
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ title: Life Rules
|
|||||||
updated: 2025-06-26
|
updated: 2025-06-26
|
||||||
description: My personal rules and principles for living a meaningful life. A guide to how I try to navigate life.
|
description: My personal rules and principles for living a meaningful life. A guide to how I try to navigate life.
|
||||||
intro: These are the rules, beliefs, and principles that guide my life.
|
intro: These are the rules, beliefs, and principles that guide my life.
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ title: Now
|
|||||||
updated: 2026-01-25
|
updated: 2026-01-25
|
||||||
description: This is my Now page, listing the things I currently do.
|
description: This is my Now page, listing the things I currently do.
|
||||||
intro: This is my Now page, a website with the content of what I am focused on at this point in my life.
|
intro: This is my Now page, a website with the content of what I am focused on at this point in my life.
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const description =
|
|||||||
'I’m a Frontend Developer by profession. I worked in Design, Editing, and 3D Animation. These are projects I created over the last years.';
|
'I’m a Frontend Developer by profession. I worked in Design, Editing, and 3D Animation. These are projects I created over the last years.';
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={title} description={description} grid="wide" class="grid" backLink="/" innerGrid>
|
<GridLayout title={title} description={description} grid="wide" class="grid" innerGrid>
|
||||||
<PageTitle grid="wide" innerGrid class="">Projects</PageTitle>
|
<PageTitle grid="wide" innerGrid class="">Projects</PageTitle>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ const title = entry.data.title;
|
|||||||
const description = entry.data.intro || `The detail for project "${entry.data.title}"`;
|
const description = entry.data.intro || `The detail for project "${entry.data.title}"`;
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={title} description={description} grid="narrow" innerGrid backLink="/projects/">
|
<GridLayout title={title} description={description} grid="narrow" innerGrid>
|
||||||
<PageTitle slot="title">
|
<PageTitle slot="title">
|
||||||
{entry.data.title}
|
{entry.data.title}
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
|
|||||||
@@ -15,14 +15,7 @@ const title = 'Tags';
|
|||||||
const description = 'This is a list of all the tags used in my journal.';
|
const description = 'This is a list of all the tags used in my journal.';
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout
|
<GridLayout class="grid" description={description} grid="wide" innerGrid title={title}>
|
||||||
backLink="/journal/"
|
|
||||||
class="grid"
|
|
||||||
description={description}
|
|
||||||
grid="wide"
|
|
||||||
innerGrid
|
|
||||||
title={title}
|
|
||||||
>
|
|
||||||
<PageTitle grid="wide" innerGrid>Tags</PageTitle>
|
<PageTitle grid="wide" innerGrid>Tags</PageTitle>
|
||||||
<aside class="col-start-1 col-end-18 flex flex-wrap gap-y-3">
|
<aside class="col-start-1 col-end-18 flex flex-wrap gap-y-3">
|
||||||
{uniqueTags.map((t) => <TagComponent href={`/tag/${t}/`}>{t}</TagComponent>)}
|
{uniqueTags.map((t) => <TagComponent href={`/tag/${t}/`}>{t}</TagComponent>)}
|
||||||
|
|||||||
@@ -45,14 +45,7 @@ const description = `These are all the articles categorized with the tag "${titl
|
|||||||
)}".`;
|
)}".`;
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout
|
<GridLayout title={title} description={description} grid="wide" class="grid" innerGrid>
|
||||||
title={title}
|
|
||||||
description={description}
|
|
||||||
grid="wide"
|
|
||||||
class="grid"
|
|
||||||
innerGrid
|
|
||||||
backLink="/journal/"
|
|
||||||
>
|
|
||||||
<PageTitle slot="title" class="capitalize">
|
<PageTitle slot="title" class="capitalize">
|
||||||
{tag}
|
{tag}
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ updated: 2025-12-15
|
|||||||
description: I enjoy learning how other people work, what hardware, software, tools, and gadgets they use. On this page, I present my tools.
|
description: I enjoy learning how other people work, what hardware, software, tools, and gadgets they use. On this page, I present my tools.
|
||||||
intro: I enjoy learning how other people work, what hardware, software, tools, and gadgets they use. Here, I present my tools.
|
intro: I enjoy learning how other people work, what hardware, software, tools, and gadgets they use. Here, I present my tools.
|
||||||
cover: /assets/images/cover/home-office.webp
|
cover: /assets/images/cover/home-office.webp
|
||||||
backLink: /
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import { mapping } from "../mdx-components.ts";
|
import { mapping } from "../mdx-components.ts";
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const description =
|
|||||||
'I took the time and converted all colors in the book “Traditional Colors of Japan” by Nobyoshi Hamada into an ASE file free to download.';
|
'I took the time and converted all colors in the book “Traditional Colors of Japan” by Nobyoshi Hamada into an ASE file free to download.';
|
||||||
---
|
---
|
||||||
|
|
||||||
<GridLayout title={title} description={description} grid="wide" backLink="/" class="grid" innerGrid>
|
<GridLayout title={title} description={description} grid="wide" class="grid" innerGrid>
|
||||||
<PageTitle grid="wide" innerGrid>The Traditional Colors of Japan</PageTitle>
|
<PageTitle grid="wide" innerGrid>The Traditional Colors of Japan</PageTitle>
|
||||||
|
|
||||||
<article class="col-start-1 col-end-17 grid md:col-end-8 xl:content-center">
|
<article class="col-start-1 col-end-17 grid md:col-end-8 xl:content-center">
|
||||||
|
|||||||
Reference in New Issue
Block a user