refactored all React components to Astro components

This commit is contained in:
Sebastian Wendel 2024-03-13 16:59:59 +01:00
parent ab970683d2
commit a67c4bd71c
6 changed files with 57 additions and 101 deletions

View file

@ -0,0 +1,22 @@
---
import { ArrowRightIcon } from "lucide-react";
interface Props {
className?: string;
caption: string;
href?: string;
tab?: boolean;
small?: boolean;
}
const { className, caption, href, tab, small } = Astro.props;
---
<a
href={href}
class={`flex w-fit gap-2 py-4 px-5 rounded-full items-center font-medium bg-secondary text-white hover:bg-opacity-75'} ${small ? "py-[10px] px-4" : "py-4 px-5"} ${className || ""}`}
{...tab ? { target: "_blank" } : {}}
>
{caption}
<ArrowRightIcon className="h-6 w-6" />
</a>

View file

@ -1,5 +1,6 @@
--- ---
import SRXLogo from "@srx/assets/srx-digital-logo.svg?react"; import Config from "@srx/config/page.json";
import Logo from "@srx/components/Logo.astro";
import { AtSign, GitFork, Linkedin, MessagesSquare } from "lucide-react"; import { AtSign, GitFork, Linkedin, MessagesSquare } from "lucide-react";
--- ---
@ -7,13 +8,13 @@ import { AtSign, GitFork, Linkedin, MessagesSquare } from "lucide-react";
class="flex flex-col md:flex-row items-start bg-default text-white py-20" class="flex flex-col md:flex-row items-start bg-default text-white py-20"
> >
<div class="flex flex-col lg:flex-grow"> <div class="flex flex-col lg:flex-grow">
<h3> <h3>{Config.site.cta}</h3>
Du möchtest mit mir zusammenarbeiten? Ich freue mich über deinen
Kontakt.
</h3>
<p class="flex items-stretch gap-5 py-5"> <p class="flex items-stretch gap-5 py-5">
<a <a
href={"mailto:latigid.xrs@srx.digital?subject=Kontakt%20%C3%BCber%20die%20Website"} href={"mailto:" +
`${Config.contact.email.address}` +
"?subject=" +
`${encodeURIComponent(Config.contact.email.subject)}`}
><AtSign /></a ><AtSign /></a
> >
<a href="https://matrix.to/#/@swendel:curious.bio" <a href="https://matrix.to/#/@swendel:curious.bio"
@ -28,15 +29,17 @@ import { AtSign, GitFork, Linkedin, MessagesSquare } from "lucide-react";
<div class="flex flex-col lg:flex-grow"> <div class="flex flex-col lg:flex-grow">
<div> <div>
srx digital<br /> {Config.site.title}<br />
Development & Operations<br /> {Config.site.subtitle}<br />
</div> </div>
<address class="not-italic mt-8 md:mt-0 py-5"> <address class="not-italic mt-8 md:mt-0 py-5">
Sebastian Wendel<br /> {Config.company.name}<br />
Wohlwillstraße 2<br /> {Config.company.street}
D-20359 Hamburg<br /> {Config.company.building}<br />
{Config.company.country}-{Config.company.plz}
{Config.company.city}<br />
</address> </address>
</div> </div>
<SRXLogo className="fill-primary h-10" /> <Logo />
</footer> </footer>

View file

@ -1,54 +1,30 @@
--- ---
import { Picture } from "astro:assets"; import { Picture } from "astro:assets";
import { LinkButton } from "@srx/components"; import Portrait from "@srx/assets/swendel_portrait.webp";
import SwendelPortrait from "@srx/assets/swendel_portrait.webp"; import Config from "@srx/config/page.json";
import Button from "@srx/components/Button.astro";
--- ---
<header> <header class="flex flex-col md:flex-row items-center">
<div class="hero"> <div class="flex flex-col lg:flex-grow">
<h1>You, me, technology.</h1> <h1 class="mb-4">{Config.site.claim}</h1>
<p> <p class="mb-8 leading-relaxed text-xl">{Config.site.description}</p>
Hallo! Ich bin Sebastian aus Hamburg, spezialisiert auf
Softwareentwicklung und Plattformengineering. Meine Welt sind Linux,
Container, Cloud und Hardware, besonders wenn's um Open-Source geht.
Ich helfe Firmen, ihre Digitalstrategien erfolgreich zu realisieren.
</p>
<LinkButton <Button
className={"h-10"} href={"mailto:" +
caption="Schreib mir" `${Config.contact.email.address}` +
href={"mailto:latigid.xrs@srx.digital?subject=Kontakt%20%C3%BCber%20die%20Website"} "?subject=" +
`${encodeURIComponent(Config.contact.email.subject)}`}
caption={Config.contact.email.caption}
/> />
<slot />
</div> </div>
<Picture <Picture
src={SwendelPortrait} class="rounded-xl"
src={Portrait}
formats={["jpeg", "webp"]} formats={["jpeg", "webp"]}
widths={[240, 540, 720, SwendelPortrait.width]} widths={[240, 540, 720, Portrait.width]}
sizes={`(max-width: 360px) 240px, (max-width: 720px) 540px, (max-width: 1600px) 720px, ${SwendelPortrait.width}px`} sizes={`(max-width: 360px) 240px, (max-width: 720px) 540px, (max-width: 1600px) 720px, ${Portrait.width}px`}
alt="Porträt von Sebastian Wendel" alt="Porträt von Sebastian Wendel"
/> />
</header> </header>
<style>
header {
@apply flex flex-col md:flex-row items-center;
}
h1 {
@apply mb-4;
}
p {
@apply mb-8 leading-relaxed text-xl;
}
img {
@apply rounded-xl;
}
.hero {
@apply flex flex-col lg:flex-grow;
}
</style>

View file

@ -1,28 +0,0 @@
import { ArrowRightIcon } from "lucide-react"
interface Props {
caption: string
className?: string
href?: string
newTab?: boolean
small?: boolean
}
const LinkButton: React.FC<Props> = ({
caption,
className,
href,
newTab,
small,
}: Props) => {
return (
<a href={href} className={`flex w-fit gap-2 py-4 px-5 rounded-full items-center font-medium bg-secondary text-white hover:bg-opacity-75'
} ${small ? 'py-[10px] px-4' : 'py-4 px-5'} ${className || ''}`}
{...(newTab ? { target: '_blank' } : {})}>
{caption}
<ArrowRightIcon className='h-6 w-6' />
</a>
)
}
export default LinkButton

View file

@ -1,19 +1,7 @@
--- ---
import SrxLogo from "@srx/assets/srx-digital-logo.svg?react"; import Logo from "@srx/components/Logo.astro";
--- ---
<nav class="section"> <nav class="bg-default h-20 py-5">
<a href={"/"}> <Logo />
<SrxLogo />
</a>
</nav> </nav>
<style>
nav {
@apply bg-default h-20 py-5;
}
svg {
@apply fill-primary h-10;
}
</style>

View file

@ -1,5 +0,0 @@
import LinkButton from "@srx/components/LinkButton";
export {
LinkButton,
}