diff options
| author | houston[bot] <astrobot-houston@users.noreply.github.com> | 2023-07-22 12:57:20 -0700 |
|---|---|---|
| committer | Pinapelz <donaldshan1@outlook.com> | 2023-07-22 12:57:20 -0700 |
| commit | 338bcf12e0b7bbd6e587ec992e62860642856e80 (patch) | |
| tree | 280c106666221697a40c13603a91ee4c696e0bfb /src/components | |
Initial commit from Astro
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/BaseHead.astro | 43 | ||||
| -rw-r--r-- | src/components/Footer.astro | 13 | ||||
| -rw-r--r-- | src/components/FormattedDate.astro | 17 | ||||
| -rw-r--r-- | src/components/Header.astro | 25 | ||||
| -rw-r--r-- | src/components/HeaderLink.astro | 24 |
5 files changed, 122 insertions, 0 deletions
diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro new file mode 100644 index 0000000..e11d111 --- /dev/null +++ b/src/components/BaseHead.astro @@ -0,0 +1,43 @@ +--- +// 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'; + +interface Props { + title: string; + description: string; + image?: string; +} + +const canonicalURL = new URL(Astro.url.pathname, Astro.site); + +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} /> + +<!-- Canonical URL --> +<link rel="canonical" href={canonicalURL} /> + +<!-- 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 property="twitter:image" content={new URL(image, Astro.url)} /> diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..08395a4 --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,13 @@ +--- +const today = new Date(); +--- + +<footer> + © {today.getFullYear()} YOUR NAME HERE. All rights reserved. +</footer> +<style> + footer { + padding: 25px; + text-align: center; + } +</style> diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro new file mode 100644 index 0000000..1bcce73 --- /dev/null +++ b/src/components/FormattedDate.astro @@ -0,0 +1,17 @@ +--- +interface Props { + date: Date; +} + +const { date } = Astro.props; +--- + +<time datetime={date.toISOString()}> + { + date.toLocaleDateString('en-us', { + year: 'numeric', + month: 'short', + day: 'numeric', + }) + } +</time> diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..4d3da1f --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,25 @@ +--- +import HeaderLink from './HeaderLink.astro'; +import { SITE_TITLE } from '../consts'; +--- + +<header> + <h2> + {SITE_TITLE} + </h2> + <nav> + <HeaderLink href="/">Home</HeaderLink> + <HeaderLink href="/blog">Blog</HeaderLink> + <HeaderLink href="/about">About</HeaderLink> + <HeaderLink href="https://twitter.com/astrodotbuild" target="_blank">Twitter</HeaderLink> + <HeaderLink href="https://github.com/withastro/astro" target="_blank">GitHub</HeaderLink> + </nav> +</header> +<style> + header { + margin: 0em 0 2em; + } + h2 { + margin: 0.5em 0; + } +</style> diff --git a/src/components/HeaderLink.astro b/src/components/HeaderLink.astro new file mode 100644 index 0000000..3dd439b --- /dev/null +++ b/src/components/HeaderLink.astro @@ -0,0 +1,24 @@ +--- +import type { HTMLAttributes } from 'astro/types'; + +type Props = HTMLAttributes<'a'>; + +const { href, class: className, ...props } = Astro.props; + +const { pathname } = Astro.url; +const isActive = href === pathname || href === pathname.replace(/\/$/, ''); +--- + +<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> |
