diff --git a/src/content.config.ts b/src/content.config.ts index 3bbb024..f6928ee 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -17,6 +17,7 @@ const portfolioCollection = defineCollection({ summary: z.string(), tags: z.array(z.string()).optional(), pubDate: z.date(), + repository: z.url().regex(/git/).optional(), }), }); diff --git a/src/pages/portfolio/[...slug].astro b/src/pages/portfolio/[...slug].astro index 757d5bb..b33db26 100644 --- a/src/pages/portfolio/[...slug].astro +++ b/src/pages/portfolio/[...slug].astro @@ -1,5 +1,6 @@ --- import { getCollection, render } from 'astro:content'; +import { Icon } from "astro-icon/components"; import BaseLayout from '../../layouts/BaseLayout.astro'; import "katex/dist/katex.min.css"; import "rehype-callouts/theme/obsidian" @@ -18,11 +19,23 @@ const { Content } = await render(entry);
{entry.data.summary}
- {entry.data.tags && ( - - )} + {(entry.data.tags || entry.data.repository) && + ()}{project.data.summary}
- {project.data.tags && ( - @@ -40,11 +51,22 @@ projects.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); .link-card h2 { margin-top: 0; } + .additional-meta { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + gap: 0.5rem; + width: 100%; + justify-content: space-between; + margin-top: 1rem; + align-items: center; + } .tags { display: flex; gap: 0.5rem; - margin-top: 1rem; flex-wrap: wrap; + flex-grow: 1; + align-items: center; } .tag { font-size: 0.8rem; @@ -52,4 +74,11 @@ projects.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); padding: 0.25rem 0.5rem; border-radius: 0.25rem; } + .meta-repository { + flex-shrink: 1; + font-size: 1.2rem; + display: flex; + align-items: center; + color: rgb(var(--accent-base)); + }