@xiwebdesign/xicms-core 7.30.0 → 8.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/XiCMSProvider.js +22 -7
- package/dist/XiCMSProvider.js.map +1 -1
- package/dist/admin/AdminApp.js +175 -93
- package/dist/admin/AdminApp.js.map +1 -1
- package/dist/admin/AdminHelp.d.ts +1 -1
- package/dist/admin/AdminHelp.js +44 -36
- package/dist/admin/AdminHelp.js.map +1 -1
- package/dist/admin/CoreVersion.d.ts +6 -3
- package/dist/admin/CoreVersion.js +60 -24
- package/dist/admin/CoreVersion.js.map +1 -1
- package/dist/admin/NewsEditor.d.ts +7 -0
- package/dist/admin/NewsEditor.js +117 -75
- package/dist/admin/NewsEditor.js.map +1 -1
- package/dist/admin/SuperadminPanel.js +1 -1
- package/dist/admin/SuperadminPanel.js.map +1 -1
- package/dist/admin/ZoekPalet.d.ts +15 -0
- package/dist/admin/ZoekPalet.js +123 -0
- package/dist/admin/ZoekPalet.js.map +1 -0
- package/dist/admin/blockEditors/GenericEditor.js +36 -18
- package/dist/admin/blockEditors/GenericEditor.js.map +1 -1
- package/dist/admin/blockEditors/StyleEditor.js +37 -3
- package/dist/admin/blockEditors/StyleEditor.js.map +1 -1
- package/dist/admin/blockEditors/SymbolRefEditor.js +44 -2
- package/dist/admin/blockEditors/SymbolRefEditor.js.map +1 -1
- package/dist/admin/blockEditors/index.js +154 -73
- package/dist/admin/blockEditors/index.js.map +1 -1
- package/dist/admin/customBlocks/CustomBlocksPanel.js +18 -7
- package/dist/admin/customBlocks/CustomBlocksPanel.js.map +1 -1
- package/dist/admin/dashboard/DashboardPanel.js +26 -16
- package/dist/admin/dashboard/DashboardPanel.js.map +1 -1
- package/dist/admin/editors/RichTextEditor.d.ts +4 -3
- package/dist/admin/editors/RichTextEditor.js +19 -56
- package/dist/admin/editors/RichTextEditor.js.map +1 -1
- package/dist/admin/editors/fontSizeExtension.js +7 -1
- package/dist/admin/editors/fontSizeExtension.js.map +1 -1
- package/dist/admin/editors/slashMenu.d.ts +18 -0
- package/dist/admin/editors/slashMenu.js +34 -0
- package/dist/admin/editors/slashMenu.js.map +1 -0
- package/dist/admin/editors/useRijkeTekst.d.ts +48 -0
- package/dist/admin/editors/useRijkeTekst.js +310 -0
- package/dist/admin/editors/useRijkeTekst.js.map +1 -0
- package/dist/admin/forms/FormsPanel.d.ts +11 -2
- package/dist/admin/forms/FormsPanel.js +218 -65
- package/dist/admin/forms/FormsPanel.js.map +1 -1
- package/dist/admin/lib/blokInfo.d.ts +17 -0
- package/dist/admin/lib/blokInfo.js +80 -0
- package/dist/admin/lib/blokInfo.js.map +1 -0
- package/dist/admin/lib/foutNaarMens.d.ts +1 -0
- package/dist/admin/lib/foutNaarMens.js +22 -0
- package/dist/admin/lib/foutNaarMens.js.map +1 -0
- package/dist/admin/lib/gewisteVelden.d.ts +13 -0
- package/dist/admin/lib/gewisteVelden.js +31 -0
- package/dist/admin/lib/gewisteVelden.js.map +1 -0
- package/dist/admin/lib/heroHulp.d.ts +11 -0
- package/dist/admin/lib/heroHulp.js +18 -0
- package/dist/admin/lib/heroHulp.js.map +1 -0
- package/dist/admin/lib/kleur.js +2 -3
- package/dist/admin/lib/kleur.js.map +1 -1
- package/dist/admin/lib/leesbaarheid.d.ts +34 -0
- package/dist/admin/lib/leesbaarheid.js +82 -0
- package/dist/admin/lib/leesbaarheid.js.map +1 -0
- package/dist/admin/lib/lengteAdvies.d.ts +1 -0
- package/dist/admin/lib/lengteAdvies.js +16 -0
- package/dist/admin/lib/lengteAdvies.js.map +1 -0
- package/dist/admin/lib/mediaLijst.d.ts +26 -0
- package/dist/admin/lib/mediaLijst.js +42 -0
- package/dist/admin/lib/mediaLijst.js.map +1 -0
- package/dist/admin/lib/mediaUsage.d.ts +12 -1
- package/dist/admin/lib/mediaUsage.js +43 -33
- package/dist/admin/lib/mediaUsage.js.map +1 -1
- package/dist/admin/lib/menuHulp.d.ts +16 -0
- package/dist/admin/lib/menuHulp.js +41 -0
- package/dist/admin/lib/menuHulp.js.map +1 -0
- package/dist/admin/lib/onopgeslagen.d.ts +10 -0
- package/dist/admin/lib/onopgeslagen.js +35 -0
- package/dist/admin/lib/onopgeslagen.js.map +1 -0
- package/dist/admin/lib/pagesClient.d.ts +55 -2
- package/dist/admin/lib/pagesClient.js +126 -28
- package/dist/admin/lib/pagesClient.js.map +1 -1
- package/dist/admin/lib/paginaGebruik.d.ts +56 -0
- package/dist/admin/lib/paginaGebruik.js +109 -0
- package/dist/admin/lib/paginaGebruik.js.map +1 -0
- package/dist/admin/lib/publicatieCheck.d.ts +25 -0
- package/dist/admin/lib/publicatieCheck.js +114 -0
- package/dist/admin/lib/publicatieCheck.js.map +1 -0
- package/dist/admin/lib/scrollNaarDetail.d.ts +6 -0
- package/dist/admin/lib/scrollNaarDetail.js +20 -0
- package/dist/admin/lib/scrollNaarDetail.js.map +1 -0
- package/dist/admin/lib/symbolsClient.d.ts +10 -0
- package/dist/admin/lib/symbolsClient.js +14 -1
- package/dist/admin/lib/symbolsClient.js.map +1 -1
- package/dist/admin/lib/tekstVeld.d.ts +8 -0
- package/dist/admin/lib/tekstVeld.js +10 -0
- package/dist/admin/lib/tekstVeld.js.map +1 -0
- package/dist/admin/lib/useIsSuperadmin.d.ts +2 -0
- package/dist/admin/lib/useIsSuperadmin.js +13 -0
- package/dist/admin/lib/useIsSuperadmin.js.map +1 -0
- package/dist/admin/lib/veldTaal.d.ts +14 -0
- package/dist/admin/lib/veldTaal.js +247 -0
- package/dist/admin/lib/veldTaal.js.map +1 -0
- package/dist/admin/lib/versieVergelijk.d.ts +17 -0
- package/dist/admin/lib/versieVergelijk.js +24 -0
- package/dist/admin/lib/versieVergelijk.js.map +1 -0
- package/dist/admin/lib/zodFields.js +22 -4
- package/dist/admin/lib/zodFields.js.map +1 -1
- package/dist/admin/lib/zodFout.d.ts +9 -0
- package/dist/admin/lib/zodFout.js +63 -0
- package/dist/admin/lib/zodFout.js.map +1 -0
- package/dist/admin/media/MediaManager.js +162 -32
- package/dist/admin/media/MediaManager.js.map +1 -1
- package/dist/admin/media/MediaPicker.d.ts +3 -0
- package/dist/admin/media/MediaPicker.js +84 -31
- package/dist/admin/media/MediaPicker.js.map +1 -1
- package/dist/admin/menu/MenuPanel.js +144 -83
- package/dist/admin/menu/MenuPanel.js.map +1 -1
- package/dist/admin/navContext.d.ts +3 -0
- package/dist/admin/navContext.js +13 -1
- package/dist/admin/navContext.js.map +1 -1
- package/dist/admin/pages/PageEditor.js +146 -30
- package/dist/admin/pages/PageEditor.js.map +1 -1
- package/dist/admin/pages/PagesPanel.js +215 -61
- package/dist/admin/pages/PagesPanel.js.map +1 -1
- package/dist/admin/pages/StarterKiezer.d.ts +12 -0
- package/dist/admin/pages/StarterKiezer.js +113 -0
- package/dist/admin/pages/StarterKiezer.js.map +1 -0
- package/dist/admin/panelRegistry.d.ts +1 -1
- package/dist/admin/panelRegistry.js +2 -1
- package/dist/admin/panelRegistry.js.map +1 -1
- package/dist/admin/patterns/PatternInserter.js +1 -1
- package/dist/admin/patterns/PatternInserter.js.map +1 -1
- package/dist/admin/settings/BedrijfInstellingen.d.ts +20 -0
- package/dist/admin/settings/BedrijfInstellingen.js +144 -0
- package/dist/admin/settings/BedrijfInstellingen.js.map +1 -0
- package/dist/admin/settings/MailSettings.js +2 -2
- package/dist/admin/settings/MailSettings.js.map +1 -1
- package/dist/admin/settings/MailTemplates.js +5 -4
- package/dist/admin/settings/MailTemplates.js.map +1 -1
- package/dist/admin/settings/SettingsPanel.js +120 -78
- package/dist/admin/settings/SettingsPanel.js.map +1 -1
- package/dist/admin/settings/SnapshotsCard.js +4 -4
- package/dist/admin/settings/SnapshotsCard.js.map +1 -1
- package/dist/admin/settings/VorigeTerugzetten.d.ts +15 -0
- package/dist/admin/settings/VorigeTerugzetten.js +89 -0
- package/dist/admin/settings/VorigeTerugzetten.js.map +1 -0
- package/dist/admin/shop/CategoriesTab.js +6 -4
- package/dist/admin/shop/CategoriesTab.js.map +1 -1
- package/dist/admin/shop/DiscountsTab.js +4 -2
- package/dist/admin/shop/DiscountsTab.js.map +1 -1
- package/dist/admin/shop/OrdersTab.js +57 -19
- package/dist/admin/shop/OrdersTab.js.map +1 -1
- package/dist/admin/shop/ProductPaneel.js +2 -1
- package/dist/admin/shop/ProductPaneel.js.map +1 -1
- package/dist/admin/shop/ProductsTab.js +40 -19
- package/dist/admin/shop/ProductsTab.js.map +1 -1
- package/dist/admin/shop/ShopPanel.js +13 -1
- package/dist/admin/shop/ShopPanel.js.map +1 -1
- package/dist/admin/shop/ShopSettingsTab.js +27 -1
- package/dist/admin/shop/ShopSettingsTab.js.map +1 -1
- package/dist/admin/shop/productClient.js +7 -3
- package/dist/admin/shop/productClient.js.map +1 -1
- package/dist/admin/stats/NietGevonden.d.ts +10 -0
- package/dist/admin/stats/NietGevonden.js +78 -0
- package/dist/admin/stats/NietGevonden.js.map +1 -0
- package/dist/admin/stats/StatsPanel.js +6 -1
- package/dist/admin/stats/StatsPanel.js.map +1 -1
- package/dist/admin/stats/lib.d.ts +2 -0
- package/dist/admin/stats/lib.js.map +1 -1
- package/dist/admin/ui/ConfirmDialog.js +10 -1
- package/dist/admin/ui/ConfirmDialog.js.map +1 -1
- package/dist/admin/ui/Icon.d.ts +34 -0
- package/dist/admin/ui/Icon.js +44 -0
- package/dist/admin/ui/Icon.js.map +1 -0
- package/dist/admin/ui/ImageField.d.ts +15 -0
- package/dist/admin/ui/ImageField.js +67 -0
- package/dist/admin/ui/ImageField.js.map +1 -0
- package/dist/admin/ui/KleurVeld.d.ts +25 -0
- package/dist/admin/ui/KleurVeld.js +76 -0
- package/dist/admin/ui/KleurVeld.js.map +1 -0
- package/dist/admin/ui/LaadStaat.d.ts +21 -0
- package/dist/admin/ui/LaadStaat.js +43 -0
- package/dist/admin/ui/LaadStaat.js.map +1 -0
- package/dist/admin/ui/LeesbaarheidPaneel.d.ts +10 -0
- package/dist/admin/ui/LeesbaarheidPaneel.js +68 -0
- package/dist/admin/ui/LeesbaarheidPaneel.js.map +1 -0
- package/dist/admin/ui/LinkDialog.d.ts +22 -0
- package/dist/admin/ui/LinkDialog.js +131 -0
- package/dist/admin/ui/LinkDialog.js.map +1 -0
- package/dist/admin/ui/LinkVeld.d.ts +14 -0
- package/dist/admin/ui/LinkVeld.js +49 -0
- package/dist/admin/ui/LinkVeld.js.map +1 -0
- package/dist/admin/ui/PreviewLinkResultaat.d.ts +14 -0
- package/dist/admin/ui/PreviewLinkResultaat.js +52 -0
- package/dist/admin/ui/PreviewLinkResultaat.js.map +1 -0
- package/dist/admin/ui/charts.js +5 -5
- package/dist/admin/ui/charts.js.map +1 -1
- package/dist/admin/ui/primitives.d.ts +16 -6
- package/dist/admin/ui/primitives.js +98 -26
- package/dist/admin/ui/primitives.js.map +1 -1
- package/dist/admin/ui/select.js +5 -2
- package/dist/admin/ui/select.js.map +1 -1
- package/dist/admin/ui/switch.d.ts +3 -1
- package/dist/admin/ui/switch.js +6 -3
- package/dist/admin/ui/switch.js.map +1 -1
- package/dist/admin/ui/toast.d.ts +2 -1
- package/dist/admin/ui/toast.js +17 -11
- package/dist/admin/ui/toast.js.map +1 -1
- package/dist/admin/visual/BlokKiezer.d.ts +34 -0
- package/dist/admin/visual/BlokKiezer.js +225 -0
- package/dist/admin/visual/BlokKiezer.js.map +1 -0
- package/dist/admin/visual/InlineGereedschap.d.ts +52 -0
- package/dist/admin/visual/InlineGereedschap.js +356 -0
- package/dist/admin/visual/InlineGereedschap.js.map +1 -0
- package/dist/admin/visual/InlineRijkeTekst.d.ts +23 -0
- package/dist/admin/visual/InlineRijkeTekst.js +152 -0
- package/dist/admin/visual/InlineRijkeTekst.js.map +1 -0
- package/dist/admin/visual/VisualEditor.js +273 -125
- package/dist/admin/visual/VisualEditor.js.map +1 -1
- package/dist/admin.css +1 -1
- package/dist/bedrijf/bedrijf.d.ts +36 -0
- package/dist/bedrijf/bedrijf.js +110 -0
- package/dist/bedrijf/bedrijf.js.map +1 -0
- package/dist/blocks/BlockRenderer.js +11 -1
- package/dist/blocks/BlockRenderer.js.map +1 -1
- package/dist/blocks/blockStyle.d.ts +7 -0
- package/dist/blocks/blockStyle.js +16 -3
- package/dist/blocks/blockStyle.js.map +1 -1
- package/dist/blocks/builtinSchemas.js +6 -0
- package/dist/blocks/builtinSchemas.js.map +1 -1
- package/dist/blocks/builtins/AgendaRender.d.ts +22 -0
- package/dist/blocks/builtins/AgendaRender.js +69 -9
- package/dist/blocks/builtins/AgendaRender.js.map +1 -1
- package/dist/blocks/builtins/Availability.d.ts +1 -0
- package/dist/blocks/builtins/Availability.js +23 -0
- package/dist/blocks/builtins/Availability.js.map +1 -0
- package/dist/blocks/builtins/AvailabilityRender.d.ts +12 -0
- package/dist/blocks/builtins/AvailabilityRender.js +105 -0
- package/dist/blocks/builtins/AvailabilityRender.js.map +1 -0
- package/dist/blocks/builtins/BeforeAfterRender.js +4 -3
- package/dist/blocks/builtins/BeforeAfterRender.js.map +1 -1
- package/dist/blocks/builtins/Booking.js +1 -1
- package/dist/blocks/builtins/Booking.js.map +1 -1
- package/dist/blocks/builtins/BreadcrumbsRender.d.ts +4 -3
- package/dist/blocks/builtins/BreadcrumbsRender.js +14 -8
- package/dist/blocks/builtins/BreadcrumbsRender.js.map +1 -1
- package/dist/blocks/builtins/ColumnsRender.d.ts +1 -1
- package/dist/blocks/builtins/ColumnsRender.js +3 -1
- package/dist/blocks/builtins/ColumnsRender.js.map +1 -1
- package/dist/blocks/builtins/Contact.js +1 -1
- package/dist/blocks/builtins/Contact.js.map +1 -1
- package/dist/blocks/builtins/ContactRender.d.ts +1 -1
- package/dist/blocks/builtins/ContactRender.js +29 -8
- package/dist/blocks/builtins/ContactRender.js.map +1 -1
- package/dist/blocks/builtins/Cta.js +1 -1
- package/dist/blocks/builtins/Cta.js.map +1 -1
- package/dist/blocks/builtins/CtaRender.d.ts +1 -1
- package/dist/blocks/builtins/CtaRender.js +5 -4
- package/dist/blocks/builtins/CtaRender.js.map +1 -1
- package/dist/blocks/builtins/Embed.js +1 -1
- package/dist/blocks/builtins/Embed.js.map +1 -1
- package/dist/blocks/builtins/FormBlock.js +1 -0
- package/dist/blocks/builtins/FormBlock.js.map +1 -1
- package/dist/blocks/builtins/FormBlockRender.d.ts +6 -0
- package/dist/blocks/builtins/FormBlockRender.js +88 -16
- package/dist/blocks/builtins/FormBlockRender.js.map +1 -1
- package/dist/blocks/builtins/GalleryRender.js +3 -2
- package/dist/blocks/builtins/GalleryRender.js.map +1 -1
- package/dist/blocks/builtins/Hero.js +1 -1
- package/dist/blocks/builtins/Hero.js.map +1 -1
- package/dist/blocks/builtins/HeroRender.js +7 -3
- package/dist/blocks/builtins/HeroRender.js.map +1 -1
- package/dist/blocks/builtins/OpenNowBadge.d.ts +4 -2
- package/dist/blocks/builtins/OpenNowBadge.js +6 -6
- package/dist/blocks/builtins/OpenNowBadge.js.map +1 -1
- package/dist/blocks/builtins/OpeningHoursRender.d.ts +8 -2
- package/dist/blocks/builtins/OpeningHoursRender.js +27 -6
- package/dist/blocks/builtins/OpeningHoursRender.js.map +1 -1
- package/dist/blocks/builtins/PriceList.d.ts +1 -0
- package/dist/blocks/builtins/PriceList.js +25 -0
- package/dist/blocks/builtins/PriceList.js.map +1 -0
- package/dist/blocks/builtins/PriceListRender.d.ts +17 -0
- package/dist/blocks/builtins/PriceListRender.js +87 -0
- package/dist/blocks/builtins/PriceListRender.js.map +1 -0
- package/dist/blocks/builtins/RichTextBlockRender.js +6 -1
- package/dist/blocks/builtins/RichTextBlockRender.js.map +1 -1
- package/dist/blocks/builtins/SectionHeading.d.ts +1 -0
- package/dist/blocks/builtins/SectionHeading.js +14 -0
- package/dist/blocks/builtins/SectionHeading.js.map +1 -0
- package/dist/blocks/builtins/SectionHeadingRender.d.ts +7 -0
- package/dist/blocks/builtins/SectionHeadingRender.js +14 -0
- package/dist/blocks/builtins/SectionHeadingRender.js.map +1 -0
- package/dist/blocks/builtins/SliderRender.js +3 -2
- package/dist/blocks/builtins/SliderRender.js.map +1 -1
- package/dist/blocks/builtins/SymbolRef.js +1 -1
- package/dist/blocks/builtins/SymbolRef.js.map +1 -1
- package/dist/blocks/builtins/TeamRender.js +6 -1
- package/dist/blocks/builtins/TeamRender.js.map +1 -1
- package/dist/blocks/builtins/Testimonials.js +3 -1
- package/dist/blocks/builtins/Testimonials.js.map +1 -1
- package/dist/blocks/builtins/TestimonialsRender.js +4 -0
- package/dist/blocks/builtins/TestimonialsRender.js.map +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.d.ts +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.js +1 -1
- package/dist/blocks/builtins/WhatsappChatRender.js.map +1 -1
- package/dist/blocks/builtins/Widgets.js +2 -2
- package/dist/blocks/builtins/Widgets.js.map +1 -1
- package/dist/blocks/builtins/WidgetsRender.js +3 -1
- package/dist/blocks/builtins/WidgetsRender.js.map +1 -1
- package/dist/blocks/builtins/index.d.ts +3 -0
- package/dist/blocks/builtins/index.js +6 -0
- package/dist/blocks/builtins/index.js.map +1 -1
- package/dist/blocks/builtins/lib/autoComplete.d.ts +7 -0
- package/dist/blocks/builtins/lib/autoComplete.js +20 -0
- package/dist/blocks/builtins/lib/autoComplete.js.map +1 -0
- package/dist/blocks/builtins/lib/bookingUrl.d.ts +2 -2
- package/dist/blocks/builtins/lib/bookingUrl.js +1 -1
- package/dist/blocks/builtins/lib/bookingUrl.js.map +1 -1
- package/dist/blocks/builtins/lib/ical.d.ts +24 -0
- package/dist/blocks/builtins/lib/ical.js +82 -0
- package/dist/blocks/builtins/lib/ical.js.map +1 -0
- package/dist/blocks/builtins/lib/vandaag.d.ts +8 -0
- package/dist/blocks/builtins/lib/vandaag.js +22 -0
- package/dist/blocks/builtins/lib/vandaag.js.map +1 -0
- package/dist/blocks/registry.d.ts +6 -0
- package/dist/blocks/registry.js.map +1 -1
- package/dist/blocks/ui/index.js +1 -0
- package/dist/blocks/ui/index.js.map +1 -1
- package/dist/components/EditBar.js +2 -4
- package/dist/components/EditBar.js.map +1 -1
- package/dist/components/News.js +26 -18
- package/dist/components/News.js.map +1 -1
- package/dist/components/PageView.d.ts +7 -1
- package/dist/components/PageView.js +17 -0
- package/dist/components/PageView.js.map +1 -1
- package/dist/components/ResponsiveImage.js +18 -20
- package/dist/components/ResponsiveImage.js.map +1 -1
- package/dist/components/site/SiteFooter.d.ts +6 -1
- package/dist/components/site/SiteFooter.js +61 -9
- package/dist/components/site/SiteFooter.js.map +1 -1
- package/dist/components/site/SiteHeader.d.ts +15 -0
- package/dist/components/site/SiteHeader.js +70 -0
- package/dist/components/site/SiteHeader.js.map +1 -0
- package/dist/components/site/SiteNav.d.ts +2 -0
- package/dist/components/site/SiteNav.js +29 -5
- package/dist/components/site/SiteNav.js.map +1 -1
- package/dist/demo/DemoStudio.js +2 -2
- package/dist/demo/DemoStudio.js.map +1 -1
- package/dist/demo/demoStore.d.ts +13 -0
- package/dist/demo/demoStore.js +36 -0
- package/dist/demo/demoStore.js.map +1 -1
- package/dist/editor/EditorProvider.js +15 -4
- package/dist/editor/EditorProvider.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/media/ImageContext.d.ts +17 -0
- package/dist/media/ImageContext.js +65 -20
- package/dist/media/ImageContext.js.map +1 -1
- package/dist/media/altInHtml.d.ts +9 -0
- package/dist/media/altInHtml.js +17 -0
- package/dist/media/altInHtml.js.map +1 -0
- package/dist/media/srcset.d.ts +12 -0
- package/dist/media/srcset.js +13 -0
- package/dist/media/srcset.js.map +1 -0
- package/dist/modules/builtins.d.ts +1 -0
- package/dist/modules/builtins.js +16 -3
- package/dist/modules/builtins.js.map +1 -1
- package/dist/modules/shop/blocks/Cart.js +5 -3
- package/dist/modules/shop/blocks/Cart.js.map +1 -1
- package/dist/modules/shop/blocks/Checkout.js +56 -35
- package/dist/modules/shop/blocks/Checkout.js.map +1 -1
- package/dist/modules/shop/blocks/Donation.js +4 -4
- package/dist/modules/shop/blocks/Donation.js.map +1 -1
- package/dist/modules/shop/blocks/ProductDetail.js +19 -3
- package/dist/modules/shop/blocks/ProductDetail.js.map +1 -1
- package/dist/modules/shop/blocks/ProductGrid.d.ts +3 -1
- package/dist/modules/shop/blocks/ProductGrid.js +8 -4
- package/dist/modules/shop/blocks/ProductGrid.js.map +1 -1
- package/dist/modules/shop/blocks/ShopCategories.js +4 -3
- package/dist/modules/shop/blocks/ShopCategories.js.map +1 -1
- package/dist/modules/shop/lib.d.ts +4 -0
- package/dist/modules/shop/lib.js +14 -0
- package/dist/modules/shop/lib.js.map +1 -1
- package/dist/modules/shop/settings.d.ts +3 -0
- package/dist/modules/shop/settings.js +14 -0
- package/dist/modules/shop/settings.js.map +1 -1
- package/dist/modules/shop/strings.d.ts +4 -0
- package/dist/modules/shop/strings.js +8 -0
- package/dist/modules/shop/strings.js.map +1 -1
- package/dist/next/envCheck.d.ts +42 -0
- package/dist/next/envCheck.js +106 -0
- package/dist/next/envCheck.js.map +1 -0
- package/dist/next/index.cjs +185 -2
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.js +8 -1
- package/dist/next/index.js.map +1 -1
- package/dist/next/securityHeaders.d.ts +36 -0
- package/dist/next/securityHeaders.js +74 -0
- package/dist/next/securityHeaders.js.map +1 -0
- package/dist/patterns/builtins.d.ts +7 -0
- package/dist/patterns/builtins.js +138 -3
- package/dist/patterns/builtins.js.map +1 -1
- package/dist/releaseNotes.js +140 -0
- package/dist/releaseNotes.js.map +1 -1
- package/dist/render/PublishedPage.d.ts +2 -1
- package/dist/render/PublishedPage.js +10 -4
- package/dist/render/PublishedPage.js.map +1 -1
- package/dist/schema/blocks.d.ts +470 -0
- package/dist/schema/blocks.js +102 -4
- package/dist/schema/blocks.js.map +1 -1
- package/dist/schema/business.d.ts +117 -0
- package/dist/schema/business.js +73 -0
- package/dist/schema/business.js.map +1 -0
- package/dist/schema/fields.d.ts +2 -1
- package/dist/schema/fields.js.map +1 -1
- package/dist/schema/forms.d.ts +18 -0
- package/dist/schema/forms.js +18 -3
- package/dist/schema/forms.js.map +1 -1
- package/dist/schema/mail.d.ts +10 -0
- package/dist/schema/mail.js +7 -0
- package/dist/schema/mail.js.map +1 -1
- package/dist/schema/settings.d.ts +101 -0
- package/dist/schema/settings.js +24 -3
- package/dist/schema/settings.js.map +1 -1
- package/dist/schema/shop.d.ts +2 -0
- package/dist/schema/shop.js +4 -0
- package/dist/schema/shop.js.map +1 -1
- package/dist/schema/shopGeld.d.ts +1 -0
- package/dist/schema/shopGeld.js +1 -0
- package/dist/schema/shopGeld.js.map +1 -1
- package/dist/schema/siteConfig.d.ts +68 -1
- package/dist/schema/siteConfig.js +7 -2
- package/dist/schema/siteConfig.js.map +1 -1
- package/dist/server/blockData.d.ts +1 -1
- package/dist/server/blockData.js +74 -18
- package/dist/server/blockData.js.map +1 -1
- package/dist/server/cspRapport.d.ts +20 -0
- package/dist/server/cspRapport.js +56 -0
- package/dist/server/cspRapport.js.map +1 -0
- package/dist/server/fonts.d.ts +3 -0
- package/dist/server/fonts.js +39 -0
- package/dist/server/fonts.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/sanitize.js +15 -2
- package/dist/server/sanitize.js.map +1 -1
- package/dist/settings/useSiteSettings.js +4 -1
- package/dist/settings/useSiteSettings.js.map +1 -1
- package/dist/starters/starters.d.ts +69 -0
- package/dist/starters/starters.js +171 -0
- package/dist/starters/starters.js.map +1 -0
- package/dist/styles.css +1149 -208
- package/dist/theme/color.d.ts +10 -0
- package/dist/theme/color.js +17 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/fontFallback.d.ts +23 -0
- package/dist/theme/fontFallback.js +58 -0
- package/dist/theme/fontFallback.js.map +1 -0
- package/dist/theme/fonts.d.ts +11 -0
- package/dist/theme/fonts.js +16 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/version.js +1 -1
- package/package.json +6 -4
package/dist/admin.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--color-brand:#4f46e5;--color-brand-50:#eef2ff;--color-brand-500:#4f46e5;--color-brand-600:#4f46e5;--color-brand-700:#3730a3}}@scope(.xicms-admin){@layer utilities{.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.sr-only{clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.absolute{position:absolute!important}.fixed{position:fixed!important}.relative{position:relative!important}.static{position:static!important}.sticky{position:sticky!important}.inset-x-0{inset-inline:0!important}.-top-0\.5{top:calc(var(--spacing) * -.5)!important}.-top-2{top:calc(var(--spacing) * -2)!important}.top-0{top:0!important}.-right-2{right:calc(var(--spacing) * -2)!important}.right-0{right:0!important}.-bottom-2{bottom:calc(var(--spacing) * -2)!important}.bottom-0{bottom:0!important}.-left-2{left:calc(var(--spacing) * -2)!important}.left-1\/2{left:50%!important}.z-10{z-index:10!important}.col-span-2{grid-column:span 2/span 2!important}.col-span-full{grid-column:1/-1!important}.container{width:100%!important}@media (min-width:40rem){.container{max-width:40rem!important}}@media (min-width:48rem){.container{max-width:48rem!important}}@media (min-width:64rem){.container{max-width:64rem!important}}@media (min-width:80rem){.container{max-width:80rem!important}}@media (min-width:96rem){.container{max-width:96rem!important}}.-mx-1{margin-inline:calc(var(--spacing) * -1)!important}.-mx-4{margin-inline:calc(var(--spacing) * -4)!important}.mt-0\.5{margin-top:calc(var(--spacing) * .5)!important}.mt-1{margin-top:var(--spacing)!important}.mt-2{margin-top:calc(var(--spacing) * 2)!important}.mt-3{margin-top:calc(var(--spacing) * 3)!important}.mt-4{margin-top:calc(var(--spacing) * 4)!important}.mt-5{margin-top:calc(var(--spacing) * 5)!important}.mt-6{margin-top:calc(var(--spacing) * 6)!important}.mt-auto{margin-top:auto!important}.mr-1{margin-right:var(--spacing)!important}.mr-2{margin-right:calc(var(--spacing) * 2)!important}.mb-1{margin-bottom:var(--spacing)!important}.mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.mb-3{margin-bottom:calc(var(--spacing) * 3)!important}.mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.ml-1{margin-left:var(--spacing)!important}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)!important}.ml-auto{margin-left:auto!important}.block{display:block!important}.contents{display:contents!important}.flex{display:flex!important}.grid{display:grid!important}.hidden{display:none!important}.inline{display:inline!important}.inline-block{display:inline-block!important}.inline-flex{display:inline-flex!important}.table{display:table!important}.aspect-square{aspect-ratio:1!important}.h-1\.5{height:calc(var(--spacing) * 1.5)!important}.h-2{height:calc(var(--spacing) * 2)!important}.h-4{height:calc(var(--spacing) * 4)!important}.h-5{height:calc(var(--spacing) * 5)!important}.h-6{height:calc(var(--spacing) * 6)!important}.h-8{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)!important}.h-10{height:calc(var(--spacing) * 10)!important}.h-12{height:calc(var(--spacing) * 12)!important}.h-14{height:calc(var(--spacing) * 14)!important}.h-16{height:calc(var(--spacing) * 16)!important}.h-28{height:calc(var(--spacing) * 28)!important}.h-32{height:calc(var(--spacing) * 32)!important}.h-\[70vh\]{height:70vh!important}.h-fit{height:fit-content!important}.h-full{height:100%!important}.max-h-\[55vh\]{max-height:55vh!important}.max-h-\[60vh\]{max-height:60vh!important}.min-h-\[8rem\]{min-height:8rem!important}.min-h-screen{min-height:100vh!important}.w-2{width:calc(var(--spacing) * 2)!important}.w-4{width:calc(var(--spacing) * 4)!important}.w-5{width:calc(var(--spacing) * 5)!important}.w-6{width:calc(var(--spacing) * 6)!important}.w-8{width:calc(var(--spacing) * 8)!important}.w-11{width:calc(var(--spacing) * 11)!important}.w-14{width:calc(var(--spacing) * 14)!important}.w-16{width:calc(var(--spacing) * 16)!important}.w-20{width:calc(var(--spacing) * 20)!important}.w-24{width:calc(var(--spacing) * 24)!important}.w-28{width:calc(var(--spacing) * 28)!important}.w-32{width:calc(var(--spacing) * 32)!important}.w-36{width:calc(var(--spacing) * 36)!important}.w-44{width:calc(var(--spacing) * 44)!important}.w-fit{width:fit-content!important}.w-full{width:100%!important}.max-w-3xl{max-width:var(--container-3xl)!important}.max-w-4xl{max-width:var(--container-4xl)!important}.max-w-40{max-width:calc(var(--spacing) * 40)!important}.max-w-md{max-width:var(--container-md)!important}.max-w-sm{max-width:var(--container-sm)!important}.max-w-xs{max-width:var(--container-xs)!important}.min-w-0{min-width:0!important}.min-w-8{min-width:calc(var(--spacing) * 8)!important}.flex-1{flex:1!important}.shrink-0{flex-shrink:0!important}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.cursor-crosshair{cursor:crosshair!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.resize{resize:both!important}.list-decimal{list-style-type:decimal!important}.list-disc{list-style-type:disc!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.grid-cols-\[1fr_1\.4fr_auto\]{grid-template-columns:1fr 1.4fr auto!important}.grid-cols-\[1fr_1fr_90px_90px_auto\]{grid-template-columns:1fr 1fr 90px 90px auto!important}.grid-cols-\[1fr_150px_70px_auto\]{grid-template-columns:1fr 150px 70px auto!important}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr!important}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto!important}.flex-col{flex-direction:column!important}.flex-row{flex-direction:row!important}.flex-wrap{flex-wrap:wrap!important}.place-items-center{place-items:center!important}.items-baseline{align-items:baseline!important}.items-center{align-items:center!important}.items-end{align-items:flex-end!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.justify-end{justify-content:flex-end!important}.gap-0\.5{gap:calc(var(--spacing) * .5)!important}.gap-1{gap:var(--spacing)!important}.gap-1\.5{gap:calc(var(--spacing) * 1.5)!important}.gap-2{gap:calc(var(--spacing) * 2)!important}.gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.gap-3{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)!important}.gap-6{gap:calc(var(--spacing) * 6)!important}.gap-x-3{column-gap:calc(var(--spacing) * 3)!important}.gap-x-5{column-gap:calc(var(--spacing) * 5)!important}.gap-y-1{row-gap:var(--spacing)!important}.self-center{align-self:center!important}.self-end{align-self:flex-end!important}.truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.rounded{border-radius:.25rem!important}.rounded-full{border-radius:3.40282e38px!important}.rounded-lg{border-radius:var(--radius-lg)!important}.rounded-md{border-radius:var(--radius-md)!important}.rounded-xl{border-radius:var(--radius-xl)!important}.rounded-t-lg{border-top-left-radius:var(--radius-lg)!important;border-top-right-radius:var(--radius-lg)!important}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg)!important;border-bottom-left-radius:var(--radius-lg)!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-t-0{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-amber-200{border-color:var(--color-amber-200)!important}.border-amber-300{border-color:var(--color-amber-300)!important}.border-brand-500{border-color:var(--color-brand-500)!important}.border-red-200{border-color:var(--color-red-200)!important}.border-slate-100{border-color:var(--color-slate-100)!important}.border-slate-200{border-color:var(--color-slate-200)!important}.border-slate-300{border-color:var(--color-slate-300)!important}.border-white{border-color:var(--color-white)!important}.bg-amber-50{background-color:var(--color-amber-50)!important}.bg-amber-50\/40{background-color:#fffbeb66!important}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/40{background-color:color-mix(in oklab, var(--color-amber-50) 40%, transparent)!important}}.bg-brand-50{background-color:var(--color-brand-50)!important}.bg-brand-500{background-color:var(--color-brand-500)!important}.bg-red-50{background-color:var(--color-red-50)!important}.bg-slate-50{background-color:var(--color-slate-50)!important}.bg-slate-100{background-color:var(--color-slate-100)!important}.bg-slate-200{background-color:var(--color-slate-200)!important}.bg-slate-700{background-color:var(--color-slate-700)!important}.bg-transparent{background-color:#0000!important}.bg-white{background-color:var(--color-white)!important}.object-contain{object-fit:contain!important}.object-cover{object-fit:cover!important}.p-0\.5{padding:calc(var(--spacing) * .5)!important}.p-1{padding:var(--spacing)!important}.p-2{padding:calc(var(--spacing) * 2)!important}.p-3{padding:calc(var(--spacing) * 3)!important}.p-4{padding:calc(var(--spacing) * 4)!important}.p-5{padding:calc(var(--spacing) * 5)!important}.p-6{padding:calc(var(--spacing) * 6)!important}.px-1{padding-inline:var(--spacing)!important}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)!important}.px-2{padding-inline:calc(var(--spacing) * 2)!important}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)!important}.px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-4{padding-inline:calc(var(--spacing) * 4)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)!important}.py-1{padding-block:var(--spacing)!important}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)!important}.py-2{padding-block:calc(var(--spacing) * 2)!important}.py-3{padding-block:calc(var(--spacing) * 3)!important}.py-8{padding-block:calc(var(--spacing) * 8)!important}.py-16{padding-block:calc(var(--spacing) * 16)!important}.pt-0{padding-top:0!important}.pt-1{padding-top:var(--spacing)!important}.pt-3{padding-top:calc(var(--spacing) * 3)!important}.pt-4{padding-top:calc(var(--spacing) * 4)!important}.pt-5{padding-top:calc(var(--spacing) * 5)!important}.pr-2{padding-right:calc(var(--spacing) * 2)!important}.pb-1{padding-bottom:var(--spacing)!important}.pb-2{padding-bottom:calc(var(--spacing) * 2)!important}.pl-1{padding-left:var(--spacing)!important}.pl-5{padding-left:calc(var(--spacing) * 5)!important}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.align-top{vertical-align:top!important}.font-mono{font-family:var(--font-mono)!important}.text-3xl{font-size:var(--text-3xl)!important;line-height:var(--tw-leading,var(--text-3xl--line-height))!important}.text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-lg{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-xl{font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important}.text-xs{font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important}.text-\[10px\]{font-size:10px!important}.text-\[11px\]{font-size:11px!important}.font-bold{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important}.tracking-wide{--tw-tracking:var(--tracking-wide)!important;letter-spacing:var(--tracking-wide)!important}.whitespace-nowrap{white-space:nowrap!important}.whitespace-pre-wrap{white-space:pre-wrap!important}.text-amber-600{color:var(--color-amber-600)!important}.text-amber-700{color:var(--color-amber-700)!important}.text-amber-800{color:var(--color-amber-800)!important}.text-amber-900{color:var(--color-amber-900)!important}.text-brand-700{color:var(--color-brand-700)!important}.text-brand-700\/70{color:#3730a3b3!important}@supports (color:color-mix(in lab, red, red)){.text-brand-700\/70{color:color-mix(in oklab, var(--color-brand-700) 70%, transparent)!important}}.text-emerald-700{color:var(--color-emerald-700)!important}.text-red-600{color:var(--color-red-600)!important}.text-red-700{color:var(--color-red-700)!important}.text-slate-400{color:var(--color-slate-400)!important}.text-slate-500{color:var(--color-slate-500)!important}.text-slate-600{color:var(--color-slate-600)!important}.text-slate-700{color:var(--color-slate-700)!important}.text-slate-800{color:var(--color-slate-800)!important}.text-slate-900{color:var(--color-slate-900)!important}.text-white{color:var(--color-white)!important}.uppercase{text-transform:uppercase!important}.italic{font-style:italic!important}.tabular-nums{--tw-numeric-spacing:tabular-nums!important;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)!important}.line-through{text-decoration-line:line-through!important}.underline{text-decoration-line:underline!important}.opacity-70{opacity:.7!important}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-brand-500{--tw-ring-color:var(--color-brand-500)!important}.outline{outline-style:var(--tw-outline-style)!important;outline-width:1px!important}.outline-2{outline-style:var(--tw-outline-style)!important;outline-width:2px!important}.outline-offset-4{outline-offset:4px!important}.outline-brand-500{outline-color:var(--color-brand-500)!important}.blur{--tw-blur:blur(8px)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.grayscale{--tw-grayscale:grayscale(100%)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-\[filter\]{transition-property:filter!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.ease-out{--tw-ease:var(--ease-out)!important;transition-timing-function:var(--ease-out)!important}.outline-dashed{--tw-outline-style:dashed!important;outline-style:dashed!important}.outline-none{--tw-outline-style:none!important;outline-style:none!important}@media (hover:hover){.group-hover\:opacity-80:is(:where(.group):hover *){opacity:.8!important}}.last\:border-0:last-child{border-style:var(--tw-border-style)!important;border-width:0!important}@media (hover:hover){.hover\:border-brand-500:hover{border-color:var(--color-brand-500)!important}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)!important}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)!important}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)!important}.hover\:text-slate-600:hover{color:var(--color-slate-600)!important}.hover\:text-slate-700:hover{color:var(--color-slate-700)!important}.hover\:text-slate-900:hover{color:var(--color-slate-900)!important}.hover\:underline:hover{text-decoration-line:underline!important}.hover\:brightness-95:hover{--tw-brightness:brightness(95%)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)!important}.focus\:outline-none:focus{--tw-outline-style:none!important;outline-style:none!important}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.focus-visible\:ring-brand-500:focus-visible{--tw-ring-color:var(--color-brand-500)!important}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style)!important;outline-width:2px!important}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px!important}.focus-visible\:outline-blue-600:focus-visible{outline-color:var(--color-blue-600)!important}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none!important;outline-style:none!important}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed!important}.disabled\:opacity-50:disabled{opacity:.5!important}.aria-\[current\=page\]\:bg-slate-200[aria-current=page]{background-color:var(--color-slate-200)!important}.aria-\[current\=page\]\:text-slate-900[aria-current=page]{color:var(--color-slate-900)!important}.data-\[state\=active\]\:border-b-2[data-state=active]{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:2px!important}.data-\[state\=active\]\:border-brand-600[data-state=active]{border-color:var(--color-brand-600)!important}.data-\[state\=active\]\:bg-slate-100[data-state=active]{background-color:var(--color-slate-100)!important}.data-\[state\=active\]\:text-brand-700[data-state=active]{color:var(--color-brand-700)!important}.data-\[state\=active\]\:text-slate-900[data-state=active]{color:var(--color-slate-900)!important}.data-\[state\=active\]\:shadow-\[inset_2px_0_0_0_var\(--color-brand-500\)\][data-state=active]{--tw-shadow:inset 2px 0 0 0 var(--tw-shadow-color,var(--color-brand-500))!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}}@media (min-width:48rem){.md\:sticky{position:sticky!important}.md\:top-0{top:0!important}.md\:col-span-5{grid-column:span 5/span 5!important}.md\:block{display:block!important}.md\:flex{display:flex!important}.md\:grid{display:grid!important}.md\:h-screen{height:100vh!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.md\:grid-cols-\[1fr_1fr_140px_auto_auto\]{grid-template-columns:1fr 1fr 140px auto auto!important}.md\:grid-cols-\[1fr_110px\]{grid-template-columns:1fr 110px!important}.md\:grid-cols-\[1fr_130px_90px_110px_auto\]{grid-template-columns:1fr 130px 90px 110px auto!important}.md\:grid-cols-\[1fr_140px_1fr_150px\]{grid-template-columns:1fr 140px 1fr 150px!important}.md\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr!important}.md\:grid-cols-\[248px_1fr\]{grid-template-columns:248px 1fr!important}.md\:grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr!important}.md\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr!important}.md\:grid-cols-\[300px_1fr\]{grid-template-columns:300px 1fr!important}.md\:grid-cols-\[340px_1fr\]{grid-template-columns:340px 1fr!important}.md\:flex-col{flex-direction:column!important}.md\:items-end{align-items:flex-end!important}.md\:overflow-visible{overflow:visible!important}.md\:border-r{border-right-style:var(--tw-border-style)!important;border-right-width:1px!important}.md\:border-b-0{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.md\:p-8{padding:calc(var(--spacing) * 8)!important}.md\:px-8{padding-inline:calc(var(--spacing) * 8)!important}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2!important}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}}}}.xicms-admin,.xicms-admin *,.xicms-admin :before,.xicms-admin :after{box-sizing:border-box}.xicms-admin{-webkit-font-smoothing:antialiased;--color-white:#fff;--color-slate-50:#faf9f6;--color-slate-100:#f3f1ec;--color-slate-200:#e5e2da;--color-slate-300:#d5d1c7;--color-slate-400:#a8a399;--color-slate-500:#6e6a62;--color-slate-600:#57534b;--color-slate-700:#403c36;--color-slate-900:#1b1a17;--color-brand:var(--xicms-primary,#4f46e5);--color-brand-500:var(--xicms-primary,#4f46e5);--color-brand-600:var(--xicms-primary,#4f46e5);--color-brand-700:var(--xicms-primary,#4f46e5);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@supports (color:color-mix(in lab, red, red)){.xicms-admin{--color-brand-700:color-mix(in srgb, var(--xicms-primary,#4f46e5) 78%, #1b1a17)}}.xicms-admin{--color-brand-50:var(--xicms-primary,#4f46e5)}@supports (color:color-mix(in lab, red, red)){.xicms-admin{--color-brand-50:color-mix(in srgb, var(--xicms-primary,#4f46e5) 10%, #fff)}}.xicms-admin{--admin-canvas:#f6f5f2;--admin-sidebar:#f0eee9;--color-background-body:var(--color-white);--color-background-surface:var(--color-white);--color-background-card:var(--color-white);--color-background-muted:var(--color-slate-100);--color-text-primary:var(--color-slate-900);--color-text-secondary:var(--color-slate-500);--color-border:var(--color-slate-200);--color-accent:var(--color-brand-500);--color-on-accent:#fff;--color-error:#dc2626;color-scheme:light;color:var(--color-text-primary);background:var(--admin-canvas)}.xicms-admin h1,.xicms-admin h2,.xicms-admin h3,.xicms-admin p,.xicms-admin figure{margin:0}.xicms-admin button{font:inherit;cursor:pointer}.xicms-admin input,.xicms-admin textarea,.xicms-admin select{font:inherit;color:inherit}.xicms-admin .ProseMirror{outline:none;min-height:8rem}.xicms-admin .ProseMirror p{margin:0 0 .6rem}.xicms-admin .ProseMirror:focus{outline:none}@media (prefers-reduced-motion:reduce){.xicms-admin *,.xicms-admin :before,.xicms-admin :after,.xicms-ve *,.xicms-ve :before,.xicms-ve :after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.xicms-admin__midden,.xicms-admin__raster{min-height:100vh}.xicms-admin--ingebed .xicms-admin__midden{min-height:50vh}.xicms-admin--ingebed .xicms-admin__raster{min-height:60vh}.xicms-admin--ingebed .xicms-admin__lijst{flex:100%;min-width:0}.xicms-admin--ingebed{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-tight:1.25;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--color-brand:#4f46e5;--color-brand-50:#eef2ff;--color-brand-500:#4f46e5;--color-brand-600:#4f46e5;--color-brand-700:#3730a3}}@scope(.xicms-admin){@layer utilities{.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.sr-only{clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.absolute{position:absolute!important}.fixed{position:fixed!important}.relative{position:relative!important}.static{position:static!important}.sticky{position:sticky!important}.inset-x-0{inset-inline:0!important}.inset-y-0{inset-block:0!important}.-top-0\.5{top:calc(var(--spacing) * -.5)!important}.-top-2{top:calc(var(--spacing) * -2)!important}.top-0{top:0!important}.top-1\.5{top:calc(var(--spacing) * 1.5)!important}.top-2{top:calc(var(--spacing) * 2)!important}.-right-2{right:calc(var(--spacing) * -2)!important}.right-0{right:0!important}.-bottom-2{bottom:calc(var(--spacing) * -2)!important}.bottom-0{bottom:0!important}.-left-2{left:calc(var(--spacing) * -2)!important}.left-0{left:0!important}.left-1\.5{left:calc(var(--spacing) * 1.5)!important}.left-1\/2{left:50%!important}.z-10{z-index:10!important}.col-span-2{grid-column:span 2/span 2!important}.col-span-full{grid-column:1/-1!important}.container{width:100%!important}@media (min-width:40rem){.container{max-width:40rem!important}}@media (min-width:48rem){.container{max-width:48rem!important}}@media (min-width:64rem){.container{max-width:64rem!important}}@media (min-width:80rem){.container{max-width:80rem!important}}@media (min-width:96rem){.container{max-width:96rem!important}}.-mx-1{margin-inline:calc(var(--spacing) * -1)!important}.-mx-4{margin-inline:calc(var(--spacing) * -4)!important}.-mt-1{margin-top:calc(var(--spacing) * -1)!important}.mt-0\.5{margin-top:calc(var(--spacing) * .5)!important}.mt-1{margin-top:var(--spacing)!important}.mt-2{margin-top:calc(var(--spacing) * 2)!important}.mt-3{margin-top:calc(var(--spacing) * 3)!important}.mt-4{margin-top:calc(var(--spacing) * 4)!important}.mt-5{margin-top:calc(var(--spacing) * 5)!important}.mt-6{margin-top:calc(var(--spacing) * 6)!important}.mt-auto{margin-top:auto!important}.mr-1{margin-right:var(--spacing)!important}.mr-2{margin-right:calc(var(--spacing) * 2)!important}.mr-auto{margin-right:auto!important}.mb-1{margin-bottom:var(--spacing)!important}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)!important}.mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.mb-3{margin-bottom:calc(var(--spacing) * 3)!important}.mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.ml-1{margin-left:var(--spacing)!important}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)!important}.ml-auto{margin-left:auto!important}.block{display:block!important}.contents{display:contents!important}.flex{display:flex!important}.grid{display:grid!important}.hidden{display:none!important}.inline{display:inline!important}.inline-block{display:inline-block!important}.inline-flex{display:inline-flex!important}.table{display:table!important}.\[field-sizing\:content\]{field-sizing:content!important}.aspect-square{aspect-ratio:1!important}.h-1\.5{height:calc(var(--spacing) * 1.5)!important}.h-2{height:calc(var(--spacing) * 2)!important}.h-4{height:calc(var(--spacing) * 4)!important}.h-5{height:calc(var(--spacing) * 5)!important}.h-6{height:calc(var(--spacing) * 6)!important}.h-7{height:calc(var(--spacing) * 7)!important}.h-8{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)!important}.h-10{height:calc(var(--spacing) * 10)!important}.h-11{height:calc(var(--spacing) * 11)!important}.h-12{height:calc(var(--spacing) * 12)!important}.h-14{height:calc(var(--spacing) * 14)!important}.h-16{height:calc(var(--spacing) * 16)!important}.h-24{height:calc(var(--spacing) * 24)!important}.h-28{height:calc(var(--spacing) * 28)!important}.h-\[70vh\]{height:70vh!important}.h-fit{height:fit-content!important}.h-full{height:100%!important}.max-h-\[55vh\]{max-height:55vh!important}.max-h-\[60vh\]{max-height:60vh!important}.min-h-\[8rem\]{min-height:8rem!important}.min-h-screen{min-height:100vh!important}.w-2{width:calc(var(--spacing) * 2)!important}.w-4{width:calc(var(--spacing) * 4)!important}.w-5{width:calc(var(--spacing) * 5)!important}.w-6{width:calc(var(--spacing) * 6)!important}.w-7{width:calc(var(--spacing) * 7)!important}.w-8{width:calc(var(--spacing) * 8)!important}.w-9{width:calc(var(--spacing) * 9)!important}.w-10{width:calc(var(--spacing) * 10)!important}.w-11{width:calc(var(--spacing) * 11)!important}.w-14{width:calc(var(--spacing) * 14)!important}.w-16{width:calc(var(--spacing) * 16)!important}.w-20{width:calc(var(--spacing) * 20)!important}.w-24{width:calc(var(--spacing) * 24)!important}.w-28{width:calc(var(--spacing) * 28)!important}.w-32{width:calc(var(--spacing) * 32)!important}.w-36{width:calc(var(--spacing) * 36)!important}.w-44{width:calc(var(--spacing) * 44)!important}.w-48{width:calc(var(--spacing) * 48)!important}.w-fit{width:fit-content!important}.w-full{width:100%!important}.max-w-3xl{max-width:var(--container-3xl)!important}.max-w-4xl{max-width:var(--container-4xl)!important}.max-w-40{max-width:calc(var(--spacing) * 40)!important}.max-w-48{max-width:calc(var(--spacing) * 48)!important}.max-w-md{max-width:var(--container-md)!important}.max-w-sm{max-width:var(--container-sm)!important}.max-w-xs{max-width:var(--container-xs)!important}.min-w-0{min-width:0!important}.min-w-8{min-width:calc(var(--spacing) * 8)!important}.min-w-9{min-width:calc(var(--spacing) * 9)!important}.min-w-48{min-width:calc(var(--spacing) * 48)!important}.flex-1{flex:1!important}.shrink-0{flex-shrink:0!important}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.cursor-crosshair{cursor:crosshair!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.resize{resize:both!important}.resize-none{resize:none!important}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)!important}.list-\[circle\]{list-style-type:circle!important}.list-decimal{list-style-type:decimal!important}.list-disc{list-style-type:disc!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.grid-cols-\[1fr_1\.4fr_auto\]{grid-template-columns:1fr 1.4fr auto!important}.grid-cols-\[1fr_1fr_90px_90px_auto\]{grid-template-columns:1fr 1fr 90px 90px auto!important}.grid-cols-\[1fr_150px_70px_auto\]{grid-template-columns:1fr 150px 70px auto!important}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto!important}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr!important}.grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)!important}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto!important}.flex-col{flex-direction:column!important}.flex-row{flex-direction:row!important}.flex-wrap{flex-wrap:wrap!important}.place-items-center{place-items:center!important}.content-start{align-content:flex-start!important}.items-baseline{align-items:baseline!important}.items-center{align-items:center!important}.items-end{align-items:flex-end!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.justify-end{justify-content:flex-end!important}.justify-items-center{justify-items:center!important}.gap-0\.5{gap:calc(var(--spacing) * .5)!important}.gap-1{gap:var(--spacing)!important}.gap-1\.5{gap:calc(var(--spacing) * 1.5)!important}.gap-2{gap:calc(var(--spacing) * 2)!important}.gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.gap-3{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)!important}.gap-6{gap:calc(var(--spacing) * 6)!important}.gap-x-3{column-gap:calc(var(--spacing) * 3)!important}.gap-x-5{column-gap:calc(var(--spacing) * 5)!important}.gap-y-1{row-gap:var(--spacing)!important}.self-center{align-self:center!important}.self-end{align-self:flex-end!important}.truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.rounded{border-radius:.25rem!important}.rounded-full{border-radius:3.40282e38px!important}.rounded-lg{border-radius:var(--radius-lg)!important}.rounded-md{border-radius:var(--radius-md)!important}.rounded-xl{border-radius:var(--radius-xl)!important}.rounded-t-lg{border-top-left-radius:var(--radius-lg)!important;border-top-right-radius:var(--radius-lg)!important}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg)!important;border-bottom-left-radius:var(--radius-lg)!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-t-0{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-dashed{--tw-border-style:dashed!important;border-style:dashed!important}.border-amber-200{border-color:var(--color-amber-200)!important}.border-amber-300{border-color:var(--color-amber-300)!important}.border-brand-500{border-color:var(--color-brand-500)!important}.border-brand-500\/40{border-color:#4f46e566!important}@supports (color:color-mix(in lab, red, red)){.border-brand-500\/40{border-color:color-mix(in oklab, var(--color-brand-500) 40%, transparent)!important}}.border-red-200{border-color:var(--color-red-200)!important}.border-slate-100{border-color:var(--color-slate-100)!important}.border-slate-200{border-color:var(--color-slate-200)!important}.border-slate-300{border-color:var(--color-slate-300)!important}.border-white{border-color:var(--color-white)!important}.bg-amber-50{background-color:var(--color-amber-50)!important}.bg-amber-50\/40{background-color:#fffbeb66!important}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/40{background-color:color-mix(in oklab, var(--color-amber-50) 40%, transparent)!important}}.bg-brand-50{background-color:var(--color-brand-50)!important}.bg-brand-500{background-color:var(--color-brand-500)!important}.bg-red-50{background-color:var(--color-red-50)!important}.bg-slate-50{background-color:var(--color-slate-50)!important}.bg-slate-100{background-color:var(--color-slate-100)!important}.bg-slate-200{background-color:var(--color-slate-200)!important}.bg-slate-700{background-color:var(--color-slate-700)!important}.bg-transparent{background-color:#0000!important}.bg-white{background-color:var(--color-white)!important}.bg-white\/90{background-color:#ffffffe6!important}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)!important}}.object-contain{object-fit:contain!important}.object-cover{object-fit:cover!important}.p-0{padding:0!important}.p-0\.5{padding:calc(var(--spacing) * .5)!important}.p-1{padding:var(--spacing)!important}.p-2{padding:calc(var(--spacing) * 2)!important}.p-2\.5{padding:calc(var(--spacing) * 2.5)!important}.p-3{padding:calc(var(--spacing) * 3)!important}.p-4{padding:calc(var(--spacing) * 4)!important}.p-5{padding:calc(var(--spacing) * 5)!important}.p-6{padding:calc(var(--spacing) * 6)!important}.px-1{padding-inline:var(--spacing)!important}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)!important}.px-2{padding-inline:calc(var(--spacing) * 2)!important}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)!important}.px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-4{padding-inline:calc(var(--spacing) * 4)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)!important}.py-1{padding-block:var(--spacing)!important}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)!important}.py-2{padding-block:calc(var(--spacing) * 2)!important}.py-3{padding-block:calc(var(--spacing) * 3)!important}.py-6{padding-block:calc(var(--spacing) * 6)!important}.py-8{padding-block:calc(var(--spacing) * 8)!important}.py-16{padding-block:calc(var(--spacing) * 16)!important}.pt-0{padding-top:0!important}.pt-1{padding-top:var(--spacing)!important}.pt-3{padding-top:calc(var(--spacing) * 3)!important}.pt-4{padding-top:calc(var(--spacing) * 4)!important}.pt-5{padding-top:calc(var(--spacing) * 5)!important}.pr-1{padding-right:var(--spacing)!important}.pr-2{padding-right:calc(var(--spacing) * 2)!important}.pb-1{padding-bottom:var(--spacing)!important}.pb-2{padding-bottom:calc(var(--spacing) * 2)!important}.pl-1{padding-left:var(--spacing)!important}.pl-4{padding-left:calc(var(--spacing) * 4)!important}.pl-5{padding-left:calc(var(--spacing) * 5)!important}.pl-8{padding-left:calc(var(--spacing) * 8)!important}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.align-top{vertical-align:top!important}.font-mono{font-family:var(--font-mono)!important}.text-2xl{font-size:var(--text-2xl)!important;line-height:var(--tw-leading,var(--text-2xl--line-height))!important}.text-3xl{font-size:var(--text-3xl)!important;line-height:var(--tw-leading,var(--text-3xl--line-height))!important}.text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-lg{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-xl{font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important}.text-xs{font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important}.text-\[10px\]{font-size:10px!important}.text-\[11px\]{font-size:11px!important}.leading-none{--tw-leading:1!important;line-height:1!important}.leading-snug{--tw-leading:var(--leading-snug)!important;line-height:var(--leading-snug)!important}.leading-tight{--tw-leading:var(--leading-tight)!important;line-height:var(--leading-tight)!important}.font-bold{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important}.tracking-tight{--tw-tracking:var(--tracking-tight)!important;letter-spacing:var(--tracking-tight)!important}.tracking-wide{--tw-tracking:var(--tracking-wide)!important;letter-spacing:var(--tracking-wide)!important}.whitespace-nowrap{white-space:nowrap!important}.whitespace-pre-wrap{white-space:pre-wrap!important}.text-amber-600{color:var(--color-amber-600)!important}.text-amber-700{color:var(--color-amber-700)!important}.text-amber-800{color:var(--color-amber-800)!important}.text-amber-900{color:var(--color-amber-900)!important}.text-brand-700{color:var(--color-brand-700)!important}.text-brand-700\/70{color:#3730a3b3!important}@supports (color:color-mix(in lab, red, red)){.text-brand-700\/70{color:color-mix(in oklab, var(--color-brand-700) 70%, transparent)!important}}.text-emerald-700{color:var(--color-emerald-700)!important}.text-red-600{color:var(--color-red-600)!important}.text-red-700{color:var(--color-red-700)!important}.text-red-800{color:var(--color-red-800)!important}.text-slate-400{color:var(--color-slate-400)!important}.text-slate-500{color:var(--color-slate-500)!important}.text-slate-600{color:var(--color-slate-600)!important}.text-slate-700{color:var(--color-slate-700)!important}.text-slate-800{color:var(--color-slate-800)!important}.text-slate-900{color:var(--color-slate-900)!important}.text-white{color:var(--color-white)!important}.uppercase{text-transform:uppercase!important}.italic{font-style:italic!important}.tabular-nums{--tw-numeric-spacing:tabular-nums!important;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)!important}.line-through{text-decoration-line:line-through!important}.underline{text-decoration-line:underline!important}.accent-brand-600{accent-color:var(--color-brand-600)!important}.opacity-70{opacity:.7!important}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring-brand-500{--tw-ring-color:var(--color-brand-500)!important}.outline{outline-style:var(--tw-outline-style)!important;outline-width:1px!important}.outline-2{outline-style:var(--tw-outline-style)!important;outline-width:2px!important}.outline-offset-4{outline-offset:4px!important}.outline-brand-500{outline-color:var(--color-brand-500)!important}.blur{--tw-blur:blur(8px)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.grayscale{--tw-grayscale:grayscale(100%)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-\[filter\]{transition-property:filter!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.ease-out{--tw-ease:var(--ease-out)!important;transition-timing-function:var(--ease-out)!important}.outline-dashed{--tw-outline-style:dashed!important;outline-style:dashed!important}.outline-none{--tw-outline-style:none!important;outline-style:none!important}.select-none{-webkit-user-select:none!important;user-select:none!important}@media (hover:hover){.group-hover\:opacity-80:is(:where(.group):hover *){opacity:.8!important}}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)!important}.last\:border-0:last-child{border-style:var(--tw-border-style)!important;border-width:0!important}@media (hover:hover){.hover\:border-brand-500:hover{border-color:var(--color-brand-500)!important}.hover\:border-slate-400:hover{border-color:var(--color-slate-400)!important}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)!important}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)!important}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)!important}.hover\:text-slate-600:hover{color:var(--color-slate-600)!important}.hover\:text-slate-700:hover{color:var(--color-slate-700)!important}.hover\:text-slate-900:hover{color:var(--color-slate-900)!important}.hover\:underline:hover{text-decoration-line:underline!important}.hover\:brightness-95:hover{--tw-brightness:brightness(95%)!important;filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)!important}.focus\:outline-none:focus{--tw-outline-style:none!important;outline-style:none!important}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.focus-visible\:ring-brand-500:focus-visible{--tw-ring-color:var(--color-brand-500)!important}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style)!important;outline-width:2px!important}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px!important}.focus-visible\:outline-blue-600:focus-visible{outline-color:var(--color-blue-600)!important}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none!important;outline-style:none!important}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed!important}.disabled\:opacity-50:disabled{opacity:.5!important}.disabled\:opacity-80:disabled{opacity:.8!important}.aria-\[checked\=true\]\:border-slate-900[aria-checked=true]{border-color:var(--color-slate-900)!important}.aria-\[checked\=true\]\:border-transparent[aria-checked=true]{border-color:#0000!important}.aria-\[checked\=true\]\:bg-slate-900[aria-checked=true]{background-color:var(--color-slate-900)!important}.aria-\[checked\=true\]\:text-white[aria-checked=true]{color:var(--color-white)!important}.aria-\[current\=page\]\:bg-slate-200[aria-current=page]{background-color:var(--color-slate-200)!important}.aria-\[current\=page\]\:text-slate-900[aria-current=page]{color:var(--color-slate-900)!important}.aria-\[pressed\=true\]\:ring-2[aria-pressed=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.aria-\[pressed\=true\]\:ring-slate-900[aria-pressed=true]{--tw-ring-color:var(--color-slate-900)!important}.aria-\[selected\=true\]\:bg-white[aria-selected=true]{background-color:var(--color-white)!important}.aria-\[selected\=true\]\:text-slate-900[aria-selected=true]{color:var(--color-slate-900)!important}.aria-\[selected\=true\]\:shadow-sm[aria-selected=true]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.data-\[state\=active\]\:border-b-2[data-state=active]{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:2px!important}.data-\[state\=active\]\:border-brand-600[data-state=active]{border-color:var(--color-brand-600)!important}.data-\[state\=active\]\:bg-white[data-state=active]{background-color:var(--color-white)!important}.data-\[state\=active\]\:text-brand-700[data-state=active]{color:var(--color-brand-700)!important}.data-\[state\=active\]\:text-slate-900[data-state=active]{color:var(--color-slate-900)!important}.data-\[state\=active\]\:shadow-\[inset_2px_0_0_0_var\(--color-brand-500\)\,0_1px_2px_rgba\(27\,26\,23\,0\.08\)\][data-state=active]{--tw-shadow:inset 2px 0 0 0 var(--tw-shadow-color,var(--color-brand-500)), 0 1px 2px var(--tw-shadow-color,#1b1a1714)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}@media (min-width:40rem){.sm\:block{display:block!important}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}}@media (min-width:48rem){.md\:sticky{position:sticky!important}.md\:top-0{top:0!important}.md\:col-span-3{grid-column:span 3/span 3!important}.md\:col-span-4{grid-column:span 4/span 4!important}.md\:block{display:block!important}.md\:grid{display:grid!important}.md\:h-screen{height:100vh!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.md\:grid-cols-\[1fr_110px\]{grid-template-columns:1fr 110px!important}.md\:grid-cols-\[1fr_130px_90px_110px_auto\]{grid-template-columns:1fr 130px 90px 110px auto!important}.md\:grid-cols-\[1fr_140px_1fr_150px\]{grid-template-columns:1fr 140px 1fr 150px!important}.md\:grid-cols-\[1fr_160px_auto_auto\]{grid-template-columns:1fr 160px auto auto!important}.md\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr!important}.md\:grid-cols-\[2fr_1fr_1\.5fr\]{grid-template-columns:2fr 1fr 1.5fr!important}.md\:grid-cols-\[248px_1fr\]{grid-template-columns:248px 1fr!important}.md\:grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr!important}.md\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr!important}.md\:grid-cols-\[300px_1fr\]{grid-template-columns:300px 1fr!important}.md\:grid-cols-\[340px_1fr\]{grid-template-columns:340px 1fr!important}.md\:grid-cols-\[auto_auto_1fr_1fr\]{grid-template-columns:auto auto 1fr 1fr!important}.md\:flex-col{flex-direction:column!important}.md\:items-end{align-items:flex-end!important}.md\:items-stretch{align-items:stretch!important}.md\:overflow-visible{overflow:visible!important}.md\:border-r{border-right-style:var(--tw-border-style)!important;border-right-width:1px!important}.md\:border-b-0{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.md\:p-8{padding:calc(var(--spacing) * 8)!important}.md\:px-8{padding-inline:calc(var(--spacing) * 8)!important}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2!important}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.lg\:grid-cols-\[minmax\(0\,1fr\)_300px\]{grid-template-columns:minmax(0,1fr) 300px!important}}}}.xicms-admin,.xicms-admin *,.xicms-admin :before,.xicms-admin :after{box-sizing:border-box}.xicms-admin{-webkit-font-smoothing:antialiased;--color-white:#fff;--color-slate-50:#faf9f6;--color-slate-100:#f3f1ec;--color-slate-200:#e5e2da;--color-slate-300:#d5d1c7;--color-slate-400:#a8a399;--color-slate-500:#6e6a62;--color-slate-600:#57534b;--color-slate-700:#403c36;--color-slate-800:#2b2925;--color-slate-900:#1b1a17;--color-slate-950:#12110f;--color-brand:var(--xicms-primary,#4f46e5);--color-brand-500:var(--xicms-primary,#4f46e5);--color-brand-600:var(--xicms-primary,#4f46e5);--color-brand-700:var(--xicms-primary,#4f46e5);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@supports (color:color-mix(in lab, red, red)){.xicms-admin{--color-brand-700:color-mix(in srgb, var(--xicms-primary,#4f46e5) 78%, #1b1a17)}}.xicms-admin{--color-brand-50:var(--xicms-primary,#4f46e5)}@supports (color:color-mix(in lab, red, red)){.xicms-admin{--color-brand-50:color-mix(in srgb, var(--xicms-primary,#4f46e5) 10%, #fff)}}.xicms-admin{--admin-canvas:#f6f5f2;--admin-sidebar:#f0eee9;--color-background-body:var(--color-white);--color-background-surface:var(--color-white);--color-background-card:var(--color-white);--color-background-muted:var(--color-slate-100);--color-text-primary:var(--color-slate-900);--color-text-secondary:var(--color-slate-500);--color-border:var(--color-slate-200);--color-accent:var(--color-brand-500);--color-on-accent:var(--xicms-on-primary,#fff);--color-error:#dc2626;color-scheme:light;color:var(--color-text-primary);background:var(--admin-canvas)}.xicms-admin h1,.xicms-admin h2,.xicms-admin h3,.xicms-admin p,.xicms-admin figure{margin:0}.xicms-admin button{font:inherit;cursor:pointer}.xicms-admin input,.xicms-admin textarea,.xicms-admin select{font:inherit;color:inherit}.xicms-admin .ProseMirror{outline:none;min-height:8rem}.xicms-admin .ProseMirror p{margin:0 0 .6rem}.xicms-admin .ProseMirror:focus{outline:none}.xicms-admin .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0 0 .6rem}.xicms-admin .ProseMirror th,.xicms-admin .ProseMirror td{vertical-align:top;border:1px solid #cbd5e1;min-width:3rem;padding:.35rem .5rem}.xicms-admin .ProseMirror th{text-align:left;background:#f1f5f9;font-weight:600}.xicms-admin .ProseMirror th p,.xicms-admin .ProseMirror td p{margin:0}.xicms-admin .ProseMirror .selectedCell{background:var(--color-accent,#4f46e5)}@supports (color:color-mix(in lab, red, red)){.xicms-admin .ProseMirror .selectedCell{background:color-mix(in srgb, var(--color-accent,#4f46e5) 12%, transparent)}}.xicms-admin .xicms-admin-btn:focus-visible,.xicms-admin .xicms-admin-native:focus-visible{outline:2px solid var(--color-accent,#4f46e5);outline-offset:2px}.xicms-admin .xicms-richtext-editor:focus{box-shadow:0 0 0 2px var(--color-accent,#4f46e5)}@media (prefers-reduced-motion:reduce){.xicms-admin *,.xicms-admin :before,.xicms-admin :after,.xicms-ve *,.xicms-ve :before,.xicms-ve :after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.xicms-admin__midden,.xicms-admin__raster{min-height:100vh}.xicms-admin--ingebed .xicms-admin__midden{min-height:50vh}.xicms-admin--ingebed .xicms-admin__raster{min-height:60vh}.xicms-admin--ingebed .xicms-admin__lijst{flex:100%;min-width:0}.xicms-admin--ingebed{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.xicms-slash{z-index:10020;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:10px;width:270px;max-height:320px;padding:4px;font:400 14px/1.35 system-ui,-apple-system,Segoe UI,sans-serif;position:fixed;overflow-y:auto;box-shadow:0 12px 32px #0f172a29}.xicms-slash__item{text-align:left;cursor:pointer;width:100%;color:inherit;font:inherit;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;padding:6px 8px;display:flex}.xicms-slash__item[aria-selected=true]{background:#f1f5f9}.xicms-slash__icoon{background:#fff;border:1px solid #e2e8f0;border-radius:6px;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:12px;font-weight:600;display:grid}.xicms-slash__titel{font-weight:500;display:block}.xicms-slash__uitleg{color:#64748b;font-size:12px;display:block}.xicms-slash__leeg{color:#64748b;margin:0;padding:8px;font-size:13px}.xicms-bubbel{z-index:10020;background:#0f172a;border-radius:9px;gap:2px;padding:3px;display:flex;box-shadow:0 8px 24px #0f172a40}.xicms-bubbel button{color:#fff;cursor:pointer;background:0 0;border:0;border-radius:6px;min-width:30px;height:30px;padding:0 8px;font:600 13px/1 system-ui,-apple-system,Segoe UI,sans-serif}.xicms-bubbel button:hover,.xicms-bubbel button[aria-pressed=true]{background:#ffffff29}.xicms-bubbel button:focus-visible{outline-offset:1px;outline:2px solid #fff}.xicms-admin .xicms-admin-spinner{border:2px solid;border-right-color:#0000;border-radius:999px;width:.95em;height:.95em;animation:.7s linear infinite xicms-admin-draai}@keyframes xicms-admin-draai{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.xicms-admin .xicms-admin-spinner{animation-duration:2s}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Business, BusinessException } from "../schema/business.js";
|
|
2
|
+
import { type HoursRow } from "../blocks/builtins/lib/openingHours.js";
|
|
3
|
+
/**
|
|
4
|
+
* Pure hulpjes rond het bedrijfsprofiel (8.13). Geen React, geen Firestore — zodat de server
|
|
5
|
+
* (JSON-LD), de blokken (contact, openingstijden) en de tests dezelfde regels gebruiken.
|
|
6
|
+
*/
|
|
7
|
+
/** "2026-12-25" voor een Date, in lokale tijd (niet UTC: om 00:30 is het in NL al de volgende dag). */
|
|
8
|
+
export declare function isoDatum(d: Date): string;
|
|
9
|
+
/** De afwijking die op deze dag geldt (een losse dag of een periode), of undefined. */
|
|
10
|
+
export declare function afwijkingOp(datum: Date, afwijkingen: BusinessException[] | undefined): BusinessException | undefined;
|
|
11
|
+
/** Afwijkingen die vandaag of binnen `dagen` beginnen, of nu lopen — gesorteerd. */
|
|
12
|
+
export declare function komendeAfwijkingen(afwijkingen: BusinessException[] | undefined, nu?: Date, dagen?: number): BusinessException[];
|
|
13
|
+
/** "do 25 december" of "25 december – 2 januari". */
|
|
14
|
+
export declare function afwijkingDatumTekst(a: BusinessException): string;
|
|
15
|
+
/**
|
|
16
|
+
* Nu open, met de afwijkingen erbij: op een gesloten feestdag is het "gesloten", ook al zegt het
|
|
17
|
+
* gewone rooster "maandag 09:00 – 17:00". null = niet te bepalen.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isOpenNuMetAfwijkingen(rijen: HoursRow[], afwijkingen: BusinessException[] | undefined, nu?: Date): boolean | null;
|
|
20
|
+
/** Adres als regels: ["Tuinderslaan 12", "3991 AB Houten"]. */
|
|
21
|
+
export declare function adresRegels(b: Business | undefined): string[];
|
|
22
|
+
/** Een tel:-link van een telefoonnummer zoals de klant het typt ("030 – 123 45 67"). */
|
|
23
|
+
export declare function telLink(nummer: string | undefined): string | undefined;
|
|
24
|
+
/** Route plannen naar het adres (Google Maps werkt op elk toestel, ook zonder app). */
|
|
25
|
+
export declare function routeLink(b: Business | undefined): string | undefined;
|
|
26
|
+
/** Heeft het profiel genoeg om iets mee te doen? */
|
|
27
|
+
export declare function heeftProfiel(b: Business | undefined): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* LocalBusiness-JSON-LD uit het profiel, of null als er (nog) niets in staat. Zelfde `@id` als de
|
|
30
|
+
* contact- en openingstijdenblokken (`#business`), zodat Google alles samenvoegt tot één bedrijf.
|
|
31
|
+
*/
|
|
32
|
+
export declare function bedrijfJsonLd(b: Business | undefined, site: {
|
|
33
|
+
name?: string;
|
|
34
|
+
domain?: string;
|
|
35
|
+
logo?: string;
|
|
36
|
+
}): Record<string, unknown> | null;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { isOpenNow, openingHoursSpecJsonLd, parseTimeRange } from "../blocks/builtins/lib/openingHours.js";
|
|
2
|
+
function isoDatum(d) {
|
|
3
|
+
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
4
|
+
}
|
|
5
|
+
function afwijkingOp(datum, afwijkingen) {
|
|
6
|
+
const dag = isoDatum(datum);
|
|
7
|
+
return (afwijkingen ?? []).find((a) => a.until ? a.date <= dag && dag <= a.until : a.date === dag);
|
|
8
|
+
}
|
|
9
|
+
function komendeAfwijkingen(afwijkingen, nu = /* @__PURE__ */ new Date(), dagen = 21) {
|
|
10
|
+
const van = isoDatum(nu);
|
|
11
|
+
const grens = new Date(nu);
|
|
12
|
+
grens.setDate(grens.getDate() + dagen);
|
|
13
|
+
const tot = isoDatum(grens);
|
|
14
|
+
return (afwijkingen ?? []).filter((a) => (a.until ?? a.date) >= van && a.date <= tot).sort((a, b) => a.date.localeCompare(b.date));
|
|
15
|
+
}
|
|
16
|
+
function afwijkingDatumTekst(a) {
|
|
17
|
+
const fmt = (iso, metDag) => {
|
|
18
|
+
const [j, m, d] = iso.split("-").map(Number);
|
|
19
|
+
const datum = new Date(j, m - 1, d);
|
|
20
|
+
return datum.toLocaleDateString("nl-NL", metDag ? { weekday: "short", day: "numeric", month: "long" } : { day: "numeric", month: "long" });
|
|
21
|
+
};
|
|
22
|
+
return a.until && a.until !== a.date ? `${fmt(a.date, false)} \u2013 ${fmt(a.until, false)}` : fmt(a.date, true);
|
|
23
|
+
}
|
|
24
|
+
function isOpenNuMetAfwijkingen(rijen, afwijkingen, nu = /* @__PURE__ */ new Date()) {
|
|
25
|
+
const a = afwijkingOp(nu, afwijkingen);
|
|
26
|
+
if (a) {
|
|
27
|
+
const bereik = parseTimeRange(a.hours);
|
|
28
|
+
if (!bereik) return /gesloten/i.test(a.hours) ? false : isOpenNow(rijen, nu);
|
|
29
|
+
const min = nu.getHours() * 60 + nu.getMinutes();
|
|
30
|
+
return min >= bereik.open && min < bereik.close;
|
|
31
|
+
}
|
|
32
|
+
return isOpenNow(rijen, nu);
|
|
33
|
+
}
|
|
34
|
+
function adresRegels(b) {
|
|
35
|
+
const a = b?.address;
|
|
36
|
+
if (!a) return [];
|
|
37
|
+
const regel2 = [a.postalCode, a.city].filter(Boolean).join(" ");
|
|
38
|
+
return [a.street, regel2, a.country && a.country.toLowerCase() !== "nederland" ? a.country : void 0].filter((x) => Boolean(x?.trim()));
|
|
39
|
+
}
|
|
40
|
+
function telLink(nummer) {
|
|
41
|
+
if (!nummer?.trim()) return void 0;
|
|
42
|
+
const kaal = nummer.replace(/[^\d+]/g, "");
|
|
43
|
+
return kaal ? `tel:${kaal.startsWith("0") && !kaal.startsWith("00") ? `+31${kaal.slice(1)}` : kaal}` : void 0;
|
|
44
|
+
}
|
|
45
|
+
function routeLink(b) {
|
|
46
|
+
if (b?.geo) return `https://www.google.com/maps/dir/?api=1&destination=${b.geo.lat},${b.geo.lng}`;
|
|
47
|
+
const regels = adresRegels(b);
|
|
48
|
+
return regels.length ? `https://www.google.com/maps/dir/?api=1&destination=${encodeURIComponent(regels.join(", "))}` : void 0;
|
|
49
|
+
}
|
|
50
|
+
function heeftProfiel(b) {
|
|
51
|
+
return Boolean(b && (b.phone || b.email || b.address?.street || b.address?.city || (b.hours?.length ?? 0) > 0));
|
|
52
|
+
}
|
|
53
|
+
function bedrijfJsonLd(b, site) {
|
|
54
|
+
if (!heeftProfiel(b) || !b) return null;
|
|
55
|
+
const base = site.domain ? `https://${site.domain.replace(/^https?:\/\//, "").replace(/\/+$/, "")}` : void 0;
|
|
56
|
+
const out = {
|
|
57
|
+
"@context": "https://schema.org",
|
|
58
|
+
"@type": b.type || "LocalBusiness",
|
|
59
|
+
"@id": "#business",
|
|
60
|
+
name: b.name || site.name
|
|
61
|
+
};
|
|
62
|
+
if (b.description) out.description = b.description;
|
|
63
|
+
if (base) out.url = base;
|
|
64
|
+
if (site.logo) out.image = site.logo;
|
|
65
|
+
if (b.phone) out.telephone = b.phone;
|
|
66
|
+
if (b.email) out.email = b.email;
|
|
67
|
+
if (b.priceRange) out.priceRange = b.priceRange;
|
|
68
|
+
const a = b.address;
|
|
69
|
+
if (a && (a.street || a.city || a.postalCode)) {
|
|
70
|
+
out.address = {
|
|
71
|
+
"@type": "PostalAddress",
|
|
72
|
+
...a.street ? { streetAddress: a.street } : {},
|
|
73
|
+
...a.postalCode ? { postalCode: a.postalCode } : {},
|
|
74
|
+
...a.city ? { addressLocality: a.city } : {},
|
|
75
|
+
addressCountry: a.country?.trim() || "NL"
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (b.geo) out.geo = { "@type": "GeoCoordinates", latitude: b.geo.lat, longitude: b.geo.lng };
|
|
79
|
+
const spec = openingHoursSpecJsonLd(b.hours ?? []);
|
|
80
|
+
if (spec.length) out.openingHoursSpecification = spec;
|
|
81
|
+
const vandaag = isoDatum(/* @__PURE__ */ new Date());
|
|
82
|
+
const speciaal = (b.exceptions ?? []).filter((x) => (x.until ?? x.date) >= vandaag).map((x) => {
|
|
83
|
+
const bereik = parseTimeRange(x.hours);
|
|
84
|
+
const fmt = (m) => `${String(Math.floor(m / 60) % 24).padStart(2, "0")}:${String(m % 60).padStart(2, "0")}`;
|
|
85
|
+
return {
|
|
86
|
+
"@type": "OpeningHoursSpecification",
|
|
87
|
+
validFrom: x.date,
|
|
88
|
+
validThrough: x.until ?? x.date,
|
|
89
|
+
opens: bereik ? fmt(bereik.open) : "00:00",
|
|
90
|
+
closes: bereik ? fmt(bereik.close) : "00:00"
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
if (speciaal.length) out.specialOpeningHoursSpecification = speciaal;
|
|
94
|
+
const sameAs = (b.sameAs ?? []).filter((u) => /^https?:\/\//.test(u));
|
|
95
|
+
if (sameAs.length) out.sameAs = sameAs;
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
adresRegels,
|
|
100
|
+
afwijkingDatumTekst,
|
|
101
|
+
afwijkingOp,
|
|
102
|
+
bedrijfJsonLd,
|
|
103
|
+
heeftProfiel,
|
|
104
|
+
isOpenNuMetAfwijkingen,
|
|
105
|
+
isoDatum,
|
|
106
|
+
komendeAfwijkingen,
|
|
107
|
+
routeLink,
|
|
108
|
+
telLink
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=bedrijf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/bedrijf/bedrijf.ts"],"sourcesContent":["import type { Business, BusinessException } from \"../schema/business\";\nimport { isOpenNow, openingHoursSpecJsonLd, parseTimeRange, type HoursRow } from \"../blocks/builtins/lib/openingHours\";\n\n/**\n * Pure hulpjes rond het bedrijfsprofiel (8.13). Geen React, geen Firestore — zodat de server\n * (JSON-LD), de blokken (contact, openingstijden) en de tests dezelfde regels gebruiken.\n */\n\n/** \"2026-12-25\" voor een Date, in lokale tijd (niet UTC: om 00:30 is het in NL al de volgende dag). */\nexport function isoDatum(d: Date): string {\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}-${String(d.getDate()).padStart(2, \"0\")}`;\n}\n\n/** De afwijking die op deze dag geldt (een losse dag of een periode), of undefined. */\nexport function afwijkingOp(datum: Date, afwijkingen: BusinessException[] | undefined): BusinessException | undefined {\n const dag = isoDatum(datum);\n return (afwijkingen ?? []).find((a) => (a.until ? a.date <= dag && dag <= a.until : a.date === dag));\n}\n\n/** Afwijkingen die vandaag of binnen `dagen` beginnen, of nu lopen — gesorteerd. */\nexport function komendeAfwijkingen(afwijkingen: BusinessException[] | undefined, nu = new Date(), dagen = 21): BusinessException[] {\n const van = isoDatum(nu);\n const grens = new Date(nu);\n grens.setDate(grens.getDate() + dagen);\n const tot = isoDatum(grens);\n return (afwijkingen ?? [])\n .filter((a) => (a.until ?? a.date) >= van && a.date <= tot)\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\n/** \"do 25 december\" of \"25 december – 2 januari\". */\nexport function afwijkingDatumTekst(a: BusinessException): string {\n const fmt = (iso: string, metDag: boolean) => {\n const [j, m, d] = iso.split(\"-\").map(Number);\n const datum = new Date(j, m - 1, d);\n return datum.toLocaleDateString(\"nl-NL\", metDag ? { weekday: \"short\", day: \"numeric\", month: \"long\" } : { day: \"numeric\", month: \"long\" });\n };\n return a.until && a.until !== a.date ? `${fmt(a.date, false)} – ${fmt(a.until, false)}` : fmt(a.date, true);\n}\n\n/**\n * Nu open, met de afwijkingen erbij: op een gesloten feestdag is het \"gesloten\", ook al zegt het\n * gewone rooster \"maandag 09:00 – 17:00\". null = niet te bepalen.\n */\nexport function isOpenNuMetAfwijkingen(rijen: HoursRow[], afwijkingen: BusinessException[] | undefined, nu = new Date()): boolean | null {\n const a = afwijkingOp(nu, afwijkingen);\n if (a) {\n const bereik = parseTimeRange(a.hours);\n if (!bereik) return /gesloten/i.test(a.hours) ? false : isOpenNow(rijen, nu);\n const min = nu.getHours() * 60 + nu.getMinutes();\n return min >= bereik.open && min < bereik.close;\n }\n return isOpenNow(rijen, nu);\n}\n\n/** Adres als regels: [\"Tuinderslaan 12\", \"3991 AB Houten\"]. */\nexport function adresRegels(b: Business | undefined): string[] {\n const a = b?.address;\n if (!a) return [];\n const regel2 = [a.postalCode, a.city].filter(Boolean).join(\" \");\n return [a.street, regel2, a.country && a.country.toLowerCase() !== \"nederland\" ? a.country : undefined].filter((x): x is string => Boolean(x?.trim()));\n}\n\n/** Een tel:-link van een telefoonnummer zoals de klant het typt (\"030 – 123 45 67\"). */\nexport function telLink(nummer: string | undefined): string | undefined {\n if (!nummer?.trim()) return undefined;\n const kaal = nummer.replace(/[^\\d+]/g, \"\");\n return kaal ? `tel:${kaal.startsWith(\"0\") && !kaal.startsWith(\"00\") ? `+31${kaal.slice(1)}` : kaal}` : undefined;\n}\n\n/** Route plannen naar het adres (Google Maps werkt op elk toestel, ook zonder app). */\nexport function routeLink(b: Business | undefined): string | undefined {\n if (b?.geo) return `https://www.google.com/maps/dir/?api=1&destination=${b.geo.lat},${b.geo.lng}`;\n const regels = adresRegels(b);\n return regels.length ? `https://www.google.com/maps/dir/?api=1&destination=${encodeURIComponent(regels.join(\", \"))}` : undefined;\n}\n\n/** Heeft het profiel genoeg om iets mee te doen? */\nexport function heeftProfiel(b: Business | undefined): boolean {\n return Boolean(b && (b.phone || b.email || b.address?.street || b.address?.city || (b.hours?.length ?? 0) > 0));\n}\n\n/**\n * LocalBusiness-JSON-LD uit het profiel, of null als er (nog) niets in staat. Zelfde `@id` als de\n * contact- en openingstijdenblokken (`#business`), zodat Google alles samenvoegt tot één bedrijf.\n */\nexport function bedrijfJsonLd(\n b: Business | undefined,\n site: { name?: string; domain?: string; logo?: string },\n): Record<string, unknown> | null {\n if (!heeftProfiel(b) || !b) return null;\n const base = site.domain ? `https://${site.domain.replace(/^https?:\\/\\//, \"\").replace(/\\/+$/, \"\")}` : undefined;\n const out: Record<string, unknown> = {\n \"@context\": \"https://schema.org\",\n \"@type\": b.type || \"LocalBusiness\",\n \"@id\": \"#business\",\n name: b.name || site.name,\n };\n if (b.description) out.description = b.description;\n if (base) out.url = base;\n if (site.logo) out.image = site.logo;\n if (b.phone) out.telephone = b.phone;\n if (b.email) out.email = b.email;\n if (b.priceRange) out.priceRange = b.priceRange;\n const a = b.address;\n if (a && (a.street || a.city || a.postalCode)) {\n out.address = {\n \"@type\": \"PostalAddress\",\n ...(a.street ? { streetAddress: a.street } : {}),\n ...(a.postalCode ? { postalCode: a.postalCode } : {}),\n ...(a.city ? { addressLocality: a.city } : {}),\n addressCountry: a.country?.trim() || \"NL\",\n };\n }\n if (b.geo) out.geo = { \"@type\": \"GeoCoordinates\", latitude: b.geo.lat, longitude: b.geo.lng };\n const spec = openingHoursSpecJsonLd(b.hours ?? []);\n if (spec.length) out.openingHoursSpecification = spec;\n // Afwijkende dagen (feestdagen, vakantie) — Google toont ze als \"aangepaste openingstijden\".\n const vandaag = isoDatum(new Date());\n const speciaal = (b.exceptions ?? [])\n .filter((x) => (x.until ?? x.date) >= vandaag)\n .map((x) => {\n const bereik = parseTimeRange(x.hours);\n const fmt = (m: number) => `${String(Math.floor(m / 60) % 24).padStart(2, \"0\")}:${String(m % 60).padStart(2, \"0\")}`;\n return {\n \"@type\": \"OpeningHoursSpecification\",\n validFrom: x.date,\n validThrough: x.until ?? x.date,\n opens: bereik ? fmt(bereik.open) : \"00:00\",\n closes: bereik ? fmt(bereik.close) : \"00:00\",\n };\n });\n if (speciaal.length) out.specialOpeningHoursSpecification = speciaal;\n const sameAs = (b.sameAs ?? []).filter((u) => /^https?:\\/\\//.test(u));\n if (sameAs.length) out.sameAs = sameAs;\n return out;\n}\n"],"mappings":"AACA,SAAS,WAAW,wBAAwB,sBAAqC;AAQ1E,SAAS,SAAS,GAAiB;AACxC,SAAO,GAAG,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAChH;AAGO,SAAS,YAAY,OAAa,aAA6E;AACpH,QAAM,MAAM,SAAS,KAAK;AAC1B,UAAQ,eAAe,CAAC,GAAG,KAAK,CAAC,MAAO,EAAE,QAAQ,EAAE,QAAQ,OAAO,OAAO,EAAE,QAAQ,EAAE,SAAS,GAAI;AACrG;AAGO,SAAS,mBAAmB,aAA8C,KAAK,oBAAI,KAAK,GAAG,QAAQ,IAAyB;AACjI,QAAM,MAAM,SAAS,EAAE;AACvB,QAAM,QAAQ,IAAI,KAAK,EAAE;AACzB,QAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK;AACrC,QAAM,MAAM,SAAS,KAAK;AAC1B,UAAQ,eAAe,CAAC,GACrB,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE,QAAQ,GAAG,EACzD,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAChD;AAGO,SAAS,oBAAoB,GAA8B;AAChE,QAAM,MAAM,CAAC,KAAa,WAAoB;AAC5C,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM;AAC3C,UAAM,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC;AAClC,WAAO,MAAM,mBAAmB,SAAS,SAAS,EAAE,SAAS,SAAS,KAAK,WAAW,OAAO,OAAO,IAAI,EAAE,KAAK,WAAW,OAAO,OAAO,CAAC;AAAA,EAC3I;AACA,SAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,KAAK,CAAC,WAAM,IAAI,EAAE,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI;AAC5G;AAMO,SAAS,uBAAuB,OAAmB,aAA8C,KAAK,oBAAI,KAAK,GAAmB;AACvI,QAAM,IAAI,YAAY,IAAI,WAAW;AACrC,MAAI,GAAG;AACL,UAAM,SAAS,eAAe,EAAE,KAAK;AACrC,QAAI,CAAC,OAAQ,QAAO,YAAY,KAAK,EAAE,KAAK,IAAI,QAAQ,UAAU,OAAO,EAAE;AAC3E,UAAM,MAAM,GAAG,SAAS,IAAI,KAAK,GAAG,WAAW;AAC/C,WAAO,OAAO,OAAO,QAAQ,MAAM,OAAO;AAAA,EAC5C;AACA,SAAO,UAAU,OAAO,EAAE;AAC5B;AAGO,SAAS,YAAY,GAAmC;AAC7D,QAAM,IAAI,GAAG;AACb,MAAI,CAAC,EAAG,QAAO,CAAC;AAChB,QAAM,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC9D,SAAO,CAAC,EAAE,QAAQ,QAAQ,EAAE,WAAW,EAAE,QAAQ,YAAY,MAAM,cAAc,EAAE,UAAU,MAAS,EAAE,OAAO,CAAC,MAAmB,QAAQ,GAAG,KAAK,CAAC,CAAC;AACvJ;AAGO,SAAS,QAAQ,QAAgD;AACtE,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO;AAC5B,QAAM,OAAO,OAAO,QAAQ,WAAW,EAAE;AACzC,SAAO,OAAO,OAAO,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK;AACzG;AAGO,SAAS,UAAU,GAA6C;AACrE,MAAI,GAAG,IAAK,QAAO,sDAAsD,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG;AAC/F,QAAM,SAAS,YAAY,CAAC;AAC5B,SAAO,OAAO,SAAS,sDAAsD,mBAAmB,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK;AACzH;AAGO,SAAS,aAAa,GAAkC;AAC7D,SAAO,QAAQ,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,UAAU,EAAE,SAAS,SAAS,EAAE,OAAO,UAAU,KAAK,EAAE;AAChH;AAMO,SAAS,cACd,GACA,MACgC;AAChC,MAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAG,QAAO;AACnC,QAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO,QAAQ,gBAAgB,EAAE,EAAE,QAAQ,QAAQ,EAAE,CAAC,KAAK;AACtG,QAAM,MAA+B;AAAA,IACnC,YAAY;AAAA,IACZ,SAAS,EAAE,QAAQ;AAAA,IACnB,OAAO;AAAA,IACP,MAAM,EAAE,QAAQ,KAAK;AAAA,EACvB;AACA,MAAI,EAAE,YAAa,KAAI,cAAc,EAAE;AACvC,MAAI,KAAM,KAAI,MAAM;AACpB,MAAI,KAAK,KAAM,KAAI,QAAQ,KAAK;AAChC,MAAI,EAAE,MAAO,KAAI,YAAY,EAAE;AAC/B,MAAI,EAAE,MAAO,KAAI,QAAQ,EAAE;AAC3B,MAAI,EAAE,WAAY,KAAI,aAAa,EAAE;AACrC,QAAM,IAAI,EAAE;AACZ,MAAI,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa;AAC7C,QAAI,UAAU;AAAA,MACZ,SAAS;AAAA,MACT,GAAI,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,IAAI,CAAC;AAAA,MAC9C,GAAI,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,IAAI,CAAC;AAAA,MACnD,GAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAAA,MAC5C,gBAAgB,EAAE,SAAS,KAAK,KAAK;AAAA,IACvC;AAAA,EACF;AACA,MAAI,EAAE,IAAK,KAAI,MAAM,EAAE,SAAS,kBAAkB,UAAU,EAAE,IAAI,KAAK,WAAW,EAAE,IAAI,IAAI;AAC5F,QAAM,OAAO,uBAAuB,EAAE,SAAS,CAAC,CAAC;AACjD,MAAI,KAAK,OAAQ,KAAI,4BAA4B;AAEjD,QAAM,UAAU,SAAS,oBAAI,KAAK,CAAC;AACnC,QAAM,YAAY,EAAE,cAAc,CAAC,GAChC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,OAAO,EAC5C,IAAI,CAAC,MAAM;AACV,UAAM,SAAS,eAAe,EAAE,KAAK;AACrC,UAAM,MAAM,CAAC,MAAc,GAAG,OAAO,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AACjH,WAAO;AAAA,MACL,SAAS;AAAA,MACT,WAAW,EAAE;AAAA,MACb,cAAc,EAAE,SAAS,EAAE;AAAA,MAC3B,OAAO,SAAS,IAAI,OAAO,IAAI,IAAI;AAAA,MACnC,QAAQ,SAAS,IAAI,OAAO,KAAK,IAAI;AAAA,IACvC;AAAA,EACF,CAAC;AACH,MAAI,SAAS,OAAQ,KAAI,mCAAmC;AAC5D,QAAM,UAAU,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,eAAe,KAAK,CAAC,CAAC;AACpE,MAAI,OAAO,OAAQ,KAAI,SAAS;AAChC,SAAO;AACT;","names":[]}
|
|
@@ -24,9 +24,19 @@ function BlockRenderer({
|
|
|
24
24
|
"data-xicms-animate": attrs.dataAnimate,
|
|
25
25
|
"data-xicms-block": b._key,
|
|
26
26
|
"data-xicms-block-type": b._type,
|
|
27
|
+
"data-xicms-block-label": mode === "preview" ? def.label : void 0,
|
|
27
28
|
children: rendered
|
|
28
29
|
}
|
|
29
|
-
) : /* @__PURE__ */ jsx(
|
|
30
|
+
) : /* @__PURE__ */ jsx(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
style: { display: "contents" },
|
|
34
|
+
"data-xicms-block": b._key,
|
|
35
|
+
"data-xicms-block-type": b._type,
|
|
36
|
+
"data-xicms-block-label": mode === "preview" ? def.label : void 0,
|
|
37
|
+
children: rendered
|
|
38
|
+
}
|
|
39
|
+
) }, b._key);
|
|
30
40
|
}) });
|
|
31
41
|
}
|
|
32
42
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/blocks/BlockRenderer.tsx"],"sourcesContent":["import { validateBlocks, type BlockRegistry } from \"./registry\";\nimport { BlockErrorBoundary } from \"./BlockErrorBoundary\";\nimport { blockStyleAttrs } from \"./blockStyle\";\nimport type { BlockStyle } from \"../schema/blocks\";\n\n/**\n * Rendert een blocks-array via de registry. Server-safe (geen \"use client\"): bruikbaar in\n * React Server Components én client. Geef de registry expliciet mee (zo werkt server-rendering);\n * client-componenten kunnen `useRegistry()` gebruiken om hem te verkrijgen.\n *\n * Elk block wordt in een `BlockErrorBoundary` gewikkeld zodat één kapot block nooit de hele\n * pagina sloopt (foolproof).\n */\nexport function BlockRenderer({\n blocks,\n registry,\n siteId,\n mode = \"view\",\n}: {\n blocks: unknown[] | undefined;\n registry: BlockRegistry;\n siteId: string;\n mode?: \"view\" | \"preview\";\n}) {\n const valid = validateBlocks(blocks, registry);\n return (\n <>\n {valid.map((b) => {\n const def = registry.get(b._type);\n if (!def) return null;\n const Render = def.Render;\n // Gedeelde blokstijl (ruimte/achtergrond/breedte/uitlijning/anker) centraal toepassen.\n const attrs = blockStyleAttrs((b as { _style?: BlockStyle })._style);\n const rendered = <Render block={b} siteId={siteId} mode={mode} />;\n // Altijd een DOM-wrapper met een stabiele block-identifier, zodat het feedback-widget\n // (en andere tooling) een onderdeel op de pagina kan aanwijzen via\n // `closest('[data-xicms-block]')`. Zonder eigen blokstijl gebruiken we `display:contents`\n // zodat de wrapper layout-neutraal is (hij traverseert wél mee in `closest()`).\n return (\n <BlockErrorBoundary key={b._key} mode={mode} type={b._type} blockKey={b._key} siteId={siteId}>\n {attrs ? (\n <div\n id={attrs.id}\n className={attrs.className}\n style={attrs.style}\n data-xicms-animate={attrs.dataAnimate}\n data-xicms-block={b._key}\n data-xicms-block-type={b._type}\n >\n {rendered}\n </div>\n ) : (\n <div
|
|
1
|
+
{"version":3,"sources":["../../src/blocks/BlockRenderer.tsx"],"sourcesContent":["import { validateBlocks, type BlockRegistry } from \"./registry\";\nimport { BlockErrorBoundary } from \"./BlockErrorBoundary\";\nimport { blockStyleAttrs } from \"./blockStyle\";\nimport type { BlockStyle } from \"../schema/blocks\";\n\n/**\n * Rendert een blocks-array via de registry. Server-safe (geen \"use client\"): bruikbaar in\n * React Server Components én client. Geef de registry expliciet mee (zo werkt server-rendering);\n * client-componenten kunnen `useRegistry()` gebruiken om hem te verkrijgen.\n *\n * Elk block wordt in een `BlockErrorBoundary` gewikkeld zodat één kapot block nooit de hele\n * pagina sloopt (foolproof).\n */\nexport function BlockRenderer({\n blocks,\n registry,\n siteId,\n mode = \"view\",\n}: {\n blocks: unknown[] | undefined;\n registry: BlockRegistry;\n siteId: string;\n mode?: \"view\" | \"preview\";\n}) {\n const valid = validateBlocks(blocks, registry);\n return (\n <>\n {valid.map((b) => {\n const def = registry.get(b._type);\n if (!def) return null;\n const Render = def.Render;\n // Gedeelde blokstijl (ruimte/achtergrond/breedte/uitlijning/anker) centraal toepassen.\n const attrs = blockStyleAttrs((b as { _style?: BlockStyle })._style);\n const rendered = <Render block={b} siteId={siteId} mode={mode} />;\n // Altijd een DOM-wrapper met een stabiele block-identifier, zodat het feedback-widget\n // (en andere tooling) een onderdeel op de pagina kan aanwijzen via\n // `closest('[data-xicms-block]')`. Zonder eigen blokstijl gebruiken we `display:contents`\n // zodat de wrapper layout-neutraal is (hij traverseert wél mee in `closest()`).\n return (\n <BlockErrorBoundary key={b._key} mode={mode} type={b._type} blockKey={b._key} siteId={siteId}>\n {attrs ? (\n <div\n id={attrs.id}\n className={attrs.className}\n style={attrs.style}\n data-xicms-animate={attrs.dataAnimate}\n data-xicms-block={b._key}\n data-xicms-block-type={b._type}\n data-xicms-block-label={mode === \"preview\" ? def.label : undefined}\n >\n {rendered}\n </div>\n ) : (\n <div\n style={{ display: \"contents\" }}\n data-xicms-block={b._key}\n data-xicms-block-type={b._type}\n data-xicms-block-label={mode === \"preview\" ? def.label : undefined}\n >\n {rendered}\n </div>\n )}\n </BlockErrorBoundary>\n );\n })}\n </>\n );\n}\n"],"mappings":"AA0BI,mBAOqB,WAPrB;AA1BJ,SAAS,sBAA0C;AACnD,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAWzB,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,GAKG;AACD,QAAM,QAAQ,eAAe,QAAQ,QAAQ;AAC7C,SACE,gCACG,gBAAM,IAAI,CAAC,MAAM;AAChB,UAAM,MAAM,SAAS,IAAI,EAAE,KAAK;AAChC,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,SAAS,IAAI;AAEnB,UAAM,QAAQ,gBAAiB,EAA8B,MAAM;AACnE,UAAM,WAAW,oBAAC,UAAO,OAAO,GAAG,QAAgB,MAAY;AAK/D,WACE,oBAAC,sBAAgC,MAAY,MAAM,EAAE,OAAO,UAAU,EAAE,MAAM,QAC3E,kBACC;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,MAAM;AAAA,QACV,WAAW,MAAM;AAAA,QACjB,OAAO,MAAM;AAAA,QACb,sBAAoB,MAAM;AAAA,QAC1B,oBAAkB,EAAE;AAAA,QACpB,yBAAuB,EAAE;AAAA,QACzB,0BAAwB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAExD;AAAA;AAAA,IACH,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,SAAS,WAAW;AAAA,QAC7B,oBAAkB,EAAE;AAAA,QACpB,yBAAuB,EAAE;AAAA,QACzB,0BAAwB,SAAS,YAAY,IAAI,QAAQ;AAAA,QAExD;AAAA;AAAA,IACH,KArBqB,EAAE,IAuB3B;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -10,5 +10,12 @@ export interface BlockStyleAttrs {
|
|
|
10
10
|
* Vertaalt de gedeelde `_style` van een block naar wrapper-attributen. Gebruikt classNames +
|
|
11
11
|
* CSS-variabelen (te overschrijven per site) en alleen inline-CSS waar een vrije waarde nodig is
|
|
12
12
|
* (achtergrondkleur). Geeft `null` terug als er niets te stylen valt (dan rendert het block kaal).
|
|
13
|
+
*
|
|
14
|
+
* 8.10 — een achtergrondkleur is een vlak, geen verfstreep:
|
|
15
|
+
* - de tekstkleur rekent mee (wit of donker, wat het meeste contrast geeft). Tot nu toe bleef de
|
|
16
|
+
* tekst in de themakleur: donkere tekst op donkerblauw, of — in donkere modus — witte tekst op
|
|
17
|
+
* de staal "Wit";
|
|
18
|
+
* - zonder gekozen ruimte krijgt het vlak lucht (`pad-lg`), anders plakt de tekst tegen de rand;
|
|
19
|
+
* - een oude, niet-hex waarde (gradient, var(), url()) werkt zoals altijd, zonder automatiek.
|
|
13
20
|
*/
|
|
14
21
|
export declare function blockStyleAttrs(style: BlockStyle | undefined): BlockStyleAttrs | null;
|
|
@@ -1,11 +1,24 @@
|
|
|
1
|
+
import { tekstOpKleur } from "../theme/color.js";
|
|
1
2
|
function blockStyleAttrs(style) {
|
|
2
3
|
if (!style || Object.keys(style).length === 0) return null;
|
|
3
4
|
const cls = ["xicms-block"];
|
|
4
|
-
|
|
5
|
+
const css = {};
|
|
6
|
+
const bg = style.background?.trim();
|
|
7
|
+
const tekst = bg ? tekstOpKleur(bg) : null;
|
|
8
|
+
if (bg && tekst) {
|
|
9
|
+
css.backgroundColor = bg.startsWith("#") ? bg : `#${bg}`;
|
|
10
|
+
css.color = tekst;
|
|
11
|
+
css["--xicms-fg"] = tekst;
|
|
12
|
+
css["--color-text-primary"] = tekst;
|
|
13
|
+
css["--color-text-secondary"] = tekst === "#ffffff" ? "rgba(255, 255, 255, 0.78)" : "rgba(15, 23, 42, 0.72)";
|
|
14
|
+
cls.push("xicms-block--bg", tekst === "#ffffff" ? "xicms-block--bg-donker" : "xicms-block--bg-licht");
|
|
15
|
+
} else if (bg) {
|
|
16
|
+
css.background = bg;
|
|
17
|
+
}
|
|
18
|
+
const paddingY = style.paddingY ?? (bg && tekst ? "lg" : void 0);
|
|
19
|
+
if (paddingY) cls.push(`xicms-block--pad-${paddingY}`);
|
|
5
20
|
if (style.width) cls.push(`xicms-block--${style.width}`);
|
|
6
21
|
if (style.align) cls.push(`xicms-block--align-${style.align}`);
|
|
7
|
-
const css = {};
|
|
8
|
-
if (style.background) css.background = style.background;
|
|
9
22
|
return { id: style.anchorId || void 0, className: cls.join(" "), style: css, dataAnimate: style.animate };
|
|
10
23
|
}
|
|
11
24
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/blocks/blockStyle.ts"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport type { BlockStyle } from \"../schema/blocks\";\n\nexport interface BlockStyleAttrs {\n id?: string;\n className: string;\n style: CSSProperties;\n dataAnimate?: string;\n}\n\n/**\n * Vertaalt de gedeelde `_style` van een block naar wrapper-attributen. Gebruikt classNames +\n * CSS-variabelen (te overschrijven per site) en alleen inline-CSS waar een vrije waarde nodig is\n * (achtergrondkleur). Geeft `null` terug als er niets te stylen valt (dan rendert het block kaal).\n */\nexport function blockStyleAttrs(style: BlockStyle | undefined): BlockStyleAttrs | null {\n if (!style || Object.keys(style).length === 0) return null;\n const cls = [\"xicms-block\"];\n if (style.paddingY) cls.push(`xicms-block--pad-${
|
|
1
|
+
{"version":3,"sources":["../../src/blocks/blockStyle.ts"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport type { BlockStyle } from \"../schema/blocks\";\nimport { tekstOpKleur } from \"../theme/color\";\n\nexport interface BlockStyleAttrs {\n id?: string;\n className: string;\n style: CSSProperties;\n dataAnimate?: string;\n}\n\n/**\n * Vertaalt de gedeelde `_style` van een block naar wrapper-attributen. Gebruikt classNames +\n * CSS-variabelen (te overschrijven per site) en alleen inline-CSS waar een vrije waarde nodig is\n * (achtergrondkleur). Geeft `null` terug als er niets te stylen valt (dan rendert het block kaal).\n *\n * 8.10 — een achtergrondkleur is een vlak, geen verfstreep:\n * - de tekstkleur rekent mee (wit of donker, wat het meeste contrast geeft). Tot nu toe bleef de\n * tekst in de themakleur: donkere tekst op donkerblauw, of — in donkere modus — witte tekst op\n * de staal \"Wit\";\n * - zonder gekozen ruimte krijgt het vlak lucht (`pad-lg`), anders plakt de tekst tegen de rand;\n * - een oude, niet-hex waarde (gradient, var(), url()) werkt zoals altijd, zonder automatiek.\n */\nexport function blockStyleAttrs(style: BlockStyle | undefined): BlockStyleAttrs | null {\n if (!style || Object.keys(style).length === 0) return null;\n const cls = [\"xicms-block\"];\n const css: CSSProperties & Record<`--${string}`, string> = {};\n const bg = style.background?.trim();\n const tekst = bg ? tekstOpKleur(bg) : null;\n if (bg && tekst) {\n css.backgroundColor = bg.startsWith(\"#\") ? bg : `#${bg}`;\n css.color = tekst;\n css[\"--xicms-fg\"] = tekst;\n css[\"--color-text-primary\"] = tekst;\n css[\"--color-text-secondary\"] = tekst === \"#ffffff\" ? \"rgba(255, 255, 255, 0.78)\" : \"rgba(15, 23, 42, 0.72)\";\n cls.push(\"xicms-block--bg\", tekst === \"#ffffff\" ? \"xicms-block--bg-donker\" : \"xicms-block--bg-licht\");\n } else if (bg) {\n css.background = bg;\n }\n const paddingY = style.paddingY ?? (bg && tekst ? \"lg\" : undefined);\n if (paddingY) cls.push(`xicms-block--pad-${paddingY}`);\n if (style.width) cls.push(`xicms-block--${style.width}`);\n if (style.align) cls.push(`xicms-block--align-${style.align}`);\n return { id: style.anchorId || undefined, className: cls.join(\" \"), style: css, dataAnimate: style.animate };\n}\n"],"mappings":"AAEA,SAAS,oBAAoB;AAqBtB,SAAS,gBAAgB,OAAuD;AACrF,MAAI,CAAC,SAAS,OAAO,KAAK,KAAK,EAAE,WAAW,EAAG,QAAO;AACtD,QAAM,MAAM,CAAC,aAAa;AAC1B,QAAM,MAAqD,CAAC;AAC5D,QAAM,KAAK,MAAM,YAAY,KAAK;AAClC,QAAM,QAAQ,KAAK,aAAa,EAAE,IAAI;AACtC,MAAI,MAAM,OAAO;AACf,QAAI,kBAAkB,GAAG,WAAW,GAAG,IAAI,KAAK,IAAI,EAAE;AACtD,QAAI,QAAQ;AACZ,QAAI,YAAY,IAAI;AACpB,QAAI,sBAAsB,IAAI;AAC9B,QAAI,wBAAwB,IAAI,UAAU,YAAY,8BAA8B;AACpF,QAAI,KAAK,mBAAmB,UAAU,YAAY,2BAA2B,uBAAuB;AAAA,EACtG,WAAW,IAAI;AACb,QAAI,aAAa;AAAA,EACnB;AACA,QAAM,WAAW,MAAM,aAAa,MAAM,QAAQ,OAAO;AACzD,MAAI,SAAU,KAAI,KAAK,oBAAoB,QAAQ,EAAE;AACrD,MAAI,MAAM,MAAO,KAAI,KAAK,gBAAgB,MAAM,KAAK,EAAE;AACvD,MAAI,MAAM,MAAO,KAAI,KAAK,sBAAsB,MAAM,KAAK,EAAE;AAC7D,SAAO,EAAE,IAAI,MAAM,YAAY,QAAW,WAAW,IAAI,KAAK,GAAG,GAAG,OAAO,KAAK,aAAa,MAAM,QAAQ;AAC7G;","names":[]}
|
|
@@ -9,6 +9,9 @@ import {
|
|
|
9
9
|
BreadcrumbsBlockSchema,
|
|
10
10
|
ButtonsBlockSchema,
|
|
11
11
|
CardsBlockSchema,
|
|
12
|
+
PriceListBlockSchema,
|
|
13
|
+
SectionHeadingBlockSchema,
|
|
14
|
+
AvailabilityBlockSchema,
|
|
12
15
|
CardsWidgetSchema,
|
|
13
16
|
ColumnsBlockSchema,
|
|
14
17
|
ContactBlockSchema,
|
|
@@ -70,6 +73,9 @@ const builtinBlockSchemas = {
|
|
|
70
73
|
breadcrumbs: BreadcrumbsBlockSchema,
|
|
71
74
|
buttons: ButtonsBlockSchema,
|
|
72
75
|
cards: CardsBlockSchema,
|
|
76
|
+
priceList: PriceListBlockSchema,
|
|
77
|
+
sectionHeading: SectionHeadingBlockSchema,
|
|
78
|
+
availability: AvailabilityBlockSchema,
|
|
73
79
|
cardsWidget: CardsWidgetSchema,
|
|
74
80
|
columns: ColumnsBlockSchema,
|
|
75
81
|
contact: ContactBlockSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/blocks/builtinSchemas.ts"],"sourcesContent":["/**\n * Lazy schema-registratie voor de ingebouwde blokken (7.13).\n *\n * De schema's zijn EDITOR-kennis: het formulier in het zijpaneel, de inline-veldlabels, de\n * vertaal-overlay en de validatie bij bewerken komen eruit voort. Een publieke bezoeker heeft\n * er niets aan — en toch reisden alle schema's plus de zod-runtime (±73 KB gzip) mee in élke\n * paginabundel, omdat elk blok zijn schema in zijn eigen client-module droeg.\n *\n * Dit bestand is de enige plek die de schema's nog als WAARDE importeert, en het wordt alleen\n * geladen door de admin/editor-chunks (AdminApp, VisualEditor) — die waren al lazy. Het plugt\n * ook de zod-parser in de registry (`setSchemaParser`), zodat validatie weer volledig is zodra\n * er bewerkt wordt; publiek volstaat de lichte vormcheck (zie registry.validateBlocks).\n *\n * NIEUW BLOK? `npm test` bewaakt dat elk ingebouwd blok hier een schema heeft (builtinSchemas.test).\n */\nimport { safeParse, type $ZodType } from \"zod/v4/core\";\nimport {\n AccordionBlockSchema,\n AgendaBlockSchema,\n AgendaWidgetSchema,\n BannerBlockSchema,\n BeforeAfterBlockSchema,\n BookingBlockSchema,\n BreadcrumbsBlockSchema,\n ButtonsBlockSchema,\n CardsBlockSchema,\n CardsWidgetSchema,\n ColumnsBlockSchema,\n ContactBlockSchema,\n ContactWidgetSchema,\n CountdownBlockSchema,\n CountdownWidgetSchema,\n CountersBlockSchema,\n CtaBlockSchema,\n CtaWidgetSchema,\n DividerBlockSchema,\n DownloadsBlockSchema,\n DownloadsWidgetSchema,\n EmbedBlockSchema,\n FaqBlockSchema,\n FeatureBlockSchema,\n FormBlockSchema,\n GalleryBlockSchema,\n GalleryWidgetSchema,\n HeroBlockSchema,\n ImageBlockSchema,\n JobsBlockSchema,\n LogosBlockSchema,\n MapBlockSchema,\n NewsListBlockSchema,\n NewsWidgetSchema,\n NewsletterBlockSchema,\n NewsletterWidgetSchema,\n OpeningHoursBlockSchema,\n OpeningHoursWidgetSchema,\n PdfBlockSchema,\n PortfolioBlockSchema,\n PricingBlockSchema,\n QuoteBlockSchema,\n RichTextBlockSchema,\n SearchBlockSchema,\n SliderBlockSchema,\n SocialBlockSchema,\n SocialWidgetSchema,\n SpacerBlockSchema,\n SymbolRefBlockSchema,\n TabsBlockSchema,\n TeamBlockSchema,\n TestimonialsBlockSchema,\n TestimonialsWidgetSchema,\n TimelineBlockSchema,\n VideoBlockSchema,\n WhatsappChatBlockSchema,\n WithSidebarBlockSchema,\n} from \"../schema/blocks\";\nimport { setSchemaParser, type BlockDefinition } from \"./registry\";\nimport { builtinBlocks } from \"./builtins/index\";\n\n/** type → schema, voor elk ingebouwd blok. */\nexport const builtinBlockSchemas: Record<string, $ZodType> = {\n accordion: AccordionBlockSchema,\n agenda: AgendaBlockSchema,\n agendaWidget: AgendaWidgetSchema,\n banner: BannerBlockSchema,\n beforeAfter: BeforeAfterBlockSchema,\n booking: BookingBlockSchema,\n breadcrumbs: BreadcrumbsBlockSchema,\n buttons: ButtonsBlockSchema,\n cards: CardsBlockSchema,\n cardsWidget: CardsWidgetSchema,\n columns: ColumnsBlockSchema,\n contact: ContactBlockSchema,\n contactWidget: ContactWidgetSchema,\n countdown: CountdownBlockSchema,\n countdownWidget: CountdownWidgetSchema,\n counters: CountersBlockSchema,\n cta: CtaBlockSchema,\n ctaWidget: CtaWidgetSchema,\n divider: DividerBlockSchema,\n downloads: DownloadsBlockSchema,\n downloadsWidget: DownloadsWidgetSchema,\n embed: EmbedBlockSchema,\n faq: FaqBlockSchema,\n feature: FeatureBlockSchema,\n form: FormBlockSchema,\n gallery: GalleryBlockSchema,\n galleryWidget: GalleryWidgetSchema,\n hero: HeroBlockSchema,\n image: ImageBlockSchema,\n jobs: JobsBlockSchema,\n logos: LogosBlockSchema,\n map: MapBlockSchema,\n newsList: NewsListBlockSchema,\n newsWidget: NewsWidgetSchema,\n newsletter: NewsletterBlockSchema,\n newsletterWidget: NewsletterWidgetSchema,\n openingHours: OpeningHoursBlockSchema,\n openingHoursWidget: OpeningHoursWidgetSchema,\n pdf: PdfBlockSchema,\n portfolio: PortfolioBlockSchema,\n pricing: PricingBlockSchema,\n quote: QuoteBlockSchema,\n richText: RichTextBlockSchema,\n search: SearchBlockSchema,\n slider: SliderBlockSchema,\n social: SocialBlockSchema,\n socialWidget: SocialWidgetSchema,\n spacer: SpacerBlockSchema,\n symbolRef: SymbolRefBlockSchema,\n tabs: TabsBlockSchema,\n team: TeamBlockSchema,\n testimonials: TestimonialsBlockSchema,\n testimonialsWidget: TestimonialsWidgetSchema,\n timeline: TimelineBlockSchema,\n video: VideoBlockSchema,\n whatsappChat: WhatsappChatBlockSchema,\n withSidebar: WithSidebarBlockSchema,\n};\n\nlet geregistreerd = false;\n\n/**\n * Hangt de schema's aan de (module-singleton) builtin-defs en plugt de zod-parser in.\n * Idempotent; aan te roepen vanuit elke admin/editor-ingang.\n */\nexport function registerBuiltinSchemas(): void {\n if (geregistreerd) return;\n geregistreerd = true;\n setSchemaParser((schema, raw) => {\n const res = safeParse(schema, raw);\n return res.success ? { success: true, data: res.data } : { success: false, issues: res.error.issues };\n });\n for (const def of builtinBlocks as Array<BlockDefinition & { schema?: unknown }>) {\n if (!def.schema && builtinBlockSchemas[def.type]) def.schema = builtinBlockSchemas[def.type];\n }\n}\n"],"mappings":"AAeA,SAAS,iBAAgC;AACzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAA6C;AACtD,SAAS,qBAAqB;AAGvB,MAAM,sBAAgD;AAAA,EAC3D,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,eAAe;AAAA,EACf,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,eAAe;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,OAAO;AAAA,EACP,cAAc;AAAA,EACd,aAAa;AACf;AAEA,IAAI,gBAAgB;AAMb,SAAS,yBAA+B;AAC7C,MAAI,cAAe;AACnB,kBAAgB;AAChB,kBAAgB,CAAC,QAAQ,QAAQ;AAC/B,UAAM,MAAM,UAAU,QAAQ,GAAG;AACjC,WAAO,IAAI,UAAU,EAAE,SAAS,MAAM,MAAM,IAAI,KAAK,IAAI,EAAE,SAAS,OAAO,QAAQ,IAAI,MAAM,OAAO;AAAA,EACtG,CAAC;AACD,aAAW,OAAO,eAAgE;AAChF,QAAI,CAAC,IAAI,UAAU,oBAAoB,IAAI,IAAI,EAAG,KAAI,SAAS,oBAAoB,IAAI,IAAI;AAAA,EAC7F;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/blocks/builtinSchemas.ts"],"sourcesContent":["/**\n * Lazy schema-registratie voor de ingebouwde blokken (7.13).\n *\n * De schema's zijn EDITOR-kennis: het formulier in het zijpaneel, de inline-veldlabels, de\n * vertaal-overlay en de validatie bij bewerken komen eruit voort. Een publieke bezoeker heeft\n * er niets aan — en toch reisden alle schema's plus de zod-runtime (±73 KB gzip) mee in élke\n * paginabundel, omdat elk blok zijn schema in zijn eigen client-module droeg.\n *\n * Dit bestand is de enige plek die de schema's nog als WAARDE importeert, en het wordt alleen\n * geladen door de admin/editor-chunks (AdminApp, VisualEditor) — die waren al lazy. Het plugt\n * ook de zod-parser in de registry (`setSchemaParser`), zodat validatie weer volledig is zodra\n * er bewerkt wordt; publiek volstaat de lichte vormcheck (zie registry.validateBlocks).\n *\n * NIEUW BLOK? `npm test` bewaakt dat elk ingebouwd blok hier een schema heeft (builtinSchemas.test).\n */\nimport { safeParse, type $ZodType } from \"zod/v4/core\";\nimport {\n AccordionBlockSchema,\n AgendaBlockSchema,\n AgendaWidgetSchema,\n BannerBlockSchema,\n BeforeAfterBlockSchema,\n BookingBlockSchema,\n BreadcrumbsBlockSchema,\n ButtonsBlockSchema,\n CardsBlockSchema,\n PriceListBlockSchema,\n SectionHeadingBlockSchema,\n AvailabilityBlockSchema,\n CardsWidgetSchema,\n ColumnsBlockSchema,\n ContactBlockSchema,\n ContactWidgetSchema,\n CountdownBlockSchema,\n CountdownWidgetSchema,\n CountersBlockSchema,\n CtaBlockSchema,\n CtaWidgetSchema,\n DividerBlockSchema,\n DownloadsBlockSchema,\n DownloadsWidgetSchema,\n EmbedBlockSchema,\n FaqBlockSchema,\n FeatureBlockSchema,\n FormBlockSchema,\n GalleryBlockSchema,\n GalleryWidgetSchema,\n HeroBlockSchema,\n ImageBlockSchema,\n JobsBlockSchema,\n LogosBlockSchema,\n MapBlockSchema,\n NewsListBlockSchema,\n NewsWidgetSchema,\n NewsletterBlockSchema,\n NewsletterWidgetSchema,\n OpeningHoursBlockSchema,\n OpeningHoursWidgetSchema,\n PdfBlockSchema,\n PortfolioBlockSchema,\n PricingBlockSchema,\n QuoteBlockSchema,\n RichTextBlockSchema,\n SearchBlockSchema,\n SliderBlockSchema,\n SocialBlockSchema,\n SocialWidgetSchema,\n SpacerBlockSchema,\n SymbolRefBlockSchema,\n TabsBlockSchema,\n TeamBlockSchema,\n TestimonialsBlockSchema,\n TestimonialsWidgetSchema,\n TimelineBlockSchema,\n VideoBlockSchema,\n WhatsappChatBlockSchema,\n WithSidebarBlockSchema,\n} from \"../schema/blocks\";\nimport { setSchemaParser, type BlockDefinition } from \"./registry\";\nimport { builtinBlocks } from \"./builtins/index\";\n\n/** type → schema, voor elk ingebouwd blok. */\nexport const builtinBlockSchemas: Record<string, $ZodType> = {\n accordion: AccordionBlockSchema,\n agenda: AgendaBlockSchema,\n agendaWidget: AgendaWidgetSchema,\n banner: BannerBlockSchema,\n beforeAfter: BeforeAfterBlockSchema,\n booking: BookingBlockSchema,\n breadcrumbs: BreadcrumbsBlockSchema,\n buttons: ButtonsBlockSchema,\n cards: CardsBlockSchema,\n priceList: PriceListBlockSchema,\n sectionHeading: SectionHeadingBlockSchema,\n availability: AvailabilityBlockSchema,\n cardsWidget: CardsWidgetSchema,\n columns: ColumnsBlockSchema,\n contact: ContactBlockSchema,\n contactWidget: ContactWidgetSchema,\n countdown: CountdownBlockSchema,\n countdownWidget: CountdownWidgetSchema,\n counters: CountersBlockSchema,\n cta: CtaBlockSchema,\n ctaWidget: CtaWidgetSchema,\n divider: DividerBlockSchema,\n downloads: DownloadsBlockSchema,\n downloadsWidget: DownloadsWidgetSchema,\n embed: EmbedBlockSchema,\n faq: FaqBlockSchema,\n feature: FeatureBlockSchema,\n form: FormBlockSchema,\n gallery: GalleryBlockSchema,\n galleryWidget: GalleryWidgetSchema,\n hero: HeroBlockSchema,\n image: ImageBlockSchema,\n jobs: JobsBlockSchema,\n logos: LogosBlockSchema,\n map: MapBlockSchema,\n newsList: NewsListBlockSchema,\n newsWidget: NewsWidgetSchema,\n newsletter: NewsletterBlockSchema,\n newsletterWidget: NewsletterWidgetSchema,\n openingHours: OpeningHoursBlockSchema,\n openingHoursWidget: OpeningHoursWidgetSchema,\n pdf: PdfBlockSchema,\n portfolio: PortfolioBlockSchema,\n pricing: PricingBlockSchema,\n quote: QuoteBlockSchema,\n richText: RichTextBlockSchema,\n search: SearchBlockSchema,\n slider: SliderBlockSchema,\n social: SocialBlockSchema,\n socialWidget: SocialWidgetSchema,\n spacer: SpacerBlockSchema,\n symbolRef: SymbolRefBlockSchema,\n tabs: TabsBlockSchema,\n team: TeamBlockSchema,\n testimonials: TestimonialsBlockSchema,\n testimonialsWidget: TestimonialsWidgetSchema,\n timeline: TimelineBlockSchema,\n video: VideoBlockSchema,\n whatsappChat: WhatsappChatBlockSchema,\n withSidebar: WithSidebarBlockSchema,\n};\n\nlet geregistreerd = false;\n\n/**\n * Hangt de schema's aan de (module-singleton) builtin-defs en plugt de zod-parser in.\n * Idempotent; aan te roepen vanuit elke admin/editor-ingang.\n */\nexport function registerBuiltinSchemas(): void {\n if (geregistreerd) return;\n geregistreerd = true;\n setSchemaParser((schema, raw) => {\n const res = safeParse(schema, raw);\n return res.success ? { success: true, data: res.data } : { success: false, issues: res.error.issues };\n });\n for (const def of builtinBlocks as Array<BlockDefinition & { schema?: unknown }>) {\n if (!def.schema && builtinBlockSchemas[def.type]) def.schema = builtinBlockSchemas[def.type];\n }\n}\n"],"mappings":"AAeA,SAAS,iBAAgC;AACzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAA6C;AACtD,SAAS,qBAAqB;AAGvB,MAAM,sBAAgD;AAAA,EAC3D,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,eAAe;AAAA,EACf,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,eAAe;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,OAAO;AAAA,EACP,cAAc;AAAA,EACd,aAAa;AACf;AAEA,IAAI,gBAAgB;AAMb,SAAS,yBAA+B;AAC7C,MAAI,cAAe;AACnB,kBAAgB;AAChB,kBAAgB,CAAC,QAAQ,QAAQ;AAC/B,UAAM,MAAM,UAAU,QAAQ,GAAG;AACjC,WAAO,IAAI,UAAU,EAAE,SAAS,MAAM,MAAM,IAAI,KAAK,IAAI,EAAE,SAAS,OAAO,QAAQ,IAAI,MAAM,OAAO;AAAA,EACtG,CAAC;AACD,aAAW,OAAO,eAAgE;AAChF,QAAI,CAAC,IAAI,UAAU,oBAAoB,IAAI,IAAI,EAAG,KAAI,SAAS,oBAAoB,IAAI,IAAI;AAAA,EAC7F;AACF;","names":[]}
|
|
@@ -10,7 +10,18 @@ export interface AgendaEvent {
|
|
|
10
10
|
location?: string;
|
|
11
11
|
description?: string;
|
|
12
12
|
url?: string;
|
|
13
|
+
/** 8.15: terugkerend. */
|
|
14
|
+
herhaal?: "wekelijks" | "tweewekelijks" | "maandelijks";
|
|
15
|
+
/** Laatste datum van de herhaling ("2027-06-30"); leeg = een jaar vooruit. */
|
|
16
|
+
herhaalTot?: string;
|
|
13
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Terugkerende activiteiten uitvouwen (8.15): "elke dinsdag koor" staat één keer in het beheer en
|
|
20
|
+
* verschijnt op de site als losse data — tot de einddatum, anders een jaar vooruit, en nooit meer
|
|
21
|
+
* dan 60 keer. Elke herhaling houdt de index van het origineel (`_i`), dus bewerken op de pagina
|
|
22
|
+
* past de reeks aan.
|
|
23
|
+
*/
|
|
24
|
+
export declare function vouwHerhalingenUit<T extends AgendaEvent>(events: T[], vanaf?: Date): T[];
|
|
14
25
|
/**
|
|
15
26
|
* Parseert een event-datum als LOKALE tijd. Cruciaal voor datum-zonder-tijd: `new Date("2026-08-01")`
|
|
16
27
|
* is per spec UTC-middernacht, waardoor west-van-UTC-bezoekers "31 juli" te zien kregen (en de
|
|
@@ -28,7 +39,18 @@ export declare function formatEventDate(value: string): string;
|
|
|
28
39
|
export declare function selectAgendaEvents<T extends AgendaEvent>(events: T[] | undefined, opts?: {
|
|
29
40
|
hidePast?: boolean;
|
|
30
41
|
limit?: number;
|
|
42
|
+
vandaag?: Date | null;
|
|
31
43
|
}): T[];
|
|
44
|
+
/**
|
|
45
|
+
* Event-JSON-LD (8.14 vollediger): adres (eigen adres of dat uit het bedrijfsprofiel), afbeelding,
|
|
46
|
+
* prijs, status (afgelast/verplaatst/online) en de organisator. Google vroeg in Search Console bij
|
|
47
|
+
* de oude versie om "ontbrekend veld: address / image / offers / organizer".
|
|
48
|
+
*/
|
|
49
|
+
export declare function eventJsonLd(events: Agenda["events"], bedrijf?: {
|
|
50
|
+
name?: string;
|
|
51
|
+
url?: string;
|
|
52
|
+
address?: string;
|
|
53
|
+
}): Record<string, unknown>;
|
|
32
54
|
/** Agenda/evenementen. Server-safe (geen client-state); `hidePast` filtert verlopen events. */
|
|
33
55
|
export declare function AgendaRender({ block }: BlockRenderProps<Agenda>): import("react").JSX.Element | null;
|
|
34
56
|
export {};
|