Fixes: 1. media.ts: wrap placeholder generation in try-catch 2. toolbar.ts: check r.ok, display error message in popover
34 lines
956 B
Plaintext
34 lines
956 B
Plaintext
---
|
|
/**
|
|
* Custom Portable Text renderer for marketing blocks.
|
|
*
|
|
* This component maps custom block types (marketing.hero, marketing.features, etc.)
|
|
* to their corresponding Astro components. Pass it to the PortableText component
|
|
* via the `components` prop.
|
|
*/
|
|
import type { PortableTextBlock } from "emdash";
|
|
import { PortableText } from "emdash/ui";
|
|
import Hero from "./blocks/Hero.astro";
|
|
import Features from "./blocks/Features.astro";
|
|
import Testimonials from "./blocks/Testimonials.astro";
|
|
import Pricing from "./blocks/Pricing.astro";
|
|
import FAQ from "./blocks/FAQ.astro";
|
|
|
|
interface Props {
|
|
value: PortableTextBlock[];
|
|
}
|
|
|
|
const { value } = Astro.props;
|
|
|
|
// Custom block type components
|
|
const marketingTypes = {
|
|
"marketing.hero": Hero,
|
|
"marketing.features": Features,
|
|
"marketing.testimonials": Testimonials,
|
|
"marketing.pricing": Pricing,
|
|
"marketing.faq": FAQ,
|
|
};
|
|
---
|
|
|
|
<PortableText value={value} components={{ type: marketingTypes }} />
|