@xiwebdesign/xicms-core 7.13.0 → 7.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/lib/mediaUsage.d.ts +17 -0
- package/dist/admin/lib/mediaUsage.js +32 -1
- package/dist/admin/lib/mediaUsage.js.map +1 -1
- package/dist/admin/media/MediaManager.js +74 -17
- package/dist/admin/media/MediaManager.js.map +1 -1
- package/dist/admin/visual/VisualEditor.js +37 -3
- package/dist/admin/visual/VisualEditor.js.map +1 -1
- package/dist/blocks/BlockErrorBoundary.d.ts +1 -0
- package/dist/blocks/BlockErrorBoundary.js +4 -0
- package/dist/blocks/BlockErrorBoundary.js.map +1 -1
- package/dist/blocks/BlockRenderer.js +1 -1
- package/dist/blocks/BlockRenderer.js.map +1 -1
- package/dist/blocks/builtins/Accordion.d.ts +1 -2
- package/dist/blocks/builtins/Accordion.js +2 -39
- package/dist/blocks/builtins/Accordion.js.map +1 -1
- package/dist/blocks/builtins/AccordionRender.d.ts +7 -0
- package/dist/blocks/builtins/AccordionRender.js +42 -0
- package/dist/blocks/builtins/AccordionRender.js.map +1 -0
- package/dist/blocks/builtins/Agenda.d.ts +1 -29
- package/dist/blocks/builtins/Agenda.js +3 -94
- package/dist/blocks/builtins/Agenda.js.map +1 -1
- package/dist/blocks/builtins/AgendaRender.d.ts +34 -0
- package/dist/blocks/builtins/AgendaRender.js +96 -0
- package/dist/blocks/builtins/AgendaRender.js.map +1 -0
- package/dist/blocks/builtins/Banner.d.ts +1 -2
- package/dist/blocks/builtins/Banner.js +2 -32
- package/dist/blocks/builtins/Banner.js.map +1 -1
- package/dist/blocks/builtins/BannerRender.d.ts +11 -0
- package/dist/blocks/builtins/BannerRender.js +35 -0
- package/dist/blocks/builtins/BannerRender.js.map +1 -0
- package/dist/blocks/builtins/BeforeAfter.d.ts +1 -2
- package/dist/blocks/builtins/BeforeAfter.js +2 -31
- package/dist/blocks/builtins/BeforeAfter.js.map +1 -1
- package/dist/blocks/builtins/BeforeAfterRender.d.ts +11 -0
- package/dist/blocks/builtins/BeforeAfterRender.js +34 -0
- package/dist/blocks/builtins/BeforeAfterRender.js.map +1 -0
- package/dist/blocks/builtins/Booking.d.ts +1 -2
- package/dist/blocks/builtins/Booking.js +2 -14
- package/dist/blocks/builtins/Booking.js.map +1 -1
- package/dist/blocks/builtins/BookingRender.d.ts +8 -0
- package/dist/blocks/builtins/BookingRender.js +17 -0
- package/dist/blocks/builtins/BookingRender.js.map +1 -0
- package/dist/blocks/builtins/Breadcrumbs.d.ts +1 -10
- package/dist/blocks/builtins/Breadcrumbs.js +3 -69
- package/dist/blocks/builtins/Breadcrumbs.js.map +1 -1
- package/dist/blocks/builtins/BreadcrumbsRender.d.ts +18 -0
- package/dist/blocks/builtins/BreadcrumbsRender.js +71 -0
- package/dist/blocks/builtins/BreadcrumbsRender.js.map +1 -0
- package/dist/blocks/builtins/Cards.d.ts +1 -2
- package/dist/blocks/builtins/Cards.js +2 -74
- package/dist/blocks/builtins/Cards.js.map +1 -1
- package/dist/blocks/builtins/CardsRender.d.ts +7 -0
- package/dist/blocks/builtins/CardsRender.js +77 -0
- package/dist/blocks/builtins/CardsRender.js.map +1 -0
- package/dist/blocks/builtins/Columns.d.ts +1 -2
- package/dist/blocks/builtins/Columns.js +2 -9
- package/dist/blocks/builtins/Columns.js.map +1 -1
- package/dist/blocks/builtins/ColumnsRender.d.ts +6 -0
- package/dist/blocks/builtins/ColumnsRender.js +12 -0
- package/dist/blocks/builtins/ColumnsRender.js.map +1 -0
- package/dist/blocks/builtins/Contact.d.ts +2 -7
- package/dist/blocks/builtins/Contact.js +3 -102
- package/dist/blocks/builtins/Contact.js.map +1 -1
- package/dist/blocks/builtins/ContactRender.d.ts +9 -0
- package/dist/blocks/builtins/ContactRender.js +105 -0
- package/dist/blocks/builtins/ContactRender.js.map +1 -0
- package/dist/blocks/builtins/Countdown.d.ts +1 -18
- package/dist/blocks/builtins/Countdown.js +3 -53
- package/dist/blocks/builtins/Countdown.js.map +1 -1
- package/dist/blocks/builtins/CountdownRender.d.ts +22 -0
- package/dist/blocks/builtins/CountdownRender.js +55 -0
- package/dist/blocks/builtins/CountdownRender.js.map +1 -0
- package/dist/blocks/builtins/Cta.d.ts +1 -2
- package/dist/blocks/builtins/Cta.js +2 -39
- package/dist/blocks/builtins/Cta.js.map +1 -1
- package/dist/blocks/builtins/CtaRender.d.ts +6 -0
- package/dist/blocks/builtins/CtaRender.js +42 -0
- package/dist/blocks/builtins/CtaRender.js.map +1 -0
- package/dist/blocks/builtins/Downloads.d.ts +1 -2
- package/dist/blocks/builtins/Downloads.js +2 -16
- package/dist/blocks/builtins/Downloads.js.map +1 -1
- package/dist/blocks/builtins/DownloadsRender.d.ts +7 -0
- package/dist/blocks/builtins/DownloadsRender.js +19 -0
- package/dist/blocks/builtins/DownloadsRender.js.map +1 -0
- package/dist/blocks/builtins/Elements.d.ts +3 -4
- package/dist/blocks/builtins/Elements.js +4 -38
- package/dist/blocks/builtins/Elements.js.map +1 -1
- package/dist/blocks/builtins/ElementsRender.d.ts +10 -0
- package/dist/blocks/builtins/ElementsRender.js +41 -0
- package/dist/blocks/builtins/ElementsRender.js.map +1 -0
- package/dist/blocks/builtins/Embed.d.ts +1 -2
- package/dist/blocks/builtins/Embed.js +2 -19
- package/dist/blocks/builtins/Embed.js.map +1 -1
- package/dist/blocks/builtins/EmbedRender.d.ts +7 -0
- package/dist/blocks/builtins/EmbedRender.js +22 -0
- package/dist/blocks/builtins/EmbedRender.js.map +1 -0
- package/dist/blocks/builtins/Faq.d.ts +1 -6
- package/dist/blocks/builtins/Faq.js +3 -103
- package/dist/blocks/builtins/Faq.js.map +1 -1
- package/dist/blocks/builtins/FaqRender.d.ts +10 -0
- package/dist/blocks/builtins/FaqRender.js +105 -0
- package/dist/blocks/builtins/FaqRender.js.map +1 -0
- package/dist/blocks/builtins/FormBlock.d.ts +1 -2
- package/dist/blocks/builtins/FormBlock.js +2 -222
- package/dist/blocks/builtins/FormBlock.js.map +1 -1
- package/dist/blocks/builtins/FormBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/FormBlockRender.js +225 -0
- package/dist/blocks/builtins/FormBlockRender.js.map +1 -0
- package/dist/blocks/builtins/Gallery.d.ts +1 -23
- package/dist/blocks/builtins/Gallery.js +2 -164
- package/dist/blocks/builtins/Gallery.js.map +1 -1
- package/dist/blocks/builtins/GalleryRender.d.ts +25 -0
- package/dist/blocks/builtins/GalleryRender.js +167 -0
- package/dist/blocks/builtins/GalleryRender.js.map +1 -0
- package/dist/blocks/builtins/Hero.d.ts +1 -2
- package/dist/blocks/builtins/Hero.js +2 -73
- package/dist/blocks/builtins/Hero.js.map +1 -1
- package/dist/blocks/builtins/HeroRender.d.ts +6 -0
- package/dist/blocks/builtins/HeroRender.js +76 -0
- package/dist/blocks/builtins/HeroRender.js.map +1 -0
- package/dist/blocks/builtins/ImageBlock.d.ts +1 -2
- package/dist/blocks/builtins/ImageBlock.js +2 -22
- package/dist/blocks/builtins/ImageBlock.js.map +1 -1
- package/dist/blocks/builtins/ImageBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/ImageBlockRender.js +25 -0
- package/dist/blocks/builtins/ImageBlockRender.js.map +1 -0
- package/dist/blocks/builtins/Jobs.d.ts +1 -15
- package/dist/blocks/builtins/Jobs.js +3 -69
- package/dist/blocks/builtins/Jobs.js.map +1 -1
- package/dist/blocks/builtins/JobsRender.d.ts +17 -0
- package/dist/blocks/builtins/JobsRender.js +71 -0
- package/dist/blocks/builtins/JobsRender.js.map +1 -0
- package/dist/blocks/builtins/Layout.d.ts +2 -3
- package/dist/blocks/builtins/Layout.js +3 -39
- package/dist/blocks/builtins/Layout.js.map +1 -1
- package/dist/blocks/builtins/LayoutRender.d.ts +8 -0
- package/dist/blocks/builtins/LayoutRender.js +42 -0
- package/dist/blocks/builtins/LayoutRender.js.map +1 -0
- package/dist/blocks/builtins/MapBlock.d.ts +1 -2
- package/dist/blocks/builtins/MapBlock.js +2 -45
- package/dist/blocks/builtins/MapBlock.js.map +1 -1
- package/dist/blocks/builtins/MapBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/MapBlockRender.js +48 -0
- package/dist/blocks/builtins/MapBlockRender.js.map +1 -0
- package/dist/blocks/builtins/NewsListBlock.d.ts +1 -2
- package/dist/blocks/builtins/NewsListBlock.js +2 -11
- package/dist/blocks/builtins/NewsListBlock.js.map +1 -1
- package/dist/blocks/builtins/NewsListBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/NewsListBlockRender.js +14 -0
- package/dist/blocks/builtins/NewsListBlockRender.js.map +1 -0
- package/dist/blocks/builtins/Newsletter.d.ts +1 -2
- package/dist/blocks/builtins/Newsletter.js +2 -89
- package/dist/blocks/builtins/Newsletter.js.map +1 -1
- package/dist/blocks/builtins/NewsletterRender.d.ts +13 -0
- package/dist/blocks/builtins/NewsletterRender.js +92 -0
- package/dist/blocks/builtins/NewsletterRender.js.map +1 -0
- package/dist/blocks/builtins/OpeningHours.d.ts +1 -2
- package/dist/blocks/builtins/OpeningHours.js +2 -28
- package/dist/blocks/builtins/OpeningHours.js.map +1 -1
- package/dist/blocks/builtins/OpeningHoursRender.d.ts +7 -0
- package/dist/blocks/builtins/OpeningHoursRender.js +31 -0
- package/dist/blocks/builtins/OpeningHoursRender.js.map +1 -0
- package/dist/blocks/builtins/PdfBlock.d.ts +1 -2
- package/dist/blocks/builtins/PdfBlock.js +2 -76
- package/dist/blocks/builtins/PdfBlock.js.map +1 -1
- package/dist/blocks/builtins/PdfBlockRender.d.ts +11 -0
- package/dist/blocks/builtins/PdfBlockRender.js +79 -0
- package/dist/blocks/builtins/PdfBlockRender.js.map +1 -0
- package/dist/blocks/builtins/Portfolio.d.ts +1 -2
- package/dist/blocks/builtins/Portfolio.js +2 -75
- package/dist/blocks/builtins/Portfolio.js.map +1 -1
- package/dist/blocks/builtins/PortfolioRender.d.ts +7 -0
- package/dist/blocks/builtins/PortfolioRender.js +78 -0
- package/dist/blocks/builtins/PortfolioRender.js.map +1 -0
- package/dist/blocks/builtins/Pricing.d.ts +1 -8
- package/dist/blocks/builtins/Pricing.js +3 -73
- package/dist/blocks/builtins/Pricing.js.map +1 -1
- package/dist/blocks/builtins/PricingRender.d.ts +10 -0
- package/dist/blocks/builtins/PricingRender.js +75 -0
- package/dist/blocks/builtins/PricingRender.js.map +1 -0
- package/dist/blocks/builtins/RichTextBlock.d.ts +1 -2
- package/dist/blocks/builtins/RichTextBlock.js +2 -5
- package/dist/blocks/builtins/RichTextBlock.js.map +1 -1
- package/dist/blocks/builtins/RichTextBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/RichTextBlockRender.js +8 -0
- package/dist/blocks/builtins/RichTextBlockRender.js.map +1 -0
- package/dist/blocks/builtins/Search.d.ts +1 -2
- package/dist/blocks/builtins/Search.js +2 -80
- package/dist/blocks/builtins/Search.js.map +1 -1
- package/dist/blocks/builtins/SearchRender.d.ts +7 -0
- package/dist/blocks/builtins/SearchRender.js +83 -0
- package/dist/blocks/builtins/SearchRender.js.map +1 -0
- package/dist/blocks/builtins/Sections.d.ts +4 -5
- package/dist/blocks/builtins/Sections.js +5 -142
- package/dist/blocks/builtins/Sections.js.map +1 -1
- package/dist/blocks/builtins/SectionsRender.d.ts +12 -0
- package/dist/blocks/builtins/SectionsRender.js +145 -0
- package/dist/blocks/builtins/SectionsRender.js.map +1 -0
- package/dist/blocks/builtins/Slider.d.ts +1 -2
- package/dist/blocks/builtins/Slider.js +2 -134
- package/dist/blocks/builtins/Slider.js.map +1 -1
- package/dist/blocks/builtins/SliderRender.d.ts +7 -0
- package/dist/blocks/builtins/SliderRender.js +137 -0
- package/dist/blocks/builtins/SliderRender.js.map +1 -0
- package/dist/blocks/builtins/Spacer.d.ts +1 -2
- package/dist/blocks/builtins/Spacer.js +2 -6
- package/dist/blocks/builtins/Spacer.js.map +1 -1
- package/dist/blocks/builtins/SpacerRender.d.ts +6 -0
- package/dist/blocks/builtins/SpacerRender.js +9 -0
- package/dist/blocks/builtins/SpacerRender.js.map +1 -0
- package/dist/blocks/builtins/SymbolRef.d.ts +1 -2
- package/dist/blocks/builtins/SymbolRef.js +2 -76
- package/dist/blocks/builtins/SymbolRef.js.map +1 -1
- package/dist/blocks/builtins/SymbolRefRender.d.ts +13 -0
- package/dist/blocks/builtins/SymbolRefRender.js +79 -0
- package/dist/blocks/builtins/SymbolRefRender.js.map +1 -0
- package/dist/blocks/builtins/Team.d.ts +1 -2
- package/dist/blocks/builtins/Team.js +2 -55
- package/dist/blocks/builtins/Team.js.map +1 -1
- package/dist/blocks/builtins/TeamRender.d.ts +7 -0
- package/dist/blocks/builtins/TeamRender.js +58 -0
- package/dist/blocks/builtins/TeamRender.js.map +1 -0
- package/dist/blocks/builtins/Testimonials.d.ts +1 -8
- package/dist/blocks/builtins/Testimonials.js +2 -69
- package/dist/blocks/builtins/Testimonials.js.map +1 -1
- package/dist/blocks/builtins/TestimonialsRender.d.ts +10 -0
- package/dist/blocks/builtins/TestimonialsRender.js +72 -0
- package/dist/blocks/builtins/TestimonialsRender.js.map +1 -0
- package/dist/blocks/builtins/Video.d.ts +1 -9
- package/dist/blocks/builtins/Video.js +2 -64
- package/dist/blocks/builtins/Video.js.map +1 -1
- package/dist/blocks/builtins/VideoRender.d.ts +10 -0
- package/dist/blocks/builtins/VideoRender.js +67 -0
- package/dist/blocks/builtins/VideoRender.js.map +1 -0
- package/dist/blocks/builtins/WhatsappChat.d.ts +1 -8
- package/dist/blocks/builtins/WhatsappChat.js +2 -37
- package/dist/blocks/builtins/WhatsappChat.js.map +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.d.ts +17 -0
- package/dist/blocks/builtins/WhatsappChatRender.js +40 -0
- package/dist/blocks/builtins/WhatsappChatRender.js.map +1 -0
- package/dist/blocks/builtins/Widgets.d.ts +12 -13
- package/dist/blocks/builtins/Widgets.js +13 -175
- package/dist/blocks/builtins/Widgets.js.map +1 -1
- package/dist/blocks/builtins/WidgetsRender.d.ts +34 -0
- package/dist/blocks/builtins/WidgetsRender.js +178 -0
- package/dist/blocks/builtins/WidgetsRender.js.map +1 -0
- package/dist/blocks/reportRenderFout.d.ts +13 -0
- package/dist/blocks/reportRenderFout.js +31 -0
- package/dist/blocks/reportRenderFout.js.map +1 -0
- package/dist/modules/contract.js +2 -1
- package/dist/modules/contract.js.map +1 -1
- package/dist/modules/shop/blocks/Cart.js +1 -2
- package/dist/modules/shop/blocks/Cart.js.map +1 -1
- package/dist/modules/shop/blocks/Checkout.js +1 -2
- package/dist/modules/shop/blocks/Checkout.js.map +1 -1
- package/dist/modules/shop/blocks/Donation.js +1 -2
- package/dist/modules/shop/blocks/Donation.js.map +1 -1
- package/dist/modules/shop/blocks/OrderStatus.js +0 -2
- package/dist/modules/shop/blocks/OrderStatus.js.map +1 -1
- package/dist/modules/shop/blocks/ProductDetail.js +1 -7
- package/dist/modules/shop/blocks/ProductDetail.js.map +1 -1
- package/dist/modules/shop/blocks/ProductGrid.js +1 -2
- package/dist/modules/shop/blocks/ProductGrid.js.map +1 -1
- package/dist/modules/shop/blocks/ShopCategories.js +0 -2
- package/dist/modules/shop/blocks/ShopCategories.js.map +1 -1
- package/dist/modules/shop/module.js +1 -0
- package/dist/modules/shop/module.js.map +1 -1
- package/dist/modules/shop/schemas.d.ts +1 -0
- package/dist/modules/shop/schemas.js +32 -0
- package/dist/modules/shop/schemas.js.map +1 -0
- package/dist/modules/types.d.ts +6 -0
- package/dist/schema/shop.d.ts +1 -11
- package/dist/schema/shop.js +1 -20
- package/dist/schema/shop.js.map +1 -1
- package/dist/schema/shopGeld.d.ts +18 -0
- package/dist/schema/shopGeld.js +27 -0
- package/dist/schema/shopGeld.js.map +1 -0
- package/dist/styles.css +17 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/blocks/builtins/Jobs.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/Jobs.tsx"],"sourcesContent":["import dynamic from \"next/dynamic\";\nimport { defineBlock } from \"../registry\";\n\nexport const jobsBlock = defineBlock({\n type: \"jobs\",\n fields: { \"items.datePosted\": { type: \"date\" } },\n Render: dynamic(() => import(\"./JobsRender\").then((m) => m.JobsRender)),\n label: \"Vacatures\",\n icon: \"🧑🔧\",\n defaults: () => ({\n heading: \"Vacatures\",\n items: [{ title: \"Vacaturetitel\", employmentType: \"Fulltime\", location: \"\" }],\n jsonLd: true,\n }),\n});\n"],"mappings":"AAAA,OAAO,aAAa;AACpB,SAAS,mBAAmB;AAErB,MAAM,YAAY,YAAY;AAAA,EACnC,MAAM;AAAA,EACN,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,EAAE;AAAA,EAC/C,QAAQ,QAAQ,MAAM,OAAO,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;AAAA,EACtE,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,OAAO;AAAA,IACf,SAAS;AAAA,IACT,OAAO,CAAC,EAAE,OAAO,iBAAiB,gBAAgB,YAAY,UAAU,GAAG,CAAC;AAAA,IAC5E,QAAQ;AAAA,EACV;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { JobsBlockSchema } from "../../schema/blocks.js";
|
|
3
|
+
import type { BlockRenderProps } from "../registry.js";
|
|
4
|
+
type Jobs = z.infer<typeof JobsBlockSchema>;
|
|
5
|
+
type JobItem = Jobs["items"][number];
|
|
6
|
+
/** Vrije-tekst dienstverband → schema.org-enum (Google keurt vrije tekst af). */
|
|
7
|
+
export declare function employmentTypeEnum(value?: string): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* JobPosting-JSON-LD per vacature (Google Jobs). Puur en getest. Alleen vacatures met de door
|
|
10
|
+
* Google vereiste kernvelden (titel + plaatsingsdatum + locatie + omschrijving) komen in de JSON-LD
|
|
11
|
+
* — incomplete items renderen wél op de pagina maar leveren geen Search-Console-errors op. Salaris
|
|
12
|
+
* ("€ 2.800 – € 3.400 p/m") is geen geldige MonetaryAmount en wordt bewust weggelaten.
|
|
13
|
+
*/
|
|
14
|
+
export declare function jobsJsonLd(items: JobItem[], orgName: string): Array<Record<string, unknown>>;
|
|
15
|
+
/** Vacature-overzicht met JobPosting-JSON-LD — vindbaar via Google Jobs. */
|
|
16
|
+
export declare function JobsRender({ block }: BlockRenderProps<Jobs>): import("react").JSX.Element | null;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useSiteConfig } from "../../config.js";
|
|
4
|
+
import { VStack, Card, Heading, Text, Btn } from "../ui/index.js";
|
|
5
|
+
import { jsonLdHtml } from "./jsonld.js";
|
|
6
|
+
function employmentTypeEnum(value) {
|
|
7
|
+
const v = (value ?? "").toLowerCase();
|
|
8
|
+
if (!v) return null;
|
|
9
|
+
if (v.includes("full") || v.includes("voltijd")) return "FULL_TIME";
|
|
10
|
+
if (v.includes("part") || v.includes("deeltijd") || /\d+\s*[–-]?\s*\d*\s*uur/.test(v)) return "PART_TIME";
|
|
11
|
+
if (v.includes("bbl") || v.includes("leerling") || v.includes("stage") || v.includes("intern")) return "INTERN";
|
|
12
|
+
if (v.includes("tijdelijk") || v.includes("temp")) return "TEMPORARY";
|
|
13
|
+
if (v.includes("zzp") || v.includes("freelance") || v.includes("contract")) return "CONTRACTOR";
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
function jobsJsonLd(items, orgName) {
|
|
17
|
+
return items.filter((j) => j.title && j.datePosted && j.location && j.description).map((j) => {
|
|
18
|
+
const employment = employmentTypeEnum(j.employmentType);
|
|
19
|
+
return {
|
|
20
|
+
"@context": "https://schema.org",
|
|
21
|
+
"@type": "JobPosting",
|
|
22
|
+
title: j.title,
|
|
23
|
+
hiringOrganization: { "@type": "Organization", name: orgName },
|
|
24
|
+
...j.description ? { description: j.description } : {},
|
|
25
|
+
datePosted: j.datePosted,
|
|
26
|
+
...employment ? { employmentType: employment } : {},
|
|
27
|
+
jobLocation: { "@type": "Place", address: { "@type": "PostalAddress", addressLocality: j.location } },
|
|
28
|
+
...j.applyUrl ? { url: j.applyUrl } : {}
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function JobsRender({ block }) {
|
|
33
|
+
const { name } = useSiteConfig();
|
|
34
|
+
const items = (block.items ?? []).map((it, i) => ({ ...it, _i: i })).filter((j) => j.title);
|
|
35
|
+
if (items.length === 0 && !block.heading) return null;
|
|
36
|
+
return /* @__PURE__ */ jsxs(VStack, { gap: 4, as: "section", className: "xicms-jobs", children: [
|
|
37
|
+
(block.heading || block.intro) && /* @__PURE__ */ jsxs(VStack, { gap: 1, children: [
|
|
38
|
+
block.heading && /* @__PURE__ */ jsx(Heading, { level: 2, "data-xicms-edit": "heading", children: block.heading }),
|
|
39
|
+
block.intro && /* @__PURE__ */ jsx(Text, { color: "secondary", "data-xicms-edit": "intro", children: block.intro })
|
|
40
|
+
] }),
|
|
41
|
+
items.length === 0 && /* @__PURE__ */ jsx(Text, { color: "secondary", children: "Er zijn op dit moment geen openstaande vacatures." }),
|
|
42
|
+
/* @__PURE__ */ jsx(VStack, { gap: 3, children: items.map((j) => {
|
|
43
|
+
const i = j._i;
|
|
44
|
+
return /* @__PURE__ */ jsx(Card, { padding: 4, className: "xicms-jobs__item", children: /* @__PURE__ */ jsxs(VStack, { gap: 1.5, children: [
|
|
45
|
+
/* @__PURE__ */ jsxs("div", { className: "xicms-jobs__head", children: [
|
|
46
|
+
/* @__PURE__ */ jsx(Heading, { level: 3, "data-xicms-edit": `items.${i}.title`, children: j.title }),
|
|
47
|
+
/* @__PURE__ */ jsx("span", { className: "xicms-jobs__meta", children: ["employmentType", "location", "salary"].map((veld) => ({ veld, waarde: j[veld] })).filter((f) => f.waarde).map((f, n) => /* @__PURE__ */ jsxs("span", { children: [
|
|
48
|
+
n > 0 && " \xB7 ",
|
|
49
|
+
/* @__PURE__ */ jsx("span", { "data-xicms-edit": `items.${i}.${f.veld}`, children: f.waarde })
|
|
50
|
+
] }, f.veld)) })
|
|
51
|
+
] }),
|
|
52
|
+
j.description && /* @__PURE__ */ jsx(Text, { color: "secondary", "data-xicms-edit": `items.${i}.description`, children: j.description }),
|
|
53
|
+
j.applyUrl && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Btn, { label: "Solliciteer", href: j.applyUrl, variant: "primary" }) })
|
|
54
|
+
] }) }, i);
|
|
55
|
+
}) }),
|
|
56
|
+
block.jsonLd && jobsJsonLd(items, name).map((ld, i) => /* @__PURE__ */ jsx(
|
|
57
|
+
"script",
|
|
58
|
+
{
|
|
59
|
+
type: "application/ld+json",
|
|
60
|
+
dangerouslySetInnerHTML: { __html: jsonLdHtml(ld) }
|
|
61
|
+
},
|
|
62
|
+
i
|
|
63
|
+
))
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
JobsRender,
|
|
68
|
+
employmentTypeEnum,
|
|
69
|
+
jobsJsonLd
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=JobsRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/JobsRender.tsx"],"sourcesContent":["\"use client\";\n\nimport type { z } from \"zod\";\nimport type { JobsBlockSchema } from \"../../schema/blocks\";\nimport type { BlockRenderProps } from \"../registry\";\nimport { useSiteConfig } from \"../../config\";\nimport { VStack, Card, Heading, Text, Btn } from \"../ui\";\nimport { jsonLdHtml } from \"./jsonld\";\n\ntype Jobs = z.infer<typeof JobsBlockSchema>;\ntype JobItem = Jobs[\"items\"][number];\n\n/** Vrije-tekst dienstverband → schema.org-enum (Google keurt vrije tekst af). */\nexport function employmentTypeEnum(value?: string): string | null {\n const v = (value ?? \"\").toLowerCase();\n if (!v) return null;\n if (v.includes(\"full\") || v.includes(\"voltijd\")) return \"FULL_TIME\";\n if (v.includes(\"part\") || v.includes(\"deeltijd\") || /\\d+\\s*[–-]?\\s*\\d*\\s*uur/.test(v)) return \"PART_TIME\";\n if (v.includes(\"bbl\") || v.includes(\"leerling\") || v.includes(\"stage\") || v.includes(\"intern\")) return \"INTERN\";\n if (v.includes(\"tijdelijk\") || v.includes(\"temp\")) return \"TEMPORARY\";\n if (v.includes(\"zzp\") || v.includes(\"freelance\") || v.includes(\"contract\")) return \"CONTRACTOR\";\n return null;\n}\n\n/**\n * JobPosting-JSON-LD per vacature (Google Jobs). Puur en getest. Alleen vacatures met de door\n * Google vereiste kernvelden (titel + plaatsingsdatum + locatie + omschrijving) komen in de JSON-LD\n * — incomplete items renderen wél op de pagina maar leveren geen Search-Console-errors op. Salaris\n * (\"€ 2.800 – € 3.400 p/m\") is geen geldige MonetaryAmount en wordt bewust weggelaten.\n */\nexport function jobsJsonLd(items: JobItem[], orgName: string): Array<Record<string, unknown>> {\n return items\n .filter((j) => j.title && j.datePosted && j.location && j.description)\n .map((j) => {\n const employment = employmentTypeEnum(j.employmentType);\n return {\n \"@context\": \"https://schema.org\",\n \"@type\": \"JobPosting\",\n title: j.title,\n hiringOrganization: { \"@type\": \"Organization\", name: orgName },\n ...(j.description ? { description: j.description } : {}),\n datePosted: j.datePosted,\n ...(employment ? { employmentType: employment } : {}),\n jobLocation: { \"@type\": \"Place\", address: { \"@type\": \"PostalAddress\", addressLocality: j.location } },\n ...(j.applyUrl ? { url: j.applyUrl } : {}),\n };\n });\n}\n\n/** Vacature-overzicht met JobPosting-JSON-LD — vindbaar via Google Jobs. */\nexport function JobsRender({ block }: BlockRenderProps<Jobs>) {\n const { name } = useSiteConfig();\n // _i = index in de OORSPRONKELIJKE array — inline-edit-paden (items.N.title) moeten daarheen wijzen.\n const items = (block.items ?? []).map((it, i) => ({ ...it, _i: i })).filter((j) => j.title);\n if (items.length === 0 && !block.heading) return null;\n return (\n <VStack gap={4} as=\"section\" className=\"xicms-jobs\">\n {(block.heading || block.intro) && (\n <VStack gap={1}>\n {block.heading && <Heading level={2} data-xicms-edit=\"heading\">{block.heading}</Heading>}\n {block.intro && <Text color=\"secondary\" data-xicms-edit=\"intro\">{block.intro}</Text>}\n </VStack>\n )}\n {items.length === 0 && <Text color=\"secondary\">Er zijn op dit moment geen openstaande vacatures.</Text>}\n <VStack gap={3}>\n {items.map((j) => {\n const i = j._i;\n return (\n <Card key={i} padding={4} className=\"xicms-jobs__item\">\n <VStack gap={1.5}>\n <div className=\"xicms-jobs__head\">\n <Heading level={3} data-xicms-edit={`items.${i}.title`}>{j.title}</Heading>\n <span className=\"xicms-jobs__meta\">\n {([\"employmentType\", \"location\", \"salary\"] as const)\n .map((veld) => ({ veld, waarde: j[veld] }))\n .filter((f) => f.waarde)\n .map((f, n) => (\n <span key={f.veld}>\n {n > 0 && \" · \"}\n <span data-xicms-edit={`items.${i}.${f.veld}`}>{f.waarde}</span>\n </span>\n ))}\n </span>\n </div>\n {j.description && <Text color=\"secondary\" data-xicms-edit={`items.${i}.description`}>{j.description}</Text>}\n {j.applyUrl && (\n <div>\n <Btn label=\"Solliciteer\" href={j.applyUrl} variant=\"primary\" />\n </div>\n )}\n </VStack>\n </Card>\n );\n })}\n </VStack>\n {block.jsonLd &&\n jobsJsonLd(items, name).map((ld, i) => (\n <script\n key={i}\n type=\"application/ld+json\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: jsonLdHtml(ld) }}\n />\n ))}\n </VStack>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const tabsBlock: import("../index.js").BlockDefinition<z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
1
|
+
export declare const withSidebarBlock: import("../index.js").BlockDefinition<import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|
|
2
|
+
export declare const tabsBlock: import("../index.js").BlockDefinition<import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|
|
@@ -1,52 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
1
|
+
import dynamic from "next/dynamic";
|
|
4
2
|
import { defineBlock } from "../registry.js";
|
|
5
|
-
import { BlockRenderer } from "../BlockRenderer.js";
|
|
6
|
-
import { useRegistry } from "../context.js";
|
|
7
|
-
import { TabList, Tab } from "@astryxdesign/core/TabList";
|
|
8
|
-
function WithSidebarRender({ block, siteId, mode }) {
|
|
9
|
-
const registry = useRegistry();
|
|
10
|
-
const main = /* @__PURE__ */ jsx("div", { className: "xicms-sidebar__main", children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: block.main, registry, siteId, mode }) });
|
|
11
|
-
const aside = /* @__PURE__ */ jsx("aside", { "aria-label": "Zijbalk", className: `xicms-sidebar__aside${block.sticky ? " xicms-sidebar__aside--sticky" : ""}`, children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: block.aside, registry, siteId, mode }) });
|
|
12
|
-
return /* @__PURE__ */ jsx(
|
|
13
|
-
"div",
|
|
14
|
-
{
|
|
15
|
-
className: "xicms-sidebar",
|
|
16
|
-
"data-side": block.side,
|
|
17
|
-
"data-width": block.sidebarWidth,
|
|
18
|
-
children: block.side === "left" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
-
aside,
|
|
20
|
-
main
|
|
21
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
-
main,
|
|
23
|
-
aside
|
|
24
|
-
] })
|
|
25
|
-
}
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
3
|
const withSidebarBlock = defineBlock({
|
|
29
4
|
type: "withSidebar",
|
|
30
|
-
Render: WithSidebarRender,
|
|
5
|
+
Render: dynamic(() => import("./LayoutRender.js").then((m) => m.WithSidebarRender)),
|
|
31
6
|
label: "Met zijbalk",
|
|
32
7
|
icon: "\u25A4",
|
|
33
8
|
category: "layout",
|
|
34
9
|
defaults: () => ({ main: [], aside: [], side: "right", sidebarWidth: "md", sticky: true })
|
|
35
10
|
});
|
|
36
|
-
function TabsRender({ block, siteId, mode }) {
|
|
37
|
-
const registry = useRegistry();
|
|
38
|
-
const tabs = block.tabs ?? [];
|
|
39
|
-
const [active, setActive] = useState("0");
|
|
40
|
-
if (tabs.length === 0) return null;
|
|
41
|
-
const current = Math.min(Math.max(Number(active) || 0, 0), tabs.length - 1);
|
|
42
|
-
return /* @__PURE__ */ jsxs("section", { className: "xicms-tabs", children: [
|
|
43
|
-
/* @__PURE__ */ jsx(TabList, { value: String(current), onChange: setActive, hasDivider: true, children: tabs.map((t, i) => /* @__PURE__ */ jsx(Tab, { value: String(i), label: t.label || `Tab ${i + 1}` }, i)) }),
|
|
44
|
-
/* @__PURE__ */ jsx("div", { role: "tabpanel", "aria-label": tabs[current].label || `Tab ${current + 1}`, style: { marginTop: "1.25rem" }, children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: tabs[current].blocks, registry, siteId, mode }) })
|
|
45
|
-
] });
|
|
46
|
-
}
|
|
47
11
|
const tabsBlock = defineBlock({
|
|
48
12
|
type: "tabs",
|
|
49
|
-
Render: TabsRender,
|
|
13
|
+
Render: dynamic(() => import("./LayoutRender.js").then((m) => m.TabsRender)),
|
|
50
14
|
label: "Tabbladen",
|
|
51
15
|
icon: "\u{1F5C2}\uFE0F",
|
|
52
16
|
category: "layout",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/blocks/builtins/Layout.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/Layout.tsx"],"sourcesContent":["import dynamic from \"next/dynamic\";\nimport { defineBlock } from \"../registry\";\n\nexport const withSidebarBlock = defineBlock({\n type: \"withSidebar\",\n Render: dynamic(() => import(\"./LayoutRender\").then((m) => m.WithSidebarRender)),\n label: \"Met zijbalk\",\n icon: \"▤\",\n category: \"layout\",\n defaults: () => ({ main: [], aside: [], side: \"right\", sidebarWidth: \"md\", sticky: true }),\n});\n\nexport const tabsBlock = defineBlock({\n type: \"tabs\",\n Render: dynamic(() => import(\"./LayoutRender\").then((m) => m.TabsRender)),\n label: \"Tabbladen\",\n icon: \"🗂️\",\n category: \"layout\",\n defaults: () => ({\n tabs: [\n { label: \"Tab 1\", blocks: [] },\n { label: \"Tab 2\", blocks: [] },\n ],\n }),\n});\n"],"mappings":"AAAA,OAAO,aAAa;AACpB,SAAS,mBAAmB;AAErB,MAAM,mBAAmB,YAAY;AAAA,EAC1C,MAAM;AAAA,EACN,QAAQ,QAAQ,MAAM,OAAO,gBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAAA,EAC/E,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,SAAS,cAAc,MAAM,QAAQ,KAAK;AAC1F,CAAC;AAEM,MAAM,YAAY,YAAY;AAAA,EACnC,MAAM;AAAA,EACN,QAAQ,QAAQ,MAAM,OAAO,gBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;AAAA,EACxE,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU,OAAO;AAAA,IACf,MAAM;AAAA,MACJ,EAAE,OAAO,SAAS,QAAQ,CAAC,EAAE;AAAA,MAC7B,EAAE,OAAO,SAAS,QAAQ,CAAC,EAAE;AAAA,IAC/B;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { WithSidebarBlockSchema, TabsBlockSchema } from "../../schema/blocks.js";
|
|
3
|
+
import type { BlockRenderProps } from "../registry.js";
|
|
4
|
+
type WithSidebar = z.infer<typeof WithSidebarBlockSchema>;
|
|
5
|
+
export declare function WithSidebarRender({ block, siteId, mode }: BlockRenderProps<WithSidebar>): import("react").JSX.Element;
|
|
6
|
+
type Tabs = z.infer<typeof TabsBlockSchema>;
|
|
7
|
+
export declare function TabsRender({ block, siteId, mode }: BlockRenderProps<Tabs>): import("react").JSX.Element | null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { BlockRenderer } from "../BlockRenderer.js";
|
|
5
|
+
import { useRegistry } from "../context.js";
|
|
6
|
+
import { TabList, Tab } from "@astryxdesign/core/TabList";
|
|
7
|
+
function WithSidebarRender({ block, siteId, mode }) {
|
|
8
|
+
const registry = useRegistry();
|
|
9
|
+
const main = /* @__PURE__ */ jsx("div", { className: "xicms-sidebar__main", children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: block.main, registry, siteId, mode }) });
|
|
10
|
+
const aside = /* @__PURE__ */ jsx("aside", { "aria-label": "Zijbalk", className: `xicms-sidebar__aside${block.sticky ? " xicms-sidebar__aside--sticky" : ""}`, children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: block.aside, registry, siteId, mode }) });
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
className: "xicms-sidebar",
|
|
15
|
+
"data-side": block.side,
|
|
16
|
+
"data-width": block.sidebarWidth,
|
|
17
|
+
children: block.side === "left" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
+
aside,
|
|
19
|
+
main
|
|
20
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21
|
+
main,
|
|
22
|
+
aside
|
|
23
|
+
] })
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
function TabsRender({ block, siteId, mode }) {
|
|
28
|
+
const registry = useRegistry();
|
|
29
|
+
const tabs = block.tabs ?? [];
|
|
30
|
+
const [active, setActive] = useState("0");
|
|
31
|
+
if (tabs.length === 0) return null;
|
|
32
|
+
const current = Math.min(Math.max(Number(active) || 0, 0), tabs.length - 1);
|
|
33
|
+
return /* @__PURE__ */ jsxs("section", { className: "xicms-tabs", children: [
|
|
34
|
+
/* @__PURE__ */ jsx(TabList, { value: String(current), onChange: setActive, hasDivider: true, children: tabs.map((t, i) => /* @__PURE__ */ jsx(Tab, { value: String(i), label: t.label || `Tab ${i + 1}` }, i)) }),
|
|
35
|
+
/* @__PURE__ */ jsx("div", { role: "tabpanel", "aria-label": tabs[current].label || `Tab ${current + 1}`, style: { marginTop: "1.25rem" }, children: /* @__PURE__ */ jsx(BlockRenderer, { blocks: tabs[current].blocks, registry, siteId, mode }) })
|
|
36
|
+
] });
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
TabsRender,
|
|
40
|
+
WithSidebarRender
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=LayoutRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/LayoutRender.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport type { z } from \"zod\";\nimport type { WithSidebarBlockSchema, TabsBlockSchema } from \"../../schema/blocks\";\nimport type { BlockRenderProps } from \"../registry\";\nimport { BlockRenderer } from \"../BlockRenderer\";\nimport { useRegistry } from \"../context\";\nimport { TabList, Tab } from \"@astryxdesign/core/TabList\";\n\n/* ── Met zijbalk ───────────────────────────────────────────────────────────\n * Brede hoofdkolom + smalle (sticky) zijbalk. De zijbalk is dé plek voor de compacte\n * widget-varianten (\"laatste nieuws\", \"komende agenda\", contact, …). Beide kanten zijn\n * gewone block-arrays, dus alles wat op een pagina kan, kan ook hier. */\ntype WithSidebar = z.infer<typeof WithSidebarBlockSchema>;\n\nexport function WithSidebarRender({ block, siteId, mode }: BlockRenderProps<WithSidebar>) {\n const registry = useRegistry();\n const main = (\n <div className=\"xicms-sidebar__main\">\n <BlockRenderer blocks={block.main} registry={registry} siteId={siteId} mode={mode} />\n </div>\n );\n const aside = (\n <aside aria-label=\"Zijbalk\" className={`xicms-sidebar__aside${block.sticky ? \" xicms-sidebar__aside--sticky\" : \"\"}`}>\n <BlockRenderer blocks={block.aside} registry={registry} siteId={siteId} mode={mode} />\n </aside>\n );\n return (\n <div\n className=\"xicms-sidebar\"\n data-side={block.side}\n data-width={block.sidebarWidth}\n >\n {block.side === \"left\" ? (\n <>\n {aside}\n {main}\n </>\n ) : (\n <>\n {main}\n {aside}\n </>\n )}\n </div>\n );\n}\n\n/* ── Tabbladen ─────────────────────────────────────────────────────────────\n * Per tab een eigen set blokken. Toegankelijk (role=tab/tabpanel, pijltjes-navigatie via\n * de browser-default focus). */\ntype Tabs = z.infer<typeof TabsBlockSchema>;\n\nexport function TabsRender({ block, siteId, mode }: BlockRenderProps<Tabs>) {\n const registry = useRegistry();\n const tabs = block.tabs ?? [];\n const [active, setActive] = useState(\"0\");\n if (tabs.length === 0) return null;\n const current = Math.min(Math.max(Number(active) || 0, 0), tabs.length - 1);\n return (\n <section className=\"xicms-tabs\">\n <TabList value={String(current)} onChange={setActive} hasDivider>\n {tabs.map((t, i) => (\n <Tab key={i} value={String(i)} label={t.label || `Tab ${i + 1}`} />\n ))}\n </TabList>\n <div role=\"tabpanel\" aria-label={tabs[current].label || `Tab ${current + 1}`} style={{ marginTop: \"1.25rem\" }}>\n <BlockRenderer blocks={tabs[current].blocks} registry={registry} siteId={siteId} mode={mode} />\n </div>\n </section>\n );\n}\n"],"mappings":";AAoBM,SAeE,UAfF,KAeE,YAfF;AAlBN,SAAS,gBAAgB;AAIzB,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,SAAS,WAAW;AAQtB,SAAS,kBAAkB,EAAE,OAAO,QAAQ,KAAK,GAAkC;AACxF,QAAM,WAAW,YAAY;AAC7B,QAAM,OACJ,oBAAC,SAAI,WAAU,uBACb,8BAAC,iBAAc,QAAQ,MAAM,MAAM,UAAoB,QAAgB,MAAY,GACrF;AAEF,QAAM,QACJ,oBAAC,WAAM,cAAW,WAAU,WAAW,uBAAuB,MAAM,SAAS,kCAAkC,EAAE,IAC/G,8BAAC,iBAAc,QAAQ,MAAM,OAAO,UAAoB,QAAgB,MAAY,GACtF;AAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,aAAW,MAAM;AAAA,MACjB,cAAY,MAAM;AAAA,MAEjB,gBAAM,SAAS,SACd,iCACG;AAAA;AAAA,QACA;AAAA,SACH,IAEA,iCACG;AAAA;AAAA,QACA;AAAA,SACH;AAAA;AAAA,EAEJ;AAEJ;AAOO,SAAS,WAAW,EAAE,OAAO,QAAQ,KAAK,GAA2B;AAC1E,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,MAAM,QAAQ,CAAC;AAC5B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,GAAG;AACxC,MAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAM,UAAU,KAAK,IAAI,KAAK,IAAI,OAAO,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC;AAC1E,SACE,qBAAC,aAAQ,WAAU,cACjB;AAAA,wBAAC,WAAQ,OAAO,OAAO,OAAO,GAAG,UAAU,WAAW,YAAU,MAC7D,eAAK,IAAI,CAAC,GAAG,MACZ,oBAAC,OAAY,OAAO,OAAO,CAAC,GAAG,OAAO,EAAE,SAAS,OAAO,IAAI,CAAC,MAAnD,CAAuD,CAClE,GACH;AAAA,IACA,oBAAC,SAAI,MAAK,YAAW,cAAY,KAAK,OAAO,EAAE,SAAS,OAAO,UAAU,CAAC,IAAI,OAAO,EAAE,WAAW,UAAU,GAC1G,8BAAC,iBAAc,QAAQ,KAAK,OAAO,EAAE,QAAQ,UAAoB,QAAgB,MAAY,GAC/F;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const mapBlock: import("../index.js").BlockDefinition<z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
1
|
+
export declare const mapBlock: import("../index.js").BlockDefinition<import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|
|
@@ -1,51 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
1
|
+
import dynamic from "next/dynamic";
|
|
3
2
|
import { defineBlock } from "../registry.js";
|
|
4
|
-
import { ConsentEmbed } from "./consentEmbed.js";
|
|
5
|
-
function osmSrc(block) {
|
|
6
|
-
if (block.lat != null && block.lng != null) {
|
|
7
|
-
const degPerTile = 360 / Math.pow(2, block.zoom);
|
|
8
|
-
const lngHalf = degPerTile * 1.25;
|
|
9
|
-
const latHalf = lngHalf * Math.cos(block.lat * Math.PI / 180) * 0.6;
|
|
10
|
-
const bbox = [block.lng - lngHalf, block.lat - latHalf, block.lng + lngHalf, block.lat + latHalf].join(",");
|
|
11
|
-
const marker = `${block.lat},${block.lng}`;
|
|
12
|
-
return `https://www.openstreetmap.org/export/embed.html?bbox=${encodeURIComponent(bbox)}&layer=mapnik&marker=${encodeURIComponent(marker)}`;
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
function MapRender({ block, mode }) {
|
|
17
|
-
const src = block.provider === "google" ? block.query || null : osmSrc(block);
|
|
18
|
-
if (!src) {
|
|
19
|
-
if (block.provider === "osm" && block.query) {
|
|
20
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21
|
-
mode === "preview" && /* @__PURE__ */ jsx("p", { className: "xicms-ve__hint", children: "\u{1F5FA}\uFE0F Kaart: vul co\xF6rdinaten (lat/lng) in om de kaart te tonen \u2014 nu staat er een kaartlink." }),
|
|
22
|
-
/* @__PURE__ */ jsxs("p", { className: "xicms-map__fallback", children: [
|
|
23
|
-
"\u{1F4CD}",
|
|
24
|
-
" ",
|
|
25
|
-
/* @__PURE__ */ jsxs("a", { href: `https://www.openstreetmap.org/search?query=${encodeURIComponent(block.query)}`, target: "_blank", rel: "noopener noreferrer", children: [
|
|
26
|
-
"Bekijk ",
|
|
27
|
-
/* @__PURE__ */ jsx("span", { "data-xicms-edit": "query", children: block.query }),
|
|
28
|
-
" op de kaart"
|
|
29
|
-
] })
|
|
30
|
-
] })
|
|
31
|
-
] });
|
|
32
|
-
}
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
return /* @__PURE__ */ jsx("div", { className: "xicms-map", style: { height: `${block.height}px` }, children: /* @__PURE__ */ jsx(ConsentEmbed, { gated: block.consentGated, preview: mode === "preview", label: "Kaart", children: /* @__PURE__ */ jsx(
|
|
36
|
-
"iframe",
|
|
37
|
-
{
|
|
38
|
-
src,
|
|
39
|
-
title: block.query ? `Kaart: ${block.query}` : "Kaart",
|
|
40
|
-
loading: "lazy",
|
|
41
|
-
style: { border: 0, width: "100%", height: "100%" },
|
|
42
|
-
referrerPolicy: "no-referrer-when-downgrade"
|
|
43
|
-
}
|
|
44
|
-
) }) });
|
|
45
|
-
}
|
|
46
3
|
const mapBlock = defineBlock({
|
|
47
4
|
type: "map",
|
|
48
|
-
Render: MapRender,
|
|
5
|
+
Render: dynamic(() => import("./MapBlockRender.js").then((m) => m.MapRender)),
|
|
49
6
|
label: "Kaart",
|
|
50
7
|
icon: "\u{1F5FA}\uFE0F",
|
|
51
8
|
defaults: () => ({ provider: "osm", query: "", zoom: 14, height: 360, consentGated: true })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/blocks/builtins/MapBlock.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/MapBlock.tsx"],"sourcesContent":["import dynamic from \"next/dynamic\";\nimport { defineBlock } from \"../registry\";\n\nexport const mapBlock = defineBlock({\n type: \"map\",\n Render: dynamic(() => import(\"./MapBlockRender\").then((m) => m.MapRender)),\n label: \"Kaart\",\n icon: \"🗺️\",\n defaults: () => ({ provider: \"osm\", query: \"\", zoom: 14, height: 360, consentGated: true }),\n});\n"],"mappings":"AAAA,OAAO,aAAa;AACpB,SAAS,mBAAmB;AAErB,MAAM,WAAW,YAAY;AAAA,EAClC,MAAM;AAAA,EACN,QAAQ,QAAQ,MAAM,OAAO,kBAAkB,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;AAAA,EACzE,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,OAAO,EAAE,UAAU,OAAO,OAAO,IAAI,MAAM,IAAI,QAAQ,KAAK,cAAc,KAAK;AAC3F,CAAC;","names":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { MapBlockSchema } from "../../schema/blocks.js";
|
|
3
|
+
import type { BlockRenderProps } from "../registry.js";
|
|
4
|
+
type MapBlk = z.infer<typeof MapBlockSchema>;
|
|
5
|
+
export declare function MapRender({ block, mode }: BlockRenderProps<MapBlk>): import("react").JSX.Element | null;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ConsentEmbed } from "./consentEmbed.js";
|
|
4
|
+
function osmSrc(block) {
|
|
5
|
+
if (block.lat != null && block.lng != null) {
|
|
6
|
+
const degPerTile = 360 / Math.pow(2, block.zoom);
|
|
7
|
+
const lngHalf = degPerTile * 1.25;
|
|
8
|
+
const latHalf = lngHalf * Math.cos(block.lat * Math.PI / 180) * 0.6;
|
|
9
|
+
const bbox = [block.lng - lngHalf, block.lat - latHalf, block.lng + lngHalf, block.lat + latHalf].join(",");
|
|
10
|
+
const marker = `${block.lat},${block.lng}`;
|
|
11
|
+
return `https://www.openstreetmap.org/export/embed.html?bbox=${encodeURIComponent(bbox)}&layer=mapnik&marker=${encodeURIComponent(marker)}`;
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
function MapRender({ block, mode }) {
|
|
16
|
+
const src = block.provider === "google" ? block.query || null : osmSrc(block);
|
|
17
|
+
if (!src) {
|
|
18
|
+
if (block.provider === "osm" && block.query) {
|
|
19
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
20
|
+
mode === "preview" && /* @__PURE__ */ jsx("p", { className: "xicms-ve__hint", children: "\u{1F5FA}\uFE0F Kaart: vul co\xF6rdinaten (lat/lng) in om de kaart te tonen \u2014 nu staat er een kaartlink." }),
|
|
21
|
+
/* @__PURE__ */ jsxs("p", { className: "xicms-map__fallback", children: [
|
|
22
|
+
"\u{1F4CD}",
|
|
23
|
+
" ",
|
|
24
|
+
/* @__PURE__ */ jsxs("a", { href: `https://www.openstreetmap.org/search?query=${encodeURIComponent(block.query)}`, target: "_blank", rel: "noopener noreferrer", children: [
|
|
25
|
+
"Bekijk ",
|
|
26
|
+
/* @__PURE__ */ jsx("span", { "data-xicms-edit": "query", children: block.query }),
|
|
27
|
+
" op de kaart"
|
|
28
|
+
] })
|
|
29
|
+
] })
|
|
30
|
+
] });
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return /* @__PURE__ */ jsx("div", { className: "xicms-map", style: { height: `${block.height}px` }, children: /* @__PURE__ */ jsx(ConsentEmbed, { gated: block.consentGated, preview: mode === "preview", label: "Kaart", children: /* @__PURE__ */ jsx(
|
|
35
|
+
"iframe",
|
|
36
|
+
{
|
|
37
|
+
src,
|
|
38
|
+
title: block.query ? `Kaart: ${block.query}` : "Kaart",
|
|
39
|
+
loading: "lazy",
|
|
40
|
+
style: { border: 0, width: "100%", height: "100%" },
|
|
41
|
+
referrerPolicy: "no-referrer-when-downgrade"
|
|
42
|
+
}
|
|
43
|
+
) }) });
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
MapRender
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=MapBlockRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/MapBlockRender.tsx"],"sourcesContent":["\"use client\";\n\nimport type { z } from \"zod\";\nimport type { MapBlockSchema } from \"../../schema/blocks\";\nimport type { BlockRenderProps } from \"../registry\";\nimport { ConsentEmbed } from \"./consentEmbed\";\n\ntype MapBlk = z.infer<typeof MapBlockSchema>;\n\n/**\n * Bouwt de OSM-embed-URL. OSM's `export/embed.html` negeert een tekst-`q` en centreert puur op\n * `bbox`; zonder bbox toont het de HELE WERELD. Daarom: als er `lat`/`lng` zijn, berekenen we\n * deterministisch een echte bbox rond het punt (zoom → graden-span, cos(lat)-correctie zodat de\n * kaart niet vervormt) + een marker. Zonder coördinaten is er geen zinvolle embed — de render\n * toont dan een kaartlink op basis van `query` (beter dan de wereldkaart die het q=-pad gaf).\n */\nfunction osmSrc(block: MapBlk): string | null {\n if (block.lat != null && block.lng != null) {\n const degPerTile = 360 / Math.pow(2, block.zoom);\n const lngHalf = degPerTile * 1.25;\n const latHalf = lngHalf * Math.cos((block.lat * Math.PI) / 180) * 0.6;\n const bbox = [block.lng - lngHalf, block.lat - latHalf, block.lng + lngHalf, block.lat + latHalf].join(\",\");\n const marker = `${block.lat},${block.lng}`;\n return `https://www.openstreetmap.org/export/embed.html?bbox=${encodeURIComponent(bbox)}&layer=mapnik&marker=${encodeURIComponent(marker)}`;\n }\n return null;\n}\n\nexport function MapRender({ block, mode }: BlockRenderProps<MapBlk>) {\n const src = block.provider === \"google\" ? block.query || null : osmSrc(block);\n if (!src) {\n // OSM zonder coördinaten kán niet zinvol embedden (het legacy q=-pad toonde de wereldkaart).\n // Toon een duidelijke kaartlink i.p.v. een nutteloze kaart, en leg het in de editor uit.\n if (block.provider === \"osm\" && block.query) {\n // In de editor stond hier alleen de uitleg. Daardoor was de zoekterm — het enige wat de\n // bezoeker straks ziet — nergens aanklikbaar en dus niet inline te bewerken. Nu tonen we\n // de uitleg én de kaartlink zoals hij live wordt.\n return (\n <>\n {mode === \"preview\" && (\n <p className=\"xicms-ve__hint\">🗺️ Kaart: vul coördinaten (lat/lng) in om de kaart te tonen — nu staat er een kaartlink.</p>\n )}\n <p className=\"xicms-map__fallback\">\n 📍{\" \"}\n <a href={`https://www.openstreetmap.org/search?query=${encodeURIComponent(block.query)}`} target=\"_blank\" rel=\"noopener noreferrer\">\n Bekijk <span data-xicms-edit=\"query\">{block.query}</span> op de kaart\n </a>\n </p>\n </>\n );\n }\n return null;\n }\n return (\n <div className=\"xicms-map\" style={{ height: `${block.height}px` }}>\n <ConsentEmbed gated={block.consentGated} preview={mode === \"preview\"} label=\"Kaart\">\n <iframe\n src={src}\n title={block.query ? `Kaart: ${block.query}` : \"Kaart\"}\n loading=\"lazy\"\n style={{ border: 0, width: \"100%\", height: \"100%\" }}\n referrerPolicy=\"no-referrer-when-downgrade\"\n />\n </ConsentEmbed>\n </div>\n );\n}\n"],"mappings":";AAsCQ,mBAEI,KAIA,YANJ;AAjCR,SAAS,oBAAoB;AAW7B,SAAS,OAAO,OAA8B;AAC5C,MAAI,MAAM,OAAO,QAAQ,MAAM,OAAO,MAAM;AAC1C,UAAM,aAAa,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;AAC/C,UAAM,UAAU,aAAa;AAC7B,UAAM,UAAU,UAAU,KAAK,IAAK,MAAM,MAAM,KAAK,KAAM,GAAG,IAAI;AAClE,UAAM,OAAO,CAAC,MAAM,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,MAAM,OAAO,EAAE,KAAK,GAAG;AAC1G,UAAM,SAAS,GAAG,MAAM,GAAG,IAAI,MAAM,GAAG;AACxC,WAAO,wDAAwD,mBAAmB,IAAI,CAAC,wBAAwB,mBAAmB,MAAM,CAAC;AAAA,EAC3I;AACA,SAAO;AACT;AAEO,SAAS,UAAU,EAAE,OAAO,KAAK,GAA6B;AACnE,QAAM,MAAM,MAAM,aAAa,WAAW,MAAM,SAAS,OAAO,OAAO,KAAK;AAC5E,MAAI,CAAC,KAAK;AAGR,QAAI,MAAM,aAAa,SAAS,MAAM,OAAO;AAI3C,aACE,iCACG;AAAA,iBAAS,aACR,oBAAC,OAAE,WAAU,kBAAiB,2HAAyF;AAAA,QAEzH,qBAAC,OAAE,WAAU,uBAAsB;AAAA;AAAA,UAC9B;AAAA,UACH,qBAAC,OAAE,MAAM,8CAA8C,mBAAmB,MAAM,KAAK,CAAC,IAAI,QAAO,UAAS,KAAI,uBAAsB;AAAA;AAAA,YAC3H,oBAAC,UAAK,mBAAgB,SAAS,gBAAM,OAAM;AAAA,YAAO;AAAA,aAC3D;AAAA,WACF;AAAA,SACF;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AACA,SACE,oBAAC,SAAI,WAAU,aAAY,OAAO,EAAE,QAAQ,GAAG,MAAM,MAAM,KAAK,GAC9D,8BAAC,gBAAa,OAAO,MAAM,cAAc,SAAS,SAAS,WAAW,OAAM,SAC1E;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,MAAM,QAAQ,UAAU,MAAM,KAAK,KAAK;AAAA,MAC/C,SAAQ;AAAA,MACR,OAAO,EAAE,QAAQ,GAAG,OAAO,QAAQ,QAAQ,OAAO;AAAA,MAClD,gBAAe;AAAA;AAAA,EACjB,GACF,GACF;AAEJ;","names":[]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const newsListBlock: import("../index.js").BlockDefinition<z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
1
|
+
export declare const newsListBlock: import("../index.js").BlockDefinition<import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
1
|
+
import dynamic from "next/dynamic";
|
|
3
2
|
import { defineBlock } from "../registry.js";
|
|
4
|
-
import { Heading } from "../ui/index.js";
|
|
5
|
-
import { NewsList } from "../../components/News.js";
|
|
6
|
-
function NewsListRender({ block }) {
|
|
7
|
-
return /* @__PURE__ */ jsxs("section", { className: "xicms-newslist", children: [
|
|
8
|
-
block.heading && /* @__PURE__ */ jsx(Heading, { level: 2, "data-xicms-edit": "heading", children: block.heading }),
|
|
9
|
-
/* @__PURE__ */ jsx(NewsList, { basePath: block.basePath, limit: block.limit, pageSize: block.pageSize })
|
|
10
|
-
] });
|
|
11
|
-
}
|
|
12
3
|
const newsListBlock = defineBlock({
|
|
13
4
|
type: "newsList",
|
|
14
|
-
Render: NewsListRender,
|
|
5
|
+
Render: dynamic(() => import("./NewsListBlockRender.js").then((m) => m.NewsListRender)),
|
|
15
6
|
label: "Nieuwsoverzicht",
|
|
16
7
|
icon: "\u{1F5DE}\uFE0F",
|
|
17
8
|
defaults: () => ({ heading: "Laatste nieuws", limit: 6, basePath: "/nieuws" })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/blocks/builtins/NewsListBlock.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/NewsListBlock.tsx"],"sourcesContent":["import dynamic from \"next/dynamic\";\nimport { defineBlock } from \"../registry\";\n\nexport const newsListBlock = defineBlock({\n type: \"newsList\",\n Render: dynamic(() => import(\"./NewsListBlockRender\").then((m) => m.NewsListRender)),\n label: \"Nieuwsoverzicht\",\n icon: \"🗞️\",\n defaults: () => ({ heading: \"Laatste nieuws\", limit: 6, basePath: \"/nieuws\" }),\n});\n"],"mappings":"AAAA,OAAO,aAAa;AACpB,SAAS,mBAAmB;AAErB,MAAM,gBAAgB,YAAY;AAAA,EACvC,MAAM;AAAA,EACN,QAAQ,QAAQ,MAAM,OAAO,uBAAuB,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC;AAAA,EACnF,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,OAAO,EAAE,SAAS,kBAAkB,OAAO,GAAG,UAAU,UAAU;AAC9E,CAAC;","names":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { NewsListBlockSchema } from "../../schema/blocks.js";
|
|
3
|
+
import type { BlockRenderProps } from "../registry.js";
|
|
4
|
+
type NewsListBlk = z.infer<typeof NewsListBlockSchema>;
|
|
5
|
+
export declare function NewsListRender({ block }: BlockRenderProps<NewsListBlk>): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Heading } from "../ui/index.js";
|
|
4
|
+
import { NewsList } from "../../components/News.js";
|
|
5
|
+
function NewsListRender({ block }) {
|
|
6
|
+
return /* @__PURE__ */ jsxs("section", { className: "xicms-newslist", children: [
|
|
7
|
+
block.heading && /* @__PURE__ */ jsx(Heading, { level: 2, "data-xicms-edit": "heading", children: block.heading }),
|
|
8
|
+
/* @__PURE__ */ jsx(NewsList, { basePath: block.basePath, limit: block.limit, pageSize: block.pageSize })
|
|
9
|
+
] });
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
NewsListRender
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=NewsListBlockRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/NewsListBlockRender.tsx"],"sourcesContent":["\"use client\";\n\nimport type { z } from \"zod\";\nimport type { NewsListBlockSchema } from \"../../schema/blocks\";\nimport type { BlockRenderProps } from \"../registry\";\nimport { Heading } from \"../ui\";\nimport { NewsList } from \"../../components/News\";\n\ntype NewsListBlk = z.infer<typeof NewsListBlockSchema>;\n\nexport function NewsListRender({ block }: BlockRenderProps<NewsListBlk>) {\n return (\n <section className=\"xicms-newslist\">\n {block.heading && <Heading level={2} data-xicms-edit=\"heading\">{block.heading}</Heading>}\n <NewsList basePath={block.basePath} limit={block.limit} pageSize={block.pageSize} />\n </section>\n );\n}\n"],"mappings":";AAYI,SACoB,KADpB;AAPJ,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAIlB,SAAS,eAAe,EAAE,MAAM,GAAkC;AACvE,SACE,qBAAC,aAAQ,WAAU,kBAChB;AAAA,UAAM,WAAW,oBAAC,WAAQ,OAAO,GAAG,mBAAgB,WAAW,gBAAM,SAAQ;AAAA,IAC9E,oBAAC,YAAS,UAAU,MAAM,UAAU,OAAO,MAAM,OAAO,UAAU,MAAM,UAAU;AAAA,KACpF;AAEJ;","names":[]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const newsletterBlock: import("../index.js").BlockDefinition<z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
1
|
+
export declare const newsletterBlock: import("../index.js").BlockDefinition<import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|