Create hero and text with image components
This commit is contained in:
@@ -6,7 +6,6 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hero = Astro.props.hero;
|
const hero = Astro.props.hero;
|
||||||
console.log(hero);
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<div id={`hero-${hero.id}`} class="flex w-full">
|
<div id={`hero-${hero.id}`} class="flex w-full">
|
||||||
|
|||||||
33
astro/src/components/web/TextWithImage.astro
Normal file
33
astro/src/components/web/TextWithImage.astro
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
import { Image } from 'astro:assets';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
textWithImage: TextWithImageComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
const textWithImage = Astro.props.textWithImage;
|
||||||
|
|
||||||
|
const imageSize = () => {
|
||||||
|
if (textWithImage.imageSize === "small") return "aspect-2/1";
|
||||||
|
else if (textWithImage.imageSize === "medium") return "aspect-26/17";
|
||||||
|
else return "aspect-39/29";
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
<div id={`textwithimage-${textWithImage.id}`} class={`flex ${textWithImage.imageSide === "right" ? "flex-row" : "flex-row-reverse"} justify-between items-center py-20 px-12 container mx-auto gap-y-8 gap-x-18`}>
|
||||||
|
<div class="flex flex-col gap-2.5 w-[50%]">
|
||||||
|
<h2 class="text-5xl font-bold">{textWithImage.title}</h2>
|
||||||
|
{ textWithImage.text !== null && (
|
||||||
|
<div>{textWithImage.text}</div>
|
||||||
|
) }
|
||||||
|
</div>
|
||||||
|
<div class="w-[50%]">
|
||||||
|
<Image
|
||||||
|
src={textWithImage.image.url}
|
||||||
|
width={textWithImage.image.width}
|
||||||
|
height={textWithImage.image.height}
|
||||||
|
class={`rounded-2xl shadow-sm ${imageSize()} object-cover`}
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
import Hero from '../web/Hero.astro';
|
import Hero from '../web/Hero.astro';
|
||||||
|
import TextWithImage from '../web/TextWithImage.astro';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
webpage: WebpageComponent[];
|
webpage: WebpageComponent[];
|
||||||
@@ -14,6 +15,7 @@ console.log(Astro.props.webpage);
|
|||||||
{ components.map((component) => (
|
{ components.map((component) => (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
{ component.component === "Hero" && <Hero hero={component} /> }
|
{ component.component === "Hero" && <Hero hero={component} /> }
|
||||||
|
{ component.component === "TextWithImage" && <TextWithImage textWithImage={component} /> }
|
||||||
</Fragment>
|
</Fragment>
|
||||||
)) }
|
)) }
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ export function dataToPage(pageRecord: any): WebPage {
|
|||||||
title: component["twsi_title"],
|
title: component["twsi_title"],
|
||||||
text: component["twsi_text"],
|
text: component["twsi_text"],
|
||||||
imageSide: component["twsi_image_side"],
|
imageSide: component["twsi_image_side"],
|
||||||
|
imageSize: component["twsi_image_size"],
|
||||||
image: {
|
image: {
|
||||||
url: getImageUrl(component["image"]["filename_disk"]),
|
url: getImageUrl(component["image"]["filename_disk"]),
|
||||||
width: component["image"]["width"],
|
width: component["image"]["width"],
|
||||||
|
|||||||
@@ -70,7 +70,8 @@ query getAllPages($date: String!) {
|
|||||||
width,
|
width,
|
||||||
height
|
height
|
||||||
},
|
},
|
||||||
twsi_image_side: image_side
|
twsi_image_side: image_side,
|
||||||
|
twsi_image_size: image_size
|
||||||
}
|
}
|
||||||
|
|
||||||
...on Wall_Of_Text {
|
...on Wall_Of_Text {
|
||||||
|
|||||||
@@ -70,7 +70,8 @@ query getAllPages($date: String!, $route: String!) {
|
|||||||
width,
|
width,
|
||||||
height
|
height
|
||||||
},
|
},
|
||||||
twsi_image_side: image_side
|
twsi_image_side: image_side,
|
||||||
|
twsi_image_size: image_size
|
||||||
}
|
}
|
||||||
|
|
||||||
...on Wall_Of_Text {
|
...on Wall_Of_Text {
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ type TextWithImageComponent = {
|
|||||||
|
|
||||||
id: string;
|
id: string;
|
||||||
title: string;
|
title: string;
|
||||||
text: string;
|
text: string | null;
|
||||||
image: PhotoProps;
|
image: PhotoProps;
|
||||||
imageSide: "left" | "right";
|
imageSide: "left" | "right";
|
||||||
|
imageSize: "small" | "medium" | "large";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user