ayco.io-astro/src/pages/index.astro

210 lines
4.7 KiB
Text

---
import Layout from '../layouts/Layout.astro'
import Card from '../components/Card.astro'
import Footer from '../components/Footer.astro'
import { stuff } from '../constants/stuff'
import now from '../constants/now'
// const isDev = import.meta.env.DEV;
// const getOriginUrl = (path: string) => isDev ? `http://localhost:5000/${path}` : path;
---
<Layout>
<section class="highlighted-section">
<div class="highlighted-section__content">
<img
class="highlighted-section__content__profile-picture"
alt="Ayo Ayco's avatar"
src="/ayo-sm.png"
width="140"
height="140"
/>
<div class="highlighted-section__content__text">
<h1 title="Ayo Ayco | Software Engineer + Web Developer">
<span class="heavy-text">Ayo</span>Ayco
</h1>
<ul>
{
stuff.map(({ icon, text, link }) => (
<li style="display:flex;gap:0.25em">
<span class="icon">{icon}</span>
<span class="text">{text}</span>
{link && <a href={link.url}>{link.text}</a>}
</li>
))
}
</ul>
<a href="/now" class="now-wrapper">
<span class="now-label">Now</span>
<span class="status">{now.status}</span>
</a>
</div>
</div>
</section>
<main>
<section class="cards-section">
<ul class="cards-section__grid">
<Card
href="showcase"
title="Hobby Projects"
body="See demos of my hobby projects"
/>
<Card
newTab={true}
href="https://ayco.io/cv"
title="CV / Resume"
body="Download and peruse my skills and experience"
/>
</ul>
</section>
<Footer />
</main>
</Layout>
<style>
h1 {
margin: 0;
color: rgba(255, 255, 255, 0.75);
}
h1 span.heavy-text {
font-weight: 900;
color: white;
}
.now-wrapper {
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 40px;
padding: 8px 4px;
font-weight: normal;
color: white;
font-size: var(--font-size-sm);
text-decoration: none;
}
.now-label {
border-radius: 40px;
background-color: rgba(0, 0, 0, 0.6);
color: white;
padding: 4px 8px;
margin-right: 0.25em;
text-transform: uppercase;
font-weight: bold;
}
.status {
padding-right: 4px;
}
.highlighted-section {
background: var(--ayo-gradient);
background-size: 500% 500%;
animation: pulse 15s ease-in-out infinite;
border-bottom: 1px solid var(--color-brand-blue-1);
}
.highlighted-section__content {
margin: auto;
padding: 1rem;
max-width: var(--content-width);
font-weight: normal;
font-size: var(--font-size-lg);
color: var(--text-color-light);
}
.highlighted-section__content__profile-picture {
float: right;
margin: 1em 1em 0 0;
border: 5px solid var(--color-brand-blue-1);
background-color: var(--color-brand-blue-1);
display: block;
border-radius: 50%;
width: 140px;
height: 140px;
}
.highlighted-section__content ul a {
color: white;
font-weight: normal;
}
.highlighted-section__content ul {
list-style-type: none;
padding: 0;
}
.highlighted-section__content ul li {
padding: 5px 0;
}
.cards-section {
margin: auto;
max-width: var(--content-width);
}
.cards-section__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr));
gap: 1rem;
padding: 0;
}
@media only screen and (max-device-width: 360px) {
.now-wrapper {
border: 0px;
border-radius: 0;
font-size: var(--font-size-sm);
width: 100%;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
padding: 0;
margin: 0;
}
.now-label {
display: none;
}
.status::before {
content: 'Now: ';
}
.status {
text-decoration: underline;
cursor: pointer;
}
.highlighted-section__content__profile-picture {
float: none;
width: 100px;
height: 100px;
}
}
@media only screen and (min-device-width: 280px) and (max-device-width: 653px) {
.highlighted-section__content {
padding: 1rem;
}
.highlighted-section__content__profile-picture {
float: none;
margin: 0;
width: 100px;
height: 100px;
}
.highlighted-section__content ul li {
font-size: var(--font-size-sm);
}
}
@media only screen and (min-device-width: 360px) and (max-device-width: 812px) {
.highlighted-section__content {
padding: 1rem;
}
.highlighted-section__content ul li {
font-size: var(--font-size-base);
}
}
</style>