Astro blog starter

This commit is contained in:
Cassidy Williams
2022-08-22 22:31:53 -05:00
commit 8e0ada2db2
31 changed files with 11141 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
---
// Import the global.css file here so that it is included on
// all pages through the use of the <BaseHead /> component.
import '../styles/global.css';
export interface Props {
title: string;
description: string;
image?: string;
}
const { title, description, image = '/placeholder-social.jpg' } = Astro.props;
---
<!-- Global Metadata -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} />
<!-- Web Monetization -->
<meta name="monetization" content="$ilp.uphold.com/rEgHHBQGDUDP" />
<!-- Primary Meta Tags -->
<title>{title}</title>
<meta name="title" content={title} />
<meta name="description" content={description} />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content={Astro.url} />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={new URL(image, Astro.url)} />
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content={Astro.url} />
<meta property="twitter:title" content={title} />
<meta property="twitter:description" content={description} />
<meta name="twitter:creator" content="@cassidoo" />
<meta name="twitter:image" content="http://cassidoo.co/img/headshot.png" />

View File

@@ -0,0 +1,13 @@
---
const today = new Date();
---
<footer>
&copy; {today.getFullYear()} Cassidy Williams. All rights reserved.
</footer>
<style>
footer {
padding: 25px;
text-align: center;
}
</style>

View File

@@ -0,0 +1,26 @@
---
import HeaderLink from './HeaderLink.astro';
import { SITE_TITLE } from '../config';
---
<header>
<h2>
{SITE_TITLE}
</h2>
<nav>
<HeaderLink href="/">Home</HeaderLink>
<HeaderLink href="/blog">Blog</HeaderLink>
<HeaderLink href="/about">About</HeaderLink>
<HeaderLink href="https://cassidoo.co/newsletter" target="_blank">Newsletter</HeaderLink>
<HeaderLink href="https://twitter.com/cassidoo" target="_blank">Twitter</HeaderLink>
<HeaderLink href="https://github.com/cassidoo" target="_blank">GitHub</HeaderLink>
</nav>
</header>
<style>
header {
margin: 0em 0 2em;
}
h2 {
margin: 0.5em 0;
}
</style>

View File

@@ -0,0 +1,20 @@
---
export interface Props extends astroHTML.JSX.AnchorHTMLAttributes {}
const { href, class: className, ...props } = Astro.props as Props;
const isActive = href === Astro.url.pathname;
---
<a href={href} class:list={[className, { active: isActive }]} {...props}>
<slot />
</a>
<style>
a {
display: inline-block;
text-decoration: none;
}
a.active {
font-weight: bolder;
text-decoration: underline;
}
</style>