diff options
Diffstat (limited to 'examples/with-content/src/components')
-rw-r--r-- | examples/with-content/src/components/BaseHead.astro | 38 | ||||
-rw-r--r-- | examples/with-content/src/components/Footer.astro | 13 | ||||
-rw-r--r-- | examples/with-content/src/components/Header.astro | 25 | ||||
-rw-r--r-- | examples/with-content/src/components/HeaderLink.astro | 22 |
4 files changed, 98 insertions, 0 deletions
diff --git a/examples/with-content/src/components/BaseHead.astro b/examples/with-content/src/components/BaseHead.astro new file mode 100644 index 000000000..ce60a7e77 --- /dev/null +++ b/examples/with-content/src/components/BaseHead.astro @@ -0,0 +1,38 @@ +--- +// 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} /> + +<!-- 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/examples/with-content/src/components/Footer.astro b/examples/with-content/src/components/Footer.astro new file mode 100644 index 000000000..08395a4d1 --- /dev/null +++ b/examples/with-content/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/examples/with-content/src/components/Header.astro b/examples/with-content/src/components/Header.astro new file mode 100644 index 000000000..4d3da1fcf --- /dev/null +++ b/examples/with-content/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/examples/with-content/src/components/HeaderLink.astro b/examples/with-content/src/components/HeaderLink.astro new file mode 100644 index 000000000..e8e2e103b --- /dev/null +++ b/examples/with-content/src/components/HeaderLink.astro @@ -0,0 +1,22 @@ +--- +export interface Props extends astroHTML.JSX.AnchorHTMLAttributes {} + +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> |