178 lines
4.4 KiB
Text
178 lines
4.4 KiB
Text
---
|
|
import BaseHead from '../components/blog/BaseHead.astro'
|
|
import Header from '../components/blog/Header.astro'
|
|
import Footer from '../components/blog/Footer.astro'
|
|
import FormattedDate from '../components/blog/FormattedDate.astro'
|
|
import type { CollectionEntry } from 'astro:content'
|
|
import { SITE_AUTHOR, SITE_AUTHOR_URL, SITE_AUTHOR_EMAIL } from '../consts'
|
|
|
|
type Props = CollectionEntry<'blog'>['data']
|
|
|
|
const { title, description, pubDate, updatedDate, heroImage } = Astro.props
|
|
---
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<BaseHead title={title} description={description} isArticle={true} />
|
|
<style>
|
|
main {
|
|
width: calc(100% - 2em);
|
|
max-width: 100%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
& .cta-wrapper {
|
|
width: 300px;
|
|
max-width: 100%;
|
|
text-align: center;
|
|
padding: 1em 0;
|
|
margin: 0 auto;
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 1rem;
|
|
|
|
& a {
|
|
text-decoration: none;
|
|
color: rgb(var(--black));
|
|
transition: 0.2s ease;
|
|
|
|
&:has(span) {
|
|
border-radius: 5px;
|
|
display: inline-block;
|
|
text-align: center;
|
|
padding: calc(0.5em + 4px) 0.5em 0.5em;
|
|
line-height: 1em;
|
|
}
|
|
|
|
&:has(span.secondary-btn) {
|
|
border: 1px solid rgba(var(--black), 95%);
|
|
}
|
|
|
|
&:has(span.primary-btn) {
|
|
background-color: rgba(var(--black), 95%);
|
|
box-shadow: 0 2px 8px rgba(var(--black), 5%);
|
|
color: white;
|
|
}
|
|
|
|
&:has(span.primary-btn:hover) {
|
|
background-color: var(--accent);
|
|
box-shadow: 0 2px 8px var(--accent);
|
|
}
|
|
|
|
&:has(span.secondary-btn:hover) {
|
|
border-color: var(--accent);
|
|
color: var(--accent);
|
|
box-shadow: 0 2px 8px var(--accent);
|
|
}
|
|
}
|
|
}
|
|
|
|
.hero-image {
|
|
width: 100%;
|
|
}
|
|
.hero-image img {
|
|
display: block;
|
|
margin: 0 auto;
|
|
border-radius: 12px;
|
|
}
|
|
.prose {
|
|
width: 650px;
|
|
max-width: calc(100% - 2em);
|
|
margin: auto;
|
|
padding: 0 1em;
|
|
color: rgb(var(--gray-dark));
|
|
}
|
|
.title {
|
|
margin-bottom: 1em;
|
|
padding: 1em 0;
|
|
text-align: center;
|
|
line-height: 1;
|
|
|
|
& .avatar {
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 50%;
|
|
display: inline;
|
|
/* height: calc(1rem + 6px); */
|
|
margin: 0 0.5rem;
|
|
margin-bottom: -10px;
|
|
}
|
|
|
|
& a[rel='author'] {
|
|
color: rgb(var(--black));
|
|
}
|
|
& a[rel='author']:hover {
|
|
color: var(--accent);
|
|
}
|
|
}
|
|
.date {
|
|
margin-bottom: 0.5em;
|
|
color: rgb(var(--gray));
|
|
}
|
|
.last-updated-on {
|
|
font-style: italic;
|
|
}
|
|
@media (max-width: 700px) {
|
|
main {
|
|
width: 100%;
|
|
|
|
& .prose {
|
|
max-width: calc(100% - 1em);
|
|
padding: 0;
|
|
}
|
|
|
|
& .cta-wrapper {
|
|
width: 250px;
|
|
& a {
|
|
font-size: 0.75em;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<Header />
|
|
<main>
|
|
<article>
|
|
<div class="hero-image">
|
|
{heroImage && <img width={700} height={510} src={heroImage} alt="" />}
|
|
</div>
|
|
<div class="prose">
|
|
<div class="title">
|
|
<div class="date">
|
|
<FormattedDate date={pubDate} />
|
|
{
|
|
updatedDate && (
|
|
<div class="last-updated-on">
|
|
Last updated on <FormattedDate date={updatedDate} />
|
|
</div>
|
|
)
|
|
}
|
|
</div>
|
|
<h1>{title}</h1>
|
|
<address style="display:inline">
|
|
By <img
|
|
class="avatar"
|
|
src="/ayoayco-avatar.jpg"
|
|
alt="Ayo Ayco's Avatar"
|
|
/>
|
|
<a rel="author" href={SITE_AUTHOR_URL}>{SITE_AUTHOR}</a>
|
|
</address>
|
|
</div>
|
|
<slot />
|
|
</div>
|
|
</article>
|
|
<div class="cta-wrapper">
|
|
<a href="/">
|
|
<span class="primary-btn">Get Cozy!</span>
|
|
</a>
|
|
<a href={`mailto:${SITE_AUTHOR_EMAIL}`}>
|
|
<span class="secondary-btn">Email Us</span>
|
|
</a>
|
|
</div>
|
|
</main>
|
|
<Footer />
|
|
</body>
|
|
</html>
|