@xiwebdesign/xicms-core 7.14.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/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/modules/contract.js +2 -1
- package/dist/modules/contract.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { Onvoltooid } from "./lib/Onvoltooid.js";
|
|
5
|
+
import { Btn } from "../ui/index.js";
|
|
6
|
+
import { useNews } from "../../components/News.js";
|
|
7
|
+
import { selectAgendaEvents, formatEventDate } from "./AgendaRender.js";
|
|
8
|
+
import { parseDays } from "./lib/openingHours.js";
|
|
9
|
+
import { useCountdown, CountdownDigits } from "./CountdownRender.js";
|
|
10
|
+
import { TextInput } from "@astryxdesign/core/TextInput";
|
|
11
|
+
import { Button } from "@astryxdesign/core/Button";
|
|
12
|
+
function NewsWidgetRender({ block }) {
|
|
13
|
+
const { articles, loading } = useNews({ max: block.limit });
|
|
14
|
+
const shown = articles.slice(0, block.limit);
|
|
15
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--news", children: [
|
|
16
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Laatste nieuws" }),
|
|
17
|
+
loading ? /* @__PURE__ */ jsx("p", { className: "xicms-widget__empty", children: "Nieuws laden\u2026" }) : shown.length === 0 ? /* @__PURE__ */ jsx("p", { className: "xicms-widget__empty", children: "Nog geen nieuws." }) : /* @__PURE__ */ jsx("ul", { className: "xicms-widget__list", children: shown.map((a) => /* @__PURE__ */ jsxs("li", { className: "xicms-widget__item", children: [
|
|
18
|
+
block.showImages && a.coverUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
19
|
+
/* @__PURE__ */ jsx("img", { className: "xicms-widget__thumb", src: a.coverUrl, alt: "", loading: "lazy" }),
|
|
20
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
21
|
+
/* @__PURE__ */ jsx("a", { className: "xicms-widget__link", href: `${block.basePath}/${a.slug}`, children: a.title }),
|
|
22
|
+
/* @__PURE__ */ jsx("span", { className: "xicms-widget__meta", children: a.date })
|
|
23
|
+
] })
|
|
24
|
+
] }, a.id)) })
|
|
25
|
+
] });
|
|
26
|
+
}
|
|
27
|
+
function AgendaWidgetRender({ block }) {
|
|
28
|
+
const events = selectAgendaEvents((block.events ?? []).map((e, i) => ({ ...e, _i: i })), { hidePast: block.hidePast, limit: block.limit });
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--agenda", children: [
|
|
30
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Komende evenementen" }),
|
|
31
|
+
events.length === 0 ? /* @__PURE__ */ jsx("p", { className: "xicms-widget__empty", children: "Geen geplande evenementen." }) : /* @__PURE__ */ jsx("ul", { className: "xicms-widget__list", children: events.map((e) => /* @__PURE__ */ jsxs("li", { className: "xicms-widget__item xicms-widget__item--event", children: [
|
|
32
|
+
/* @__PURE__ */ jsx("time", { className: "xicms-widget__meta", dateTime: e.start, children: formatEventDate(e.start) }),
|
|
33
|
+
/* @__PURE__ */ jsx("span", { className: "xicms-widget__link", children: e.url ? /* @__PURE__ */ jsx("a", { href: e.url, "data-xicms-edit": `events.${e._i}.title`, children: e.title }) : /* @__PURE__ */ jsx("span", { "data-xicms-edit": `events.${e._i}.title`, children: e.title }) }),
|
|
34
|
+
e.location && /* @__PURE__ */ jsx("span", { className: "xicms-widget__sub", "data-xicms-edit": `events.${e._i}.location`, children: e.location })
|
|
35
|
+
] }, e._i)) })
|
|
36
|
+
] });
|
|
37
|
+
}
|
|
38
|
+
function OpeningHoursWidgetRender({ block }) {
|
|
39
|
+
const [todayIdx, setTodayIdx] = useState(null);
|
|
40
|
+
useEffect(() => setTodayIdx((/* @__PURE__ */ new Date()).getDay()), []);
|
|
41
|
+
const rows = block.rows ?? [];
|
|
42
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--hours", children: [
|
|
43
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Openingstijden" }),
|
|
44
|
+
/* @__PURE__ */ jsx("table", { className: "xicms-widget__hours", children: /* @__PURE__ */ jsx("tbody", { children: rows.map((r, i) => {
|
|
45
|
+
const isToday = block.highlightToday && todayIdx !== null && parseDays(r.day).includes(todayIdx);
|
|
46
|
+
return /* @__PURE__ */ jsxs("tr", { className: isToday ? "xicms-widget__hours-today" : void 0, children: [
|
|
47
|
+
/* @__PURE__ */ jsx("th", { scope: "row", "data-xicms-edit": `rows.${i}.day`, children: r.day }),
|
|
48
|
+
/* @__PURE__ */ jsx("td", { "data-xicms-edit": `rows.${i}.hours`, children: r.hours })
|
|
49
|
+
] }, i);
|
|
50
|
+
}) }) })
|
|
51
|
+
] });
|
|
52
|
+
}
|
|
53
|
+
function ContactWidgetRender({ block }) {
|
|
54
|
+
if (!block.address && !block.phone && !block.email) return null;
|
|
55
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--contact", children: [
|
|
56
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Contact" }),
|
|
57
|
+
/* @__PURE__ */ jsxs("ul", { className: "xicms-widget__list", children: [
|
|
58
|
+
block.address && /* @__PURE__ */ jsx("li", { className: "xicms-widget__item", "data-xicms-edit": "address", children: block.address }),
|
|
59
|
+
block.phone && /* @__PURE__ */ jsx("li", { className: "xicms-widget__item", children: /* @__PURE__ */ jsx("a", { href: `tel:${block.phone.replace(/\s+/g, "")}`, "data-xicms-edit": "phone", children: block.phone }) }),
|
|
60
|
+
block.email && /* @__PURE__ */ jsx("li", { className: "xicms-widget__item", children: /* @__PURE__ */ jsx("a", { href: `mailto:${block.email}`, "data-xicms-edit": "email", children: block.email }) })
|
|
61
|
+
] })
|
|
62
|
+
] });
|
|
63
|
+
}
|
|
64
|
+
function SocialWidgetRender({ block }) {
|
|
65
|
+
const items = (block.items ?? []).map((it, i) => ({ ...it, _i: i })).filter((i) => i.href && i.platform);
|
|
66
|
+
if (items.length === 0) return null;
|
|
67
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--social", children: [
|
|
68
|
+
block.heading && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading }),
|
|
69
|
+
/* @__PURE__ */ jsx("ul", { className: "xicms-widget__social", children: items.map((it) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: it.href, rel: "noopener noreferrer", target: "_blank", "data-xicms-edit": `items.${it._i}.platform`, children: it.platform }) }, it._i)) })
|
|
70
|
+
] });
|
|
71
|
+
}
|
|
72
|
+
function NewsletterWidgetRender({ block }) {
|
|
73
|
+
const [email, setEmail] = useState("");
|
|
74
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--newsletter", children: [
|
|
75
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Nieuwsbrief" }),
|
|
76
|
+
block.text && /* @__PURE__ */ jsx("p", { className: "xicms-widget__sub", "data-xicms-edit": "text", children: block.text }),
|
|
77
|
+
block.actionUrl ? /* @__PURE__ */ jsxs("form", { className: "xicms-widget__form", action: block.actionUrl, method: "post", target: "_blank", style: { display: "grid", gap: "0.6rem" }, children: [
|
|
78
|
+
/* @__PURE__ */ jsx(TextInput, { label: "E-mailadres", isLabelHidden: true, type: "email", htmlName: "EMAIL", isRequired: true, placeholder: "je@email.nl", value: email, onChange: setEmail }),
|
|
79
|
+
/* @__PURE__ */ jsx(Button, { label: block.buttonLabel, variant: "primary", type: "submit", children: /* @__PURE__ */ jsx("span", { "data-xicms-edit": "buttonLabel", children: block.buttonLabel }) })
|
|
80
|
+
] }) : /* @__PURE__ */ jsx(Onvoltooid, { children: "Deze aanmeldwidget mist nog een aanmeld-URL (tandwiel). Bezoekers zien dit blok niet." })
|
|
81
|
+
] });
|
|
82
|
+
}
|
|
83
|
+
function CtaWidgetRender({ block }) {
|
|
84
|
+
if (!block.title && !block.text) return null;
|
|
85
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--cta", style: block.backgroundColor ? { background: block.backgroundColor } : void 0, children: [
|
|
86
|
+
block.title && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "title", children: block.title }),
|
|
87
|
+
block.text && /* @__PURE__ */ jsx("p", { className: "xicms-widget__sub", "data-xicms-edit": "text", children: block.text }),
|
|
88
|
+
block.buttonLabel && /* @__PURE__ */ jsx(Btn, { label: block.buttonLabel, href: block.buttonHref, variant: "primary", size: "md", editField: "buttonLabel" })
|
|
89
|
+
] });
|
|
90
|
+
}
|
|
91
|
+
function GalleryWidgetRender({ block }) {
|
|
92
|
+
const items = (block.items ?? []).filter((i) => i.url);
|
|
93
|
+
if (items.length === 0) return null;
|
|
94
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--gallery", children: [
|
|
95
|
+
block.heading && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading }),
|
|
96
|
+
/* @__PURE__ */ jsx("div", { className: "xicms-widget__grid", "data-cols": block.columns, children: items.map((it, i) => (
|
|
97
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
98
|
+
/* @__PURE__ */ jsx("img", { className: "xicms-widget__photo", src: it.url, alt: it.alt ?? "", loading: "lazy" }, i)
|
|
99
|
+
)) })
|
|
100
|
+
] });
|
|
101
|
+
}
|
|
102
|
+
function TestimonialsWidgetRender({ block }) {
|
|
103
|
+
const items = (block.items ?? []).map((t, i) => ({ ...t, _i: i })).filter((t) => t.quote);
|
|
104
|
+
if (items.length === 0) return null;
|
|
105
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--testimonial", children: [
|
|
106
|
+
block.heading && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading }),
|
|
107
|
+
/* @__PURE__ */ jsx("ul", { className: "xicms-widget__list", children: items.map((t) => /* @__PURE__ */ jsxs("li", { className: "xicms-widget__quote", children: [
|
|
108
|
+
typeof t.rating === "number" && /* @__PURE__ */ jsxs("span", { className: "xicms-widget__stars", "aria-label": `${t.rating} van 5`, children: [
|
|
109
|
+
"\u2605".repeat(t.rating),
|
|
110
|
+
"\u2606".repeat(5 - t.rating)
|
|
111
|
+
] }),
|
|
112
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
113
|
+
"\u201C",
|
|
114
|
+
/* @__PURE__ */ jsx("span", { "data-xicms-edit": `items.${t._i}.quote`, children: t.quote }),
|
|
115
|
+
"\u201D"
|
|
116
|
+
] }),
|
|
117
|
+
t.author && /* @__PURE__ */ jsxs("span", { className: "xicms-widget__meta", children: [
|
|
118
|
+
"\u2014 ",
|
|
119
|
+
/* @__PURE__ */ jsx("span", { "data-xicms-edit": `items.${t._i}.author`, children: t.author })
|
|
120
|
+
] })
|
|
121
|
+
] }, t._i)) })
|
|
122
|
+
] });
|
|
123
|
+
}
|
|
124
|
+
function CardsWidgetRender({ block }) {
|
|
125
|
+
const items = (block.items ?? []).filter((c) => c.title);
|
|
126
|
+
if (items.length === 0) return null;
|
|
127
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--cards", children: [
|
|
128
|
+
block.heading && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading }),
|
|
129
|
+
/* @__PURE__ */ jsx("ul", { className: "xicms-widget__list", children: items.map((c, i) => {
|
|
130
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
131
|
+
c.icon && /* @__PURE__ */ jsx("span", { className: "xicms-widget__cardicon", "aria-hidden": "true", children: c.icon }),
|
|
132
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
133
|
+
/* @__PURE__ */ jsx("span", { className: "xicms-widget__link", children: c.title }),
|
|
134
|
+
c.text && /* @__PURE__ */ jsx("span", { className: "xicms-widget__sub", children: c.text })
|
|
135
|
+
] })
|
|
136
|
+
] });
|
|
137
|
+
return /* @__PURE__ */ jsx("li", { className: "xicms-widget__item xicms-widget__item--card", children: c.href ? /* @__PURE__ */ jsx("a", { href: c.href, className: "xicms-widget__cardlink", children: inner }) : inner }, i);
|
|
138
|
+
}) })
|
|
139
|
+
] });
|
|
140
|
+
}
|
|
141
|
+
function DownloadsWidgetRender({ block }) {
|
|
142
|
+
const items = (block.items ?? []).map((d, i) => ({ ...d, _i: i })).filter((d) => d.label && d.href).slice(0, block.limit);
|
|
143
|
+
if (items.length === 0) return null;
|
|
144
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--downloads", children: [
|
|
145
|
+
/* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading ?? "Downloads" }),
|
|
146
|
+
/* @__PURE__ */ jsx("ul", { className: "xicms-widget__list", children: items.map((d) => /* @__PURE__ */ jsxs("li", { className: "xicms-widget__item", children: [
|
|
147
|
+
/* @__PURE__ */ jsxs("a", { className: "xicms-widget__link", href: d.href, download: true, children: [
|
|
148
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u{1F4C4}" }),
|
|
149
|
+
" ",
|
|
150
|
+
/* @__PURE__ */ jsx("span", { "data-xicms-edit": `items.${d._i}.label`, children: d.label })
|
|
151
|
+
] }),
|
|
152
|
+
d.meta && /* @__PURE__ */ jsx("span", { className: "xicms-widget__meta", "data-xicms-edit": `items.${d._i}.meta`, children: d.meta })
|
|
153
|
+
] }, d._i)) })
|
|
154
|
+
] });
|
|
155
|
+
}
|
|
156
|
+
function CountdownWidgetRender({ block }) {
|
|
157
|
+
const r = useCountdown(block.target);
|
|
158
|
+
if (!block.target) return null;
|
|
159
|
+
return /* @__PURE__ */ jsxs("div", { className: "xicms-widget xicms-widget--countdown", children: [
|
|
160
|
+
block.heading && /* @__PURE__ */ jsx("h3", { className: "xicms-widget__title", "data-xicms-edit": "heading", children: block.heading }),
|
|
161
|
+
r === null ? /* @__PURE__ */ jsx("p", { className: "xicms-widget__empty", "aria-hidden": "true", children: "\u2026" }) : r.done ? /* @__PURE__ */ jsx("p", { className: "xicms-countdown__expired", "data-xicms-edit": "expiredText", children: block.expiredText }) : /* @__PURE__ */ jsx(CountdownDigits, { r, showLabels: true })
|
|
162
|
+
] });
|
|
163
|
+
}
|
|
164
|
+
export {
|
|
165
|
+
AgendaWidgetRender,
|
|
166
|
+
CardsWidgetRender,
|
|
167
|
+
ContactWidgetRender,
|
|
168
|
+
CountdownWidgetRender,
|
|
169
|
+
CtaWidgetRender,
|
|
170
|
+
DownloadsWidgetRender,
|
|
171
|
+
GalleryWidgetRender,
|
|
172
|
+
NewsWidgetRender,
|
|
173
|
+
NewsletterWidgetRender,
|
|
174
|
+
OpeningHoursWidgetRender,
|
|
175
|
+
SocialWidgetRender,
|
|
176
|
+
TestimonialsWidgetRender
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=WidgetsRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/blocks/builtins/WidgetsRender.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { z } from \"zod\";\nimport { Onvoltooid } from \"./lib/Onvoltooid\";\nimport type {\n NewsWidgetSchema,\n AgendaWidgetSchema,\n OpeningHoursWidgetSchema,\n ContactWidgetSchema,\n SocialWidgetSchema,\n NewsletterWidgetSchema,\n CtaWidgetSchema,\n GalleryWidgetSchema,\n TestimonialsWidgetSchema,\n CardsWidgetSchema,\n DownloadsWidgetSchema,\n CountdownWidgetSchema,\n} from \"../../schema/blocks\";\nimport type { BlockRenderProps } from \"../registry\";\nimport { Btn } from \"../ui\";\nimport { useNews } from \"../../components/News\";\nimport { selectAgendaEvents, formatEventDate } from \"./AgendaRender\";\nimport { parseDays } from \"./lib/openingHours\";\nimport { useCountdown, CountdownDigits } from \"./CountdownRender\";\nimport { TextInput } from \"@astryxdesign/core/TextInput\";\nimport { Button } from \"@astryxdesign/core/Button\";\n\n/**\n * Widgets = compacte zijbalk-varianten van de modules. Elke widget hergebruikt de gegevens en\n * logica van de volwaardige versie (zelfde nieuws-collectie, zelfde agenda-selectie, zelfde\n * countdown-hook) en rendert die alleen compacter. Plaats ze in het \"Met zijbalk\"-blok of in een\n * smalle kolom naast je hoofdinhoud.\n */\n\n/* ── Laatste nieuws ────────────────────────────────────────────────────────── */\ntype NewsW = z.infer<typeof NewsWidgetSchema>;\nexport function NewsWidgetRender({ block }: BlockRenderProps<NewsW>) {\n const { articles, loading } = useNews({ max: block.limit });\n const shown = articles.slice(0, block.limit);\n return (\n <div className=\"xicms-widget xicms-widget--news\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Laatste nieuws\"}</h3>\n {loading ? (\n <p className=\"xicms-widget__empty\">Nieuws laden…</p>\n ) : shown.length === 0 ? (\n <p className=\"xicms-widget__empty\">Nog geen nieuws.</p>\n ) : (\n <ul className=\"xicms-widget__list\">\n {shown.map((a) => (\n <li key={a.id} className=\"xicms-widget__item\">\n {block.showImages && a.coverUrl && (\n // eslint-disable-next-line @next/next/no-img-element\n <img className=\"xicms-widget__thumb\" src={a.coverUrl} alt=\"\" loading=\"lazy\" />\n )}\n <div>\n <a className=\"xicms-widget__link\" href={`${block.basePath}/${a.slug}`}>{a.title}</a>\n <span className=\"xicms-widget__meta\">{a.date}</span>\n </div>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n/* ── Komende agenda ────────────────────────────────────────────────────────── */\ntype AgendaW = z.infer<typeof AgendaWidgetSchema>;\nexport function AgendaWidgetRender({ block }: BlockRenderProps<AgendaW>) {\n const events = selectAgendaEvents((block.events ?? []).map((e, i) => ({ ...e, _i: i })), { hidePast: block.hidePast, limit: block.limit });\n return (\n <div className=\"xicms-widget xicms-widget--agenda\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Komende evenementen\"}</h3>\n {events.length === 0 ? (\n <p className=\"xicms-widget__empty\">Geen geplande evenementen.</p>\n ) : (\n <ul className=\"xicms-widget__list\">\n {events.map((e) => (\n <li key={e._i} className=\"xicms-widget__item xicms-widget__item--event\">\n <time className=\"xicms-widget__meta\" dateTime={e.start}>{formatEventDate(e.start)}</time>\n <span className=\"xicms-widget__link\">\n {e.url\n ? <a href={e.url} data-xicms-edit={`events.${e._i}.title`}>{e.title}</a>\n : <span data-xicms-edit={`events.${e._i}.title`}>{e.title}</span>}\n </span>\n {e.location && <span className=\"xicms-widget__sub\" data-xicms-edit={`events.${e._i}.location`}>{e.location}</span>}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n/* ── Openingstijden (vandaag gemarkeerd) ───────────────────────────────────── */\ntype OpeningW = z.infer<typeof OpeningHoursWidgetSchema>;\nexport function OpeningHoursWidgetRender({ block }: BlockRenderProps<OpeningW>) {\n // \"Vandaag\" client-side bepalen (voorkomt hydration-mismatch t.o.v. de servertijd).\n const [todayIdx, setTodayIdx] = useState<number | null>(null);\n useEffect(() => setTodayIdx(new Date().getDay()), []);\n const rows = block.rows ?? [];\n return (\n <div className=\"xicms-widget xicms-widget--hours\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Openingstijden\"}</h3>\n <table className=\"xicms-widget__hours\">\n <tbody>\n {rows.map((r, i) => {\n // parseDays begrijpt ook bereiken (\"Ma-vr\", \"Maandag t/m vrijdag\") - een woensdag\n // hoort dan net zo goed gemarkeerd als de letterlijk genoemde dagen.\n const isToday =\n block.highlightToday && todayIdx !== null && parseDays(r.day).includes(todayIdx);\n return (\n <tr key={i} className={isToday ? \"xicms-widget__hours-today\" : undefined}>\n <th scope=\"row\" data-xicms-edit={`rows.${i}.day`}>{r.day}</th>\n <td data-xicms-edit={`rows.${i}.hours`}>{r.hours}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n/* ── Contact (compact) ─────────────────────────────────────────────────────── */\ntype ContactW = z.infer<typeof ContactWidgetSchema>;\nexport function ContactWidgetRender({ block }: BlockRenderProps<ContactW>) {\n if (!block.address && !block.phone && !block.email) return null;\n return (\n <div className=\"xicms-widget xicms-widget--contact\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Contact\"}</h3>\n <ul className=\"xicms-widget__list\">\n {block.address && <li className=\"xicms-widget__item\" data-xicms-edit=\"address\">{block.address}</li>}\n {block.phone && (\n <li className=\"xicms-widget__item\"><a href={`tel:${block.phone.replace(/\\s+/g, \"\")}`} data-xicms-edit=\"phone\">{block.phone}</a></li>\n )}\n {block.email && (\n <li className=\"xicms-widget__item\"><a href={`mailto:${block.email}`} data-xicms-edit=\"email\">{block.email}</a></li>\n )}\n </ul>\n </div>\n );\n}\n/* ── Social (compact) ──────────────────────────────────────────────────────── */\ntype SocialW = z.infer<typeof SocialWidgetSchema>;\nexport function SocialWidgetRender({ block }: BlockRenderProps<SocialW>) {\n // _i = index in de OORSPRONKELIJKE array — de lijst wordt gefilterd op href && platform.\n const items = (block.items ?? []).map((it, i) => ({ ...it, _i: i })).filter((i) => i.href && i.platform);\n if (items.length === 0) return null;\n return (\n <div className=\"xicms-widget xicms-widget--social\">\n {block.heading && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading}</h3>}\n <ul className=\"xicms-widget__social\">\n {items.map((it) => (\n <li key={it._i}><a href={it.href} rel=\"noopener noreferrer\" target=\"_blank\" data-xicms-edit={`items.${it._i}.platform`}>{it.platform}</a></li>\n ))}\n </ul>\n </div>\n );\n}\n/* ── Nieuwsbrief (compact) ─────────────────────────────────────────────────── */\ntype NewsletterW = z.infer<typeof NewsletterWidgetSchema>;\nexport function NewsletterWidgetRender({ block }: BlockRenderProps<NewsletterW>) {\n const [email, setEmail] = useState(\"\");\n return (\n <div className=\"xicms-widget xicms-widget--newsletter\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Nieuwsbrief\"}</h3>\n {block.text && <p className=\"xicms-widget__sub\" data-xicms-edit=\"text\">{block.text}</p>}\n {block.actionUrl ? (\n <form className=\"xicms-widget__form\" action={block.actionUrl} method=\"post\" target=\"_blank\" style={{ display: \"grid\", gap: \"0.6rem\" }}>\n <TextInput label=\"E-mailadres\" isLabelHidden type=\"email\" htmlName=\"EMAIL\" isRequired placeholder=\"je@email.nl\" value={email} onChange={setEmail} />\n <Button label={block.buttonLabel} variant=\"primary\" type=\"submit\">\n <span data-xicms-edit=\"buttonLabel\">{block.buttonLabel}</span>\n </Button>\n </form>\n ) : (\n <Onvoltooid>Deze aanmeldwidget mist nog een aanmeld-URL (tandwiel). Bezoekers zien dit blok niet.</Onvoltooid>\n )}\n </div>\n );\n}\n/* ── CTA (compact) ─────────────────────────────────────────────────────────── */\ntype CtaW = z.infer<typeof CtaWidgetSchema>;\nexport function CtaWidgetRender({ block }: BlockRenderProps<CtaW>) {\n if (!block.title && !block.text) return null;\n return (\n <div className=\"xicms-widget xicms-widget--cta\" style={block.backgroundColor ? { background: block.backgroundColor } : undefined}>\n {block.title && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"title\">{block.title}</h3>}\n {block.text && <p className=\"xicms-widget__sub\" data-xicms-edit=\"text\">{block.text}</p>}\n {block.buttonLabel && (\n <Btn label={block.buttonLabel} href={block.buttonHref} variant=\"primary\" size=\"md\" editField=\"buttonLabel\" />\n )}\n </div>\n );\n}\n/* ── Galerij (compacte strip) ──────────────────────────────────────────────── */\ntype GalleryW = z.infer<typeof GalleryWidgetSchema>;\nexport function GalleryWidgetRender({ block }: BlockRenderProps<GalleryW>) {\n const items = (block.items ?? []).filter((i) => i.url);\n if (items.length === 0) return null;\n return (\n <div className=\"xicms-widget xicms-widget--gallery\">\n {block.heading && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading}</h3>}\n <div className=\"xicms-widget__grid\" data-cols={block.columns}>\n {items.map((it, i) => (\n // eslint-disable-next-line @next/next/no-img-element\n <img key={i} className=\"xicms-widget__photo\" src={it.url} alt={it.alt ?? \"\"} loading=\"lazy\" />\n ))}\n </div>\n </div>\n );\n}\n/* ── Review (compact) ──────────────────────────────────────────────────────── */\ntype TestimonialsW = z.infer<typeof TestimonialsWidgetSchema>;\nexport function TestimonialsWidgetRender({ block }: BlockRenderProps<TestimonialsW>) {\n // _i = index in de OORSPRONKELIJKE array — de lijst wordt gefilterd op quote.\n const items = (block.items ?? []).map((t, i) => ({ ...t, _i: i })).filter((t) => t.quote);\n if (items.length === 0) return null;\n return (\n <div className=\"xicms-widget xicms-widget--testimonial\">\n {block.heading && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading}</h3>}\n <ul className=\"xicms-widget__list\">\n {items.map((t) => (\n <li key={t._i} className=\"xicms-widget__quote\">\n {typeof t.rating === \"number\" && (\n <span className=\"xicms-widget__stars\" aria-label={`${t.rating} van 5`}>{\"★\".repeat(t.rating)}{\"☆\".repeat(5 - t.rating)}</span>\n )}\n <p>“<span data-xicms-edit={`items.${t._i}.quote`}>{t.quote}</span>”</p>\n {t.author && <span className=\"xicms-widget__meta\">— <span data-xicms-edit={`items.${t._i}.author`}>{t.author}</span></span>}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n/* ── Diensten (compact) ────────────────────────────────────────────────────── */\ntype CardsW = z.infer<typeof CardsWidgetSchema>;\nexport function CardsWidgetRender({ block }: BlockRenderProps<CardsW>) {\n const items = (block.items ?? []).filter((c) => c.title);\n if (items.length === 0) return null;\n return (\n <div className=\"xicms-widget xicms-widget--cards\">\n {block.heading && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading}</h3>}\n <ul className=\"xicms-widget__list\">\n {items.map((c, i) => {\n const inner = (\n <>\n {c.icon && <span className=\"xicms-widget__cardicon\" aria-hidden=\"true\">{c.icon}</span>}\n <span>\n <span className=\"xicms-widget__link\">{c.title}</span>\n {c.text && <span className=\"xicms-widget__sub\">{c.text}</span>}\n </span>\n </>\n );\n return (\n <li key={i} className=\"xicms-widget__item xicms-widget__item--card\">\n {c.href ? <a href={c.href} className=\"xicms-widget__cardlink\">{inner}</a> : inner}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n/* ── Downloads (compact) ───────────────────────────────────────────────────── */\ntype DownloadsW = z.infer<typeof DownloadsWidgetSchema>;\nexport function DownloadsWidgetRender({ block }: BlockRenderProps<DownloadsW>) {\n // _i = index in de OORSPRONKELIJKE array — de lijst wordt gefilterd én afgekapt op `limit`.\n const items = (block.items ?? []).map((d, i) => ({ ...d, _i: i })).filter((d) => d.label && d.href).slice(0, block.limit);\n if (items.length === 0) return null;\n return (\n <div className=\"xicms-widget xicms-widget--downloads\">\n <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading ?? \"Downloads\"}</h3>\n <ul className=\"xicms-widget__list\">\n {items.map((d) => (\n <li key={d._i} className=\"xicms-widget__item\">\n <a className=\"xicms-widget__link\" href={d.href} download>\n <span aria-hidden=\"true\">📄</span> <span data-xicms-edit={`items.${d._i}.label`}>{d.label}</span>\n </a>\n {d.meta && <span className=\"xicms-widget__meta\" data-xicms-edit={`items.${d._i}.meta`}>{d.meta}</span>}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n/* ── Aftelteller (compact) ─────────────────────────────────────────────────── */\ntype CountdownW = z.infer<typeof CountdownWidgetSchema>;\nexport function CountdownWidgetRender({ block }: BlockRenderProps<CountdownW>) {\n const r = useCountdown(block.target);\n if (!block.target) return null;\n return (\n <div className=\"xicms-widget xicms-widget--countdown\">\n {block.heading && <h3 className=\"xicms-widget__title\" data-xicms-edit=\"heading\">{block.heading}</h3>}\n {r === null ? (\n <p className=\"xicms-widget__empty\" aria-hidden=\"true\">…</p>\n ) : r.done ? (\n <p className=\"xicms-countdown__expired\" data-xicms-edit=\"expiredText\">{block.expiredText}</p>\n ) : (\n <CountdownDigits r={r} showLabels />\n )}\n </div>\n );\n}\n// Let op: exporteer GEEN aggregaat-array vanuit dit \"use client\"-bestand. Een array die hier\n// wordt opgebouwd is niet server-importeerbaar (de individuele block-exports wél). De volledige\n// lijst staat in blocks/builtins/index.ts.\n"],"mappings":"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","names":[]}
|
package/dist/modules/contract.js
CHANGED
|
@@ -18,7 +18,8 @@ function validateModuleContract(defs) {
|
|
|
18
18
|
for (const b of d.blocks ?? []) {
|
|
19
19
|
if (blockTypes.has(b.type)) problems.push(`block-type "${b.type}" wordt door meerdere modules geleverd.`);
|
|
20
20
|
blockTypes.add(b.type);
|
|
21
|
-
|
|
21
|
+
const isComponent = (c) => typeof c === "function" || typeof c === "object" && c !== null && "$$typeof" in c;
|
|
22
|
+
if (!isComponent(b.Render)) problems.push(`block "${b.type}" (module "${d.id}") mist een Render-component.`);
|
|
22
23
|
if (!b.schema) problems.push(`block "${b.type}" (module "${d.id}") mist een schema.`);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modules/contract.ts"],"sourcesContent":["/**\n * Module-contract — controleert dat een set modules consistent is. Bruikbaar in de core-tests én\n * door een klantsite om zijn eigen modules te valideren (`assertModuleContract([mijnModule])`).\n * Geeft een lijst problemen terug (leeg = ok).\n */\nimport type { ModuleDefinition } from \"./types\";\n\nconst SEMVER = /^\\d+\\.\\d+\\.\\d+(?:[-+].*)?$/;\n// kebab- of camelCase, startend met een kleine letter (sluit aan op block-`_type`-conventie).\nconst ID = /^[a-z][a-zA-Z0-9-]*$/;\n\nexport function validateModuleContract(defs: ModuleDefinition[]): string[] {\n const problems: string[] = [];\n const ids = new Set<string>();\n const featureKeys = new Set<string>();\n const blockTypes = new Set<string>();\n\n for (const d of defs) {\n if (!ID.test(d.id)) problems.push(`module-id \"${d.id}\" is geen geldige kebab-id.`);\n if (ids.has(d.id)) problems.push(`dubbele module-id \"${d.id}\".`);\n ids.add(d.id);\n\n if (!SEMVER.test(d.version)) problems.push(`module \"${d.id}\" heeft geen geldige semver (${d.version}).`);\n if (!d.label) problems.push(`module \"${d.id}\" mist een label.`);\n\n if (d.featureKey) {\n if (featureKeys.has(d.featureKey)) problems.push(`featureKey \"${d.featureKey}\" wordt door meerdere modules gebruikt.`);\n featureKeys.add(d.featureKey);\n }\n\n for (const b of d.blocks ?? []) {\n if (blockTypes.has(b.type)) problems.push(`block-type \"${b.type}\" wordt door meerdere modules geleverd.`);\n blockTypes.add(b.type);\n
|
|
1
|
+
{"version":3,"sources":["../../src/modules/contract.ts"],"sourcesContent":["/**\n * Module-contract — controleert dat een set modules consistent is. Bruikbaar in de core-tests én\n * door een klantsite om zijn eigen modules te valideren (`assertModuleContract([mijnModule])`).\n * Geeft een lijst problemen terug (leeg = ok).\n */\nimport type { ModuleDefinition } from \"./types\";\n\nconst SEMVER = /^\\d+\\.\\d+\\.\\d+(?:[-+].*)?$/;\n// kebab- of camelCase, startend met een kleine letter (sluit aan op block-`_type`-conventie).\nconst ID = /^[a-z][a-zA-Z0-9-]*$/;\n\nexport function validateModuleContract(defs: ModuleDefinition[]): string[] {\n const problems: string[] = [];\n const ids = new Set<string>();\n const featureKeys = new Set<string>();\n const blockTypes = new Set<string>();\n\n for (const d of defs) {\n if (!ID.test(d.id)) problems.push(`module-id \"${d.id}\" is geen geldige kebab-id.`);\n if (ids.has(d.id)) problems.push(`dubbele module-id \"${d.id}\".`);\n ids.add(d.id);\n\n if (!SEMVER.test(d.version)) problems.push(`module \"${d.id}\" heeft geen geldige semver (${d.version}).`);\n if (!d.label) problems.push(`module \"${d.id}\" mist een label.`);\n\n if (d.featureKey) {\n if (featureKeys.has(d.featureKey)) problems.push(`featureKey \"${d.featureKey}\" wordt door meerdere modules gebruikt.`);\n featureKeys.add(d.featureKey);\n }\n\n for (const b of d.blocks ?? []) {\n if (blockTypes.has(b.type)) problems.push(`block-type \"${b.type}\" wordt door meerdere modules geleverd.`);\n blockTypes.add(b.type);\n // Een component is een functie óf een React-exotic (lazy/memo/forwardRef, met $$typeof) —\n // sinds de per-blok-codesplitsing zijn de builtin-Renders next/dynamic-componenten.\n const isComponent = (c: unknown): boolean =>\n typeof c === \"function\" || (typeof c === \"object\" && c !== null && \"$$typeof\" in c);\n if (!isComponent(b.Render)) problems.push(`block \"${b.type}\" (module \"${d.id}\") mist een Render-component.`);\n if (!b.schema) problems.push(`block \"${b.type}\" (module \"${d.id}\") mist een schema.`);\n }\n }\n return problems;\n}\n\n/** Gooit als het contract niet klopt (handig in een test of bij opstart). */\nexport function assertModuleContract(defs: ModuleDefinition[]): void {\n const problems = validateModuleContract(defs);\n if (problems.length) {\n throw new Error(`Module-contract geschonden:\\n- ${problems.join(\"\\n- \")}`);\n }\n}\n"],"mappings":"AAOA,MAAM,SAAS;AAEf,MAAM,KAAK;AAEJ,SAAS,uBAAuB,MAAoC;AACzE,QAAM,WAAqB,CAAC;AAC5B,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,cAAc,oBAAI,IAAY;AACpC,QAAM,aAAa,oBAAI,IAAY;AAEnC,aAAW,KAAK,MAAM;AACpB,QAAI,CAAC,GAAG,KAAK,EAAE,EAAE,EAAG,UAAS,KAAK,cAAc,EAAE,EAAE,6BAA6B;AACjF,QAAI,IAAI,IAAI,EAAE,EAAE,EAAG,UAAS,KAAK,sBAAsB,EAAE,EAAE,IAAI;AAC/D,QAAI,IAAI,EAAE,EAAE;AAEZ,QAAI,CAAC,OAAO,KAAK,EAAE,OAAO,EAAG,UAAS,KAAK,WAAW,EAAE,EAAE,gCAAgC,EAAE,OAAO,IAAI;AACvG,QAAI,CAAC,EAAE,MAAO,UAAS,KAAK,WAAW,EAAE,EAAE,mBAAmB;AAE9D,QAAI,EAAE,YAAY;AAChB,UAAI,YAAY,IAAI,EAAE,UAAU,EAAG,UAAS,KAAK,eAAe,EAAE,UAAU,yCAAyC;AACrH,kBAAY,IAAI,EAAE,UAAU;AAAA,IAC9B;AAEA,eAAW,KAAK,EAAE,UAAU,CAAC,GAAG;AAC9B,UAAI,WAAW,IAAI,EAAE,IAAI,EAAG,UAAS,KAAK,eAAe,EAAE,IAAI,yCAAyC;AACxG,iBAAW,IAAI,EAAE,IAAI;AAGrB,YAAM,cAAc,CAAC,MACnB,OAAO,MAAM,cAAe,OAAO,MAAM,YAAY,MAAM,QAAQ,cAAc;AACnF,UAAI,CAAC,YAAY,EAAE,MAAM,EAAG,UAAS,KAAK,UAAU,EAAE,IAAI,cAAc,EAAE,EAAE,+BAA+B;AAC3G,UAAI,CAAC,EAAE,OAAQ,UAAS,KAAK,UAAU,EAAE,IAAI,cAAc,EAAE,EAAE,qBAAqB;AAAA,IACtF;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,qBAAqB,MAAgC;AACnE,QAAM,WAAW,uBAAuB,IAAI;AAC5C,MAAI,SAAS,QAAQ;AACnB,UAAM,IAAI,MAAM;AAAA,IAAkC,SAAS,KAAK,MAAM,CAAC,EAAE;AAAA,EAC3E;AACF;","names":[]}
|
package/dist/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const CORE_VERSION = true ? "7.
|
|
1
|
+
const CORE_VERSION = true ? "7.15.0" : "0.0.0-dev";
|
|
2
2
|
const CORE_PACKAGE = "@xiwebdesign/xicms-core";
|
|
3
3
|
function isNieuwer(beschikbaar, huidig) {
|
|
4
4
|
const delen = (v) => v.split("-")[0].split(".").map((n) => Number.parseInt(n, 10) || 0);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xiwebdesign/xicms-core",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.15.0",
|
|
4
4
|
"description": "XiCMS engine: gestructureerde content, pagina's, draft/publish, admin (TipTap+Radix), SEO en beveiliging voor klantsites.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {
|