@riverbankcms/sdk 0.79.0 → 0.80.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/PreviewEditorSidebar-QZG37QIF.mjs +2655 -0
- package/dist/{PreviewEditorUI-27KJVEET.mjs → PreviewEditorUI-AXIKSMZA.mjs} +27 -4
- package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +20 -0
- package/dist/_dts/api/src/endpoints.d.ts +24 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
- package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +10 -1
- package/dist/_dts/block-form/src/client/index.d.ts +2 -0
- package/dist/_dts/block-form/src/index.d.ts +2 -0
- package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
- package/dist/_dts/blocks/src/client/header.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +12 -12
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -1
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +21 -12
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -2
- package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +1 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -7
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +6 -4
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
- package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +34 -0
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -1
- package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
- package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +56 -0
- package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +6 -3
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
- package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
- package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
- package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
- package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +105 -0
- package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -18
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/schema.d.ts +446 -52
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +86 -17
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +86 -17
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +110 -1
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +286 -6
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -8
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -7
- package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
- package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +7 -29
- package/dist/{PreviewEditorSidebar-56NMJMIK.mjs → chunk-5NZGBSJF.mjs} +1423 -2451
- package/dist/{chunk-4HCW7FHJ.mjs → chunk-7PCYG6YV.mjs} +215 -137
- package/dist/{chunk-K2IIF34C.mjs → chunk-BBLZSQEY.mjs} +24 -0
- package/dist/{chunk-V47ZU33I.mjs → chunk-GYXKAUFV.mjs} +2785 -785
- package/dist/{chunk-GP555I66.mjs → chunk-HTB4BMKD.mjs} +94 -46
- package/dist/{chunk-A3HHFKVT.mjs → chunk-MPBNEVPB.mjs} +1 -1
- package/dist/cli/index.mjs +2100 -545
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +16 -4
- package/dist/client/{accordion-QLA7KBYO.mjs → accordion-QFZMNB7O.mjs} +1 -1
- package/dist/client/{bookingForm-PYZIPA5G.mjs → bookingForm-NCIXFWIG.mjs} +3 -3
- package/dist/client/bookings.mjs +1144 -329
- package/dist/client/{carousel-5EIULWBI.mjs → carousel-EO4BJMWD.mjs} +2 -2
- package/dist/client/{cart-DOP3FNI4.mjs → cart-FTYCLYUW.mjs} +5 -5
- package/dist/client/{checkout-BVMF6FBV.mjs → checkout-NFGLVCOX.mjs} +5 -5
- package/dist/client/{chunk-TYONZMST.mjs → chunk-4W66ALYT.mjs} +1 -1
- package/dist/client/{chunk-44K2U3QI.mjs → chunk-6GVVWSPU.mjs} +4 -4
- package/dist/client/{chunk-UDS3NTWA.mjs → chunk-IWFZSQNZ.mjs} +1 -1
- package/dist/client/{chunk-R5ESWNKX.mjs → chunk-PUOELU4O.mjs} +89 -5
- package/dist/client/{chunk-YLDYVRZL.mjs → chunk-PYRBIURC.mjs} +4 -4
- package/dist/client/{chunk-GG4M2NP6.mjs → chunk-T6UIP6UZ.mjs} +1 -1
- package/dist/client/{chunk-V6M5FCR5.mjs → chunk-VDS5YFLX.mjs} +1 -1
- package/dist/client/{chunk-CCNTDRCF.mjs → chunk-Y37KDO7P.mjs} +1 -1
- package/dist/client/client.mjs +4205 -2324
- package/dist/client/{courseRegistration-E6EAA6NL.mjs → courseRegistration-2EORROPS.mjs} +3 -3
- package/dist/client/{eventCalendar-HBG3HAK6.mjs → eventCalendar-WZI4VL6N.mjs} +5 -5
- package/dist/client/{eventCombined-6K5ZZWAK.mjs → eventCombined-QCB2TCNL.mjs} +5 -5
- package/dist/client/{eventDetails-Q75ICXLT.mjs → eventDetails-TFTATAPH.mjs} +5 -5
- package/dist/client/{eventListing-27P5F7DZ.mjs → eventListing-A2CQEHEQ.mjs} +5 -5
- package/dist/client/{eventRegistration-IQ7AMASR.mjs → eventRegistration-OELPVLUY.mjs} +5 -5
- package/dist/client/{form-JRTD65FN.mjs → form-NTIFD6WQ.mjs} +1 -1
- package/dist/client/{headerSection-7FPSSZHS.mjs → headerSection-7TBNKCLA.mjs} +65 -24
- package/dist/client/hooks.mjs +3354 -2006
- package/dist/client/{locationMap-7NGFNYBH.mjs → locationMap-LRLB5A3H.mjs} +1 -1
- package/dist/client/{newsletterForm-F3BADCI2.mjs → newsletterForm-XI52RZSN.mjs} +1 -1
- package/dist/client/{productDetail-V3HP7ITJ.mjs → productDetail-GSNKBFLY.mjs} +5 -5
- package/dist/client/{productList-L3EGJUF2.mjs → productList-BGCGT4KZ.mjs} +5 -5
- package/dist/client/rendering/client.mjs +2570 -1657
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +4275 -2394
- package/dist/client/{shop-DQUB5E2C.mjs → shop-RQHUCLNY.mjs} +5 -5
- package/dist/preview-next/before-render.mjs +24 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +24 -0
- package/dist/{sdk-runtime-AF6KXJU4.mjs → sdk-runtime-A4LHT2RS.mjs} +6 -6
- package/dist/server/components.mjs +4063 -2293
- package/dist/server/config-validation.mjs +3525 -2176
- package/dist/server/config.mjs +3525 -2176
- package/dist/server/data.mjs +3354 -2006
- package/dist/server/index.mjs +25 -1
- package/dist/server/next.mjs +4006 -2236
- package/dist/server/page-converter.mjs +2747 -1816
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4063 -2293
- package/dist/server/rendering.mjs +4063 -2293
- package/dist/server/routing.mjs +3508 -2111
- package/dist/server/server.mjs +3372 -2024
- package/dist/server/theme-bridge.mjs +1436 -310
- package/dist/server/theme.mjs +409 -219
- package/dist/styles/index.css +300 -33
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +0 -8
- package/dist/chunk-LCY32PXF.mjs +0 -1175
package/dist/cli/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import z42, { z, ZodError } from 'zod';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import { createJiti } from 'jiti';
|
|
5
5
|
import * as fs10 from 'fs';
|
|
@@ -1130,6 +1130,7 @@ var init_validation_constants = __esm({
|
|
|
1130
1130
|
"boxStyles.resolveRootStyle",
|
|
1131
1131
|
"boxStyles.semanticGap",
|
|
1132
1132
|
"boxStyles.semanticGapValue",
|
|
1133
|
+
"boxStyles.cardVariantClass",
|
|
1133
1134
|
"containerStyles.resolveBoxClassName"
|
|
1134
1135
|
];
|
|
1135
1136
|
ALLOWED_NODE_TYPES_SET = new Set(ALLOWED_NODE_TYPES);
|
|
@@ -2068,11 +2069,11 @@ function defineBlockDesignCapability(capability) {
|
|
|
2068
2069
|
tileTreatments: capability.tileTreatments ?? ["default"],
|
|
2069
2070
|
eventListTreatments: capability.eventListTreatments ?? ["plain"],
|
|
2070
2071
|
eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
|
|
2071
|
-
...capability.
|
|
2072
|
-
...capability.
|
|
2072
|
+
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {},
|
|
2073
|
+
...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {}
|
|
2073
2074
|
};
|
|
2074
2075
|
}
|
|
2075
|
-
var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues,
|
|
2076
|
+
var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, noHeadingDecoration, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
|
|
2076
2077
|
var init_types2 = __esm({
|
|
2077
2078
|
"../theme-core/src/site-styles/types.ts"() {
|
|
2078
2079
|
plainFrame = {
|
|
@@ -2098,14 +2099,8 @@ var init_types2 = __esm({
|
|
|
2098
2099
|
"organic-squiggle",
|
|
2099
2100
|
"short-center-rule"
|
|
2100
2101
|
];
|
|
2101
|
-
visibleHeadingDecorationPlacementValues = [
|
|
2102
|
-
"after-heading",
|
|
2103
|
-
"between-heading-and-body",
|
|
2104
|
-
"under-centered-heading"
|
|
2105
|
-
];
|
|
2106
2102
|
headingDecorationOverrideValues = [
|
|
2107
2103
|
"site-default",
|
|
2108
|
-
"on",
|
|
2109
2104
|
"off"
|
|
2110
2105
|
];
|
|
2111
2106
|
headingDecorationColorTokenValues = [
|
|
@@ -2116,6 +2111,9 @@ var init_types2 = __esm({
|
|
|
2116
2111
|
"border",
|
|
2117
2112
|
"muted"
|
|
2118
2113
|
];
|
|
2114
|
+
noHeadingDecoration = {
|
|
2115
|
+
family: "none"
|
|
2116
|
+
};
|
|
2119
2117
|
accordionIconSetValues = [
|
|
2120
2118
|
"plus",
|
|
2121
2119
|
"chevron",
|
|
@@ -2511,7 +2509,24 @@ var init_blockAppearancePresets = __esm({
|
|
|
2511
2509
|
contentFrame: plainFrame,
|
|
2512
2510
|
itemSurface: "none",
|
|
2513
2511
|
transitionAfter: "soft-fade-short",
|
|
2514
|
-
emphasis: "high"
|
|
2512
|
+
emphasis: "high"
|
|
2513
|
+
}
|
|
2514
|
+
}),
|
|
2515
|
+
defineBlockAppearancePreset({
|
|
2516
|
+
kind: "block-design",
|
|
2517
|
+
id: "intro-portrait-bio",
|
|
2518
|
+
target: "intro",
|
|
2519
|
+
label: "Portrait and bio",
|
|
2520
|
+
blockKinds: ["block.intro"],
|
|
2521
|
+
constraints: {
|
|
2522
|
+
layoutVariantKeys: ["media-copy"]
|
|
2523
|
+
},
|
|
2524
|
+
design: {
|
|
2525
|
+
sectionSurface: "base",
|
|
2526
|
+
contentFrame: plainFrame,
|
|
2527
|
+
itemSurface: "none",
|
|
2528
|
+
transitionAfter: "soft-fade-short",
|
|
2529
|
+
emphasis: "medium",
|
|
2515
2530
|
headingDecoration: {
|
|
2516
2531
|
family: "organic-squiggle",
|
|
2517
2532
|
placement: "after-heading",
|
|
@@ -2544,12 +2559,49 @@ var init_blockAppearancePresets = __esm({
|
|
|
2544
2559
|
contentFrame: plainFrame,
|
|
2545
2560
|
itemSurface: "raised",
|
|
2546
2561
|
transitionAfter: "none",
|
|
2547
|
-
emphasis: "high"
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2562
|
+
emphasis: "high"
|
|
2563
|
+
}
|
|
2564
|
+
}),
|
|
2565
|
+
defineBlockAppearancePreset({
|
|
2566
|
+
kind: "block-design",
|
|
2567
|
+
id: "feature-cards-editorial-columns",
|
|
2568
|
+
target: "feature-cards",
|
|
2569
|
+
label: "Editorial open columns",
|
|
2570
|
+
blockKinds: ["block.feature-cards"],
|
|
2571
|
+
design: {
|
|
2572
|
+
sectionSurface: "base",
|
|
2573
|
+
contentFrame: plainFrame,
|
|
2574
|
+
itemSurface: "editorial",
|
|
2575
|
+
transitionAfter: "none",
|
|
2576
|
+
emphasis: "medium"
|
|
2577
|
+
}
|
|
2578
|
+
}),
|
|
2579
|
+
defineBlockAppearancePreset({
|
|
2580
|
+
kind: "block-design",
|
|
2581
|
+
id: "feature-cards-soft-panels",
|
|
2582
|
+
target: "feature-cards",
|
|
2583
|
+
label: "Soft tinted panels",
|
|
2584
|
+
blockKinds: ["block.feature-cards"],
|
|
2585
|
+
design: {
|
|
2586
|
+
sectionSurface: "base",
|
|
2587
|
+
contentFrame: plainFrame,
|
|
2588
|
+
itemSurface: "inset",
|
|
2589
|
+
transitionAfter: "none",
|
|
2590
|
+
emphasis: "medium"
|
|
2591
|
+
}
|
|
2592
|
+
}),
|
|
2593
|
+
defineBlockAppearancePreset({
|
|
2594
|
+
kind: "block-design",
|
|
2595
|
+
id: "feature-cards-photo-tiles",
|
|
2596
|
+
target: "feature-cards",
|
|
2597
|
+
label: "Photo tiles",
|
|
2598
|
+
blockKinds: ["block.feature-cards"],
|
|
2599
|
+
design: {
|
|
2600
|
+
sectionSurface: "base",
|
|
2601
|
+
contentFrame: plainFrame,
|
|
2602
|
+
itemSurface: "raised",
|
|
2603
|
+
transitionAfter: "none",
|
|
2604
|
+
emphasis: "high"
|
|
2553
2605
|
}
|
|
2554
2606
|
}),
|
|
2555
2607
|
defineBlockAppearancePreset({
|
|
@@ -2680,39 +2732,55 @@ var init_blockAppearancePresets = __esm({
|
|
|
2680
2732
|
emphasis: "high"
|
|
2681
2733
|
}
|
|
2682
2734
|
}),
|
|
2735
|
+
// Thin testimonials looks: each is a composition of section surface + which
|
|
2736
|
+
// card variant (or non-carded). The quote mark and card surface come from the
|
|
2737
|
+
// site style (testimonialQuote + card variants), not the look.
|
|
2738
|
+
defineBlockAppearancePreset({
|
|
2739
|
+
kind: "block-design",
|
|
2740
|
+
id: "testimonials-default-cards",
|
|
2741
|
+
target: "testimonials",
|
|
2742
|
+
label: "Default cards",
|
|
2743
|
+
blockKinds: ["block.testimonials"],
|
|
2744
|
+
design: {
|
|
2745
|
+
sectionSurface: "base",
|
|
2746
|
+
contentFrame: plainFrame,
|
|
2747
|
+
itemSurface: "none",
|
|
2748
|
+
transitionAfter: "soft-fade-short",
|
|
2749
|
+
emphasis: "medium",
|
|
2750
|
+
testimonialCardTreatment: "default"
|
|
2751
|
+
}
|
|
2752
|
+
}),
|
|
2683
2753
|
defineBlockAppearancePreset({
|
|
2684
2754
|
kind: "block-design",
|
|
2685
|
-
id: "testimonials-
|
|
2755
|
+
id: "testimonials-statement-cards",
|
|
2686
2756
|
target: "testimonials",
|
|
2687
|
-
label: "
|
|
2757
|
+
label: "Statement cards",
|
|
2688
2758
|
blockKinds: ["block.testimonials"],
|
|
2689
2759
|
design: {
|
|
2690
2760
|
sectionSurface: "accent-band",
|
|
2691
2761
|
contentFrame: plainFrame,
|
|
2762
|
+
// 'raised' carries the elevation shadow (rb-shadow-md = var(--shadow-md)),
|
|
2763
|
+
// matching the legacy accent-quote card; the statement card variant
|
|
2764
|
+
// supplies the fill/accent/corner and emits no shadow of its own.
|
|
2692
2765
|
itemSurface: "raised",
|
|
2693
2766
|
transitionAfter: "soft-fade-short",
|
|
2694
2767
|
emphasis: "high",
|
|
2695
|
-
testimonialCardTreatment: "
|
|
2768
|
+
testimonialCardTreatment: "statement"
|
|
2696
2769
|
}
|
|
2697
2770
|
}),
|
|
2698
2771
|
defineBlockAppearancePreset({
|
|
2699
2772
|
kind: "block-design",
|
|
2700
|
-
id: "testimonials-
|
|
2773
|
+
id: "testimonials-non-carded",
|
|
2701
2774
|
target: "testimonials",
|
|
2702
|
-
label: "
|
|
2775
|
+
label: "Non-carded",
|
|
2703
2776
|
blockKinds: ["block.testimonials"],
|
|
2704
2777
|
design: {
|
|
2705
|
-
sectionSurface: "
|
|
2778
|
+
sectionSurface: "muted-band",
|
|
2706
2779
|
contentFrame: plainFrame,
|
|
2707
2780
|
itemSurface: "none",
|
|
2708
2781
|
transitionAfter: "soft-fade-short",
|
|
2709
|
-
emphasis: "
|
|
2710
|
-
testimonialCardTreatment: "
|
|
2711
|
-
headingDecoration: {
|
|
2712
|
-
family: "short-center-rule",
|
|
2713
|
-
placement: "under-centered-heading",
|
|
2714
|
-
colorToken: "border"
|
|
2715
|
-
}
|
|
2782
|
+
emphasis: "medium",
|
|
2783
|
+
testimonialCardTreatment: "non-carded"
|
|
2716
2784
|
}
|
|
2717
2785
|
}),
|
|
2718
2786
|
defineBlockAppearancePreset({
|
|
@@ -4129,44 +4197,44 @@ var init_personalities = __esm({
|
|
|
4129
4197
|
var hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaSchema;
|
|
4130
4198
|
var init_media = __esm({
|
|
4131
4199
|
"../theme-core/src/lib/media.ts"() {
|
|
4132
|
-
hotspotSchema =
|
|
4133
|
-
x:
|
|
4134
|
-
y:
|
|
4135
|
-
radius:
|
|
4200
|
+
hotspotSchema = z42.object({
|
|
4201
|
+
x: z42.number().min(0).max(1),
|
|
4202
|
+
y: z42.number().min(0).max(1),
|
|
4203
|
+
radius: z42.number().optional()
|
|
4136
4204
|
});
|
|
4137
|
-
rotationSchema =
|
|
4138
|
-
rectSchema =
|
|
4139
|
-
aspectCropSchema =
|
|
4140
|
-
aspect:
|
|
4141
|
-
rect:
|
|
4142
|
-
hotspot:
|
|
4143
|
-
rotation:
|
|
4205
|
+
rotationSchema = z42.union([z42.literal(0), z42.literal(90), z42.literal(180), z42.literal(270)]);
|
|
4206
|
+
rectSchema = z42.tuple([z42.number(), z42.number(), z42.number(), z42.number()]);
|
|
4207
|
+
aspectCropSchema = z42.object({
|
|
4208
|
+
aspect: z42.preprocess((value) => value == null ? void 0 : value, z42.string().optional()),
|
|
4209
|
+
rect: z42.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
4210
|
+
hotspot: z42.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
4211
|
+
rotation: z42.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
4144
4212
|
});
|
|
4145
|
-
transformSchema =
|
|
4146
|
-
aspectCrops:
|
|
4213
|
+
transformSchema = z42.object({
|
|
4214
|
+
aspectCrops: z42.preprocess((value) => {
|
|
4147
4215
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
4148
4216
|
return void 0;
|
|
4149
4217
|
}
|
|
4150
4218
|
return value;
|
|
4151
|
-
},
|
|
4219
|
+
}, z42.record(z42.string(), aspectCropSchema.catch({}))).optional(),
|
|
4152
4220
|
rect: rectSchema.optional(),
|
|
4153
4221
|
hotspot: hotspotSchema.optional(),
|
|
4154
4222
|
rotation: rotationSchema.optional()
|
|
4155
4223
|
});
|
|
4156
|
-
mediaSchema =
|
|
4157
|
-
type:
|
|
4158
|
-
purpose:
|
|
4159
|
-
placeholder:
|
|
4160
|
-
assetId:
|
|
4161
|
-
identifier:
|
|
4162
|
-
src:
|
|
4163
|
-
alt:
|
|
4164
|
-
filename:
|
|
4165
|
-
mimeType:
|
|
4166
|
-
width:
|
|
4167
|
-
height:
|
|
4168
|
-
storageBucket:
|
|
4169
|
-
storagePath:
|
|
4224
|
+
mediaSchema = z42.object({
|
|
4225
|
+
type: z42.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
4226
|
+
purpose: z42.string().optional(),
|
|
4227
|
+
placeholder: z42.boolean().default(true).optional(),
|
|
4228
|
+
assetId: z42.string().optional(),
|
|
4229
|
+
identifier: z42.string().optional(),
|
|
4230
|
+
src: z42.string().optional(),
|
|
4231
|
+
alt: z42.string().optional(),
|
|
4232
|
+
filename: z42.string().optional(),
|
|
4233
|
+
mimeType: z42.string().optional(),
|
|
4234
|
+
width: z42.number().optional(),
|
|
4235
|
+
height: z42.number().optional(),
|
|
4236
|
+
storageBucket: z42.string().optional(),
|
|
4237
|
+
storagePath: z42.string().optional(),
|
|
4170
4238
|
transform: transformSchema.optional()
|
|
4171
4239
|
});
|
|
4172
4240
|
}
|
|
@@ -4340,12 +4408,35 @@ var init_buttons = __esm({
|
|
|
4340
4408
|
init_core();
|
|
4341
4409
|
}
|
|
4342
4410
|
});
|
|
4343
|
-
|
|
4411
|
+
function isCardVariantRole(value) {
|
|
4412
|
+
return typeof value === "string" && cardVariantRoleValues.includes(value);
|
|
4413
|
+
}
|
|
4414
|
+
function normalizeCardVariantRole(value) {
|
|
4415
|
+
if (isCardVariantRole(value)) return value;
|
|
4416
|
+
if (typeof value !== "string") return null;
|
|
4417
|
+
return legacyCardVariantRoleAliases[value] ?? null;
|
|
4418
|
+
}
|
|
4419
|
+
function normalizeBoxStylesCardVariant(value) {
|
|
4420
|
+
if (value === boxlessCardVariantValue) return boxlessCardVariantValue;
|
|
4421
|
+
return normalizeCardVariantRole(value);
|
|
4422
|
+
}
|
|
4423
|
+
var cardVariantRoleValues, boxlessCardVariantValue, legacyCardVariantRoleAliases, cardSpacingSchema, gradientDirectionSchema2, cardVariantRoleSchema, boxStylesCardVariantSchema, cardBackgroundSchema, cardBorderSchema, cardCornerValueSchema, cardAccentEdgeSchema, cardCornerRadiiSchema, cardVariantSchema, cardSystemSchema;
|
|
4344
4424
|
var init_types6 = __esm({
|
|
4345
4425
|
"../theme-core/src/cards/types.ts"() {
|
|
4346
4426
|
init_themeColorTokens();
|
|
4427
|
+
cardVariantRoleValues = ["default", "alternative"];
|
|
4428
|
+
boxlessCardVariantValue = "none";
|
|
4429
|
+
legacyCardVariantRoleAliases = {
|
|
4430
|
+
variant1: "alternative",
|
|
4431
|
+
variant2: "alternative"
|
|
4432
|
+
};
|
|
4347
4433
|
cardSpacingSchema = z.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
4348
4434
|
gradientDirectionSchema2 = z.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
4435
|
+
cardVariantRoleSchema = z.enum(cardVariantRoleValues);
|
|
4436
|
+
boxStylesCardVariantSchema = z.enum([
|
|
4437
|
+
...cardVariantRoleValues,
|
|
4438
|
+
boxlessCardVariantValue
|
|
4439
|
+
]);
|
|
4349
4440
|
cardBackgroundSchema = z.discriminatedUnion("type", [
|
|
4350
4441
|
z.object({ type: z.literal("solid"), colorToken: themeColorTokenSchema }),
|
|
4351
4442
|
z.object({
|
|
@@ -4360,6 +4451,24 @@ var init_types6 = __esm({
|
|
|
4360
4451
|
widthClass: z.string(),
|
|
4361
4452
|
colorToken: themeColorTokenSchema
|
|
4362
4453
|
});
|
|
4454
|
+
cardCornerValueSchema = z.enum([
|
|
4455
|
+
"square",
|
|
4456
|
+
"soft",
|
|
4457
|
+
"rounded",
|
|
4458
|
+
"pill",
|
|
4459
|
+
"expressive"
|
|
4460
|
+
]);
|
|
4461
|
+
cardAccentEdgeSchema = z.object({
|
|
4462
|
+
edge: z.enum(["left", "top", "right", "bottom"]),
|
|
4463
|
+
colorToken: themeColorTokenSchema,
|
|
4464
|
+
width: z.enum(["thin", "medium", "thick", "heavy"])
|
|
4465
|
+
});
|
|
4466
|
+
cardCornerRadiiSchema = z.object({
|
|
4467
|
+
topLeft: cardCornerValueSchema.optional(),
|
|
4468
|
+
topRight: cardCornerValueSchema.optional(),
|
|
4469
|
+
bottomLeft: cardCornerValueSchema.optional(),
|
|
4470
|
+
bottomRight: cardCornerValueSchema.optional()
|
|
4471
|
+
});
|
|
4363
4472
|
cardVariantSchema = z.object({
|
|
4364
4473
|
id: z.string(),
|
|
4365
4474
|
name: z.string().min(1).max(20),
|
|
@@ -4368,6 +4477,8 @@ var init_types6 = __esm({
|
|
|
4368
4477
|
// Appearance (token-based)
|
|
4369
4478
|
background: cardBackgroundSchema,
|
|
4370
4479
|
spacing: cardSpacingSchema,
|
|
4480
|
+
// Optional foreground (card text) color, for cards on a strong fill.
|
|
4481
|
+
foregroundToken: themeColorTokenSchema.optional(),
|
|
4371
4482
|
// Optional overrides (uses theme defaults if not specified)
|
|
4372
4483
|
shadow: z.object({
|
|
4373
4484
|
elevation: z.enum(["none", "low", "medium", "high"]),
|
|
@@ -4375,8 +4486,12 @@ var init_types6 = __esm({
|
|
|
4375
4486
|
position: z.enum(["bottom", "bottom-right"]).default("bottom")
|
|
4376
4487
|
}).optional(),
|
|
4377
4488
|
corners: z.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
4489
|
+
// Per-corner radius override; wins over `corners` when set.
|
|
4490
|
+
cornerRadii: cardCornerRadiiSchema.optional(),
|
|
4378
4491
|
// Border (optional)
|
|
4379
|
-
border: cardBorderSchema.optional()
|
|
4492
|
+
border: cardBorderSchema.optional(),
|
|
4493
|
+
// Single accent edge; replaces `border` when set.
|
|
4494
|
+
accentEdge: cardAccentEdgeSchema.optional()
|
|
4380
4495
|
});
|
|
4381
4496
|
cardSystemSchema = z.object({
|
|
4382
4497
|
variants: z.array(cardVariantSchema).min(1).max(3)
|
|
@@ -4438,11 +4553,13 @@ var init_types7 = __esm({
|
|
|
4438
4553
|
// ⊕ becomes ⊖ (swap with fade)
|
|
4439
4554
|
]);
|
|
4440
4555
|
accordionSystemSchema = z.object({
|
|
4441
|
-
// Visual styling (solid color only - gradients can be added later if needed)
|
|
4556
|
+
// Visual styling (solid color only - gradients can be added later if needed).
|
|
4557
|
+
// null = no fill, so the accordion sits transparently on the section
|
|
4558
|
+
// surface (used by open, boxless "divided" looks).
|
|
4442
4559
|
background: z.object({
|
|
4443
4560
|
type: z.literal("solid"),
|
|
4444
4561
|
colorToken: themeColorTokenSchema
|
|
4445
|
-
}),
|
|
4562
|
+
}).nullable(),
|
|
4446
4563
|
// Spacing (padding inside items)
|
|
4447
4564
|
spacing: z.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
4448
4565
|
// Border radius (null = inherit from theme.corners)
|
|
@@ -4469,8 +4586,16 @@ var init_types7 = __esm({
|
|
|
4469
4586
|
// Trigger (question) styling
|
|
4470
4587
|
trigger: z.object({
|
|
4471
4588
|
textColorToken: themeColorTokenSchema,
|
|
4472
|
-
fontWeight: z.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
4589
|
+
fontWeight: z.enum(["regular", "medium", "semibold", "bold"]).nullable(),
|
|
4473
4590
|
// null = inherit from theme
|
|
4591
|
+
// Question typography. Defaults keep the historical body-font look; set
|
|
4592
|
+
// fontFamily 'heading' + a larger scale to give questions real presence.
|
|
4593
|
+
fontFamily: z.enum(["body", "heading"]).optional(),
|
|
4594
|
+
// default 'body'
|
|
4595
|
+
fontScale: z.enum(["body", "md", "lg"]).optional(),
|
|
4596
|
+
// default 'body'
|
|
4597
|
+
letterSpacing: z.enum(["normal", "tight", "wide"]).optional(),
|
|
4598
|
+
textTransform: z.enum(["none", "uppercase"]).optional()
|
|
4474
4599
|
}),
|
|
4475
4600
|
// Hover state styling
|
|
4476
4601
|
hover: z.object({
|
|
@@ -4478,6 +4603,17 @@ var init_types7 = __esm({
|
|
|
4478
4603
|
textColorToken: themeColorTokenSchema.optional(),
|
|
4479
4604
|
borderColorToken: themeColorTokenSchema.optional()
|
|
4480
4605
|
}),
|
|
4606
|
+
// Open-state emphasis: how an expanded item is visually rewarded. All
|
|
4607
|
+
// optional; omit for the historical "only the text recolors" behaviour.
|
|
4608
|
+
openState: z.object({
|
|
4609
|
+
backgroundColorToken: themeColorTokenSchema.optional(),
|
|
4610
|
+
triggerColorToken: themeColorTokenSchema.optional(),
|
|
4611
|
+
accent: z.object({
|
|
4612
|
+
edge: z.enum(["left", "top", "bottom"]),
|
|
4613
|
+
colorToken: themeColorTokenSchema,
|
|
4614
|
+
thickness: z.enum(["thin", "medium", "thick"])
|
|
4615
|
+
}).optional()
|
|
4616
|
+
}).optional(),
|
|
4481
4617
|
// Content (answer) styling
|
|
4482
4618
|
content: z.object({
|
|
4483
4619
|
textColorToken: themeColorTokenSchema
|
|
@@ -4826,6 +4962,125 @@ var init_shared = __esm({
|
|
|
4826
4962
|
init_componentStyles();
|
|
4827
4963
|
}
|
|
4828
4964
|
});
|
|
4965
|
+
var logoTextConfidenceValues, logoAssetShapeValues, logoKindValues, logoDensityValues, logoContainsTextSchema, logoAnalysisSourceSchema, brandDisplayModeValues, logoAccommodationPatternValues, logoSizePolicyValues;
|
|
4966
|
+
var init_logoBranding = __esm({
|
|
4967
|
+
"../theme-core/src/site-styles/logoBranding.ts"() {
|
|
4968
|
+
init_types2();
|
|
4969
|
+
logoTextConfidenceValues = ["low", "medium", "high"];
|
|
4970
|
+
logoAssetShapeValues = [
|
|
4971
|
+
"none",
|
|
4972
|
+
"horizontal",
|
|
4973
|
+
"square",
|
|
4974
|
+
"portrait",
|
|
4975
|
+
"tall"
|
|
4976
|
+
];
|
|
4977
|
+
logoKindValues = [
|
|
4978
|
+
"mark",
|
|
4979
|
+
"wordmark",
|
|
4980
|
+
"lockup",
|
|
4981
|
+
"badge",
|
|
4982
|
+
"stacked-wordmark",
|
|
4983
|
+
"unknown"
|
|
4984
|
+
];
|
|
4985
|
+
logoDensityValues = ["simple", "detailed", "unknown"];
|
|
4986
|
+
logoContainsTextSchema = z.discriminatedUnion("kind", [
|
|
4987
|
+
z.object({
|
|
4988
|
+
kind: z.literal("contains-text"),
|
|
4989
|
+
confidence: z.enum(logoTextConfidenceValues),
|
|
4990
|
+
text: z.string().trim().min(1).max(200).optional()
|
|
4991
|
+
}),
|
|
4992
|
+
z.object({
|
|
4993
|
+
kind: z.literal("no-text"),
|
|
4994
|
+
confidence: z.enum(logoTextConfidenceValues)
|
|
4995
|
+
}),
|
|
4996
|
+
z.object({
|
|
4997
|
+
kind: z.literal("unknown"),
|
|
4998
|
+
reason: z.enum([
|
|
4999
|
+
"analysis-unavailable",
|
|
5000
|
+
"unsupported-file",
|
|
5001
|
+
"low-confidence"
|
|
5002
|
+
])
|
|
5003
|
+
})
|
|
5004
|
+
]);
|
|
5005
|
+
logoAnalysisSourceSchema = z.discriminatedUnion("kind", [
|
|
5006
|
+
z.object({ kind: z.literal("none") }),
|
|
5007
|
+
z.object({
|
|
5008
|
+
kind: z.literal("deterministic"),
|
|
5009
|
+
reason: z.enum(["dimensions", "fallback"])
|
|
5010
|
+
}),
|
|
5011
|
+
z.object({
|
|
5012
|
+
kind: z.literal("llm"),
|
|
5013
|
+
model: z.literal("gpt-5.4-mini"),
|
|
5014
|
+
analyzedAt: z.string().trim().min(1).max(80).optional()
|
|
5015
|
+
}),
|
|
5016
|
+
z.object({ kind: z.literal("manual-override") })
|
|
5017
|
+
]);
|
|
5018
|
+
z.object({
|
|
5019
|
+
shape: z.enum(logoAssetShapeValues),
|
|
5020
|
+
containsText: logoContainsTextSchema,
|
|
5021
|
+
kind: z.enum(logoKindValues),
|
|
5022
|
+
density: z.enum(logoDensityValues),
|
|
5023
|
+
source: logoAnalysisSourceSchema
|
|
5024
|
+
});
|
|
5025
|
+
brandDisplayModeValues = [
|
|
5026
|
+
"auto",
|
|
5027
|
+
"logo-only",
|
|
5028
|
+
"logo-plus-title",
|
|
5029
|
+
"title-only"
|
|
5030
|
+
];
|
|
5031
|
+
logoAccommodationPatternValues = [
|
|
5032
|
+
"title-only",
|
|
5033
|
+
"inline-logo-only",
|
|
5034
|
+
"inline-wordmark",
|
|
5035
|
+
"inline-mark-with-title",
|
|
5036
|
+
"logo-plate",
|
|
5037
|
+
"centered-badge",
|
|
5038
|
+
"popout-badge",
|
|
5039
|
+
"centered-masthead",
|
|
5040
|
+
"hero-badge"
|
|
5041
|
+
];
|
|
5042
|
+
logoSizePolicyValues = [
|
|
5043
|
+
"auto",
|
|
5044
|
+
"compact",
|
|
5045
|
+
"standard",
|
|
5046
|
+
"generous",
|
|
5047
|
+
"display"
|
|
5048
|
+
];
|
|
5049
|
+
}
|
|
5050
|
+
});
|
|
5051
|
+
|
|
5052
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
5053
|
+
var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, pageDesignEditorBackgroundOverrideOwner;
|
|
5054
|
+
var init_rawStyleFields = __esm({
|
|
5055
|
+
"../theme-core/src/site-styles/rawStyleFields.ts"() {
|
|
5056
|
+
themeV2RuntimeStyleFieldNames = [
|
|
5057
|
+
"_frameStyles",
|
|
5058
|
+
"_sectionStyles",
|
|
5059
|
+
"_containerStyles",
|
|
5060
|
+
"_cardStyles",
|
|
5061
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
5062
|
+
// override object, but normal editors should still never see it directly.
|
|
5063
|
+
"styleGroup"
|
|
5064
|
+
];
|
|
5065
|
+
themeV2BlockSpecificRawStyleFieldNames = [
|
|
5066
|
+
"_contentCardStyles",
|
|
5067
|
+
"_heroLayoutStyles",
|
|
5068
|
+
"_textCardStyles"
|
|
5069
|
+
];
|
|
5070
|
+
themeV2NormalEditorRawStyleFieldNames = [
|
|
5071
|
+
...themeV2RuntimeStyleFieldNames,
|
|
5072
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
5073
|
+
];
|
|
5074
|
+
new Set(
|
|
5075
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
5076
|
+
);
|
|
5077
|
+
[
|
|
5078
|
+
...themeV2RuntimeStyleFieldNames,
|
|
5079
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
5080
|
+
];
|
|
5081
|
+
pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
|
|
5082
|
+
}
|
|
5083
|
+
});
|
|
4829
5084
|
|
|
4830
5085
|
// ../theme-core/src/utils/colorStyles.ts
|
|
4831
5086
|
function parseToken(source) {
|
|
@@ -4955,7 +5210,7 @@ var init_tokenOrColor = __esm({
|
|
|
4955
5210
|
]);
|
|
4956
5211
|
}
|
|
4957
5212
|
});
|
|
4958
|
-
var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, themeSchema;
|
|
5213
|
+
var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
|
|
4959
5214
|
var init_schema3 = __esm({
|
|
4960
5215
|
"../theme-core/src/schema.ts"() {
|
|
4961
5216
|
init_media();
|
|
@@ -4969,6 +5224,8 @@ var init_schema3 = __esm({
|
|
|
4969
5224
|
init_atRuleValidation();
|
|
4970
5225
|
init_shared();
|
|
4971
5226
|
init_types2();
|
|
5227
|
+
init_logoBranding();
|
|
5228
|
+
init_rawStyleFields();
|
|
4972
5229
|
init_themeColorTokens();
|
|
4973
5230
|
init_tokenOrColor();
|
|
4974
5231
|
axesSchema = z.object({
|
|
@@ -5055,8 +5312,10 @@ var init_schema3 = __esm({
|
|
|
5055
5312
|
});
|
|
5056
5313
|
boxBackgroundSchema = z.object({
|
|
5057
5314
|
type: z.enum(["color", "gradient", "image"]).optional(),
|
|
5315
|
+
contentOwner: z.literal(pageDesignEditorBackgroundOverrideOwner).optional(),
|
|
5058
5316
|
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
5059
5317
|
gradient: z.string().nullable().optional(),
|
|
5318
|
+
gradientPresetId: z.string().min(1).nullable().optional(),
|
|
5060
5319
|
image: mediaSchema.nullable().optional(),
|
|
5061
5320
|
objectFit: z.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
5062
5321
|
scale: z.string().nullable().optional(),
|
|
@@ -5068,18 +5327,22 @@ var init_schema3 = __esm({
|
|
|
5068
5327
|
headingColor: tokenOrCssColorValueSchema.nullable().optional()
|
|
5069
5328
|
});
|
|
5070
5329
|
noHeadingDecorationSchema = z.object({
|
|
5071
|
-
family: z.literal("none")
|
|
5072
|
-
placement: z.literal("none")
|
|
5330
|
+
family: z.literal("none")
|
|
5073
5331
|
});
|
|
5074
5332
|
visibleHeadingDecorationSchema = z.object({
|
|
5075
5333
|
family: z.enum(visibleHeadingDecorationFamilyValues),
|
|
5076
|
-
placement: z.enum(visibleHeadingDecorationPlacementValues),
|
|
5077
5334
|
colorToken: z.enum(headingDecorationColorTokenValues).optional()
|
|
5078
5335
|
});
|
|
5079
5336
|
headingDecorationSchema = z.union([
|
|
5080
5337
|
noHeadingDecorationSchema,
|
|
5081
5338
|
visibleHeadingDecorationSchema
|
|
5082
5339
|
]);
|
|
5340
|
+
headingDecorationOverrideSchema = z.union([
|
|
5341
|
+
z.enum(headingDecorationOverrideValues),
|
|
5342
|
+
// Legacy authoring value from the earlier model. In the render-time model
|
|
5343
|
+
// "on" cannot force a fragment into a block, so it is equivalent to default.
|
|
5344
|
+
z.literal("on").transform(() => "site-default")
|
|
5345
|
+
]);
|
|
5083
5346
|
accordionIconTreatmentSchema = z.object({
|
|
5084
5347
|
iconSet: z.enum(accordionIconSetValues),
|
|
5085
5348
|
colorToken: z.enum(accordionIconColorTokenValues),
|
|
@@ -5094,9 +5357,11 @@ var init_schema3 = __esm({
|
|
|
5094
5357
|
eventListTreatment: z.enum(eventListTreatmentValues).nullable().optional(),
|
|
5095
5358
|
eyebrowTreatment: z.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
5096
5359
|
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
5097
|
-
// Author-level
|
|
5098
|
-
//
|
|
5099
|
-
|
|
5360
|
+
// Author-level opt-out consumed by render-time theme projection. Persisted
|
|
5361
|
+
// content may also carry legacy `headingDecoration` / `on` values; those are
|
|
5362
|
+
// tolerated at the schema boundary but the renderer treats the compiled theme
|
|
5363
|
+
// as the only source of the resolved signature.
|
|
5364
|
+
headingDecorationOverride: headingDecorationOverrideSchema.nullable().optional(),
|
|
5100
5365
|
accordionIconTreatment: accordionIconTreatmentSchema.nullable().optional()
|
|
5101
5366
|
});
|
|
5102
5367
|
containerStylesOverrideSchema = z.object({
|
|
@@ -5117,7 +5382,16 @@ var init_schema3 = __esm({
|
|
|
5117
5382
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
5118
5383
|
raised: z.boolean().nullable().optional(),
|
|
5119
5384
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
5120
|
-
treatment: z.enum([
|
|
5385
|
+
treatment: z.enum([
|
|
5386
|
+
"accent-quote",
|
|
5387
|
+
"editorial-rule",
|
|
5388
|
+
"soft-panel",
|
|
5389
|
+
"editorial-serif-quote",
|
|
5390
|
+
"editorial-open"
|
|
5391
|
+
]).nullable().optional(),
|
|
5392
|
+
// Which site-style card variant the card adopts (emits a `.card-{id}` class).
|
|
5393
|
+
// 'none' is boxless. Driven by the block look via testimonialCardTreatment.
|
|
5394
|
+
cardVariant: boxStylesCardVariantSchema.nullable().optional()
|
|
5121
5395
|
});
|
|
5122
5396
|
blockStyleOverridesSchema = z.object({
|
|
5123
5397
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
@@ -5217,7 +5491,10 @@ var init_schema3 = __esm({
|
|
|
5217
5491
|
logoStyleSchema = z.object({
|
|
5218
5492
|
fontFamily: z.enum(["heading", "body"]).default("heading"),
|
|
5219
5493
|
letterSpacing: z.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
5220
|
-
gradient: z.boolean().default(false)
|
|
5494
|
+
gradient: z.boolean().default(false),
|
|
5495
|
+
brandDisplay: z.enum(brandDisplayModeValues).optional(),
|
|
5496
|
+
size: z.enum(logoSizePolicyValues).optional(),
|
|
5497
|
+
accommodation: z.enum(logoAccommodationPatternValues).optional()
|
|
5221
5498
|
}).optional();
|
|
5222
5499
|
headerLogoTextSchema = z.object({
|
|
5223
5500
|
mobileWrapLines: z.union([z.literal(1), z.literal(2)]).optional(),
|
|
@@ -5456,6 +5733,13 @@ var init_schema3 = __esm({
|
|
|
5456
5733
|
hero: z.string().min(1).nullable().optional(),
|
|
5457
5734
|
background: z.string().min(1).nullable().optional()
|
|
5458
5735
|
});
|
|
5736
|
+
testimonialQuoteTreatmentSchema = z.object({
|
|
5737
|
+
style: z.enum(["serif-display", "accent-glyph", "none"]),
|
|
5738
|
+
fontFamily: z.enum(["heading", "body"]).optional(),
|
|
5739
|
+
scale: z.enum(["sm", "md", "lg", "xl"]).optional(),
|
|
5740
|
+
colorToken: themeColorTokenSchema.optional(),
|
|
5741
|
+
opacity: z.number().min(0).max(1).optional()
|
|
5742
|
+
});
|
|
5459
5743
|
themeSchema = z.object({
|
|
5460
5744
|
name: z.string().min(1).max(30),
|
|
5461
5745
|
description: z.string().min(1).max(400),
|
|
@@ -5481,6 +5765,8 @@ var init_schema3 = __esm({
|
|
|
5481
5765
|
// Card variant system (optional for backwards compatibility)
|
|
5482
5766
|
accordions: accordionSystemSchema.optional(),
|
|
5483
5767
|
// Accordion system (optional - generated if not provided)
|
|
5768
|
+
testimonialQuote: testimonialQuoteTreatmentSchema.optional(),
|
|
5769
|
+
// Testimonial quote-mark treatment (site-style-owned)
|
|
5484
5770
|
inputs: inputSystemSchema.optional(),
|
|
5485
5771
|
// Input system (optional - generated if not provided)
|
|
5486
5772
|
inputStyle: inputStyle.optional(),
|
|
@@ -5497,6 +5783,10 @@ var init_schema3 = __esm({
|
|
|
5497
5783
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
5498
5784
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
5499
5785
|
blockOverrides: z.record(z.string(), blockThemeOverrideSchema).optional(),
|
|
5786
|
+
// Site-wide heading decoration signature (family + colour). Set once per Look
|
|
5787
|
+
// and projected transiently onto eligible block headings at render time.
|
|
5788
|
+
// Alignment is inherited from the heading, so no placement is stored.
|
|
5789
|
+
headingDecoration: headingDecorationSchema.optional(),
|
|
5500
5790
|
// Structured custom CSS rules
|
|
5501
5791
|
// Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
|
|
5502
5792
|
customCssRules: customCssRulesSchema,
|
|
@@ -5763,7 +6053,7 @@ var init_high_contrast = __esm({
|
|
|
5763
6053
|
});
|
|
5764
6054
|
|
|
5765
6055
|
// ../theme-core/src/palette/variants/soft-natural.ts
|
|
5766
|
-
var softNaturalSage, softNaturalStone, softNaturalWatercolor;
|
|
6056
|
+
var softNaturalSage, softNaturalStone, softNaturalWatercolor, softNaturalLilac;
|
|
5767
6057
|
var init_soft_natural = __esm({
|
|
5768
6058
|
"../theme-core/src/palette/variants/soft-natural.ts"() {
|
|
5769
6059
|
init_types11();
|
|
@@ -5833,6 +6123,28 @@ var init_soft_natural = __esm({
|
|
|
5833
6123
|
{ name: "border", hex: "#d8c9a8" }
|
|
5834
6124
|
]
|
|
5835
6125
|
});
|
|
6126
|
+
softNaturalLilac = definePaletteVariant({
|
|
6127
|
+
id: "soft-natural-lilac",
|
|
6128
|
+
name: "Soft Natural \u2014 Lilac",
|
|
6129
|
+
description: "Watercolour periwinkle-lilac primary with warm ivory grounds and a sage accent.",
|
|
6130
|
+
tags: { tone: "classic", energy: "calm", era: "organic" },
|
|
6131
|
+
mode: "light",
|
|
6132
|
+
colors: [
|
|
6133
|
+
{ name: "primary", hex: "#5c68a8" },
|
|
6134
|
+
{ name: "secondary", hex: "#8189ad" },
|
|
6135
|
+
{ name: "accent", hex: "#75835a" },
|
|
6136
|
+
{ name: "success", hex: "#5f7d62" },
|
|
6137
|
+
{ name: "warning", hex: "#a8884f" },
|
|
6138
|
+
{ name: "destructive", hex: "#a3503e" },
|
|
6139
|
+
{ name: "background", hex: "#faf9f6" },
|
|
6140
|
+
{ name: "surface", hex: "#ffffff" },
|
|
6141
|
+
{ name: "surfaceAlt", hex: "#f1f0f7" },
|
|
6142
|
+
{ name: "muted", hex: "#e9e8f2" },
|
|
6143
|
+
{ name: "text", hex: "#262633" },
|
|
6144
|
+
{ name: "primaryForeground", hex: "#ffffff" },
|
|
6145
|
+
{ name: "border", hex: "#d6d5e3" }
|
|
6146
|
+
]
|
|
6147
|
+
});
|
|
5836
6148
|
}
|
|
5837
6149
|
});
|
|
5838
6150
|
|
|
@@ -5962,7 +6274,8 @@ var init_variants = __esm({
|
|
|
5962
6274
|
// Soft-natural family
|
|
5963
6275
|
softNaturalSage,
|
|
5964
6276
|
softNaturalStone,
|
|
5965
|
-
softNaturalWatercolor
|
|
6277
|
+
softNaturalWatercolor,
|
|
6278
|
+
softNaturalLilac
|
|
5966
6279
|
];
|
|
5967
6280
|
paletteVariantsById = new Map(
|
|
5968
6281
|
paletteVariants.map((v) => [v.id, v])
|
|
@@ -5971,9 +6284,185 @@ var init_variants = __esm({
|
|
|
5971
6284
|
});
|
|
5972
6285
|
|
|
5973
6286
|
// ../theme-core/src/accordions/siteStyleDefaults.ts
|
|
5974
|
-
var softEarthAccordionSystem;
|
|
6287
|
+
var editorialDividedAccordionSystem, quietUnderlinedAccordionSystem, calmPanelAccordionSystem, boldBorderedAccordionSystem, warmInsetAccordionSystem, softEarthAccordionSystem;
|
|
5975
6288
|
var init_siteStyleDefaults = __esm({
|
|
5976
6289
|
"../theme-core/src/accordions/siteStyleDefaults.ts"() {
|
|
6290
|
+
editorialDividedAccordionSystem = {
|
|
6291
|
+
background: null,
|
|
6292
|
+
spacing: "comfortable",
|
|
6293
|
+
corners: "square",
|
|
6294
|
+
border: null,
|
|
6295
|
+
shadow: null,
|
|
6296
|
+
icon: {
|
|
6297
|
+
style: "plus-minus",
|
|
6298
|
+
position: "right",
|
|
6299
|
+
size: "md",
|
|
6300
|
+
colorToken: "primary"
|
|
6301
|
+
},
|
|
6302
|
+
trigger: {
|
|
6303
|
+
textColorToken: "text",
|
|
6304
|
+
fontWeight: "regular",
|
|
6305
|
+
fontFamily: "heading",
|
|
6306
|
+
fontScale: "lg"
|
|
6307
|
+
},
|
|
6308
|
+
hover: {
|
|
6309
|
+
textColorToken: "primary"
|
|
6310
|
+
},
|
|
6311
|
+
openState: {
|
|
6312
|
+
backgroundColorToken: "surfaceAlt",
|
|
6313
|
+
triggerColorToken: "primary",
|
|
6314
|
+
accent: {
|
|
6315
|
+
edge: "left",
|
|
6316
|
+
colorToken: "primary",
|
|
6317
|
+
thickness: "medium"
|
|
6318
|
+
}
|
|
6319
|
+
},
|
|
6320
|
+
content: {
|
|
6321
|
+
textColorToken: "neutral-700"
|
|
6322
|
+
}
|
|
6323
|
+
};
|
|
6324
|
+
quietUnderlinedAccordionSystem = {
|
|
6325
|
+
background: null,
|
|
6326
|
+
spacing: "spacious",
|
|
6327
|
+
corners: "square",
|
|
6328
|
+
border: null,
|
|
6329
|
+
shadow: null,
|
|
6330
|
+
icon: {
|
|
6331
|
+
style: "chevron",
|
|
6332
|
+
position: "right",
|
|
6333
|
+
size: "sm",
|
|
6334
|
+
colorToken: "muted"
|
|
6335
|
+
},
|
|
6336
|
+
trigger: {
|
|
6337
|
+
textColorToken: "text",
|
|
6338
|
+
fontWeight: "regular",
|
|
6339
|
+
fontFamily: "heading",
|
|
6340
|
+
fontScale: "lg"
|
|
6341
|
+
},
|
|
6342
|
+
hover: {
|
|
6343
|
+
textColorToken: "primary"
|
|
6344
|
+
},
|
|
6345
|
+
openState: {
|
|
6346
|
+
triggerColorToken: "primary"
|
|
6347
|
+
},
|
|
6348
|
+
content: {
|
|
6349
|
+
textColorToken: "neutral-700"
|
|
6350
|
+
}
|
|
6351
|
+
};
|
|
6352
|
+
calmPanelAccordionSystem = {
|
|
6353
|
+
background: {
|
|
6354
|
+
type: "solid",
|
|
6355
|
+
colorToken: "surface"
|
|
6356
|
+
},
|
|
6357
|
+
spacing: "comfortable",
|
|
6358
|
+
corners: "soft",
|
|
6359
|
+
border: {
|
|
6360
|
+
widthClass: "border",
|
|
6361
|
+
colorToken: "border"
|
|
6362
|
+
},
|
|
6363
|
+
shadow: {
|
|
6364
|
+
elevation: "low",
|
|
6365
|
+
softness: "soft",
|
|
6366
|
+
position: "bottom"
|
|
6367
|
+
},
|
|
6368
|
+
icon: {
|
|
6369
|
+
style: "chevron",
|
|
6370
|
+
position: "right",
|
|
6371
|
+
size: "md",
|
|
6372
|
+
colorToken: "primary"
|
|
6373
|
+
},
|
|
6374
|
+
trigger: {
|
|
6375
|
+
textColorToken: "text",
|
|
6376
|
+
fontWeight: "medium",
|
|
6377
|
+
fontFamily: "heading",
|
|
6378
|
+
fontScale: "md"
|
|
6379
|
+
},
|
|
6380
|
+
hover: {
|
|
6381
|
+
backgroundColorToken: "primary/5",
|
|
6382
|
+
textColorToken: "primary"
|
|
6383
|
+
},
|
|
6384
|
+
openState: {
|
|
6385
|
+
backgroundColorToken: "primary/5",
|
|
6386
|
+
triggerColorToken: "primary"
|
|
6387
|
+
},
|
|
6388
|
+
content: {
|
|
6389
|
+
textColorToken: "neutral-700"
|
|
6390
|
+
}
|
|
6391
|
+
};
|
|
6392
|
+
boldBorderedAccordionSystem = {
|
|
6393
|
+
background: {
|
|
6394
|
+
type: "solid",
|
|
6395
|
+
colorToken: "surface"
|
|
6396
|
+
},
|
|
6397
|
+
spacing: "comfortable",
|
|
6398
|
+
corners: "soft",
|
|
6399
|
+
border: {
|
|
6400
|
+
widthClass: "border-2",
|
|
6401
|
+
colorToken: "border"
|
|
6402
|
+
},
|
|
6403
|
+
shadow: null,
|
|
6404
|
+
icon: {
|
|
6405
|
+
style: "plus-minus",
|
|
6406
|
+
position: "right",
|
|
6407
|
+
size: "lg",
|
|
6408
|
+
colorToken: "primary"
|
|
6409
|
+
},
|
|
6410
|
+
trigger: {
|
|
6411
|
+
textColorToken: "text",
|
|
6412
|
+
fontWeight: "bold",
|
|
6413
|
+
fontFamily: "heading",
|
|
6414
|
+
fontScale: "md"
|
|
6415
|
+
},
|
|
6416
|
+
hover: {
|
|
6417
|
+
backgroundColorToken: "primary/10",
|
|
6418
|
+
textColorToken: "primary"
|
|
6419
|
+
},
|
|
6420
|
+
openState: {
|
|
6421
|
+
backgroundColorToken: "primary/10",
|
|
6422
|
+
triggerColorToken: "primary",
|
|
6423
|
+
accent: {
|
|
6424
|
+
edge: "left",
|
|
6425
|
+
colorToken: "primary",
|
|
6426
|
+
thickness: "thick"
|
|
6427
|
+
}
|
|
6428
|
+
},
|
|
6429
|
+
content: {
|
|
6430
|
+
textColorToken: "neutral-700"
|
|
6431
|
+
}
|
|
6432
|
+
};
|
|
6433
|
+
warmInsetAccordionSystem = {
|
|
6434
|
+
background: {
|
|
6435
|
+
type: "solid",
|
|
6436
|
+
colorToken: "surfaceAlt"
|
|
6437
|
+
},
|
|
6438
|
+
spacing: "comfortable",
|
|
6439
|
+
corners: "rounded",
|
|
6440
|
+
border: null,
|
|
6441
|
+
shadow: null,
|
|
6442
|
+
icon: {
|
|
6443
|
+
style: "circle-plus-minus",
|
|
6444
|
+
position: "right",
|
|
6445
|
+
size: "md",
|
|
6446
|
+
colorToken: "primary"
|
|
6447
|
+
},
|
|
6448
|
+
trigger: {
|
|
6449
|
+
textColorToken: "text",
|
|
6450
|
+
fontWeight: "semibold",
|
|
6451
|
+
fontFamily: "heading",
|
|
6452
|
+
fontScale: "md"
|
|
6453
|
+
},
|
|
6454
|
+
hover: {
|
|
6455
|
+
backgroundColorToken: "primary/5",
|
|
6456
|
+
textColorToken: "primary"
|
|
6457
|
+
},
|
|
6458
|
+
openState: {
|
|
6459
|
+
backgroundColorToken: "surface",
|
|
6460
|
+
triggerColorToken: "primary"
|
|
6461
|
+
},
|
|
6462
|
+
content: {
|
|
6463
|
+
textColorToken: "neutral-700"
|
|
6464
|
+
}
|
|
6465
|
+
};
|
|
5977
6466
|
softEarthAccordionSystem = {
|
|
5978
6467
|
background: {
|
|
5979
6468
|
type: "solid",
|
|
@@ -5991,11 +6480,16 @@ var init_siteStyleDefaults = __esm({
|
|
|
5991
6480
|
},
|
|
5992
6481
|
trigger: {
|
|
5993
6482
|
textColorToken: "text",
|
|
5994
|
-
fontWeight: "medium"
|
|
6483
|
+
fontWeight: "medium",
|
|
6484
|
+
fontFamily: "heading",
|
|
6485
|
+
fontScale: "md"
|
|
5995
6486
|
},
|
|
5996
6487
|
hover: {
|
|
5997
6488
|
textColorToken: "primary"
|
|
5998
6489
|
},
|
|
6490
|
+
openState: {
|
|
6491
|
+
triggerColorToken: "primary"
|
|
6492
|
+
},
|
|
5999
6493
|
content: {
|
|
6000
6494
|
textColorToken: "neutral-700"
|
|
6001
6495
|
}
|
|
@@ -6003,6 +6497,91 @@ var init_siteStyleDefaults = __esm({
|
|
|
6003
6497
|
}
|
|
6004
6498
|
});
|
|
6005
6499
|
|
|
6500
|
+
// ../theme-core/src/cards/siteStyleDefaults.ts
|
|
6501
|
+
var southWestCardSystem, clarityZenCardSystem;
|
|
6502
|
+
var init_siteStyleDefaults2 = __esm({
|
|
6503
|
+
"../theme-core/src/cards/siteStyleDefaults.ts"() {
|
|
6504
|
+
southWestCardSystem = {
|
|
6505
|
+
variants: [
|
|
6506
|
+
{
|
|
6507
|
+
id: "default",
|
|
6508
|
+
name: "Default",
|
|
6509
|
+
enabled: true,
|
|
6510
|
+
priority: 1,
|
|
6511
|
+
background: { type: "solid", colorToken: "surface" },
|
|
6512
|
+
foregroundToken: "text",
|
|
6513
|
+
spacing: "comfortable",
|
|
6514
|
+
corners: "soft",
|
|
6515
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" }
|
|
6516
|
+
},
|
|
6517
|
+
{
|
|
6518
|
+
id: "alternative",
|
|
6519
|
+
name: "Statement",
|
|
6520
|
+
enabled: true,
|
|
6521
|
+
priority: 2,
|
|
6522
|
+
background: { type: "solid", colorToken: "primary-700" },
|
|
6523
|
+
foregroundToken: "primaryForeground",
|
|
6524
|
+
spacing: "comfortable",
|
|
6525
|
+
// No shadow on the variant itself: the elevation comes from the look's
|
|
6526
|
+
// 'raised' item surface (rb-shadow-md = var(--shadow-md)), reproducing the
|
|
6527
|
+
// legacy accent-quote card's shadow exactly.
|
|
6528
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
6529
|
+
accentEdge: { edge: "left", colorToken: "secondary", width: "heavy" },
|
|
6530
|
+
cornerRadii: {
|
|
6531
|
+
topLeft: "square",
|
|
6532
|
+
topRight: "expressive",
|
|
6533
|
+
bottomLeft: "square",
|
|
6534
|
+
bottomRight: "square"
|
|
6535
|
+
}
|
|
6536
|
+
}
|
|
6537
|
+
]
|
|
6538
|
+
};
|
|
6539
|
+
clarityZenCardSystem = {
|
|
6540
|
+
variants: [
|
|
6541
|
+
{
|
|
6542
|
+
id: "default",
|
|
6543
|
+
name: "Default",
|
|
6544
|
+
enabled: true,
|
|
6545
|
+
priority: 1,
|
|
6546
|
+
background: { type: "solid", colorToken: "surface" },
|
|
6547
|
+
// A filled card establishes its own text colour so it stays legible on a
|
|
6548
|
+
// coloured section band (which sets a contrasting section-text colour).
|
|
6549
|
+
foregroundToken: "text",
|
|
6550
|
+
spacing: "comfortable",
|
|
6551
|
+
corners: "rounded",
|
|
6552
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" }
|
|
6553
|
+
},
|
|
6554
|
+
{
|
|
6555
|
+
id: "alternative",
|
|
6556
|
+
name: "Statement",
|
|
6557
|
+
enabled: true,
|
|
6558
|
+
priority: 2,
|
|
6559
|
+
// Themed surfaceAlt tint + a touch more elevation so an emphasised
|
|
6560
|
+
// section reads as a deliberate "statement" against the default card.
|
|
6561
|
+
background: { type: "solid", colorToken: "surfaceAlt" },
|
|
6562
|
+
foregroundToken: "text",
|
|
6563
|
+
spacing: "comfortable",
|
|
6564
|
+
corners: "rounded",
|
|
6565
|
+
shadow: { elevation: "medium", softness: "soft", position: "bottom" }
|
|
6566
|
+
}
|
|
6567
|
+
]
|
|
6568
|
+
};
|
|
6569
|
+
}
|
|
6570
|
+
});
|
|
6571
|
+
|
|
6572
|
+
// ../theme-core/src/site-styles/testimonialQuotePresets.ts
|
|
6573
|
+
var serifDisplayQuote, accentGlyphQuote;
|
|
6574
|
+
var init_testimonialQuotePresets = __esm({
|
|
6575
|
+
"../theme-core/src/site-styles/testimonialQuotePresets.ts"() {
|
|
6576
|
+
serifDisplayQuote = {
|
|
6577
|
+
style: "serif-display"
|
|
6578
|
+
};
|
|
6579
|
+
accentGlyphQuote = {
|
|
6580
|
+
style: "accent-glyph"
|
|
6581
|
+
};
|
|
6582
|
+
}
|
|
6583
|
+
});
|
|
6584
|
+
|
|
6006
6585
|
// ../theme-core/src/site-styles/customizableSurfaces.ts
|
|
6007
6586
|
var init_customizableSurfaces = __esm({
|
|
6008
6587
|
"../theme-core/src/site-styles/customizableSurfaces.ts"() {
|
|
@@ -6329,12 +6908,96 @@ function headerConfigurationKey(configuration) {
|
|
|
6329
6908
|
function findHeaderLook(id) {
|
|
6330
6909
|
return headerLooksById.get(id);
|
|
6331
6910
|
}
|
|
6332
|
-
var headerLayoutCatalog, headerStyleCatalog, headerLayoutsById, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById, headerLookCatalog, guaranteedFallbackHeaderLayoutId, guaranteedFallbackHeaderStyleId, headerLooksById;
|
|
6911
|
+
var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations, headerLayoutCatalog, headerStyleCatalog, headerLayoutsById, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById, headerLookCatalog, guaranteedFallbackHeaderLayoutId, guaranteedFallbackHeaderStyleId, headerLooksById;
|
|
6333
6912
|
var init_headerLooks = __esm({
|
|
6334
6913
|
"../theme-core/src/site-styles/headerLooks.ts"() {
|
|
6335
6914
|
init_headerCtaVariants();
|
|
6336
6915
|
init_customizableSurfaces();
|
|
6916
|
+
init_logoBranding();
|
|
6337
6917
|
init_types2();
|
|
6918
|
+
titleOnlyLogoAccommodation = {
|
|
6919
|
+
pattern: "title-only",
|
|
6920
|
+
supportedShapes: ["none", "horizontal", "square", "portrait", "tall"],
|
|
6921
|
+
supportedTextPresence: ["contains-text", "no-text", "unknown"],
|
|
6922
|
+
supportedDisplayModes: ["title-only"],
|
|
6923
|
+
size: "compact"
|
|
6924
|
+
};
|
|
6925
|
+
inlineWordmarkLogoAccommodation = {
|
|
6926
|
+
pattern: "inline-wordmark",
|
|
6927
|
+
supportedShapes: ["horizontal"],
|
|
6928
|
+
supportedTextPresence: ["contains-text", "no-text", "unknown"],
|
|
6929
|
+
supportedDisplayModes: ["logo-only"],
|
|
6930
|
+
size: "standard",
|
|
6931
|
+
maxDensity: "detailed"
|
|
6932
|
+
};
|
|
6933
|
+
inlineMarkWithTitleLogoAccommodation = {
|
|
6934
|
+
pattern: "inline-mark-with-title",
|
|
6935
|
+
supportedShapes: ["horizontal", "square", "portrait", "tall"],
|
|
6936
|
+
supportedTextPresence: ["no-text"],
|
|
6937
|
+
supportedDisplayModes: ["logo-plus-title"],
|
|
6938
|
+
size: "compact",
|
|
6939
|
+
maxDensity: "simple"
|
|
6940
|
+
};
|
|
6941
|
+
logoPlateAccommodation = {
|
|
6942
|
+
pattern: "logo-plate",
|
|
6943
|
+
supportedShapes: ["square", "portrait", "tall"],
|
|
6944
|
+
supportedTextPresence: ["contains-text", "unknown"],
|
|
6945
|
+
supportedDisplayModes: ["logo-only"],
|
|
6946
|
+
size: "display",
|
|
6947
|
+
providesBacking: true
|
|
6948
|
+
};
|
|
6949
|
+
centeredBadgeAccommodation = {
|
|
6950
|
+
pattern: "centered-badge",
|
|
6951
|
+
supportedShapes: ["square", "portrait", "tall"],
|
|
6952
|
+
supportedTextPresence: ["contains-text", "unknown"],
|
|
6953
|
+
supportedDisplayModes: ["logo-only"],
|
|
6954
|
+
size: "display",
|
|
6955
|
+
providesBacking: true
|
|
6956
|
+
};
|
|
6957
|
+
popoutBadgeAccommodation = {
|
|
6958
|
+
pattern: "popout-badge",
|
|
6959
|
+
supportedShapes: ["square", "portrait", "tall"],
|
|
6960
|
+
supportedTextPresence: ["contains-text", "unknown"],
|
|
6961
|
+
supportedDisplayModes: ["logo-only"],
|
|
6962
|
+
size: "display",
|
|
6963
|
+
providesBacking: true
|
|
6964
|
+
};
|
|
6965
|
+
centeredMastheadAccommodation = {
|
|
6966
|
+
pattern: "centered-masthead",
|
|
6967
|
+
supportedShapes: ["square", "portrait", "tall"],
|
|
6968
|
+
supportedTextPresence: ["contains-text", "unknown"],
|
|
6969
|
+
supportedDisplayModes: ["logo-only"],
|
|
6970
|
+
size: "display",
|
|
6971
|
+
providesBacking: true
|
|
6972
|
+
};
|
|
6973
|
+
unbackedOverlayLogoAccommodation = {
|
|
6974
|
+
pattern: "inline-logo-only",
|
|
6975
|
+
supportedShapes: ["square"],
|
|
6976
|
+
supportedTextPresence: ["contains-text", "unknown"],
|
|
6977
|
+
supportedDisplayModes: ["logo-only"],
|
|
6978
|
+
size: "compact",
|
|
6979
|
+
providesBacking: false
|
|
6980
|
+
};
|
|
6981
|
+
inlineClassicLogoAccommodations = [
|
|
6982
|
+
titleOnlyLogoAccommodation,
|
|
6983
|
+
inlineWordmarkLogoAccommodation,
|
|
6984
|
+
inlineMarkWithTitleLogoAccommodation,
|
|
6985
|
+
popoutBadgeAccommodation,
|
|
6986
|
+
logoPlateAccommodation
|
|
6987
|
+
];
|
|
6988
|
+
centeredLogoAccommodations = [
|
|
6989
|
+
titleOnlyLogoAccommodation,
|
|
6990
|
+
inlineWordmarkLogoAccommodation,
|
|
6991
|
+
inlineMarkWithTitleLogoAccommodation,
|
|
6992
|
+
centeredMastheadAccommodation,
|
|
6993
|
+
centeredBadgeAccommodation
|
|
6994
|
+
];
|
|
6995
|
+
overlayLogoAccommodations = [
|
|
6996
|
+
titleOnlyLogoAccommodation,
|
|
6997
|
+
inlineWordmarkLogoAccommodation,
|
|
6998
|
+
inlineMarkWithTitleLogoAccommodation,
|
|
6999
|
+
unbackedOverlayLogoAccommodation
|
|
7000
|
+
];
|
|
6338
7001
|
headerLayoutCatalog = [
|
|
6339
7002
|
{
|
|
6340
7003
|
id: asHeaderLayoutId("classic"),
|
|
@@ -6704,6 +7367,7 @@ var init_headerLooks = __esm({
|
|
|
6704
7367
|
behavior: "sticky"
|
|
6705
7368
|
},
|
|
6706
7369
|
openingRequirement: "none",
|
|
7370
|
+
logoAccommodations: inlineClassicLogoAccommodations,
|
|
6707
7371
|
compile: cleanBaseHeader
|
|
6708
7372
|
},
|
|
6709
7373
|
{
|
|
@@ -6717,6 +7381,7 @@ var init_headerLooks = __esm({
|
|
|
6717
7381
|
behavior: "sticky-shrink"
|
|
6718
7382
|
},
|
|
6719
7383
|
openingRequirement: "none",
|
|
7384
|
+
logoAccommodations: inlineClassicLogoAccommodations,
|
|
6720
7385
|
compile: solidBrandHeader
|
|
6721
7386
|
},
|
|
6722
7387
|
{
|
|
@@ -6731,6 +7396,7 @@ var init_headerLooks = __esm({
|
|
|
6731
7396
|
},
|
|
6732
7397
|
openingRequirement: "none",
|
|
6733
7398
|
maxRecommendedNavItems: 6,
|
|
7399
|
+
logoAccommodations: centeredLogoAccommodations,
|
|
6734
7400
|
compile: serifLineHeader
|
|
6735
7401
|
},
|
|
6736
7402
|
{
|
|
@@ -6745,7 +7411,7 @@ var init_headerLooks = __esm({
|
|
|
6745
7411
|
},
|
|
6746
7412
|
openingRequirement: "none",
|
|
6747
7413
|
maxRecommendedNavItems: 5,
|
|
6748
|
-
|
|
7414
|
+
logoAccommodations: centeredLogoAccommodations,
|
|
6749
7415
|
compile: centeredCalmHeader
|
|
6750
7416
|
},
|
|
6751
7417
|
{
|
|
@@ -6760,6 +7426,7 @@ var init_headerLooks = __esm({
|
|
|
6760
7426
|
},
|
|
6761
7427
|
openingRequirement: "none",
|
|
6762
7428
|
requiresProminentCta: true,
|
|
7429
|
+
logoAccommodations: inlineClassicLogoAccommodations,
|
|
6763
7430
|
compile: practicalUtilityHeader
|
|
6764
7431
|
},
|
|
6765
7432
|
{
|
|
@@ -6773,6 +7440,7 @@ var init_headerLooks = __esm({
|
|
|
6773
7440
|
behavior: "normal-flow"
|
|
6774
7441
|
},
|
|
6775
7442
|
openingRequirement: "reserved-space-ok",
|
|
7443
|
+
logoAccommodations: inlineClassicLogoAccommodations,
|
|
6776
7444
|
compile: minimalTransparentHeader
|
|
6777
7445
|
},
|
|
6778
7446
|
{
|
|
@@ -6787,7 +7455,7 @@ var init_headerLooks = __esm({
|
|
|
6787
7455
|
},
|
|
6788
7456
|
openingRequirement: "requires-image-hero-with-contrast-overlay",
|
|
6789
7457
|
maxRecommendedNavItems: 5,
|
|
6790
|
-
|
|
7458
|
+
logoAccommodations: overlayLogoAccommodations,
|
|
6791
7459
|
compile: transparentOverlayHeader
|
|
6792
7460
|
},
|
|
6793
7461
|
{
|
|
@@ -6802,7 +7470,7 @@ var init_headerLooks = __esm({
|
|
|
6802
7470
|
},
|
|
6803
7471
|
openingRequirement: "requires-image-hero-with-contrast-overlay",
|
|
6804
7472
|
maxRecommendedNavItems: 5,
|
|
6805
|
-
|
|
7473
|
+
logoAccommodations: overlayLogoAccommodations,
|
|
6806
7474
|
compile: floatingGlassHeader
|
|
6807
7475
|
}
|
|
6808
7476
|
];
|
|
@@ -6880,6 +7548,94 @@ function brandTwoBandFooter(theme) {
|
|
|
6880
7548
|
}
|
|
6881
7549
|
};
|
|
6882
7550
|
}
|
|
7551
|
+
function centeredCalmFooter(theme) {
|
|
7552
|
+
return {
|
|
7553
|
+
...theme.footer,
|
|
7554
|
+
variant: "simple",
|
|
7555
|
+
maxWidth: "container",
|
|
7556
|
+
background: {
|
|
7557
|
+
type: "color",
|
|
7558
|
+
color: "surfaceAlt"
|
|
7559
|
+
},
|
|
7560
|
+
navStyle: "minimal",
|
|
7561
|
+
navWeight: "regular",
|
|
7562
|
+
navColor: "text",
|
|
7563
|
+
navLinkStyle: {
|
|
7564
|
+
typography: "body",
|
|
7565
|
+
fontWeight: "regular",
|
|
7566
|
+
textTransform: "none",
|
|
7567
|
+
italic: false,
|
|
7568
|
+
colorToken: "text",
|
|
7569
|
+
hoverColorToken: "primary",
|
|
7570
|
+
padding: "none",
|
|
7571
|
+
borderRadius: "none"
|
|
7572
|
+
},
|
|
7573
|
+
navLayout: {
|
|
7574
|
+
layout: "inline-wrap",
|
|
7575
|
+
align: "center",
|
|
7576
|
+
gapX: "relaxed",
|
|
7577
|
+
gapY: "tight"
|
|
7578
|
+
},
|
|
7579
|
+
logo: {
|
|
7580
|
+
showLogo: true,
|
|
7581
|
+
showLogoText: false,
|
|
7582
|
+
placement: "above",
|
|
7583
|
+
size: "sm",
|
|
7584
|
+
align: "center"
|
|
7585
|
+
},
|
|
7586
|
+
bottomBar: {
|
|
7587
|
+
enabled: true,
|
|
7588
|
+
fullBleed: false,
|
|
7589
|
+
textAlign: "center",
|
|
7590
|
+
paddingX: "default",
|
|
7591
|
+
paddingY: "compact",
|
|
7592
|
+
borderTop: {
|
|
7593
|
+
width: "thin"
|
|
7594
|
+
}
|
|
7595
|
+
}
|
|
7596
|
+
};
|
|
7597
|
+
}
|
|
7598
|
+
function editorialColumnsFooter(theme) {
|
|
7599
|
+
return {
|
|
7600
|
+
...theme.footer,
|
|
7601
|
+
variant: "columns",
|
|
7602
|
+
maxWidth: "container",
|
|
7603
|
+
background: {
|
|
7604
|
+
type: "color",
|
|
7605
|
+
color: "surface"
|
|
7606
|
+
},
|
|
7607
|
+
navStyle: "minimal",
|
|
7608
|
+
navWeight: "regular",
|
|
7609
|
+
navColor: "text",
|
|
7610
|
+
navLinkStyle: {
|
|
7611
|
+
typography: "body",
|
|
7612
|
+
fontWeight: "regular",
|
|
7613
|
+
textTransform: "none",
|
|
7614
|
+
italic: false,
|
|
7615
|
+
colorToken: "text",
|
|
7616
|
+
hoverColorToken: "primary",
|
|
7617
|
+
padding: "none",
|
|
7618
|
+
borderRadius: "none"
|
|
7619
|
+
},
|
|
7620
|
+
logo: {
|
|
7621
|
+
showLogo: true,
|
|
7622
|
+
showLogoText: true,
|
|
7623
|
+
placement: "left",
|
|
7624
|
+
size: "sm",
|
|
7625
|
+
align: "start"
|
|
7626
|
+
},
|
|
7627
|
+
bottomBar: {
|
|
7628
|
+
enabled: true,
|
|
7629
|
+
fullBleed: false,
|
|
7630
|
+
textAlign: "center",
|
|
7631
|
+
paddingX: "default",
|
|
7632
|
+
paddingY: "compact",
|
|
7633
|
+
borderTop: {
|
|
7634
|
+
width: "thin"
|
|
7635
|
+
}
|
|
7636
|
+
}
|
|
7637
|
+
};
|
|
7638
|
+
}
|
|
6883
7639
|
function findFooterLook(id) {
|
|
6884
7640
|
return footerLooksById.get(id);
|
|
6885
7641
|
}
|
|
@@ -6894,6 +7650,16 @@ var init_footerLooks = __esm({
|
|
|
6894
7650
|
label: "Muted grounding footer",
|
|
6895
7651
|
compile: mutedGroundingFooter
|
|
6896
7652
|
},
|
|
7653
|
+
{
|
|
7654
|
+
id: asFooterLookId("footer-centered-calm"),
|
|
7655
|
+
label: "Centered calm footer",
|
|
7656
|
+
compile: centeredCalmFooter
|
|
7657
|
+
},
|
|
7658
|
+
{
|
|
7659
|
+
id: asFooterLookId("footer-editorial-columns"),
|
|
7660
|
+
label: "Editorial columns footer",
|
|
7661
|
+
compile: editorialColumnsFooter
|
|
7662
|
+
},
|
|
6897
7663
|
{
|
|
6898
7664
|
id: asFooterLookId("site-footer-brand-two-band"),
|
|
6899
7665
|
label: "Two-band brand footer",
|
|
@@ -6935,7 +7701,7 @@ var init_sourceCatalogs = __esm({
|
|
|
6935
7701
|
source: "generated",
|
|
6936
7702
|
sectionSurfaces: ["base", "muted-band", "accent-band", "brand-depth-band", "hero-image"],
|
|
6937
7703
|
contentFrames: generatedContentFrames,
|
|
6938
|
-
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
7704
|
+
itemSurfaces: ["none", "default", "flat", "outlined", "raised", "inset", "editorial"],
|
|
6939
7705
|
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
6940
7706
|
emphases: ["low", "medium", "high"],
|
|
6941
7707
|
detachedCustom: false
|
|
@@ -6944,11 +7710,7 @@ var init_sourceCatalogs = __esm({
|
|
|
6944
7710
|
source: "user",
|
|
6945
7711
|
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
6946
7712
|
contentFrames: userContentFrames,
|
|
6947
|
-
itemSurfaces:
|
|
6948
|
-
...generatedDesignOptionCatalog.itemSurfaces,
|
|
6949
|
-
"inset",
|
|
6950
|
-
"editorial"
|
|
6951
|
-
],
|
|
7713
|
+
itemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
6952
7714
|
transitions: [
|
|
6953
7715
|
...generatedDesignOptionCatalog.transitions,
|
|
6954
7716
|
"wave-edge",
|
|
@@ -7287,6 +8049,10 @@ function defineCuratedSiteStyle(input) {
|
|
|
7287
8049
|
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
7288
8050
|
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
7289
8051
|
},
|
|
8052
|
+
// Decoration is opt-in per style so it stays a distinguishing feature, not
|
|
8053
|
+
// wallpaper. Styles that want a mark set `headingDecoration` explicitly;
|
|
8054
|
+
// clean/minimal styles default to none.
|
|
8055
|
+
headingDecoration: input.headingDecoration ?? noHeadingDecoration,
|
|
7290
8056
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
7291
8057
|
...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
|
|
7292
8058
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
@@ -7478,6 +8244,8 @@ var init_curatedSiteStyles = __esm({
|
|
|
7478
8244
|
init_personalities();
|
|
7479
8245
|
init_variants();
|
|
7480
8246
|
init_siteStyleDefaults();
|
|
8247
|
+
init_siteStyleDefaults2();
|
|
8248
|
+
init_testimonialQuotePresets();
|
|
7481
8249
|
init_headerLooks();
|
|
7482
8250
|
init_footerLooks();
|
|
7483
8251
|
init_curatedChoices();
|
|
@@ -7568,6 +8336,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
7568
8336
|
defineCuratedSiteStyle({
|
|
7569
8337
|
id: "site-style:calm-studio",
|
|
7570
8338
|
name: "Calm Studio",
|
|
8339
|
+
themeOverrides: {
|
|
8340
|
+
accordions: calmPanelAccordionSystem,
|
|
8341
|
+
testimonialQuote: serifDisplayQuote
|
|
8342
|
+
},
|
|
8343
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7571
8344
|
description: "Soft, measured, and spacious for intimate appointment or class businesses.",
|
|
7572
8345
|
generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
|
|
7573
8346
|
tokenRecipes: {
|
|
@@ -7601,6 +8374,10 @@ var init_curatedSiteStyles = __esm({
|
|
|
7601
8374
|
defineCuratedSiteStyle({
|
|
7602
8375
|
id: "site-style:clear-professional",
|
|
7603
8376
|
name: "Clear Professional",
|
|
8377
|
+
themeOverrides: {
|
|
8378
|
+
accordions: calmPanelAccordionSystem,
|
|
8379
|
+
testimonialQuote: accentGlyphQuote
|
|
8380
|
+
},
|
|
7604
8381
|
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
7605
8382
|
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
7606
8383
|
tokenRecipes: {
|
|
@@ -7632,6 +8409,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
7632
8409
|
defineCuratedSiteStyle({
|
|
7633
8410
|
id: "site-style:warm-editorial",
|
|
7634
8411
|
name: "Warm Editorial",
|
|
8412
|
+
themeOverrides: {
|
|
8413
|
+
accordions: editorialDividedAccordionSystem,
|
|
8414
|
+
testimonialQuote: serifDisplayQuote
|
|
8415
|
+
},
|
|
8416
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7635
8417
|
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
7636
8418
|
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
7637
8419
|
tokenRecipes: {
|
|
@@ -7664,6 +8446,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
7664
8446
|
defineCuratedSiteStyle({
|
|
7665
8447
|
id: "site-style:bright-community",
|
|
7666
8448
|
name: "Bright Community",
|
|
8449
|
+
themeOverrides: {
|
|
8450
|
+
accordions: warmInsetAccordionSystem,
|
|
8451
|
+
testimonialQuote: accentGlyphQuote
|
|
8452
|
+
},
|
|
8453
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7667
8454
|
description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
|
|
7668
8455
|
generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
|
|
7669
8456
|
tokenRecipes: {
|
|
@@ -7695,6 +8482,10 @@ var init_curatedSiteStyles = __esm({
|
|
|
7695
8482
|
defineCuratedSiteStyle({
|
|
7696
8483
|
id: "site-style:quiet-luxury",
|
|
7697
8484
|
name: "Quiet Luxury",
|
|
8485
|
+
themeOverrides: {
|
|
8486
|
+
accordions: quietUnderlinedAccordionSystem,
|
|
8487
|
+
testimonialQuote: serifDisplayQuote
|
|
8488
|
+
},
|
|
7698
8489
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
7699
8490
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
7700
8491
|
siteCreatorSelection: {
|
|
@@ -7737,6 +8528,10 @@ var init_curatedSiteStyles = __esm({
|
|
|
7737
8528
|
defineCuratedSiteStyle({
|
|
7738
8529
|
id: "site-style:practical-services",
|
|
7739
8530
|
name: "Practical Services",
|
|
8531
|
+
themeOverrides: {
|
|
8532
|
+
accordions: boldBorderedAccordionSystem,
|
|
8533
|
+
testimonialQuote: accentGlyphQuote
|
|
8534
|
+
},
|
|
7740
8535
|
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
7741
8536
|
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
7742
8537
|
siteCreatorSelection: { kind: "primary_goal_support" },
|
|
@@ -7777,6 +8572,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
7777
8572
|
defineCuratedSiteStyle({
|
|
7778
8573
|
id: "site-style:modern-wellness",
|
|
7779
8574
|
name: "Modern Wellness",
|
|
8575
|
+
themeOverrides: {
|
|
8576
|
+
accordions: quietUnderlinedAccordionSystem,
|
|
8577
|
+
testimonialQuote: serifDisplayQuote
|
|
8578
|
+
},
|
|
8579
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7780
8580
|
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
7781
8581
|
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
7782
8582
|
tokenRecipes: {
|
|
@@ -7808,6 +8608,10 @@ var init_curatedSiteStyles = __esm({
|
|
|
7808
8608
|
defineCuratedSiteStyle({
|
|
7809
8609
|
id: "site-style:quiet-practice",
|
|
7810
8610
|
name: "Quiet Practice",
|
|
8611
|
+
themeOverrides: {
|
|
8612
|
+
accordions: quietUnderlinedAccordionSystem,
|
|
8613
|
+
testimonialQuote: serifDisplayQuote
|
|
8614
|
+
},
|
|
7811
8615
|
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
7812
8616
|
generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
|
|
7813
8617
|
siteCreatorSelection: {
|
|
@@ -7853,6 +8657,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
7853
8657
|
defineCuratedSiteStyle({
|
|
7854
8658
|
id: "site-style:clarity-zen-blue",
|
|
7855
8659
|
name: "Clarity Zen",
|
|
8660
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7856
8661
|
description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
|
|
7857
8662
|
generationBrief: "Use a calm, soft palette, editorial serif headings, warm grounded copy, rounded cards, calm proof sections, and clear booking routes. Keep the tone compassionate and straightforward, with professional trust rather than hard-sell wellness language.",
|
|
7858
8663
|
siteCreatorSelection: {
|
|
@@ -7876,17 +8681,22 @@ var init_curatedSiteStyles = __esm({
|
|
|
7876
8681
|
},
|
|
7877
8682
|
compositionBudget: balancedBudget,
|
|
7878
8683
|
themeOverrides: {
|
|
8684
|
+
accordions: editorialDividedAccordionSystem,
|
|
8685
|
+
cards: clarityZenCardSystem,
|
|
8686
|
+
testimonialQuote: serifDisplayQuote,
|
|
7879
8687
|
typography: {
|
|
7880
8688
|
body: {
|
|
7881
|
-
family: "
|
|
8689
|
+
family: "Roboto, system-ui, sans-serif",
|
|
7882
8690
|
size: "md",
|
|
7883
8691
|
weight: "regular",
|
|
7884
8692
|
lineHeight: "relaxed",
|
|
7885
8693
|
letterSpacing: "normal"
|
|
7886
8694
|
},
|
|
7887
8695
|
headings: {
|
|
8696
|
+
// Forum ships a single 400 weight; keep every heading weight
|
|
8697
|
+
// 'regular' so the Google Fonts request stays valid.
|
|
7888
8698
|
default: {
|
|
7889
|
-
family:
|
|
8699
|
+
family: "Forum, Georgia, serif",
|
|
7890
8700
|
weight: "regular",
|
|
7891
8701
|
lineHeight: "normal",
|
|
7892
8702
|
letterSpacing: "normal",
|
|
@@ -7902,7 +8712,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
7902
8712
|
italic: null
|
|
7903
8713
|
},
|
|
7904
8714
|
h2: {
|
|
7905
|
-
size: "
|
|
8715
|
+
size: "xl",
|
|
7906
8716
|
weight: "regular",
|
|
7907
8717
|
lineHeight: "normal",
|
|
7908
8718
|
letterSpacing: "normal",
|
|
@@ -7930,10 +8740,13 @@ var init_curatedSiteStyles = __esm({
|
|
|
7930
8740
|
},
|
|
7931
8741
|
recommendedAppearancePresetIds: [
|
|
7932
8742
|
"hero-split-editorial",
|
|
8743
|
+
"intro-portrait-bio",
|
|
7933
8744
|
"intro-organic-statement",
|
|
7934
|
-
"feature-cards-
|
|
8745
|
+
"feature-cards-soft-panels",
|
|
8746
|
+
"feature-cards-editorial-columns",
|
|
8747
|
+
"feature-cards-photo-tiles",
|
|
7935
8748
|
"media-text-quiet-story",
|
|
7936
|
-
"testimonials-
|
|
8749
|
+
"testimonials-non-carded",
|
|
7937
8750
|
"faq-contained-help",
|
|
7938
8751
|
"contact-form-panel"
|
|
7939
8752
|
],
|
|
@@ -7943,8 +8756,9 @@ var init_curatedSiteStyles = __esm({
|
|
|
7943
8756
|
"minimal-transparent"
|
|
7944
8757
|
],
|
|
7945
8758
|
recommendedFooterLookIds: [
|
|
7946
|
-
"footer-
|
|
7947
|
-
"
|
|
8759
|
+
"footer-centered-calm",
|
|
8760
|
+
"footer-editorial-columns",
|
|
8761
|
+
"footer-muted-grounding"
|
|
7948
8762
|
],
|
|
7949
8763
|
buttonPersonalityChoices: [
|
|
7950
8764
|
buttonChoice("soft-pill"),
|
|
@@ -7952,7 +8766,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
7952
8766
|
buttonChoice("editorial-link")
|
|
7953
8767
|
],
|
|
7954
8768
|
paletteVariantChoices: [
|
|
7955
|
-
paletteChoice("
|
|
8769
|
+
paletteChoice("soft-natural-lilac"),
|
|
7956
8770
|
paletteChoice("soft-natural-watercolor"),
|
|
7957
8771
|
paletteChoice("soft-natural-stone"),
|
|
7958
8772
|
paletteChoice("warm-neutral-cream")
|
|
@@ -7961,6 +8775,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
7961
8775
|
defineCuratedSiteStyle({
|
|
7962
8776
|
id: "site-style:personal-retreat-journal",
|
|
7963
8777
|
name: "Personal Retreat Journal",
|
|
8778
|
+
themeOverrides: {
|
|
8779
|
+
accordions: editorialDividedAccordionSystem,
|
|
8780
|
+
testimonialQuote: serifDisplayQuote
|
|
8781
|
+
},
|
|
8782
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
7964
8783
|
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
7965
8784
|
generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
|
|
7966
8785
|
siteCreatorSelection: {
|
|
@@ -8005,6 +8824,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
8005
8824
|
defineCuratedSiteStyle({
|
|
8006
8825
|
id: "site-style:tactile-workshop",
|
|
8007
8826
|
name: "Tactile Workshop",
|
|
8827
|
+
themeOverrides: {
|
|
8828
|
+
accordions: warmInsetAccordionSystem,
|
|
8829
|
+
testimonialQuote: accentGlyphQuote
|
|
8830
|
+
},
|
|
8831
|
+
headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
|
|
8008
8832
|
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
8009
8833
|
generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
|
|
8010
8834
|
siteCreatorSelection: {
|
|
@@ -8055,6 +8879,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
8055
8879
|
defineCuratedSiteStyle({
|
|
8056
8880
|
id: SOFT_EARTH_SITE_STYLE_ID,
|
|
8057
8881
|
name: "Soft Earth",
|
|
8882
|
+
headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
|
|
8058
8883
|
description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
|
|
8059
8884
|
generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
|
|
8060
8885
|
siteCreatorSelection: {
|
|
@@ -8127,7 +8952,8 @@ var init_curatedSiteStyles = __esm({
|
|
|
8127
8952
|
headingSize: "editorial"
|
|
8128
8953
|
}
|
|
8129
8954
|
},
|
|
8130
|
-
accordions: softEarthAccordionSystem
|
|
8955
|
+
accordions: softEarthAccordionSystem,
|
|
8956
|
+
testimonialQuote: accentGlyphQuote
|
|
8131
8957
|
},
|
|
8132
8958
|
defaultBlockVariants: {
|
|
8133
8959
|
"block.faq": "question-columns"
|
|
@@ -8137,7 +8963,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
8137
8963
|
"intro-organic-statement",
|
|
8138
8964
|
"feature-cards-raised-rule",
|
|
8139
8965
|
"events-lined-panel",
|
|
8140
|
-
"testimonials-
|
|
8966
|
+
"testimonials-non-carded",
|
|
8141
8967
|
"contact-form-panel"
|
|
8142
8968
|
],
|
|
8143
8969
|
recommendedHeaderLookIds: [
|
|
@@ -8165,6 +8991,11 @@ var init_curatedSiteStyles = __esm({
|
|
|
8165
8991
|
defineCuratedSiteStyle({
|
|
8166
8992
|
id: "site-style:bold-launch",
|
|
8167
8993
|
name: "Bold Launch",
|
|
8994
|
+
themeOverrides: {
|
|
8995
|
+
accordions: boldBorderedAccordionSystem,
|
|
8996
|
+
testimonialQuote: accentGlyphQuote
|
|
8997
|
+
},
|
|
8998
|
+
headingDecoration: { family: "short-center-rule", colorToken: "primary" },
|
|
8168
8999
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
8169
9000
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
8170
9001
|
siteCreatorSelection: {
|
|
@@ -8210,6 +9041,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
8210
9041
|
defineCuratedSiteStyle({
|
|
8211
9042
|
id: "site-style:south-west-twerk-school",
|
|
8212
9043
|
name: "South West Twerk School",
|
|
9044
|
+
headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
|
|
8213
9045
|
description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
|
|
8214
9046
|
generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
|
|
8215
9047
|
tokenRecipes: {
|
|
@@ -8229,6 +9061,9 @@ var init_curatedSiteStyles = __esm({
|
|
|
8229
9061
|
],
|
|
8230
9062
|
defaultTypographyPresetId: "typography-preset:bold-display",
|
|
8231
9063
|
themeOverrides: {
|
|
9064
|
+
accordions: boldBorderedAccordionSystem,
|
|
9065
|
+
cards: southWestCardSystem,
|
|
9066
|
+
testimonialQuote: accentGlyphQuote,
|
|
8232
9067
|
bodyText: {
|
|
8233
9068
|
intro: {
|
|
8234
9069
|
paragraphSize: "editorial",
|
|
@@ -8241,7 +9076,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
8241
9076
|
"hero-brand-scrim-fixed-frame",
|
|
8242
9077
|
"body-text-editorial-intro",
|
|
8243
9078
|
"schedule-details-brand-depth",
|
|
8244
|
-
"testimonials-
|
|
9079
|
+
"testimonials-statement-cards",
|
|
8245
9080
|
"contact-form-brand-depth-card"
|
|
8246
9081
|
],
|
|
8247
9082
|
recommendedHeaderLookIds: [
|
|
@@ -8347,6 +9182,23 @@ var init_pageDesignEditorModel = __esm({
|
|
|
8347
9182
|
}
|
|
8348
9183
|
});
|
|
8349
9184
|
|
|
9185
|
+
// ../theme-core/src/tokens/tokens.ts
|
|
9186
|
+
var init_tokens = __esm({
|
|
9187
|
+
"../theme-core/src/tokens/tokens.ts"() {
|
|
9188
|
+
}
|
|
9189
|
+
});
|
|
9190
|
+
|
|
9191
|
+
// ../theme-core/src/tokens/index.ts
|
|
9192
|
+
var init_tokens2 = __esm({
|
|
9193
|
+
"../theme-core/src/tokens/index.ts"() {
|
|
9194
|
+
init_tokens();
|
|
9195
|
+
init_blockColorTokens();
|
|
9196
|
+
init_themeColorTokens();
|
|
9197
|
+
init_colorTokenParts();
|
|
9198
|
+
init_resolver();
|
|
9199
|
+
}
|
|
9200
|
+
});
|
|
9201
|
+
|
|
8350
9202
|
// ../theme-core/src/site-styles/resolver.ts
|
|
8351
9203
|
var init_resolver2 = __esm({
|
|
8352
9204
|
"../theme-core/src/site-styles/resolver.ts"() {
|
|
@@ -8392,38 +9244,6 @@ var init_expandPalette = __esm({
|
|
|
8392
9244
|
init_onColor();
|
|
8393
9245
|
}
|
|
8394
9246
|
});
|
|
8395
|
-
|
|
8396
|
-
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
8397
|
-
var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames;
|
|
8398
|
-
var init_rawStyleFields = __esm({
|
|
8399
|
-
"../theme-core/src/site-styles/rawStyleFields.ts"() {
|
|
8400
|
-
themeV2RuntimeStyleFieldNames = [
|
|
8401
|
-
"_frameStyles",
|
|
8402
|
-
"_sectionStyles",
|
|
8403
|
-
"_containerStyles",
|
|
8404
|
-
"_cardStyles",
|
|
8405
|
-
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
8406
|
-
// override object, but normal editors should still never see it directly.
|
|
8407
|
-
"styleGroup"
|
|
8408
|
-
];
|
|
8409
|
-
themeV2BlockSpecificRawStyleFieldNames = [
|
|
8410
|
-
"_contentCardStyles",
|
|
8411
|
-
"_heroLayoutStyles",
|
|
8412
|
-
"_textCardStyles"
|
|
8413
|
-
];
|
|
8414
|
-
themeV2NormalEditorRawStyleFieldNames = [
|
|
8415
|
-
...themeV2RuntimeStyleFieldNames,
|
|
8416
|
-
...themeV2BlockSpecificRawStyleFieldNames
|
|
8417
|
-
];
|
|
8418
|
-
new Set(
|
|
8419
|
-
themeV2NormalEditorRawStyleFieldNames
|
|
8420
|
-
);
|
|
8421
|
-
[
|
|
8422
|
-
...themeV2RuntimeStyleFieldNames,
|
|
8423
|
-
...themeV2BlockSpecificRawStyleFieldNames
|
|
8424
|
-
];
|
|
8425
|
-
}
|
|
8426
|
-
});
|
|
8427
9247
|
function uniqueNonEmpty(values) {
|
|
8428
9248
|
const uniqueValues = [...new Set(values)];
|
|
8429
9249
|
const firstValue = uniqueValues[0];
|
|
@@ -8589,6 +9409,16 @@ var init_runtimeCompiler = __esm({
|
|
|
8589
9409
|
}
|
|
8590
9410
|
});
|
|
8591
9411
|
|
|
9412
|
+
// ../theme-core/src/site-styles/siteStyleThemeCompiler.ts
|
|
9413
|
+
var init_siteStyleThemeCompiler = __esm({
|
|
9414
|
+
"../theme-core/src/site-styles/siteStyleThemeCompiler.ts"() {
|
|
9415
|
+
init_schema3();
|
|
9416
|
+
init_curatedSiteStyles();
|
|
9417
|
+
init_typographyPresets();
|
|
9418
|
+
init_runtimeCompiler();
|
|
9419
|
+
}
|
|
9420
|
+
});
|
|
9421
|
+
|
|
8592
9422
|
// ../theme-core/src/site-styles/previewCustomization.ts
|
|
8593
9423
|
var init_previewCustomization = __esm({
|
|
8594
9424
|
"../theme-core/src/site-styles/previewCustomization.ts"() {
|
|
@@ -8600,6 +9430,8 @@ var init_previewCustomization = __esm({
|
|
|
8600
9430
|
var init_previewCompiler = __esm({
|
|
8601
9431
|
"../theme-core/src/site-styles/previewCompiler.ts"() {
|
|
8602
9432
|
init_schema3();
|
|
9433
|
+
init_onColor();
|
|
9434
|
+
init_tokens2();
|
|
8603
9435
|
init_personalities();
|
|
8604
9436
|
init_variants();
|
|
8605
9437
|
init_curatedChoices();
|
|
@@ -8610,6 +9442,8 @@ var init_previewCompiler = __esm({
|
|
|
8610
9442
|
init_footerLooks();
|
|
8611
9443
|
init_headerLooks();
|
|
8612
9444
|
init_runtimeCompiler();
|
|
9445
|
+
init_rawStyleFields();
|
|
9446
|
+
init_siteStyleThemeCompiler();
|
|
8613
9447
|
init_blockFlow();
|
|
8614
9448
|
init_pageDesignEditorModel();
|
|
8615
9449
|
init_pageDesignIntent();
|
|
@@ -8939,6 +9773,7 @@ var init_site_styles = __esm({
|
|
|
8939
9773
|
init_headerLooks();
|
|
8940
9774
|
init_headerOpeningSection();
|
|
8941
9775
|
init_lookResolution();
|
|
9776
|
+
init_logoBranding();
|
|
8942
9777
|
init_pageDesignAuthority();
|
|
8943
9778
|
init_pageDesignEditorErrors();
|
|
8944
9779
|
init_pageDesignEditorModel();
|
|
@@ -8949,6 +9784,7 @@ var init_site_styles = __esm({
|
|
|
8949
9784
|
init_records();
|
|
8950
9785
|
init_resolver2();
|
|
8951
9786
|
init_runtimeCompiler();
|
|
9787
|
+
init_siteStyleThemeCompiler();
|
|
8952
9788
|
init_siteStyleBlockPolicies();
|
|
8953
9789
|
init_sourceCatalogs();
|
|
8954
9790
|
init_styleTags();
|
|
@@ -9588,11 +10424,11 @@ function bind(from, options) {
|
|
|
9588
10424
|
}
|
|
9589
10425
|
});
|
|
9590
10426
|
}
|
|
9591
|
-
function when(
|
|
10427
|
+
function when(path25, options) {
|
|
9592
10428
|
return (node) => ({
|
|
9593
10429
|
...node,
|
|
9594
10430
|
$when: {
|
|
9595
|
-
when: { from:
|
|
10431
|
+
when: { from: path25 },
|
|
9596
10432
|
...options?.equals !== void 0 ? { equals: options.equals } : {},
|
|
9597
10433
|
...options?.not ? { not: true } : {}
|
|
9598
10434
|
}
|
|
@@ -9699,7 +10535,7 @@ var init_builder = __esm({
|
|
|
9699
10535
|
});
|
|
9700
10536
|
|
|
9701
10537
|
// ../blocks/src/system/node/fragments/backgroundLayer.ts
|
|
9702
|
-
function backgroundLayer(
|
|
10538
|
+
function backgroundLayer(path25, options = {}) {
|
|
9703
10539
|
const {
|
|
9704
10540
|
styleClassName = "background-style rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
|
|
9705
10541
|
imageClassName,
|
|
@@ -9713,7 +10549,7 @@ function backgroundLayer(path24, options = {}) {
|
|
|
9713
10549
|
className: styleClassName,
|
|
9714
10550
|
style: {
|
|
9715
10551
|
$bind: {
|
|
9716
|
-
from:
|
|
10552
|
+
from: path25,
|
|
9717
10553
|
transforms: [
|
|
9718
10554
|
{
|
|
9719
10555
|
id: "background.resolveStyle",
|
|
@@ -9723,20 +10559,20 @@ function backgroundLayer(path24, options = {}) {
|
|
|
9723
10559
|
}
|
|
9724
10560
|
}
|
|
9725
10561
|
});
|
|
9726
|
-
const imageLayer = createBackgroundImageNode(
|
|
10562
|
+
const imageLayer = createBackgroundImageNode(path25, imageClassName, {
|
|
9727
10563
|
loading: imageLoading,
|
|
9728
10564
|
fetchPriority: imageFetchPriority
|
|
9729
10565
|
});
|
|
9730
|
-
const overlayLayer = createBackgroundOverlayNode(
|
|
10566
|
+
const overlayLayer = createBackgroundOverlayNode(path25, overlayClassName);
|
|
9731
10567
|
return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
|
|
9732
10568
|
}
|
|
9733
|
-
function createBackgroundImageNode(
|
|
9734
|
-
const imagePath = `${
|
|
10569
|
+
function createBackgroundImageNode(path25, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
|
|
10570
|
+
const imagePath = `${path25}.image`;
|
|
9735
10571
|
return media(
|
|
9736
10572
|
{
|
|
9737
10573
|
className: {
|
|
9738
10574
|
$bind: {
|
|
9739
|
-
from:
|
|
10575
|
+
from: path25,
|
|
9740
10576
|
transforms: [
|
|
9741
10577
|
{
|
|
9742
10578
|
id: "background.resolveImageClassName",
|
|
@@ -9747,7 +10583,7 @@ function createBackgroundImageNode(path24, baseClassName = "rb-absolute rb-z-neg
|
|
|
9747
10583
|
},
|
|
9748
10584
|
style: {
|
|
9749
10585
|
$bind: {
|
|
9750
|
-
from:
|
|
10586
|
+
from: path25,
|
|
9751
10587
|
transforms: [{ id: "background.resolveImageStyle" }]
|
|
9752
10588
|
}
|
|
9753
10589
|
},
|
|
@@ -9759,8 +10595,8 @@ function createBackgroundImageNode(path24, baseClassName = "rb-absolute rb-z-neg
|
|
|
9759
10595
|
bind(imagePath)
|
|
9760
10596
|
);
|
|
9761
10597
|
}
|
|
9762
|
-
function createBackgroundOverlayNode(
|
|
9763
|
-
const overlayPath = `${
|
|
10598
|
+
function createBackgroundOverlayNode(path25, className = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none") {
|
|
10599
|
+
const overlayPath = `${path25}.overlay`;
|
|
9764
10600
|
return el("div", {
|
|
9765
10601
|
className,
|
|
9766
10602
|
style: {
|
|
@@ -10552,10 +11388,10 @@ var init_themeColorResolution = __esm({
|
|
|
10552
11388
|
});
|
|
10553
11389
|
|
|
10554
11390
|
// ../blocks/src/system/transforms/registry/boxStyles.ts
|
|
10555
|
-
function readPath(source,
|
|
10556
|
-
if (!source || !
|
|
10557
|
-
if (!
|
|
10558
|
-
return
|
|
11391
|
+
function readPath(source, path25) {
|
|
11392
|
+
if (!source || !path25) return void 0;
|
|
11393
|
+
if (!path25.includes(".")) return source[path25];
|
|
11394
|
+
return path25.split(".").reduce((acc, segment) => {
|
|
10559
11395
|
if (acc && typeof acc === "object" && segment in acc) {
|
|
10560
11396
|
return acc[segment];
|
|
10561
11397
|
}
|
|
@@ -10591,13 +11427,14 @@ function isTileTreatment(value) {
|
|
|
10591
11427
|
function isEventListTreatment(value) {
|
|
10592
11428
|
return typeof value === "string" && eventListTreatmentSet.has(value);
|
|
10593
11429
|
}
|
|
10594
|
-
var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionTextColorStyleTransform, sectionHeadingColorStyleTransform, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
|
|
11430
|
+
var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, cardVariantClassTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionTextColorStyleTransform, sectionHeadingColorStyleTransform, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
|
|
10595
11431
|
var init_boxStyles2 = __esm({
|
|
10596
11432
|
"../blocks/src/system/transforms/registry/boxStyles.ts"() {
|
|
10597
11433
|
init_core3();
|
|
10598
11434
|
init_spacing();
|
|
10599
11435
|
init_site_styles();
|
|
10600
11436
|
init_colorStyles();
|
|
11437
|
+
init_cards();
|
|
10601
11438
|
init_blockColorTokens();
|
|
10602
11439
|
init_themeColorResolution();
|
|
10603
11440
|
spacingTransform = {
|
|
@@ -10725,6 +11562,18 @@ var init_boxStyles2 = __esm({
|
|
|
10725
11562
|
}
|
|
10726
11563
|
if (input.treatment === "accent-quote") {
|
|
10727
11564
|
classes.push("rb-card-treatment-accent-quote");
|
|
11565
|
+
} else if (input.treatment === "editorial-rule") {
|
|
11566
|
+
classes.push("rb-card-treatment-editorial-rule");
|
|
11567
|
+
} else if (input.treatment === "soft-panel") {
|
|
11568
|
+
classes.push("rb-card-treatment-soft-panel");
|
|
11569
|
+
} else if (input.treatment === "editorial-serif-quote") {
|
|
11570
|
+
classes.push("rb-card-treatment-editorial-serif-quote");
|
|
11571
|
+
} else if (input.treatment === "editorial-open") {
|
|
11572
|
+
classes.push("rb-card-treatment-editorial-open");
|
|
11573
|
+
}
|
|
11574
|
+
const cardVariant = normalizeBoxStylesCardVariant(input.cardVariant);
|
|
11575
|
+
if (cardVariant && cardVariant !== "none") {
|
|
11576
|
+
classes.push(`card-${cardVariant}`);
|
|
10728
11577
|
}
|
|
10729
11578
|
if (hasFixedFrameBackgroundMotion(input)) {
|
|
10730
11579
|
classes.push(fixedFrameScopeClass);
|
|
@@ -10732,6 +11581,19 @@ var init_boxStyles2 = __esm({
|
|
|
10732
11581
|
return classes.join(" ").trim() || "";
|
|
10733
11582
|
}
|
|
10734
11583
|
};
|
|
11584
|
+
cardVariantClassTransform = {
|
|
11585
|
+
id: "boxStyles.cardVariantClass",
|
|
11586
|
+
kind: "string",
|
|
11587
|
+
summary: "Map a site-style card variant role to its card-{role} CSS class",
|
|
11588
|
+
run: (value, options) => {
|
|
11589
|
+
const baseClass = options?.baseClass?.trim() ?? "";
|
|
11590
|
+
const cardVariant = normalizeBoxStylesCardVariant(value);
|
|
11591
|
+
if (!cardVariant || cardVariant === "none") {
|
|
11592
|
+
return baseClass;
|
|
11593
|
+
}
|
|
11594
|
+
return baseClass ? `${baseClass} card-${cardVariant}` : `card-${cardVariant}`;
|
|
11595
|
+
}
|
|
11596
|
+
};
|
|
10735
11597
|
boxStylesBorderColorTransform = {
|
|
10736
11598
|
id: "boxStyles.borderColor",
|
|
10737
11599
|
kind: "string",
|
|
@@ -11015,6 +11877,7 @@ var init_boxStyles2 = __esm({
|
|
|
11015
11877
|
raisedTransform,
|
|
11016
11878
|
roundedTransform,
|
|
11017
11879
|
boxStylesCompositeTransform,
|
|
11880
|
+
cardVariantClassTransform,
|
|
11018
11881
|
boxStylesBorderColorTransform,
|
|
11019
11882
|
sectionClassNameTransform,
|
|
11020
11883
|
containerStylesResolveClassName,
|
|
@@ -11326,28 +12189,39 @@ var init_sectionState = __esm({
|
|
|
11326
12189
|
// ../blocks/src/system/node/fragments/headingDecoration.ts
|
|
11327
12190
|
function headingDecoration({
|
|
11328
12191
|
bindFrom = defaultBindFrom,
|
|
11329
|
-
family,
|
|
11330
|
-
placement,
|
|
11331
12192
|
className
|
|
11332
|
-
}) {
|
|
12193
|
+
} = {}) {
|
|
11333
12194
|
return el(
|
|
11334
12195
|
"div",
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
11341
|
-
|
|
11342
|
-
|
|
11343
|
-
|
|
11344
|
-
|
|
11345
|
-
|
|
12196
|
+
// Full-width block row so the mark inherits the heading's alignment. The
|
|
12197
|
+
// heading stacks are flexbox; `text-align` positions inline content, not flex
|
|
12198
|
+
// items, so the inline-block mark must sit inside a stretched block for a
|
|
12199
|
+
// centred heading to centre it (and a left heading to keep it at the start).
|
|
12200
|
+
{ "aria-hidden": "true", className: "rb-heading-decoration-row" },
|
|
12201
|
+
[
|
|
12202
|
+
el("div", {
|
|
12203
|
+
className: {
|
|
12204
|
+
$bind: {
|
|
12205
|
+
from: bindFrom,
|
|
12206
|
+
transforms: [
|
|
12207
|
+
{
|
|
12208
|
+
id: "ui.headingDecorationClassName",
|
|
12209
|
+
options: { baseClass: className }
|
|
12210
|
+
}
|
|
12211
|
+
]
|
|
12212
|
+
}
|
|
11346
12213
|
}
|
|
11347
|
-
}
|
|
11348
|
-
|
|
11349
|
-
|
|
11350
|
-
|
|
12214
|
+
})
|
|
12215
|
+
],
|
|
12216
|
+
// Gate on the presence of `family`. The render-time theme projection omits
|
|
12217
|
+
// `headingDecoration` entirely for absent/none signatures, so the
|
|
12218
|
+
// dominant "no decoration" case is absent → falsy → not rendered. A presence
|
|
12219
|
+
// check (rather than `family !== 'none'`) is deliberate: `when`'s only
|
|
12220
|
+
// negation form would render on *absent* values, which would emit a stub on
|
|
12221
|
+
// every undecorated heading. The remaining edge — hand-authored content with
|
|
12222
|
+
// an explicit `{ family: 'none' }` — renders an aria-hidden `rb-hidden`
|
|
12223
|
+
// (display:none) stub with no visual or layout impact.
|
|
12224
|
+
when(`${bindFrom}.family`)
|
|
11351
12225
|
);
|
|
11352
12226
|
}
|
|
11353
12227
|
var defaultBindFrom;
|
|
@@ -11573,27 +12447,27 @@ function scopePropValue(value, scope) {
|
|
|
11573
12447
|
}
|
|
11574
12448
|
return value;
|
|
11575
12449
|
}
|
|
11576
|
-
function scopeContentPath(
|
|
12450
|
+
function scopeContentPath(path25, scope) {
|
|
11577
12451
|
if (!scope || scope.length === 0) {
|
|
11578
|
-
return
|
|
12452
|
+
return path25;
|
|
11579
12453
|
}
|
|
11580
|
-
if (
|
|
12454
|
+
if (path25 === "content") {
|
|
11581
12455
|
return `content.${scope}`;
|
|
11582
12456
|
}
|
|
11583
|
-
if (
|
|
11584
|
-
const remainder =
|
|
12457
|
+
if (path25.startsWith("content.")) {
|
|
12458
|
+
const remainder = path25.slice("content.".length);
|
|
11585
12459
|
return remainder.length > 0 ? `content.${scope}.${remainder}` : `content.${scope}`;
|
|
11586
12460
|
}
|
|
11587
|
-
if (
|
|
11588
|
-
return
|
|
12461
|
+
if (path25.startsWith("content[")) {
|
|
12462
|
+
return path25.replace(/^content/, `content.${scope}`);
|
|
11589
12463
|
}
|
|
11590
|
-
if (
|
|
11591
|
-
return
|
|
12464
|
+
if (path25.startsWith("$root.")) {
|
|
12465
|
+
return path25;
|
|
11592
12466
|
}
|
|
11593
|
-
if (
|
|
11594
|
-
return
|
|
12467
|
+
if (path25.includes(".")) {
|
|
12468
|
+
return path25;
|
|
11595
12469
|
}
|
|
11596
|
-
return `content.${scope}.${
|
|
12470
|
+
return `content.${scope}.${path25}`;
|
|
11597
12471
|
}
|
|
11598
12472
|
var FRAGMENT_ID_PATTERN, FIELD_ID_PATTERN, dataLoaderSchema, fragmentDataSchema, fragmentConfigSchema, FragmentConfigError;
|
|
11599
12473
|
var init_types13 = __esm({
|
|
@@ -12228,10 +13102,7 @@ var init_testimonialsHeading = __esm({
|
|
|
12228
13102
|
when("content.heading"),
|
|
12229
13103
|
bind("content.heading")
|
|
12230
13104
|
),
|
|
12231
|
-
headingDecoration(
|
|
12232
|
-
family: "short-center-rule",
|
|
12233
|
-
placement: "under-centered-heading"
|
|
12234
|
-
}),
|
|
13105
|
+
headingDecoration(),
|
|
12235
13106
|
text(
|
|
12236
13107
|
{
|
|
12237
13108
|
as: "p",
|
|
@@ -12316,7 +13187,10 @@ function buildTestimonialCard(...mods) {
|
|
|
12316
13187
|
{
|
|
12317
13188
|
stylesFrom: "content._cardStyles",
|
|
12318
13189
|
backgroundFrom: "content._cardStyles.background",
|
|
12319
|
-
|
|
13190
|
+
// The `.card-{id}` variant class comes from _cardStyles.cardVariant via
|
|
13191
|
+
// the boxStyles transform (driven by the look's testimonialCardTreatment),
|
|
13192
|
+
// so it is not hardcoded here.
|
|
13193
|
+
baseClassName: "rb-testimonial-card rb-relative rb-isolate rb-flex rb-h-full rb-flex-col rb-overflow-hidden rb-p-8"
|
|
12320
13194
|
},
|
|
12321
13195
|
...mods
|
|
12322
13196
|
);
|
|
@@ -12380,6 +13254,17 @@ function buildGridLayout() {
|
|
|
12380
13254
|
buildResponsiveGridCards()
|
|
12381
13255
|
);
|
|
12382
13256
|
}
|
|
13257
|
+
function buildHighlightLayout() {
|
|
13258
|
+
return el(
|
|
13259
|
+
"div",
|
|
13260
|
+
{ className: "rb-mt-10 rb-testimonials-highlight rb-mx-auto rb-max-w-3xl" },
|
|
13261
|
+
[
|
|
13262
|
+
buildTestimonialCard(
|
|
13263
|
+
repeat("data.entries", "testimonial", { limit: 1 })
|
|
13264
|
+
)
|
|
13265
|
+
]
|
|
13266
|
+
);
|
|
13267
|
+
}
|
|
12383
13268
|
function buildGridCardsLayout(className) {
|
|
12384
13269
|
return el(
|
|
12385
13270
|
"div",
|
|
@@ -12959,7 +13844,44 @@ var init_blogFeaturedPost = __esm({
|
|
|
12959
13844
|
});
|
|
12960
13845
|
|
|
12961
13846
|
// ../blocks/src/system/fragments/library/faqHeading.ts
|
|
12962
|
-
|
|
13847
|
+
function faqHeadingLayout(options = {}) {
|
|
13848
|
+
return stack(
|
|
13849
|
+
{
|
|
13850
|
+
gap: "sm",
|
|
13851
|
+
className: "rb-mx-auto rb-max-w-3xl rb-text-center rb-mb-4"
|
|
13852
|
+
},
|
|
13853
|
+
[
|
|
13854
|
+
text(
|
|
13855
|
+
{
|
|
13856
|
+
as: "p",
|
|
13857
|
+
// Color is theme-owned (see theme/blocks-static/hero.css .heading-eyebrow)
|
|
13858
|
+
className: eyebrowClassName("faq-eyebrow rb-eyebrow heading-eyebrow")
|
|
13859
|
+
},
|
|
13860
|
+
when("content.eyebrow"),
|
|
13861
|
+
bind("content.eyebrow")
|
|
13862
|
+
),
|
|
13863
|
+
text(
|
|
13864
|
+
{
|
|
13865
|
+
as: "h2",
|
|
13866
|
+
// h2 now gets size/weight from theme typography CSS
|
|
13867
|
+
className: "faq-title"
|
|
13868
|
+
},
|
|
13869
|
+
when("content.title"),
|
|
13870
|
+
bind("content.title")
|
|
13871
|
+
),
|
|
13872
|
+
...options.decorated ? [headingDecoration()] : [],
|
|
13873
|
+
richText(
|
|
13874
|
+
{
|
|
13875
|
+
className: "faq-description rb-prose rb-mx-auto rb-max-w-none",
|
|
13876
|
+
style: textColorStyle("mutedText")
|
|
13877
|
+
},
|
|
13878
|
+
when("content.description"),
|
|
13879
|
+
bind("content.description")
|
|
13880
|
+
)
|
|
13881
|
+
]
|
|
13882
|
+
);
|
|
13883
|
+
}
|
|
13884
|
+
var faqHeadingFragment, decoratedFaqHeadingLayout;
|
|
12963
13885
|
var init_faqHeading = __esm({
|
|
12964
13886
|
"../blocks/src/system/fragments/library/faqHeading.ts"() {
|
|
12965
13887
|
init_types13();
|
|
@@ -12994,41 +13916,9 @@ var init_faqHeading = __esm({
|
|
|
12994
13916
|
ui: { variant: "limited" }
|
|
12995
13917
|
}
|
|
12996
13918
|
],
|
|
12997
|
-
layout:
|
|
12998
|
-
{
|
|
12999
|
-
gap: "sm",
|
|
13000
|
-
className: "rb-mx-auto rb-max-w-3xl rb-text-center rb-mb-4"
|
|
13001
|
-
},
|
|
13002
|
-
[
|
|
13003
|
-
text(
|
|
13004
|
-
{
|
|
13005
|
-
as: "p",
|
|
13006
|
-
// Color is theme-owned (see theme/blocks-static/hero.css .heading-eyebrow)
|
|
13007
|
-
className: eyebrowClassName("faq-eyebrow rb-eyebrow heading-eyebrow")
|
|
13008
|
-
},
|
|
13009
|
-
when("content.eyebrow"),
|
|
13010
|
-
bind("content.eyebrow")
|
|
13011
|
-
),
|
|
13012
|
-
text(
|
|
13013
|
-
{
|
|
13014
|
-
as: "h2",
|
|
13015
|
-
// h2 now gets size/weight from theme typography CSS
|
|
13016
|
-
className: "faq-title"
|
|
13017
|
-
},
|
|
13018
|
-
when("content.title"),
|
|
13019
|
-
bind("content.title")
|
|
13020
|
-
),
|
|
13021
|
-
richText(
|
|
13022
|
-
{
|
|
13023
|
-
className: "faq-description rb-prose rb-mx-auto rb-max-w-none",
|
|
13024
|
-
style: textColorStyle("mutedText")
|
|
13025
|
-
},
|
|
13026
|
-
when("content.description"),
|
|
13027
|
-
bind("content.description")
|
|
13028
|
-
)
|
|
13029
|
-
]
|
|
13030
|
-
)
|
|
13919
|
+
layout: faqHeadingLayout()
|
|
13031
13920
|
});
|
|
13921
|
+
decoratedFaqHeadingLayout = faqHeadingLayout({ decorated: true });
|
|
13032
13922
|
}
|
|
13033
13923
|
});
|
|
13034
13924
|
|
|
@@ -13112,7 +14002,7 @@ var init_faqAccordion = __esm({
|
|
|
13112
14002
|
});
|
|
13113
14003
|
|
|
13114
14004
|
// ../blocks/src/system/fragments/library/card.ts
|
|
13115
|
-
var cardFragment;
|
|
14005
|
+
var cardVariantOptions, cardFragment;
|
|
13116
14006
|
var init_card = __esm({
|
|
13117
14007
|
"../blocks/src/system/fragments/library/card.ts"() {
|
|
13118
14008
|
init_types13();
|
|
@@ -13120,6 +14010,11 @@ var init_card = __esm({
|
|
|
13120
14010
|
init_ctas();
|
|
13121
14011
|
init_ctaRow();
|
|
13122
14012
|
init_colorStyles();
|
|
14013
|
+
init_cards();
|
|
14014
|
+
cardVariantOptions = cardVariantRoleValues.map((value) => ({
|
|
14015
|
+
value,
|
|
14016
|
+
label: value === "default" ? "Default" : "Alternative"
|
|
14017
|
+
}));
|
|
13123
14018
|
cardFragment = defineFragment({
|
|
13124
14019
|
id: "card",
|
|
13125
14020
|
title: "Card",
|
|
@@ -13176,11 +14071,7 @@ var init_card = __esm({
|
|
|
13176
14071
|
description: "Choose a card style from your theme",
|
|
13177
14072
|
required: false,
|
|
13178
14073
|
defaultValue: "default",
|
|
13179
|
-
options:
|
|
13180
|
-
{ value: "default", label: "Default" },
|
|
13181
|
-
{ value: "variant1", label: "Variant 1" },
|
|
13182
|
-
{ value: "variant2", label: "Variant 2" }
|
|
13183
|
-
],
|
|
14074
|
+
options: cardVariantOptions,
|
|
13184
14075
|
ui: { intent: "style" }
|
|
13185
14076
|
}
|
|
13186
14077
|
],
|
|
@@ -13190,9 +14081,9 @@ var init_card = __esm({
|
|
|
13190
14081
|
className: {
|
|
13191
14082
|
$bind: {
|
|
13192
14083
|
from: "variant",
|
|
13193
|
-
fallback: "default"
|
|
13194
|
-
|
|
13195
|
-
|
|
14084
|
+
fallback: "default",
|
|
14085
|
+
transforms: [{ id: "boxStyles.cardVariantClass" }]
|
|
14086
|
+
}
|
|
13196
14087
|
}
|
|
13197
14088
|
},
|
|
13198
14089
|
[
|
|
@@ -14436,8 +15327,8 @@ function decodeSuccess(value) {
|
|
|
14436
15327
|
function decodeFailure(issues) {
|
|
14437
15328
|
return { ok: false, issues };
|
|
14438
15329
|
}
|
|
14439
|
-
function zodIssuePath(
|
|
14440
|
-
return
|
|
15330
|
+
function zodIssuePath(path25) {
|
|
15331
|
+
return path25.flatMap((segment) => {
|
|
14441
15332
|
if (typeof segment === "string" || typeof segment === "number") {
|
|
14442
15333
|
return [segment];
|
|
14443
15334
|
}
|
|
@@ -14642,66 +15533,66 @@ var init_media2 = __esm({
|
|
|
14642
15533
|
"archive",
|
|
14643
15534
|
"audio"
|
|
14644
15535
|
];
|
|
14645
|
-
hotspotSchema2 =
|
|
14646
|
-
x:
|
|
14647
|
-
y:
|
|
14648
|
-
radius:
|
|
15536
|
+
hotspotSchema2 = z42.object({
|
|
15537
|
+
x: z42.number().min(0).max(1),
|
|
15538
|
+
y: z42.number().min(0).max(1),
|
|
15539
|
+
radius: z42.number().optional()
|
|
14649
15540
|
});
|
|
14650
|
-
rotationSchema2 =
|
|
14651
|
-
rectSchema2 =
|
|
14652
|
-
aspectCropSchema2 =
|
|
14653
|
-
aspect:
|
|
14654
|
-
rect:
|
|
14655
|
-
hotspot:
|
|
14656
|
-
rotation:
|
|
15541
|
+
rotationSchema2 = z42.union([z42.literal(0), z42.literal(90), z42.literal(180), z42.literal(270)]);
|
|
15542
|
+
rectSchema2 = z42.tuple([z42.number(), z42.number(), z42.number(), z42.number()]);
|
|
15543
|
+
aspectCropSchema2 = z42.object({
|
|
15544
|
+
aspect: z42.preprocess((value) => value == null ? void 0 : value, z42.string().optional()),
|
|
15545
|
+
rect: z42.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
|
|
15546
|
+
hotspot: z42.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
|
|
15547
|
+
rotation: z42.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
|
|
14657
15548
|
});
|
|
14658
|
-
transformSchema2 =
|
|
14659
|
-
aspectCrops:
|
|
15549
|
+
transformSchema2 = z42.object({
|
|
15550
|
+
aspectCrops: z42.preprocess((value) => {
|
|
14660
15551
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
14661
15552
|
return void 0;
|
|
14662
15553
|
}
|
|
14663
15554
|
return value;
|
|
14664
|
-
},
|
|
15555
|
+
}, z42.record(z42.string(), aspectCropSchema2.catch({}))).optional(),
|
|
14665
15556
|
rect: rectSchema2.optional(),
|
|
14666
15557
|
hotspot: hotspotSchema2.optional(),
|
|
14667
15558
|
rotation: rotationSchema2.optional()
|
|
14668
15559
|
});
|
|
14669
|
-
mediaPosterSchema =
|
|
14670
|
-
|
|
14671
|
-
tag:
|
|
14672
|
-
assetId:
|
|
14673
|
-
storageBucket:
|
|
14674
|
-
storagePath:
|
|
15560
|
+
mediaPosterSchema = z42.discriminatedUnion("tag", [
|
|
15561
|
+
z42.object({
|
|
15562
|
+
tag: z42.literal("storage"),
|
|
15563
|
+
assetId: z42.string().optional(),
|
|
15564
|
+
storageBucket: z42.string().min(1),
|
|
15565
|
+
storagePath: z42.string().min(1)
|
|
14675
15566
|
}),
|
|
14676
|
-
|
|
14677
|
-
tag:
|
|
14678
|
-
assetId:
|
|
14679
|
-
src:
|
|
15567
|
+
z42.object({
|
|
15568
|
+
tag: z42.literal("external-src"),
|
|
15569
|
+
assetId: z42.string().optional(),
|
|
15570
|
+
src: z42.string().url()
|
|
14680
15571
|
})
|
|
14681
15572
|
]);
|
|
14682
|
-
mediaBaseSchema =
|
|
14683
|
-
purpose:
|
|
14684
|
-
placeholder:
|
|
14685
|
-
assetId:
|
|
14686
|
-
identifier:
|
|
14687
|
-
src:
|
|
14688
|
-
alt:
|
|
14689
|
-
filename:
|
|
14690
|
-
mimeType:
|
|
14691
|
-
width:
|
|
14692
|
-
height:
|
|
14693
|
-
storageBucket:
|
|
14694
|
-
storagePath:
|
|
15573
|
+
mediaBaseSchema = z42.object({
|
|
15574
|
+
purpose: z42.string().optional(),
|
|
15575
|
+
placeholder: z42.boolean().default(true).optional(),
|
|
15576
|
+
assetId: z42.string().optional(),
|
|
15577
|
+
identifier: z42.string().optional(),
|
|
15578
|
+
src: z42.string().optional(),
|
|
15579
|
+
alt: z42.string().optional(),
|
|
15580
|
+
filename: z42.string().optional(),
|
|
15581
|
+
mimeType: z42.string().optional(),
|
|
15582
|
+
width: z42.number().optional(),
|
|
15583
|
+
height: z42.number().optional(),
|
|
15584
|
+
storageBucket: z42.string().optional(),
|
|
15585
|
+
storagePath: z42.string().optional(),
|
|
14695
15586
|
poster: mediaPosterSchema.optional(),
|
|
14696
15587
|
transform: transformSchema2.optional()
|
|
14697
15588
|
});
|
|
14698
|
-
imageMediaSchema = mediaBaseSchema.extend({ type:
|
|
14699
|
-
videoMediaSchema = mediaBaseSchema.extend({ type:
|
|
14700
|
-
audioMediaSchema = mediaBaseSchema.extend({ type:
|
|
14701
|
-
documentMediaSchema = mediaBaseSchema.extend({ type:
|
|
14702
|
-
spreadsheetMediaSchema = mediaBaseSchema.extend({ type:
|
|
14703
|
-
archiveMediaSchema = mediaBaseSchema.extend({ type:
|
|
14704
|
-
mediaSchema2 =
|
|
15589
|
+
imageMediaSchema = mediaBaseSchema.extend({ type: z42.literal("image") });
|
|
15590
|
+
videoMediaSchema = mediaBaseSchema.extend({ type: z42.literal("video") });
|
|
15591
|
+
audioMediaSchema = mediaBaseSchema.extend({ type: z42.literal("audio") });
|
|
15592
|
+
documentMediaSchema = mediaBaseSchema.extend({ type: z42.literal("document") });
|
|
15593
|
+
spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z42.literal("spreadsheet") });
|
|
15594
|
+
archiveMediaSchema = mediaBaseSchema.extend({ type: z42.literal("archive") });
|
|
15595
|
+
mediaSchema2 = z42.discriminatedUnion("type", [
|
|
14705
15596
|
imageMediaSchema,
|
|
14706
15597
|
videoMediaSchema,
|
|
14707
15598
|
audioMediaSchema,
|
|
@@ -14972,10 +15863,15 @@ var init_schemas2 = __esm({
|
|
|
14972
15863
|
});
|
|
14973
15864
|
|
|
14974
15865
|
// ../blocks/src/system/blocks/events/shared/fields.ts
|
|
14975
|
-
var cardStylingFields, eventDisplayFields, emptyStateField, sectionHeaderFields, layoutField, columnsField;
|
|
15866
|
+
var cardVariantOptions2, cardStylingFields, eventDisplayFields, emptyStateField, sectionHeaderFields, layoutField, columnsField;
|
|
14976
15867
|
var init_fields = __esm({
|
|
14977
15868
|
"../blocks/src/system/blocks/events/shared/fields.ts"() {
|
|
14978
15869
|
init_button();
|
|
15870
|
+
init_cards();
|
|
15871
|
+
cardVariantOptions2 = cardVariantRoleValues.map((value) => ({
|
|
15872
|
+
value,
|
|
15873
|
+
label: value === "default" ? "Default" : "Alternative"
|
|
15874
|
+
}));
|
|
14979
15875
|
cardStylingFields = [
|
|
14980
15876
|
{
|
|
14981
15877
|
id: "cardVariant",
|
|
@@ -14985,11 +15881,7 @@ var init_fields = __esm({
|
|
|
14985
15881
|
required: false,
|
|
14986
15882
|
multiple: false,
|
|
14987
15883
|
defaultValue: "default",
|
|
14988
|
-
options:
|
|
14989
|
-
{ value: "default", label: "Default" },
|
|
14990
|
-
{ value: "variant1", label: "Variant 1" },
|
|
14991
|
-
{ value: "variant2", label: "Variant 2" }
|
|
14992
|
-
],
|
|
15884
|
+
options: cardVariantOptions2,
|
|
14993
15885
|
ui: { intent: "style" }
|
|
14994
15886
|
},
|
|
14995
15887
|
createButtonVariantField({
|
|
@@ -15820,16 +16712,21 @@ var init_shared4 = __esm({
|
|
|
15820
16712
|
init_utils();
|
|
15821
16713
|
}
|
|
15822
16714
|
});
|
|
15823
|
-
var
|
|
16715
|
+
var legacyEventCardVariantSchema, eventCardVariantInputSchema, cardOrientationSchema, eventBlockKindSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema2, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingBlockRuntime;
|
|
15824
16716
|
var init_EventListing_interactive = __esm({
|
|
15825
16717
|
"../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts"() {
|
|
16718
|
+
init_cards();
|
|
15826
16719
|
init_schemas2();
|
|
15827
16720
|
init_shared2();
|
|
15828
16721
|
init_islands();
|
|
15829
16722
|
init_runtime();
|
|
15830
16723
|
init_shared4();
|
|
15831
16724
|
init_contract_schemas();
|
|
15832
|
-
|
|
16725
|
+
legacyEventCardVariantSchema = z.enum(["variant1", "variant2"]);
|
|
16726
|
+
eventCardVariantInputSchema = z.union([
|
|
16727
|
+
cardVariantRoleSchema,
|
|
16728
|
+
legacyEventCardVariantSchema
|
|
16729
|
+
]);
|
|
15833
16730
|
cardOrientationSchema = z.enum(["vertical", "horizontal"]);
|
|
15834
16731
|
eventBlockKindSchema = z.enum(eventBlockKindValues);
|
|
15835
16732
|
eventSurfaceScopeSchema = z.enum(eventSurfaceScopeValues);
|
|
@@ -15845,7 +16742,7 @@ var init_EventListing_interactive = __esm({
|
|
|
15845
16742
|
paginationMode: z.enum(["loadMore", "seeAllLink"]).optional(),
|
|
15846
16743
|
seeAllUrl: z.string().optional(),
|
|
15847
16744
|
loadMoreText: z.string().optional(),
|
|
15848
|
-
cardVariant:
|
|
16745
|
+
cardVariant: eventCardVariantInputSchema.optional(),
|
|
15849
16746
|
buttonVariant: eventButtonVariantSchema.optional(),
|
|
15850
16747
|
buttonText: z.string().optional(),
|
|
15851
16748
|
showVenue: z.boolean().optional(),
|
|
@@ -15873,7 +16770,7 @@ var init_EventListing_interactive = __esm({
|
|
|
15873
16770
|
emptyMessage: z.string(),
|
|
15874
16771
|
loadingMessage: z.string(),
|
|
15875
16772
|
containerClass: z.string(),
|
|
15876
|
-
cardVariant:
|
|
16773
|
+
cardVariant: cardVariantRoleSchema,
|
|
15877
16774
|
buttonVariant: eventButtonVariantSchema,
|
|
15878
16775
|
buttonText: z.string(),
|
|
15879
16776
|
showVenue: z.boolean(),
|
|
@@ -15934,7 +16831,7 @@ var init_EventListing_interactive = __esm({
|
|
|
15934
16831
|
emptyMessage: source.emptyMessage ?? "No upcoming events scheduled.",
|
|
15935
16832
|
loadingMessage: "Loading events\u2026",
|
|
15936
16833
|
containerClass: getContainerClass(layout, source.columns ?? "3"),
|
|
15937
|
-
cardVariant: source.cardVariant ?? "default",
|
|
16834
|
+
cardVariant: normalizeCardVariantRole(source.cardVariant) ?? "default",
|
|
15938
16835
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
15939
16836
|
buttonText: source.buttonText ?? "Book now",
|
|
15940
16837
|
showVenue: source.showVenue ?? true,
|
|
@@ -17737,6 +18634,23 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
17737
18634
|
auth: "user",
|
|
17738
18635
|
responseKind: "json"
|
|
17739
18636
|
},
|
|
18637
|
+
getSdkDeploymentHealth: {
|
|
18638
|
+
path: "/sites/{siteId}/sdk-deployment/health",
|
|
18639
|
+
method: "GET",
|
|
18640
|
+
tags: ["site-{siteId}", "webhooks"],
|
|
18641
|
+
auth: "user",
|
|
18642
|
+
errors: [],
|
|
18643
|
+
responseKind: "json"
|
|
18644
|
+
},
|
|
18645
|
+
setupSdkDeploymentRevalidationWebhook: {
|
|
18646
|
+
path: "/sites/{siteId}/sdk-deployment/revalidation-webhook",
|
|
18647
|
+
method: "POST",
|
|
18648
|
+
tags: ["site-{siteId}", "webhooks"],
|
|
18649
|
+
auth: "user",
|
|
18650
|
+
errors: ["validation:invalid_input", "resource:conflict"],
|
|
18651
|
+
responseKind: "json",
|
|
18652
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
18653
|
+
},
|
|
17740
18654
|
// API Keys (Site-scoped)
|
|
17741
18655
|
listSiteApiKeys: {
|
|
17742
18656
|
path: "/sites/{siteId}/api-keys",
|
|
@@ -23231,6 +24145,13 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
23231
24145
|
auth: "service",
|
|
23232
24146
|
responseKind: "json"
|
|
23233
24147
|
},
|
|
24148
|
+
sdkSetupRevalidationWebhook: {
|
|
24149
|
+
path: "/sdk/{siteId}/webhooks/revalidation/setup",
|
|
24150
|
+
method: "POST",
|
|
24151
|
+
auth: "service",
|
|
24152
|
+
responseKind: "json",
|
|
24153
|
+
errors: ["validation:invalid_input", "server:internal_error"]
|
|
24154
|
+
},
|
|
23234
24155
|
// Customer portal
|
|
23235
24156
|
portalGetProfile: {
|
|
23236
24157
|
path: "/portal/me",
|
|
@@ -24197,11 +25118,11 @@ function validationContext(options = {}) {
|
|
|
24197
25118
|
allowIncomplete: isDraft || (options.allowIncomplete ?? false)
|
|
24198
25119
|
};
|
|
24199
25120
|
}
|
|
24200
|
-
function formatFieldPath(
|
|
24201
|
-
return
|
|
25121
|
+
function formatFieldPath(path25) {
|
|
25122
|
+
return path25.map((segment) => String(segment)).join(".");
|
|
24202
25123
|
}
|
|
24203
|
-
function toZodIssuePath(
|
|
24204
|
-
return [...
|
|
25124
|
+
function toZodIssuePath(path25) {
|
|
25125
|
+
return [...path25];
|
|
24205
25126
|
}
|
|
24206
25127
|
function fieldIssueToMessage(issue2) {
|
|
24207
25128
|
switch (issue2.kind) {
|
|
@@ -24255,7 +25176,7 @@ function pluralize(label, count) {
|
|
|
24255
25176
|
if (count === 1) return label;
|
|
24256
25177
|
return label.endsWith("s") ? label : `${label}s`;
|
|
24257
25178
|
}
|
|
24258
|
-
function deriveFieldValidationPlan(field,
|
|
25179
|
+
function deriveFieldValidationPlan(field, path25 = [field.id]) {
|
|
24259
25180
|
const required = Boolean(field.required);
|
|
24260
25181
|
switch (field.type) {
|
|
24261
25182
|
case "text": {
|
|
@@ -24266,7 +25187,7 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
24266
25187
|
});
|
|
24267
25188
|
if (typeof field.ui?.min === "number") constraints2.push({ kind: "numberMin", minimum: field.ui.min });
|
|
24268
25189
|
if (typeof field.ui?.max === "number") constraints2.push({ kind: "numberMax", maximum: field.ui.max });
|
|
24269
|
-
return makePlan("number", "number", field,
|
|
25190
|
+
return makePlan("number", "number", field, path25, required, constraints2);
|
|
24270
25191
|
}
|
|
24271
25192
|
const constraints = commonConstraints(required, {
|
|
24272
25193
|
kind: field.ui?.widget === "iconPicker" ? "blockIconValue" : "textType"
|
|
@@ -24275,7 +25196,7 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
24275
25196
|
if (inputType === "tel") constraints.push({ kind: "phoneFormat" });
|
|
24276
25197
|
if (field.ui?.pattern) constraints.push({ kind: "patternFormat", pattern: field.ui.pattern });
|
|
24277
25198
|
if (typeof field.maxLength === "number") constraints.push({ kind: "maxLength", maximum: field.maxLength });
|
|
24278
|
-
return makePlan("string", "string", field,
|
|
25199
|
+
return makePlan("string", "string", field, path25, required, constraints);
|
|
24279
25200
|
}
|
|
24280
25201
|
case "number": {
|
|
24281
25202
|
const constraints = commonConstraints(required, {
|
|
@@ -24283,34 +25204,34 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
24283
25204
|
});
|
|
24284
25205
|
if (typeof field.min === "number") constraints.push({ kind: "numberMin", minimum: field.min });
|
|
24285
25206
|
if (typeof field.max === "number") constraints.push({ kind: "numberMax", maximum: field.max });
|
|
24286
|
-
return makePlan("number", "number", field,
|
|
25207
|
+
return makePlan("number", "number", field, path25, required, constraints);
|
|
24287
25208
|
}
|
|
24288
25209
|
case "slug": {
|
|
24289
25210
|
const constraints = commonConstraints(required, { kind: "textType" }, { kind: "slugFormat" });
|
|
24290
25211
|
if (typeof field.maxLength === "number") constraints.push({ kind: "maxLength", maximum: field.maxLength });
|
|
24291
|
-
return makePlan("string", "string", field,
|
|
25212
|
+
return makePlan("string", "string", field, path25, required, constraints);
|
|
24292
25213
|
}
|
|
24293
25214
|
case "url":
|
|
24294
25215
|
return makePlan(
|
|
24295
25216
|
"string",
|
|
24296
25217
|
"string",
|
|
24297
25218
|
field,
|
|
24298
|
-
|
|
25219
|
+
path25,
|
|
24299
25220
|
required,
|
|
24300
25221
|
commonConstraints(required, { kind: "textType" }, { kind: "urlFormat", allowRelative: Boolean(field.allowRelative) })
|
|
24301
25222
|
);
|
|
24302
25223
|
case "reference":
|
|
24303
|
-
return makePlan("string", "string", field,
|
|
25224
|
+
return makePlan("string", "string", field, path25, required, commonConstraints(required, { kind: "referenceText" }));
|
|
24304
25225
|
case "date":
|
|
24305
|
-
return makePlan("string", "string", field,
|
|
25226
|
+
return makePlan("string", "string", field, path25, required, commonConstraints(required, { kind: "textType" }, { kind: "dateFormat" }));
|
|
24306
25227
|
case "time":
|
|
24307
|
-
return makePlan("string", "string", field,
|
|
25228
|
+
return makePlan("string", "string", field, path25, required, commonConstraints(required, { kind: "textType" }, { kind: "timeFormat" }));
|
|
24308
25229
|
case "datetime":
|
|
24309
25230
|
return makePlan(
|
|
24310
25231
|
"string",
|
|
24311
25232
|
"string",
|
|
24312
25233
|
field,
|
|
24313
|
-
|
|
25234
|
+
path25,
|
|
24314
25235
|
required,
|
|
24315
25236
|
commonConstraints(required, { kind: "textType" }, { kind: "datetimeFormat" })
|
|
24316
25237
|
);
|
|
@@ -24319,7 +25240,7 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
24319
25240
|
"select",
|
|
24320
25241
|
"select",
|
|
24321
25242
|
field,
|
|
24322
|
-
|
|
25243
|
+
path25,
|
|
24323
25244
|
required,
|
|
24324
25245
|
commonConstraints(required, {
|
|
24325
25246
|
kind: "selectOption",
|
|
@@ -24328,40 +25249,40 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
24328
25249
|
})
|
|
24329
25250
|
);
|
|
24330
25251
|
case "richText":
|
|
24331
|
-
return makePlan("richText", "object", field,
|
|
25252
|
+
return makePlan("richText", "object", field, path25, required, commonConstraints(required, { kind: "richTextDoc" }));
|
|
24332
25253
|
case "media":
|
|
24333
25254
|
case "file":
|
|
24334
|
-
return makePlan("media", "object", field,
|
|
25255
|
+
return makePlan("media", "object", field, path25, required, commonConstraints(required, { kind: "mediaObject" }));
|
|
24335
25256
|
case "link":
|
|
24336
|
-
return makePlan("link", "object", field,
|
|
25257
|
+
return makePlan("link", "object", field, path25, required, commonConstraints(required, { kind: "linkObject" }));
|
|
24337
25258
|
case "boolean":
|
|
24338
|
-
return makePlan("boolean", "boolean", field,
|
|
25259
|
+
return makePlan("boolean", "boolean", field, path25, required, requiredConstraints(required));
|
|
24339
25260
|
case "repeater":
|
|
24340
25261
|
return {
|
|
24341
|
-
...makePlan("repeater", "array", field,
|
|
25262
|
+
...makePlan("repeater", "array", field, path25, required, commonConstraints(required, { kind: "arrayType" })),
|
|
24342
25263
|
...field.polymorphic && field.itemTypes ? {
|
|
24343
|
-
repeatedItemVariants: deriveRepeatedItemVariants(field, [...
|
|
25264
|
+
repeatedItemVariants: deriveRepeatedItemVariants(field, [...path25, 0])
|
|
24344
25265
|
} : {
|
|
24345
|
-
repeatedItemPlan: deriveNestedFieldPlans(getRepeaterFields(field), [...
|
|
25266
|
+
repeatedItemPlan: deriveNestedFieldPlans(getRepeaterFields(field), [...path25, 0])
|
|
24346
25267
|
},
|
|
24347
25268
|
constraints: withRepeaterItemConstraints(field, commonConstraints(required, { kind: "arrayType" }))
|
|
24348
25269
|
};
|
|
24349
25270
|
case "group":
|
|
24350
25271
|
case "modal":
|
|
24351
25272
|
return {
|
|
24352
|
-
...makePlan("group", "object", field,
|
|
24353
|
-
children: deriveNestedFieldPlans(field.schema?.fields ?? [],
|
|
25273
|
+
...makePlan("group", "object", field, path25, required, requiredConstraints(required)),
|
|
25274
|
+
children: deriveNestedFieldPlans(field.schema?.fields ?? [], path25),
|
|
24354
25275
|
allowNullChildren: field.type === "group" && field.ui?.widget === "locationPicker"
|
|
24355
25276
|
};
|
|
24356
25277
|
case "tabGroup":
|
|
24357
25278
|
return {
|
|
24358
|
-
...makePlan("group", "object", field,
|
|
24359
|
-
children: field.tabs.flatMap((tab) => deriveNestedFieldPlans(tab.fields,
|
|
25279
|
+
...makePlan("group", "object", field, path25, required, requiredConstraints(required)),
|
|
25280
|
+
children: field.tabs.flatMap((tab) => deriveNestedFieldPlans(tab.fields, path25))
|
|
24360
25281
|
};
|
|
24361
25282
|
case "presetOrCustom":
|
|
24362
25283
|
case "contentTypeSelect":
|
|
24363
25284
|
case "entryPicker":
|
|
24364
|
-
return makePlan("passthrough", "unknown", field,
|
|
25285
|
+
return makePlan("passthrough", "unknown", field, path25, false, []);
|
|
24365
25286
|
default:
|
|
24366
25287
|
return assertNever2(field);
|
|
24367
25288
|
}
|
|
@@ -24375,14 +25296,14 @@ function commonConstraints(required, ...specific) {
|
|
|
24375
25296
|
function requiredConstraints(required) {
|
|
24376
25297
|
return required ? [{ kind: "required" }] : [];
|
|
24377
25298
|
}
|
|
24378
|
-
function makePlan(kind, valueKind2, field,
|
|
25299
|
+
function makePlan(kind, valueKind2, field, path25, required, constraints) {
|
|
24379
25300
|
return {
|
|
24380
25301
|
kind,
|
|
24381
25302
|
valueKind: valueKind2,
|
|
24382
25303
|
fieldId: field.id,
|
|
24383
25304
|
label: field.label,
|
|
24384
25305
|
fieldType: field.type,
|
|
24385
|
-
path:
|
|
25306
|
+
path: path25,
|
|
24386
25307
|
required,
|
|
24387
25308
|
visibility: fieldVisibility(field),
|
|
24388
25309
|
constraints
|
|
@@ -24719,18 +25640,18 @@ function materializeRepeaterItemPlan(plan, parentPath, index) {
|
|
|
24719
25640
|
return rebaseFieldPlanPath(plan, [...parentPath, 0], [...parentPath, index]);
|
|
24720
25641
|
}
|
|
24721
25642
|
function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
|
|
24722
|
-
const
|
|
25643
|
+
const path25 = rebaseFieldPath(plan.path, fromPrefix, toPrefix);
|
|
24723
25644
|
switch (plan.kind) {
|
|
24724
25645
|
case "group":
|
|
24725
25646
|
return {
|
|
24726
25647
|
...plan,
|
|
24727
|
-
path:
|
|
25648
|
+
path: path25,
|
|
24728
25649
|
children: plan.children.map((childPlan) => rebaseFieldPlanPath(childPlan, fromPrefix, toPrefix))
|
|
24729
25650
|
};
|
|
24730
25651
|
case "repeater":
|
|
24731
25652
|
return {
|
|
24732
25653
|
...plan,
|
|
24733
|
-
path:
|
|
25654
|
+
path: path25,
|
|
24734
25655
|
...plan.repeatedItemVariants ? {
|
|
24735
25656
|
repeatedItemVariants: plan.repeatedItemVariants.map((variant) => ({
|
|
24736
25657
|
...variant,
|
|
@@ -24751,20 +25672,20 @@ function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
|
|
|
24751
25672
|
case "passthrough":
|
|
24752
25673
|
return {
|
|
24753
25674
|
...plan,
|
|
24754
|
-
path:
|
|
25675
|
+
path: path25
|
|
24755
25676
|
};
|
|
24756
25677
|
default:
|
|
24757
25678
|
return assertNever2(plan);
|
|
24758
25679
|
}
|
|
24759
25680
|
}
|
|
24760
|
-
function rebaseFieldPath(
|
|
24761
|
-
if (!startsWithFieldPath(
|
|
24762
|
-
throw new Error(`Cannot rebase field path ${formatFieldPath(
|
|
25681
|
+
function rebaseFieldPath(path25, fromPrefix, toPrefix) {
|
|
25682
|
+
if (!startsWithFieldPath(path25, fromPrefix)) {
|
|
25683
|
+
throw new Error(`Cannot rebase field path ${formatFieldPath(path25)} from ${formatFieldPath(fromPrefix)}`);
|
|
24763
25684
|
}
|
|
24764
|
-
return [...toPrefix, ...
|
|
25685
|
+
return [...toPrefix, ...path25.slice(fromPrefix.length)];
|
|
24765
25686
|
}
|
|
24766
|
-
function startsWithFieldPath(
|
|
24767
|
-
return prefix.every((segment, index) =>
|
|
25687
|
+
function startsWithFieldPath(path25, prefix) {
|
|
25688
|
+
return prefix.every((segment, index) => path25[index] === segment);
|
|
24768
25689
|
}
|
|
24769
25690
|
function issue(plan, kind, extra) {
|
|
24770
25691
|
return {
|
|
@@ -24790,8 +25711,8 @@ function fieldPlanToZod(plan, options = {}) {
|
|
|
24790
25711
|
}
|
|
24791
25712
|
function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
|
|
24792
25713
|
const message = fieldIssueToMessage(validationIssue);
|
|
24793
|
-
const
|
|
24794
|
-
const issuePath =
|
|
25714
|
+
const path25 = relativeZodIssuePath(validationIssue.path, rootPath);
|
|
25715
|
+
const issuePath = path25.length > 0 ? { path: toZodIssuePath(path25) } : {};
|
|
24795
25716
|
switch (validationIssue.kind) {
|
|
24796
25717
|
case "required":
|
|
24797
25718
|
if (validationIssue.emptyOrigin) {
|
|
@@ -24844,8 +25765,8 @@ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
|
|
|
24844
25765
|
assertNever2(validationIssue);
|
|
24845
25766
|
}
|
|
24846
25767
|
}
|
|
24847
|
-
function relativeZodIssuePath(
|
|
24848
|
-
return startsWithFieldPath(
|
|
25768
|
+
function relativeZodIssuePath(path25, rootPath) {
|
|
25769
|
+
return startsWithFieldPath(path25, rootPath) ? path25.slice(rootPath.length) : path25;
|
|
24849
25770
|
}
|
|
24850
25771
|
function compilePattern(pattern) {
|
|
24851
25772
|
try {
|
|
@@ -25332,10 +26253,7 @@ function introHeadingGroup(className) {
|
|
|
25332
26253
|
},
|
|
25333
26254
|
[
|
|
25334
26255
|
introHeading(className),
|
|
25335
|
-
headingDecoration(
|
|
25336
|
-
family: "organic-squiggle",
|
|
25337
|
-
placement: "after-heading"
|
|
25338
|
-
})
|
|
26256
|
+
headingDecoration()
|
|
25339
26257
|
]
|
|
25340
26258
|
);
|
|
25341
26259
|
}
|
|
@@ -25357,10 +26275,7 @@ function introCopyStack(options = {}) {
|
|
|
25357
26275
|
},
|
|
25358
26276
|
[
|
|
25359
26277
|
introHeading(options.headingClassName ?? "rb-intro-title"),
|
|
25360
|
-
headingDecoration(
|
|
25361
|
-
family: "organic-squiggle",
|
|
25362
|
-
placement: "after-heading"
|
|
25363
|
-
}),
|
|
26278
|
+
headingDecoration(),
|
|
25364
26279
|
introBody(options.bodyClassName),
|
|
25365
26280
|
introCtas(options.ctaJustify)
|
|
25366
26281
|
]
|
|
@@ -26163,10 +27078,6 @@ init_fragments2();
|
|
|
26163
27078
|
init_faqAccordion();
|
|
26164
27079
|
init_builder();
|
|
26165
27080
|
init_boxStyles();
|
|
26166
|
-
var faqComposition = composeFragments([
|
|
26167
|
-
{ fragment: faqHeadingFragment, fieldPriority: 0 },
|
|
26168
|
-
{ fragment: faqAccordionFragment, fieldPriority: 1 }
|
|
26169
|
-
]);
|
|
26170
27081
|
function fragmentLayoutNode(layout) {
|
|
26171
27082
|
return isNodeDefinitionArray(layout) ? el("div", {}, [...layout]) : layout;
|
|
26172
27083
|
}
|
|
@@ -26175,13 +27086,17 @@ function isNodeDefinitionArray(layout) {
|
|
|
26175
27086
|
}
|
|
26176
27087
|
var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
|
|
26177
27088
|
var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
|
|
27089
|
+
var decoratedHeadingLayout = fragmentLayoutNode(decoratedFaqHeadingLayout);
|
|
26178
27090
|
var questionColumnsAccordionLayout = createFaqAccordionLayout({
|
|
26179
27091
|
rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
|
|
26180
27092
|
});
|
|
26181
27093
|
var defaultLayout = styledSection({
|
|
26182
27094
|
children: styledContainer({
|
|
26183
27095
|
baseClassName: "rb-relative rb-isolate",
|
|
26184
|
-
children: stack({ gap: "xl", className: "rb-w-full rb-max-w-4xl rb-mx-auto" },
|
|
27096
|
+
children: stack({ gap: "xl", className: "rb-w-full rb-max-w-4xl rb-mx-auto" }, [
|
|
27097
|
+
decoratedHeadingLayout,
|
|
27098
|
+
accordionLayout
|
|
27099
|
+
])
|
|
26185
27100
|
}),
|
|
26186
27101
|
baseClass: ""
|
|
26187
27102
|
});
|
|
@@ -26207,7 +27122,7 @@ var questionColumnsLayout = styledSection({
|
|
|
26207
27122
|
children: stack(
|
|
26208
27123
|
{ gap: "xl", className: "rb-w-full" },
|
|
26209
27124
|
[
|
|
26210
|
-
|
|
27125
|
+
decoratedHeadingLayout,
|
|
26211
27126
|
questionColumnsAccordionLayout
|
|
26212
27127
|
]
|
|
26213
27128
|
)
|
|
@@ -26403,7 +27318,6 @@ var eyebrowTreatmentClassMap = {
|
|
|
26403
27318
|
};
|
|
26404
27319
|
var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
|
|
26405
27320
|
var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
|
|
26406
|
-
var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
|
|
26407
27321
|
var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
|
|
26408
27322
|
function isEyebrowTreatment(value) {
|
|
26409
27323
|
return typeof value === "string" && eyebrowTreatmentSet.has(value);
|
|
@@ -26411,9 +27325,6 @@ function isEyebrowTreatment(value) {
|
|
|
26411
27325
|
function isHeadingDecorationFamily(value) {
|
|
26412
27326
|
return typeof value === "string" && headingDecorationFamilySet.has(value);
|
|
26413
27327
|
}
|
|
26414
|
-
function isHeadingDecorationPlacement(value) {
|
|
26415
|
-
return typeof value === "string" && headingDecorationPlacementSet.has(value);
|
|
26416
|
-
}
|
|
26417
27328
|
function isHeadingDecorationColorToken(value) {
|
|
26418
27329
|
return typeof value === "string" && headingDecorationColorTokenSet.has(value);
|
|
26419
27330
|
}
|
|
@@ -26919,15 +27830,11 @@ var uiTransforms = [
|
|
|
26919
27830
|
const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
|
|
26920
27831
|
const decoration = asPartialObject(value);
|
|
26921
27832
|
const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
|
|
26922
|
-
const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
|
|
26923
|
-
const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
|
|
26924
27833
|
const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
|
|
26925
|
-
if (!family
|
|
26926
|
-
if (allowedFamily && family !== allowedFamily) return "rb-hidden";
|
|
27834
|
+
if (!family) return "rb-hidden";
|
|
26927
27835
|
return joinClasses3([
|
|
26928
27836
|
baseClass,
|
|
26929
27837
|
`rb-heading-decoration-${family}`,
|
|
26930
|
-
`rb-heading-decoration-placement-${placement}`,
|
|
26931
27838
|
`rb-heading-decoration-color-${colorToken}`
|
|
26932
27839
|
]);
|
|
26933
27840
|
}
|
|
@@ -26977,6 +27884,95 @@ function planSiteChromePlacement(positioning) {
|
|
|
26977
27884
|
var joinClasses4 = (parts) => parts.filter(
|
|
26978
27885
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
26979
27886
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
27887
|
+
function resolveHeaderBrandDisplay(logo) {
|
|
27888
|
+
const display = logo?.brandDisplay ?? "logo-plus-title";
|
|
27889
|
+
if (display === "logo-only" || display === "title-only") return display;
|
|
27890
|
+
return "logo-plus-title";
|
|
27891
|
+
}
|
|
27892
|
+
function resolveHeaderLogoSizeClass(logo) {
|
|
27893
|
+
switch (logo?.size ?? "standard") {
|
|
27894
|
+
case "compact":
|
|
27895
|
+
return "header-logo-size-compact";
|
|
27896
|
+
case "generous":
|
|
27897
|
+
return "header-logo-size-generous";
|
|
27898
|
+
case "display":
|
|
27899
|
+
return "header-logo-size-display";
|
|
27900
|
+
case "auto":
|
|
27901
|
+
case "standard":
|
|
27902
|
+
default:
|
|
27903
|
+
return "header-logo-size-standard";
|
|
27904
|
+
}
|
|
27905
|
+
}
|
|
27906
|
+
function resolveHeaderLogoAccommodationClass(logo) {
|
|
27907
|
+
if (resolveHeaderBrandDisplay(logo) === "title-only") {
|
|
27908
|
+
return "header-logo-accommodation-title-only";
|
|
27909
|
+
}
|
|
27910
|
+
switch (logo?.accommodation) {
|
|
27911
|
+
case "logo-plate":
|
|
27912
|
+
return "header-logo-accommodation-plate";
|
|
27913
|
+
case "centered-badge":
|
|
27914
|
+
return "header-logo-accommodation-centered-badge";
|
|
27915
|
+
case "popout-badge":
|
|
27916
|
+
return "header-logo-accommodation-popout-badge";
|
|
27917
|
+
case "centered-masthead":
|
|
27918
|
+
return "header-logo-accommodation-centered-masthead";
|
|
27919
|
+
case "hero-badge":
|
|
27920
|
+
return "header-logo-accommodation-hero-badge";
|
|
27921
|
+
case "inline-logo-only":
|
|
27922
|
+
return "header-logo-accommodation-inline-logo-only";
|
|
27923
|
+
case "inline-wordmark":
|
|
27924
|
+
return "header-logo-accommodation-inline-wordmark";
|
|
27925
|
+
case "inline-mark-with-title":
|
|
27926
|
+
return "header-logo-accommodation-inline-mark-with-title";
|
|
27927
|
+
case "title-only":
|
|
27928
|
+
return "header-logo-accommodation-title-only";
|
|
27929
|
+
case void 0:
|
|
27930
|
+
default:
|
|
27931
|
+
return "header-logo-accommodation-inline";
|
|
27932
|
+
}
|
|
27933
|
+
}
|
|
27934
|
+
var headerLogoClassSchema = z.object({
|
|
27935
|
+
base: z.string().optional()
|
|
27936
|
+
});
|
|
27937
|
+
var headerLogoClassTransform = {
|
|
27938
|
+
id: "layout.headerLogoClass",
|
|
27939
|
+
kind: "string",
|
|
27940
|
+
summary: "Compose header logo wrapper classes from brand display and accommodation settings",
|
|
27941
|
+
schema: headerLogoClassSchema,
|
|
27942
|
+
run: (value, options) => {
|
|
27943
|
+
const logo = asPartialObject(value);
|
|
27944
|
+
return joinClasses4([
|
|
27945
|
+
options.base ?? "header-logo rb-flex rb-min-w-0 rb-items-center rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80",
|
|
27946
|
+
`header-brand-display-${resolveHeaderBrandDisplay(logo)}`,
|
|
27947
|
+
resolveHeaderLogoSizeClass(logo),
|
|
27948
|
+
resolveHeaderLogoAccommodationClass(logo)
|
|
27949
|
+
]);
|
|
27950
|
+
}
|
|
27951
|
+
};
|
|
27952
|
+
var headerLogoMediaClassTransform = {
|
|
27953
|
+
id: "layout.headerLogoMediaClass",
|
|
27954
|
+
kind: "string",
|
|
27955
|
+
summary: "Compose header logo media classes from brand display and size settings",
|
|
27956
|
+
schema: headerLogoClassSchema,
|
|
27957
|
+
run: (value, options) => {
|
|
27958
|
+
const logo = asPartialObject(value);
|
|
27959
|
+
const hiddenClass = resolveHeaderBrandDisplay(logo) === "title-only" ? "rb-hidden" : null;
|
|
27960
|
+
return joinClasses4([
|
|
27961
|
+
options.base ?? "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300",
|
|
27962
|
+
resolveHeaderLogoSizeClass(logo),
|
|
27963
|
+
hiddenClass
|
|
27964
|
+
]);
|
|
27965
|
+
}
|
|
27966
|
+
};
|
|
27967
|
+
var headerLogoTextVisibleTransform = {
|
|
27968
|
+
id: "layout.headerLogoTextVisible",
|
|
27969
|
+
kind: "formatter",
|
|
27970
|
+
summary: "Return whether header logo text should render",
|
|
27971
|
+
run: (value) => {
|
|
27972
|
+
const logo = asPartialObject(value);
|
|
27973
|
+
return resolveHeaderBrandDisplay(logo) !== "logo-only";
|
|
27974
|
+
}
|
|
27975
|
+
};
|
|
26980
27976
|
var maxWidthClassSchema = z.object({
|
|
26981
27977
|
base: z.string().optional(),
|
|
26982
27978
|
container: z.string().optional(),
|
|
@@ -27327,6 +28323,13 @@ var footerBottomBarStyleTransform = {
|
|
|
27327
28323
|
return mergeStyles(...styleParts);
|
|
27328
28324
|
}
|
|
27329
28325
|
};
|
|
28326
|
+
function resolveFooterNavLayoutClasses(navLayout) {
|
|
28327
|
+
return {
|
|
28328
|
+
alignClass: footerAlignClassMap[navLayout?.align ?? "start"] ?? "rb-justify-start",
|
|
28329
|
+
gapX: footerGapXClassMap[navLayout?.gapX ?? "default"] ?? "rb-gap-x-6",
|
|
28330
|
+
gapY: footerGapYClassMap[navLayout?.gapY ?? "compact"] ?? "rb-gap-y-3"
|
|
28331
|
+
};
|
|
28332
|
+
}
|
|
27330
28333
|
var footerSplitNavSingleClassTransform = {
|
|
27331
28334
|
id: "layout.footerSplitNavSingleClass",
|
|
27332
28335
|
kind: "string",
|
|
@@ -27334,9 +28337,7 @@ var footerSplitNavSingleClassTransform = {
|
|
|
27334
28337
|
run: (value) => {
|
|
27335
28338
|
const navLayout = asPartialObject(value);
|
|
27336
28339
|
const mode = navLayout?.layout ?? "stack";
|
|
27337
|
-
const alignClass
|
|
27338
|
-
const gapX = footerGapXClassMap[navLayout?.gapX ?? "default"] ?? "rb-gap-x-6";
|
|
27339
|
-
const gapY = footerGapYClassMap[navLayout?.gapY ?? "compact"] ?? "rb-gap-y-3";
|
|
28340
|
+
const { alignClass, gapX, gapY } = resolveFooterNavLayoutClasses(navLayout);
|
|
27340
28341
|
if (mode === "stack") {
|
|
27341
28342
|
return "rb-w-full rb-space-y-3 rb-text-left";
|
|
27342
28343
|
}
|
|
@@ -27355,6 +28356,42 @@ var footerSplitNavSingleClassTransform = {
|
|
|
27355
28356
|
]);
|
|
27356
28357
|
}
|
|
27357
28358
|
};
|
|
28359
|
+
var footerSimpleRootClassTransform = {
|
|
28360
|
+
id: "layout.footerSimpleRootClass",
|
|
28361
|
+
kind: "string",
|
|
28362
|
+
summary: "Compose simple-footer root classes from maxWidth and nav alignment",
|
|
28363
|
+
run: (value) => {
|
|
28364
|
+
const footer = asPartialObject(value);
|
|
28365
|
+
const align = footer?.navLayout?.align;
|
|
28366
|
+
const alignClasses = align === "center" ? "rb-items-center rb-text-center" : align === "end" ? "rb-items-end rb-text-right" : "rb-items-start rb-text-left";
|
|
28367
|
+
return joinClasses4([
|
|
28368
|
+
footer?.maxWidth === "full" ? "rb-container-full" : "rb-container",
|
|
28369
|
+
"rb-flex rb-w-full rb-flex-col rb-gap-4 rb-py-10",
|
|
28370
|
+
alignClasses
|
|
28371
|
+
]);
|
|
28372
|
+
}
|
|
28373
|
+
};
|
|
28374
|
+
var footerSimpleNavClassTransform = {
|
|
28375
|
+
id: "layout.footerSimpleNavClass",
|
|
28376
|
+
kind: "string",
|
|
28377
|
+
summary: "Compose simple-footer nav classes from navLayout controls",
|
|
28378
|
+
run: (value) => {
|
|
28379
|
+
const navLayout = asPartialObject(value);
|
|
28380
|
+
if (!navLayout) {
|
|
28381
|
+
return "footer-nav rb-flex rb-flex-wrap rb-justify-start rb-gap-x-6 rb-gap-y-3";
|
|
28382
|
+
}
|
|
28383
|
+
const { alignClass, gapX, gapY } = resolveFooterNavLayoutClasses(navLayout);
|
|
28384
|
+
if (navLayout.layout === "stack") {
|
|
28385
|
+
return "footer-nav rb-w-full rb-space-y-3";
|
|
28386
|
+
}
|
|
28387
|
+
return joinClasses4([
|
|
28388
|
+
"footer-nav rb-flex rb-flex-row rb-flex-wrap rb-items-center",
|
|
28389
|
+
alignClass,
|
|
28390
|
+
gapX,
|
|
28391
|
+
gapY
|
|
28392
|
+
]);
|
|
28393
|
+
}
|
|
28394
|
+
};
|
|
27358
28395
|
var footerSplitMainClassSchema = z.object({
|
|
27359
28396
|
base: z.string().optional(),
|
|
27360
28397
|
reverseClass: z.string().optional()
|
|
@@ -27376,7 +28413,8 @@ var footerSplitMainClassTransform = {
|
|
|
27376
28413
|
}
|
|
27377
28414
|
};
|
|
27378
28415
|
var footerLogoClassSchema = z.object({
|
|
27379
|
-
base: z.string().optional()
|
|
28416
|
+
base: z.string().optional(),
|
|
28417
|
+
requireExplicitShow: z.boolean().optional()
|
|
27380
28418
|
});
|
|
27381
28419
|
var footerLogoClassTransform = {
|
|
27382
28420
|
id: "layout.footerLogoClass",
|
|
@@ -27386,7 +28424,7 @@ var footerLogoClassTransform = {
|
|
|
27386
28424
|
run: (value, options) => {
|
|
27387
28425
|
const logo = asPartialObject(value);
|
|
27388
28426
|
const align = logo?.align ?? "end";
|
|
27389
|
-
const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
|
|
28427
|
+
const hiddenClass = options.requireExplicitShow ? logo?.showLogo === true ? null : "rb-hidden" : logo?.showLogo === false ? "rb-hidden" : null;
|
|
27390
28428
|
const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
|
|
27391
28429
|
return joinClasses4([
|
|
27392
28430
|
options.base ?? "footer-logo rb-inline-flex rb-items-center rb-justify-end rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80",
|
|
@@ -27437,6 +28475,9 @@ function extractBackgroundColorToken(background, fallback) {
|
|
|
27437
28475
|
var layoutTransforms = [
|
|
27438
28476
|
maxWidthClassTransform,
|
|
27439
28477
|
headerRootClassTransform,
|
|
28478
|
+
headerLogoClassTransform,
|
|
28479
|
+
headerLogoMediaClassTransform,
|
|
28480
|
+
headerLogoTextVisibleTransform,
|
|
27440
28481
|
footerRootClassTransform,
|
|
27441
28482
|
headerRootStyleTransform,
|
|
27442
28483
|
headerSectionBackgroundTransform,
|
|
@@ -27446,6 +28487,8 @@ var layoutTransforms = [
|
|
|
27446
28487
|
footerBottomBarStyleTransform,
|
|
27447
28488
|
footerSplitNavSingleClassTransform,
|
|
27448
28489
|
footerSplitMainClassTransform,
|
|
28490
|
+
footerSimpleRootClassTransform,
|
|
28491
|
+
footerSimpleNavClassTransform,
|
|
27449
28492
|
footerLogoClassTransform,
|
|
27450
28493
|
footerLogoMediaClassTransform,
|
|
27451
28494
|
footerLogoTextVisibleTransform
|
|
@@ -27474,9 +28517,9 @@ function maybeBuildSupabaseTransformUrl(inputUrl, options) {
|
|
|
27474
28517
|
const remainder = url.pathname.slice(idx + marker.length);
|
|
27475
28518
|
const parts = remainder.split("/").filter(Boolean);
|
|
27476
28519
|
const bucket = parts[0];
|
|
27477
|
-
const
|
|
27478
|
-
if (!bucket || !
|
|
27479
|
-
url.pathname = `/storage/v1/render/image/public/${bucket}/${
|
|
28520
|
+
const path25 = parts.slice(1).join("/");
|
|
28521
|
+
if (!bucket || !path25) return inputUrl;
|
|
28522
|
+
url.pathname = `/storage/v1/render/image/public/${bucket}/${path25}`;
|
|
27480
28523
|
url.search = "";
|
|
27481
28524
|
if (width) url.searchParams.set("width", String(width));
|
|
27482
28525
|
if (height) url.searchParams.set("height", String(height));
|
|
@@ -27641,15 +28684,35 @@ init_colorStyles();
|
|
|
27641
28684
|
var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
|
|
27642
28685
|
|
|
27643
28686
|
// ../blocks/src/system/blocks/site-header.ts
|
|
28687
|
+
var whenTransformed = (from, transformId, equals = true) => (node) => ({
|
|
28688
|
+
...node,
|
|
28689
|
+
$when: {
|
|
28690
|
+
when: {
|
|
28691
|
+
from,
|
|
28692
|
+
transforms: [{ id: transformId }]
|
|
28693
|
+
},
|
|
28694
|
+
equals
|
|
28695
|
+
}
|
|
28696
|
+
});
|
|
27644
28697
|
var logoRow = link(
|
|
27645
28698
|
{
|
|
27646
28699
|
href: "/",
|
|
27647
|
-
className: "header
|
|
28700
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28701
|
+
transforms: pipe(tx("layout.headerLogoClass")),
|
|
28702
|
+
fallback: "header-logo rb-flex rb-min-w-0 rb-items-center rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80"
|
|
28703
|
+
})
|
|
27648
28704
|
},
|
|
27649
28705
|
[
|
|
27650
28706
|
media(
|
|
27651
28707
|
{
|
|
27652
|
-
className: "
|
|
28708
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28709
|
+
transforms: pipe(
|
|
28710
|
+
tx("layout.headerLogoMediaClass", {
|
|
28711
|
+
base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
|
|
28712
|
+
})
|
|
28713
|
+
),
|
|
28714
|
+
fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
|
|
28715
|
+
})
|
|
27653
28716
|
},
|
|
27654
28717
|
when("content.logo"),
|
|
27655
28718
|
bind("content.logo")
|
|
@@ -27659,7 +28722,14 @@ var logoRow = link(
|
|
|
27659
28722
|
[
|
|
27660
28723
|
media(
|
|
27661
28724
|
{
|
|
27662
|
-
className: "
|
|
28725
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28726
|
+
transforms: pipe(
|
|
28727
|
+
tx("layout.headerLogoMediaClass", {
|
|
28728
|
+
base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
|
|
28729
|
+
})
|
|
28730
|
+
),
|
|
28731
|
+
fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
|
|
28732
|
+
})
|
|
27663
28733
|
},
|
|
27664
28734
|
when("site.logo"),
|
|
27665
28735
|
bind("site.logo")
|
|
@@ -27673,6 +28743,10 @@ var logoRow = link(
|
|
|
27673
28743
|
as: "strong",
|
|
27674
28744
|
className: "header-logo-text rb-truncate"
|
|
27675
28745
|
},
|
|
28746
|
+
whenTransformed(
|
|
28747
|
+
"$root.theme.header.logo",
|
|
28748
|
+
"layout.headerLogoTextVisible"
|
|
28749
|
+
),
|
|
27676
28750
|
bind("site.title", { fallback: "Your Site" })
|
|
27677
28751
|
)
|
|
27678
28752
|
]
|
|
@@ -27680,12 +28754,26 @@ var logoRow = link(
|
|
|
27680
28754
|
var centeredLogoRow = link(
|
|
27681
28755
|
{
|
|
27682
28756
|
href: "/",
|
|
27683
|
-
className: "header
|
|
28757
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28758
|
+
transforms: pipe(
|
|
28759
|
+
tx("layout.headerLogoClass", {
|
|
28760
|
+
base: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80"
|
|
28761
|
+
})
|
|
28762
|
+
),
|
|
28763
|
+
fallback: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80"
|
|
28764
|
+
})
|
|
27684
28765
|
},
|
|
27685
28766
|
[
|
|
27686
28767
|
media(
|
|
27687
28768
|
{
|
|
27688
|
-
className: "
|
|
28769
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28770
|
+
transforms: pipe(
|
|
28771
|
+
tx("layout.headerLogoMediaClass", {
|
|
28772
|
+
base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
28773
|
+
})
|
|
28774
|
+
),
|
|
28775
|
+
fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
28776
|
+
})
|
|
27689
28777
|
},
|
|
27690
28778
|
when("content.logo"),
|
|
27691
28779
|
bind("content.logo")
|
|
@@ -27695,7 +28783,14 @@ var centeredLogoRow = link(
|
|
|
27695
28783
|
[
|
|
27696
28784
|
media(
|
|
27697
28785
|
{
|
|
27698
|
-
className: "
|
|
28786
|
+
className: bindProp("$root.theme.header.logo", {
|
|
28787
|
+
transforms: pipe(
|
|
28788
|
+
tx("layout.headerLogoMediaClass", {
|
|
28789
|
+
base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
28790
|
+
})
|
|
28791
|
+
),
|
|
28792
|
+
fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
28793
|
+
})
|
|
27699
28794
|
},
|
|
27700
28795
|
when("site.logo"),
|
|
27701
28796
|
bind("site.logo")
|
|
@@ -27706,6 +28801,10 @@ var centeredLogoRow = link(
|
|
|
27706
28801
|
// Logo text font-size controlled by CSS (styles.css) for shrink transitions
|
|
27707
28802
|
text(
|
|
27708
28803
|
{ as: "strong", className: "header-logo-text" },
|
|
28804
|
+
whenTransformed(
|
|
28805
|
+
"$root.theme.header.logo",
|
|
28806
|
+
"layout.headerLogoTextVisible"
|
|
28807
|
+
),
|
|
27709
28808
|
bind("site.title", { fallback: "Your Site" })
|
|
27710
28809
|
)
|
|
27711
28810
|
]
|
|
@@ -27840,12 +28939,12 @@ var mobileHeaderBar = inline(
|
|
|
27840
28939
|
className: bindProp("$root.theme.header.maxWidth", {
|
|
27841
28940
|
transforms: pipe(
|
|
27842
28941
|
tx("layout.maxWidthClass", {
|
|
27843
|
-
base: `rb-header-layout ${mobileOnlyDisplay("flex")} rb-w-full rb-items-
|
|
28942
|
+
base: `rb-header-layout header-mobile-bar ${mobileOnlyDisplay("flex")} rb-w-full rb-items-start rb-justify-between`
|
|
27844
28943
|
})
|
|
27845
28944
|
),
|
|
27846
|
-
fallback: `rb-container rb-header-layout ${mobileOnlyDisplay("flex")} rb-w-full rb-items-
|
|
28945
|
+
fallback: `rb-container rb-header-layout header-mobile-bar ${mobileOnlyDisplay("flex")} rb-w-full rb-items-start rb-justify-between`
|
|
27847
28946
|
}),
|
|
27848
|
-
align: "
|
|
28947
|
+
align: "start",
|
|
27849
28948
|
justify: "between"
|
|
27850
28949
|
},
|
|
27851
28950
|
[logoRow, mobileToggleButton]
|
|
@@ -27916,12 +29015,12 @@ var floatingLayout = inline(
|
|
|
27916
29015
|
className: bindProp("$root.theme.header.maxWidth", {
|
|
27917
29016
|
transforms: pipe(
|
|
27918
29017
|
tx("layout.maxWidthClass", {
|
|
27919
|
-
base: `rb-header-layout header-floating-container rb-absolute rb-left-1/2 rb-top-4 ${desktopOnlyDisplay("flex")} rb-w-calc-100-minus-2rem rb-max-w-7xl rb-translate-x-neg-1/2 rb-items-
|
|
29018
|
+
base: `rb-header-layout header-floating-container rb-absolute rb-left-1/2 rb-top-4 ${desktopOnlyDisplay("flex")} rb-w-calc-100-minus-2rem rb-max-w-7xl rb-translate-x-neg-1/2 rb-items-start rb-gap-6 rb-px-6`,
|
|
27920
29019
|
container: "",
|
|
27921
29020
|
full: ""
|
|
27922
29021
|
})
|
|
27923
29022
|
),
|
|
27924
|
-
fallback: `rb-header-layout header-floating-container rb-absolute rb-left-1/2 rb-top-4 ${desktopOnlyDisplay("flex")} rb-w-calc-100-minus-2rem rb-max-w-7xl rb-translate-x-neg-1/2 rb-items-
|
|
29023
|
+
fallback: `rb-header-layout header-floating-container rb-absolute rb-left-1/2 rb-top-4 ${desktopOnlyDisplay("flex")} rb-w-calc-100-minus-2rem rb-max-w-7xl rb-translate-x-neg-1/2 rb-items-start rb-gap-6 rb-px-6`
|
|
27925
29024
|
}),
|
|
27926
29025
|
align: "center"
|
|
27927
29026
|
},
|
|
@@ -28039,7 +29138,7 @@ var footerNavGroupsLayout = stack(
|
|
|
28039
29138
|
// ../blocks/src/system/blocks/site-footer.ts
|
|
28040
29139
|
init_colorStyles();
|
|
28041
29140
|
var footerTextLayout = () => materializeFragment({ fragment: footerBottomTextFragment }).layout;
|
|
28042
|
-
var
|
|
29141
|
+
var whenTransformed2 = (from, transformId, equals = true) => (node) => ({
|
|
28043
29142
|
...node,
|
|
28044
29143
|
$when: {
|
|
28045
29144
|
when: {
|
|
@@ -28077,30 +29176,89 @@ var inlineBottomTextLayout = () => {
|
|
|
28077
29176
|
when("$root.theme.footer.bottomBar.enabled", { equals: true, not: true })(bottomTextNode)
|
|
28078
29177
|
];
|
|
28079
29178
|
};
|
|
28080
|
-
var
|
|
29179
|
+
var simpleFooterLogo = link(
|
|
28081
29180
|
{
|
|
28082
|
-
|
|
28083
|
-
align: "start",
|
|
29181
|
+
href: "/",
|
|
28084
29182
|
className: {
|
|
28085
29183
|
$bind: {
|
|
28086
|
-
from: "$root.theme.footer.
|
|
29184
|
+
from: "$root.theme.footer.logo",
|
|
28087
29185
|
transforms: [
|
|
28088
29186
|
{
|
|
28089
|
-
id: "layout.
|
|
28090
|
-
options: {
|
|
28091
|
-
base: "rb-flex rb-w-full rb-flex-col rb-items-start rb-gap-4 rb-py-10 rb-text-left"
|
|
28092
|
-
}
|
|
29187
|
+
id: "layout.footerLogoClass",
|
|
29188
|
+
options: { requireExplicitShow: true }
|
|
28093
29189
|
}
|
|
28094
29190
|
],
|
|
29191
|
+
fallback: "rb-hidden"
|
|
29192
|
+
}
|
|
29193
|
+
}
|
|
29194
|
+
},
|
|
29195
|
+
[
|
|
29196
|
+
media(
|
|
29197
|
+
{
|
|
29198
|
+
className: {
|
|
29199
|
+
$bind: {
|
|
29200
|
+
from: "$root.theme.footer.logo",
|
|
29201
|
+
transforms: [{ id: "layout.footerLogoMediaClass" }],
|
|
29202
|
+
fallback: "rb-w-auto"
|
|
29203
|
+
}
|
|
29204
|
+
}
|
|
29205
|
+
},
|
|
29206
|
+
when("content.logo"),
|
|
29207
|
+
bind("content.logo")
|
|
29208
|
+
),
|
|
29209
|
+
stack(
|
|
29210
|
+
{ className: "rb-contents" },
|
|
29211
|
+
[
|
|
29212
|
+
media(
|
|
29213
|
+
{
|
|
29214
|
+
className: {
|
|
29215
|
+
$bind: {
|
|
29216
|
+
from: "$root.theme.footer.logo",
|
|
29217
|
+
transforms: [{ id: "layout.footerLogoMediaClass" }],
|
|
29218
|
+
fallback: "rb-w-auto"
|
|
29219
|
+
}
|
|
29220
|
+
}
|
|
29221
|
+
},
|
|
29222
|
+
when("site.logo"),
|
|
29223
|
+
bind("site.logo")
|
|
29224
|
+
)
|
|
29225
|
+
],
|
|
29226
|
+
when("content.logo", { not: true })
|
|
29227
|
+
),
|
|
29228
|
+
text(
|
|
29229
|
+
{
|
|
29230
|
+
as: "strong",
|
|
29231
|
+
className: "footer-logo-text rb-nav-text"
|
|
29232
|
+
},
|
|
29233
|
+
whenTransformed2("$root.theme.footer", "layout.footerLogoTextVisible"),
|
|
29234
|
+
bind("site.title", { fallback: "Your Site" })
|
|
29235
|
+
)
|
|
29236
|
+
]
|
|
29237
|
+
);
|
|
29238
|
+
var simpleFooterLayout = stack(
|
|
29239
|
+
{
|
|
29240
|
+
gap: "md",
|
|
29241
|
+
align: "start",
|
|
29242
|
+
className: {
|
|
29243
|
+
$bind: {
|
|
29244
|
+
from: "$root.theme.footer",
|
|
29245
|
+
transforms: [{ id: "layout.footerSimpleRootClass" }],
|
|
28095
29246
|
fallback: "rb-container rb-flex rb-w-full rb-flex-col rb-items-start rb-gap-4 rb-py-10 rb-text-left"
|
|
28096
29247
|
}
|
|
28097
29248
|
}
|
|
28098
29249
|
},
|
|
28099
29250
|
[
|
|
29251
|
+
simpleFooterLogo,
|
|
28100
29252
|
footerNav({
|
|
28101
29253
|
collectionPath: "footerMenu.items",
|
|
28102
29254
|
mode: "flatten",
|
|
28103
|
-
className:
|
|
29255
|
+
className: {
|
|
29256
|
+
$bind: {
|
|
29257
|
+
from: "$root.theme.footer.navLayout",
|
|
29258
|
+
transforms: [{ id: "layout.footerSimpleNavClass" }],
|
|
29259
|
+
fallback: "footer-nav rb-flex rb-flex-wrap rb-justify-start rb-gap-x-6 rb-gap-y-3"
|
|
29260
|
+
}
|
|
29261
|
+
},
|
|
28104
29262
|
linkClassName: "footer-nav-link rb-inline-flex rb-items-center rb-px-4 rb-py-2 rb-nav-text transition-theme-standard"
|
|
28105
29263
|
}),
|
|
28106
29264
|
...bodyTextLayout(),
|
|
@@ -28141,7 +29299,7 @@ var columnsFooterLayout = stack(
|
|
|
28141
29299
|
className: "rb-block rb-nav-text",
|
|
28142
29300
|
style: textColorStyle("text")
|
|
28143
29301
|
},
|
|
28144
|
-
|
|
29302
|
+
whenTransformed2("$root.theme.footer", "layout.footerLogoTextVisible"),
|
|
28145
29303
|
bind("site.title", { fallback: "Your Site" })
|
|
28146
29304
|
),
|
|
28147
29305
|
footerNav({
|
|
@@ -28255,7 +29413,7 @@ var splitFooterLayout = stack(
|
|
|
28255
29413
|
as: "strong",
|
|
28256
29414
|
className: "footer-logo-text rb-nav-text"
|
|
28257
29415
|
},
|
|
28258
|
-
|
|
29416
|
+
whenTransformed2("$root.theme.footer", "layout.footerLogoTextVisible"),
|
|
28259
29417
|
bind("site.title", { fallback: "Your Site" })
|
|
28260
29418
|
)
|
|
28261
29419
|
]
|
|
@@ -28391,6 +29549,7 @@ var wrapVariant = (variantLayout) => styledSection({
|
|
|
28391
29549
|
});
|
|
28392
29550
|
var carouselLayout = wrapVariant(buildCarouselLayout());
|
|
28393
29551
|
var gridLayout2 = wrapVariant(buildGridLayout());
|
|
29552
|
+
var highlightLayout = wrapVariant(buildHighlightLayout());
|
|
28394
29553
|
var splitHeading = stack(
|
|
28395
29554
|
{ gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
|
|
28396
29555
|
[
|
|
@@ -28399,10 +29558,7 @@ var splitHeading = stack(
|
|
|
28399
29558
|
when("content.heading"),
|
|
28400
29559
|
bind("content.heading")
|
|
28401
29560
|
),
|
|
28402
|
-
headingDecoration(
|
|
28403
|
-
family: "short-center-rule",
|
|
28404
|
-
placement: "after-heading"
|
|
28405
|
-
}),
|
|
29561
|
+
headingDecoration(),
|
|
28406
29562
|
text(
|
|
28407
29563
|
{
|
|
28408
29564
|
as: "p",
|
|
@@ -28420,7 +29576,9 @@ var splitGridLayout = styledSection({
|
|
|
28420
29576
|
children: el(
|
|
28421
29577
|
"div",
|
|
28422
29578
|
{
|
|
28423
|
-
|
|
29579
|
+
// Desktop columns (title 1fr + cards 3fr = 25/25/25/25) are set in
|
|
29580
|
+
// testimonials.css on .rb-testimonials-split-grid; mobile stays 1-col.
|
|
29581
|
+
className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-items-start"
|
|
28424
29582
|
},
|
|
28425
29583
|
[
|
|
28426
29584
|
el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
|
|
@@ -28500,7 +29658,8 @@ var testimonialsManifest = createBlockManifest({
|
|
|
28500
29658
|
variants: {
|
|
28501
29659
|
carousel: carouselLayout,
|
|
28502
29660
|
grid: gridLayout2,
|
|
28503
|
-
"split-grid": splitGridLayout
|
|
29661
|
+
"split-grid": splitGridLayout,
|
|
29662
|
+
highlight: highlightLayout
|
|
28504
29663
|
},
|
|
28505
29664
|
defaultVariant: "carousel",
|
|
28506
29665
|
variantOptions: {
|
|
@@ -28518,6 +29677,11 @@ var testimonialsManifest = createBlockManifest({
|
|
|
28518
29677
|
label: "Split grid",
|
|
28519
29678
|
description: "Heading on the left with testimonial cards on the right",
|
|
28520
29679
|
icon: "PanelLeft"
|
|
29680
|
+
},
|
|
29681
|
+
highlight: {
|
|
29682
|
+
label: "Highlight",
|
|
29683
|
+
description: "A single, centered testimonial with no carousel",
|
|
29684
|
+
icon: "Quote"
|
|
28521
29685
|
}
|
|
28522
29686
|
},
|
|
28523
29687
|
// Fields (variant field is auto-generated by augmentManifest)
|
|
@@ -28955,10 +30119,7 @@ var sectionHeading = stack(
|
|
|
28955
30119
|
when("content.title"),
|
|
28956
30120
|
bind("content.title")
|
|
28957
30121
|
),
|
|
28958
|
-
headingDecoration(
|
|
28959
|
-
family: "short-center-rule",
|
|
28960
|
-
placement: "under-centered-heading"
|
|
28961
|
-
}),
|
|
30122
|
+
headingDecoration(),
|
|
28962
30123
|
richText(
|
|
28963
30124
|
{
|
|
28964
30125
|
className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
|
|
@@ -34407,8 +35568,7 @@ var systemBlockDefinitionsRaw = [
|
|
|
34407
35568
|
withDesignCapability("block.intro", introBlockDefinition, declareBlockDesignCapability({
|
|
34408
35569
|
sectionSurfaces: "supported",
|
|
34409
35570
|
contentFrames: ["plain", "panel"],
|
|
34410
|
-
itemSurfaces: "unsupported"
|
|
34411
|
-
headingDecorations: ["organic-squiggle"]
|
|
35571
|
+
itemSurfaces: "unsupported"
|
|
34412
35572
|
}), defineBlockDesignMetadata({
|
|
34413
35573
|
flow: bodyFlow,
|
|
34414
35574
|
layoutProfiles: [
|
|
@@ -34524,7 +35684,7 @@ var systemBlockDefinitionsRaw = [
|
|
|
34524
35684
|
sectionSurfaces: "supported",
|
|
34525
35685
|
contentFrames: ["plain", "panel"],
|
|
34526
35686
|
itemSurfaces: "supported",
|
|
34527
|
-
testimonialCardTreatments: ["default", "accent-quote"],
|
|
35687
|
+
testimonialCardTreatments: ["default", "statement", "non-carded", "accent-quote", "editorial-serif-quote"],
|
|
34528
35688
|
headingDecorations: ["short-center-rule"]
|
|
34529
35689
|
}), defineBlockDesignMetadata({
|
|
34530
35690
|
flow: proofFlow,
|
|
@@ -34546,6 +35706,12 @@ var systemBlockDefinitionsRaw = [
|
|
|
34546
35706
|
family: "split",
|
|
34547
35707
|
weight: "featured",
|
|
34548
35708
|
bias: "soft"
|
|
35709
|
+
}),
|
|
35710
|
+
layoutProfile({
|
|
35711
|
+
variantKey: "highlight",
|
|
35712
|
+
family: "centered",
|
|
35713
|
+
weight: "featured",
|
|
35714
|
+
bias: "soft"
|
|
34549
35715
|
})
|
|
34550
35716
|
]
|
|
34551
35717
|
})),
|
|
@@ -34560,8 +35726,7 @@ var systemBlockDefinitionsRaw = [
|
|
|
34560
35726
|
withDesignCapability("block.feature-cards", featureCardsBlockDefinition, declareBlockDesignCapability({
|
|
34561
35727
|
sectionSurfaces: "supported",
|
|
34562
35728
|
contentFrames: ["plain", "panel"],
|
|
34563
|
-
itemSurfaces: "supported"
|
|
34564
|
-
headingDecorations: ["short-center-rule"]
|
|
35729
|
+
itemSurfaces: "supported"
|
|
34565
35730
|
}), defineBlockDesignMetadata({
|
|
34566
35731
|
flow: offeringsFlow,
|
|
34567
35732
|
layoutProfiles: [
|
|
@@ -34769,17 +35934,173 @@ function listBlockDefinitions() {
|
|
|
34769
35934
|
return Array.from(blockStore.values());
|
|
34770
35935
|
}
|
|
34771
35936
|
|
|
34772
|
-
// ../theme-core/src/tokens/index.ts
|
|
34773
|
-
init_blockColorTokens();
|
|
34774
|
-
init_themeColorTokens();
|
|
34775
|
-
init_colorTokenParts();
|
|
34776
|
-
init_resolver();
|
|
34777
|
-
|
|
34778
35937
|
// ../blocks/src/system/transforms/registry/index.ts
|
|
34779
35938
|
init_core3();
|
|
34780
35939
|
|
|
34781
35940
|
// ../blocks/src/system/transforms/registry/background.ts
|
|
34782
35941
|
init_background2();
|
|
35942
|
+
|
|
35943
|
+
// ../theme-core/src/gradients/index.ts
|
|
35944
|
+
init_types9();
|
|
35945
|
+
|
|
35946
|
+
// ../theme-core/src/gradients/presets.ts
|
|
35947
|
+
var GRADIENT_PRESETS = [
|
|
35948
|
+
// Cross-color gradients
|
|
35949
|
+
{
|
|
35950
|
+
id: "primary-secondary",
|
|
35951
|
+
name: "Primary to Secondary",
|
|
35952
|
+
description: "Blend your primary and secondary brand colors",
|
|
35953
|
+
type: "linear",
|
|
35954
|
+
angle: 135,
|
|
35955
|
+
stops: [
|
|
35956
|
+
{ color: "primary-500", position: 0 },
|
|
35957
|
+
{ color: "secondary-500", position: 100 }
|
|
35958
|
+
]
|
|
35959
|
+
},
|
|
35960
|
+
{
|
|
35961
|
+
id: "primary-accent",
|
|
35962
|
+
name: "Primary to Accent",
|
|
35963
|
+
description: "Energetic gradient from primary to accent",
|
|
35964
|
+
type: "linear",
|
|
35965
|
+
angle: 135,
|
|
35966
|
+
stops: [
|
|
35967
|
+
{ color: "primary-500", position: 0 },
|
|
35968
|
+
{ color: "accent-500", position: 100 }
|
|
35969
|
+
]
|
|
35970
|
+
},
|
|
35971
|
+
{
|
|
35972
|
+
id: "secondary-accent",
|
|
35973
|
+
name: "Secondary to Accent",
|
|
35974
|
+
description: "Vibrant secondary to accent blend",
|
|
35975
|
+
type: "linear",
|
|
35976
|
+
angle: 135,
|
|
35977
|
+
stops: [
|
|
35978
|
+
{ color: "secondary-500", position: 0 },
|
|
35979
|
+
{ color: "accent-500", position: 100 }
|
|
35980
|
+
]
|
|
35981
|
+
},
|
|
35982
|
+
// Monochromatic gradients (same family, different shades)
|
|
35983
|
+
{
|
|
35984
|
+
id: "primary-light-dark",
|
|
35985
|
+
name: "Primary Light to Dark",
|
|
35986
|
+
description: "Subtle primary color fade",
|
|
35987
|
+
type: "linear",
|
|
35988
|
+
angle: 180,
|
|
35989
|
+
stops: [
|
|
35990
|
+
{ color: "primary-500", position: 0 },
|
|
35991
|
+
{ color: "primary-900", position: 100 }
|
|
35992
|
+
]
|
|
35993
|
+
},
|
|
35994
|
+
{
|
|
35995
|
+
id: "primary-dark-light",
|
|
35996
|
+
name: "Primary Dark to Light",
|
|
35997
|
+
description: "Reverse primary fade",
|
|
35998
|
+
type: "linear",
|
|
35999
|
+
angle: 180,
|
|
36000
|
+
stops: [
|
|
36001
|
+
{ color: "primary-900", position: 0 },
|
|
36002
|
+
{ color: "primary-50", position: 100 }
|
|
36003
|
+
]
|
|
36004
|
+
},
|
|
36005
|
+
{
|
|
36006
|
+
id: "secondary-light-dark",
|
|
36007
|
+
name: "Secondary Light to Dark",
|
|
36008
|
+
description: "Subtle secondary color fade",
|
|
36009
|
+
type: "linear",
|
|
36010
|
+
angle: 180,
|
|
36011
|
+
stops: [
|
|
36012
|
+
{ color: "secondary-500", position: 0 },
|
|
36013
|
+
{ color: "secondary-900", position: 100 }
|
|
36014
|
+
]
|
|
36015
|
+
},
|
|
36016
|
+
{
|
|
36017
|
+
id: "accent-light-dark",
|
|
36018
|
+
name: "Accent Light to Dark",
|
|
36019
|
+
description: "Accent color depth fade",
|
|
36020
|
+
type: "linear",
|
|
36021
|
+
angle: 180,
|
|
36022
|
+
stops: [
|
|
36023
|
+
{ color: "accent-500", position: 0 },
|
|
36024
|
+
{ color: "accent-900", position: 100 }
|
|
36025
|
+
]
|
|
36026
|
+
},
|
|
36027
|
+
// Surface gradients
|
|
36028
|
+
{
|
|
36029
|
+
id: "background-surface",
|
|
36030
|
+
name: "Background to Surface",
|
|
36031
|
+
description: "Subtle depth using base colors",
|
|
36032
|
+
type: "linear",
|
|
36033
|
+
angle: 180,
|
|
36034
|
+
stops: [
|
|
36035
|
+
{ color: "background", position: 0 },
|
|
36036
|
+
{ color: "surface", position: 100 }
|
|
36037
|
+
]
|
|
36038
|
+
},
|
|
36039
|
+
// Neutral fades
|
|
36040
|
+
{
|
|
36041
|
+
id: "neutral-fade",
|
|
36042
|
+
name: "Neutral Gradient",
|
|
36043
|
+
description: "Elegant neutral color fade",
|
|
36044
|
+
type: "linear",
|
|
36045
|
+
angle: 180,
|
|
36046
|
+
stops: [
|
|
36047
|
+
{ color: "neutral-900", position: 0 },
|
|
36048
|
+
{ color: "neutral-50", position: 100 }
|
|
36049
|
+
]
|
|
36050
|
+
},
|
|
36051
|
+
// Radial gradients (spotlight effects)
|
|
36052
|
+
{
|
|
36053
|
+
id: "primary-radial",
|
|
36054
|
+
name: "Primary Spotlight",
|
|
36055
|
+
description: "Radial primary gradient from center",
|
|
36056
|
+
type: "radial",
|
|
36057
|
+
position: "center",
|
|
36058
|
+
stops: [
|
|
36059
|
+
{ color: "primary-500", position: 0 },
|
|
36060
|
+
{ color: "primary-900", position: 100 }
|
|
36061
|
+
]
|
|
36062
|
+
},
|
|
36063
|
+
{
|
|
36064
|
+
id: "accent-radial",
|
|
36065
|
+
name: "Accent Spotlight",
|
|
36066
|
+
description: "Radial accent gradient from center",
|
|
36067
|
+
type: "radial",
|
|
36068
|
+
position: "center",
|
|
36069
|
+
stops: [
|
|
36070
|
+
{ color: "accent-500", position: 0 },
|
|
36071
|
+
{ color: "accent-900", position: 100 }
|
|
36072
|
+
]
|
|
36073
|
+
},
|
|
36074
|
+
// Tri-color gradients
|
|
36075
|
+
{
|
|
36076
|
+
id: "primary-secondary-accent",
|
|
36077
|
+
name: "Brand Trio",
|
|
36078
|
+
description: "All three brand colors in harmony",
|
|
36079
|
+
type: "linear",
|
|
36080
|
+
angle: 135,
|
|
36081
|
+
stops: [
|
|
36082
|
+
{ color: "primary-500", position: 0 },
|
|
36083
|
+
{ color: "secondary-500", position: 50 },
|
|
36084
|
+
{ color: "accent-500", position: 100 }
|
|
36085
|
+
]
|
|
36086
|
+
}
|
|
36087
|
+
];
|
|
36088
|
+
|
|
36089
|
+
// ../theme-core/src/gradients/utils.ts
|
|
36090
|
+
function gradientToCss(config2, tokens) {
|
|
36091
|
+
const stops = config2.stops.map((stop) => {
|
|
36092
|
+
const hex = tokens[stop.color] ?? "#000000";
|
|
36093
|
+
return `${hex} ${stop.position}%`;
|
|
36094
|
+
}).join(", ");
|
|
36095
|
+
if (config2.type === "radial") {
|
|
36096
|
+
const position = config2.position ?? "center";
|
|
36097
|
+
return `radial-gradient(circle at ${position}, ${stops})`;
|
|
36098
|
+
}
|
|
36099
|
+
const angle = config2.angle ?? 180;
|
|
36100
|
+
return `linear-gradient(${angle}deg, ${stops})`;
|
|
36101
|
+
}
|
|
36102
|
+
|
|
36103
|
+
// ../blocks/src/system/transforms/registry/background.ts
|
|
34783
36104
|
init_themeColorResolution();
|
|
34784
36105
|
|
|
34785
36106
|
// ../blocks/src/system/helpers/backgroundMedia.ts
|
|
@@ -34825,6 +36146,22 @@ function appendBackgroundMediaClasses(baseClassName, input) {
|
|
|
34825
36146
|
backgroundVideoMobileClassNames(input)
|
|
34826
36147
|
].filter(Boolean).join(" ");
|
|
34827
36148
|
}
|
|
36149
|
+
function gradientPresetCss(value) {
|
|
36150
|
+
if (!isString(value)) return null;
|
|
36151
|
+
const preset2 = GRADIENT_PRESETS.find(
|
|
36152
|
+
(candidate) => candidate.id === value.trim()
|
|
36153
|
+
);
|
|
36154
|
+
if (!preset2) return null;
|
|
36155
|
+
return gradientToCss(
|
|
36156
|
+
preset2,
|
|
36157
|
+
Object.fromEntries(
|
|
36158
|
+
preset2.stops.map((stop) => [
|
|
36159
|
+
stop.color,
|
|
36160
|
+
`rgb(var(--tb-${stop.color}))`
|
|
36161
|
+
])
|
|
36162
|
+
)
|
|
36163
|
+
);
|
|
36164
|
+
}
|
|
34828
36165
|
var resolveImageStyleTransform = {
|
|
34829
36166
|
id: "background.resolveImageStyle",
|
|
34830
36167
|
kind: "formatter",
|
|
@@ -34971,7 +36308,7 @@ var backgroundTransforms = [
|
|
|
34971
36308
|
}
|
|
34972
36309
|
const input = value;
|
|
34973
36310
|
const color = isString(input.color) ? input.color.trim() : null;
|
|
34974
|
-
const gradient = isString(input.gradient) ? input.gradient.trim() :
|
|
36311
|
+
const gradient = isString(input.gradient) ? input.gradient.trim() : gradientPresetCss(input.gradientPresetId);
|
|
34975
36312
|
const opacity = parseOpacity(input.opacity);
|
|
34976
36313
|
const style = {};
|
|
34977
36314
|
if (color) {
|
|
@@ -35262,6 +36599,7 @@ init_generateCardCss();
|
|
|
35262
36599
|
// ../theme-core/src/accordions/generateAccordionCss.ts
|
|
35263
36600
|
init_types7();
|
|
35264
36601
|
init_constants2();
|
|
36602
|
+
init_colorStyles();
|
|
35265
36603
|
|
|
35266
36604
|
// ../theme-core/src/inputs/generateInputCss.ts
|
|
35267
36605
|
init_types8();
|
|
@@ -35287,6 +36625,9 @@ init_resolver();
|
|
|
35287
36625
|
// ../theme-core/src/layout/generateLayoutCss.ts
|
|
35288
36626
|
init_breakpoints();
|
|
35289
36627
|
|
|
36628
|
+
// ../theme-core/src/runtime/buildThemeRuntime.ts
|
|
36629
|
+
init_tokens2();
|
|
36630
|
+
|
|
35290
36631
|
// ../theme-core/src/blocks/vars/event-registration.ts
|
|
35291
36632
|
function generateEventRegistrationVars({
|
|
35292
36633
|
themeId
|
|
@@ -35626,14 +36967,78 @@ ${root} {
|
|
|
35626
36967
|
}
|
|
35627
36968
|
|
|
35628
36969
|
// ../theme-core/src/blocks/vars/testimonials.ts
|
|
35629
|
-
|
|
36970
|
+
init_colorStyles();
|
|
36971
|
+
var QUOTE_SCALE_SIZE = {
|
|
36972
|
+
sm: "2.5rem",
|
|
36973
|
+
md: "3.5rem",
|
|
36974
|
+
// 4.375rem == 3.5rem * 1.25, matching the legacy accent-quote mark size.
|
|
36975
|
+
lg: "4.375rem",
|
|
36976
|
+
xl: "clamp(3.5rem, 2rem + 4vw, 5.5rem)"
|
|
36977
|
+
};
|
|
36978
|
+
function resolveTestimonialQuoteVars(treatment) {
|
|
36979
|
+
if (!treatment) {
|
|
36980
|
+
return {
|
|
36981
|
+
size: QUOTE_SCALE_SIZE.md,
|
|
36982
|
+
opacity: "0.08",
|
|
36983
|
+
color: "rgb(var(--tb-primary))",
|
|
36984
|
+
font: "inherit",
|
|
36985
|
+
weight: "700",
|
|
36986
|
+
display: "block"
|
|
36987
|
+
};
|
|
36988
|
+
}
|
|
36989
|
+
if (treatment.style === "none") {
|
|
36990
|
+
return {
|
|
36991
|
+
size: QUOTE_SCALE_SIZE.md,
|
|
36992
|
+
opacity: "0",
|
|
36993
|
+
color: "rgb(var(--tb-primary))",
|
|
36994
|
+
font: "inherit",
|
|
36995
|
+
weight: "700",
|
|
36996
|
+
display: "none"
|
|
36997
|
+
};
|
|
36998
|
+
}
|
|
36999
|
+
const base = treatment.style === "serif-display" ? {
|
|
37000
|
+
fontFamily: "heading",
|
|
37001
|
+
scale: "xl",
|
|
37002
|
+
colorToken: "primary",
|
|
37003
|
+
opacity: 1
|
|
37004
|
+
} : {
|
|
37005
|
+
// accent-glyph
|
|
37006
|
+
fontFamily: "body",
|
|
37007
|
+
scale: "lg",
|
|
37008
|
+
colorToken: "secondary",
|
|
37009
|
+
opacity: 1
|
|
37010
|
+
};
|
|
37011
|
+
const fontFamily = treatment.fontFamily ?? base.fontFamily;
|
|
37012
|
+
const scale = treatment.scale ?? base.scale;
|
|
37013
|
+
const colorToken = treatment.colorToken ?? base.colorToken;
|
|
37014
|
+
const opacity = treatment.opacity ?? base.opacity;
|
|
37015
|
+
return {
|
|
37016
|
+
size: QUOTE_SCALE_SIZE[scale],
|
|
37017
|
+
opacity: String(opacity),
|
|
37018
|
+
color: rgbColorValue(colorToken),
|
|
37019
|
+
font: fontFamily === "heading" ? "var(--font-heading)" : "var(--font-body, inherit)",
|
|
37020
|
+
// Heading-font display marks render at the family's natural weight (Forum
|
|
37021
|
+
// ships a single 400) to avoid synthetic bold; glyph marks stay heavy.
|
|
37022
|
+
weight: fontFamily === "heading" ? "400" : "700",
|
|
37023
|
+
display: "block"
|
|
37024
|
+
};
|
|
37025
|
+
}
|
|
37026
|
+
function generateTestimonialsVars({
|
|
37027
|
+
themeId,
|
|
37028
|
+
theme
|
|
37029
|
+
}) {
|
|
35630
37030
|
const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="testimonials"])`;
|
|
37031
|
+
const quote = resolveTestimonialQuoteVars(theme.testimonialQuote);
|
|
35631
37032
|
return `
|
|
35632
37033
|
${root} {
|
|
35633
37034
|
--rb-testimonial-avatar-size: 3rem;
|
|
35634
37035
|
--rb-testimonial-avatar-border-radius: 9999px;
|
|
35635
|
-
--rb-testimonial-quote-size:
|
|
35636
|
-
--rb-testimonial-quote-opacity:
|
|
37036
|
+
--rb-testimonial-quote-size: ${quote.size};
|
|
37037
|
+
--rb-testimonial-quote-opacity: ${quote.opacity};
|
|
37038
|
+
--rb-testimonial-quote-color: ${quote.color};
|
|
37039
|
+
--rb-testimonial-quote-font: ${quote.font};
|
|
37040
|
+
--rb-testimonial-quote-weight: ${quote.weight};
|
|
37041
|
+
--rb-testimonial-quote-display: ${quote.display};
|
|
35637
37042
|
|
|
35638
37043
|
/* Carousel arrows (defaults: primary background + onPrimary icon) */
|
|
35639
37044
|
--rb-testimonial-carousel-arrow-bg: rgb(var(--tb-primary));
|
|
@@ -36003,10 +37408,10 @@ var BrowserImage = class extends ImageBase {
|
|
|
36003
37408
|
);
|
|
36004
37409
|
}
|
|
36005
37410
|
this.image = img;
|
|
36006
|
-
return new Promise((
|
|
37411
|
+
return new Promise((resolve13, reject) => {
|
|
36007
37412
|
const onImageLoad = () => {
|
|
36008
37413
|
this._initCanvas();
|
|
36009
|
-
|
|
37414
|
+
resolve13(this);
|
|
36010
37415
|
};
|
|
36011
37416
|
if (img.complete) {
|
|
36012
37417
|
onImageLoad();
|
|
@@ -37047,9 +38452,7 @@ init_schema3();
|
|
|
37047
38452
|
init_site_styles();
|
|
37048
38453
|
init_buttons();
|
|
37049
38454
|
init_cards();
|
|
37050
|
-
|
|
37051
|
-
// ../theme-core/src/gradients/index.ts
|
|
37052
|
-
init_types9();
|
|
38455
|
+
init_tokens2();
|
|
37053
38456
|
|
|
37054
38457
|
// ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
|
|
37055
38458
|
init_colorConversion();
|
|
@@ -38772,8 +40175,8 @@ var TEMPLATE_BINDING_META_PATHS = [
|
|
|
38772
40175
|
"createdAt",
|
|
38773
40176
|
"updatedAt"
|
|
38774
40177
|
];
|
|
38775
|
-
function describeInvalidTemplateBindingMetaPath(
|
|
38776
|
-
return `Meta path "${
|
|
40178
|
+
function describeInvalidTemplateBindingMetaPath(path25) {
|
|
40179
|
+
return `Meta path "${path25}" is not valid. Allowed: ${TEMPLATE_BINDING_META_PATHS.join(", ")}`;
|
|
38777
40180
|
}
|
|
38778
40181
|
|
|
38779
40182
|
// ../content-model/src/routeTemplate.ts
|
|
@@ -39162,7 +40565,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
39162
40565
|
});
|
|
39163
40566
|
}
|
|
39164
40567
|
const paths = data.pages.map((p) => p.path);
|
|
39165
|
-
const duplicatePaths = paths.filter((
|
|
40568
|
+
const duplicatePaths = paths.filter((path25, i) => paths.indexOf(path25) !== i);
|
|
39166
40569
|
if (duplicatePaths.length > 0) {
|
|
39167
40570
|
ctx.addIssue({
|
|
39168
40571
|
code: z.ZodIssueCode.custom,
|
|
@@ -39219,18 +40622,18 @@ function validateLayoutNodeTypes(layout) {
|
|
|
39219
40622
|
errors
|
|
39220
40623
|
};
|
|
39221
40624
|
}
|
|
39222
|
-
function validateNodeTypesRecursive(node,
|
|
40625
|
+
function validateNodeTypesRecursive(node, path25, errors) {
|
|
39223
40626
|
if (!ALLOWED_NODE_TYPES_SET.has(node.type)) {
|
|
39224
40627
|
errors.push({
|
|
39225
|
-
path: `${
|
|
40628
|
+
path: `${path25}.type`,
|
|
39226
40629
|
type: "invalid_node_type",
|
|
39227
40630
|
value: node.type,
|
|
39228
|
-
message: `Unknown node type "${node.type}" at ${
|
|
40631
|
+
message: `Unknown node type "${node.type}" at ${path25}. Valid types: section, stack, text, etc.`
|
|
39229
40632
|
});
|
|
39230
40633
|
}
|
|
39231
40634
|
if (node.children && Array.isArray(node.children)) {
|
|
39232
40635
|
node.children.forEach((child, index) => {
|
|
39233
|
-
validateNodeTypesRecursive(child, `${
|
|
40636
|
+
validateNodeTypesRecursive(child, `${path25}.children[${index}]`, errors);
|
|
39234
40637
|
});
|
|
39235
40638
|
}
|
|
39236
40639
|
}
|
|
@@ -39242,45 +40645,45 @@ function validateTransformIds(layout) {
|
|
|
39242
40645
|
errors
|
|
39243
40646
|
};
|
|
39244
40647
|
}
|
|
39245
|
-
function validateTransformIdsRecursive(node,
|
|
40648
|
+
function validateTransformIdsRecursive(node, path25, errors) {
|
|
39246
40649
|
if (node.$bind?.transforms && Array.isArray(node.$bind.transforms)) {
|
|
39247
|
-
validateTransformList(node.$bind.transforms, `${
|
|
40650
|
+
validateTransformList(node.$bind.transforms, `${path25}.$bind.transforms`, errors);
|
|
39248
40651
|
}
|
|
39249
40652
|
if (node.$repeat?.collection?.transforms && Array.isArray(node.$repeat.collection.transforms)) {
|
|
39250
|
-
validateTransformList(node.$repeat.collection.transforms, `${
|
|
40653
|
+
validateTransformList(node.$repeat.collection.transforms, `${path25}.$repeat.collection.transforms`, errors);
|
|
39251
40654
|
}
|
|
39252
40655
|
if (node.$when?.when?.transforms && Array.isArray(node.$when.when.transforms)) {
|
|
39253
|
-
validateTransformList(node.$when.when.transforms, `${
|
|
40656
|
+
validateTransformList(node.$when.when.transforms, `${path25}.$when.when.transforms`, errors);
|
|
39254
40657
|
}
|
|
39255
40658
|
if (node.$scopes && Array.isArray(node.$scopes)) {
|
|
39256
40659
|
node.$scopes.forEach((scope, index) => {
|
|
39257
40660
|
if (scope.from?.transforms && Array.isArray(scope.from.transforms)) {
|
|
39258
|
-
validateTransformList(scope.from.transforms, `${
|
|
40661
|
+
validateTransformList(scope.from.transforms, `${path25}.$scopes[${index}].from.transforms`, errors);
|
|
39259
40662
|
}
|
|
39260
40663
|
});
|
|
39261
40664
|
}
|
|
39262
40665
|
if (node.props) {
|
|
39263
|
-
validatePropsTransforms(node.props, `${
|
|
40666
|
+
validatePropsTransforms(node.props, `${path25}.props`, errors);
|
|
39264
40667
|
}
|
|
39265
40668
|
if (node.children && Array.isArray(node.children)) {
|
|
39266
40669
|
node.children.forEach((child, index) => {
|
|
39267
|
-
validateTransformIdsRecursive(child, `${
|
|
40670
|
+
validateTransformIdsRecursive(child, `${path25}.children[${index}]`, errors);
|
|
39268
40671
|
});
|
|
39269
40672
|
}
|
|
39270
40673
|
}
|
|
39271
|
-
function validateTransformList(transforms,
|
|
40674
|
+
function validateTransformList(transforms, path25, errors) {
|
|
39272
40675
|
transforms.forEach((transform, index) => {
|
|
39273
40676
|
if (!ALLOWED_TRANSFORM_IDS_SET.has(transform.id)) {
|
|
39274
40677
|
errors.push({
|
|
39275
|
-
path: `${
|
|
40678
|
+
path: `${path25}[${index}].id`,
|
|
39276
40679
|
type: "invalid_transform_id",
|
|
39277
40680
|
value: transform.id,
|
|
39278
|
-
message: `Unknown transform "${transform.id}" at ${
|
|
40681
|
+
message: `Unknown transform "${transform.id}" at ${path25}. Valid transforms: string.uppercase, value.fallback, etc.`
|
|
39279
40682
|
});
|
|
39280
40683
|
}
|
|
39281
40684
|
});
|
|
39282
40685
|
}
|
|
39283
|
-
function validatePropsTransforms(props2,
|
|
40686
|
+
function validatePropsTransforms(props2, path25, errors) {
|
|
39284
40687
|
for (const [key, value] of Object.entries(props2)) {
|
|
39285
40688
|
if (isBindingObject(value)) {
|
|
39286
40689
|
const binding = value;
|
|
@@ -39288,16 +40691,16 @@ function validatePropsTransforms(props2, path24, errors) {
|
|
|
39288
40691
|
binding.$bind.transforms.forEach((transform, index) => {
|
|
39289
40692
|
if (!ALLOWED_TRANSFORM_IDS_SET.has(transform.id)) {
|
|
39290
40693
|
errors.push({
|
|
39291
|
-
path: `${
|
|
40694
|
+
path: `${path25}.${key}.$bind.transforms[${index}].id`,
|
|
39292
40695
|
type: "invalid_transform_id",
|
|
39293
40696
|
value: transform.id,
|
|
39294
|
-
message: `Unknown transform "${transform.id}" at ${
|
|
40697
|
+
message: `Unknown transform "${transform.id}" at ${path25}.${key}. Valid transforms: string.uppercase, value.fallback, etc.`
|
|
39295
40698
|
});
|
|
39296
40699
|
}
|
|
39297
40700
|
});
|
|
39298
40701
|
}
|
|
39299
40702
|
} else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
39300
|
-
validatePropsTransforms(value, `${
|
|
40703
|
+
validatePropsTransforms(value, `${path25}.${key}`, errors);
|
|
39301
40704
|
}
|
|
39302
40705
|
}
|
|
39303
40706
|
}
|
|
@@ -39841,8 +41244,8 @@ async function readApiResponse(response, requestInfo, options = {}) {
|
|
|
39841
41244
|
function createHttpClient(config2) {
|
|
39842
41245
|
const baseUrl = `${config2.dashboardUrl}/api/sdk/${config2.siteId}`;
|
|
39843
41246
|
const timeout = config2.timeout ?? 3e4;
|
|
39844
|
-
async function request(method,
|
|
39845
|
-
let url = `${baseUrl}${
|
|
41247
|
+
async function request(method, path25, options) {
|
|
41248
|
+
let url = `${baseUrl}${path25}`;
|
|
39846
41249
|
if (options?.params && Object.keys(options.params).length > 0) {
|
|
39847
41250
|
const searchParams = new URLSearchParams(options.params);
|
|
39848
41251
|
url = `${url}?${searchParams.toString()}`;
|
|
@@ -39865,7 +41268,7 @@ function createHttpClient(config2) {
|
|
|
39865
41268
|
} catch (error) {
|
|
39866
41269
|
const requestInfo2 = buildRequestInfo({
|
|
39867
41270
|
method,
|
|
39868
|
-
path:
|
|
41271
|
+
path: path25,
|
|
39869
41272
|
url,
|
|
39870
41273
|
baseUrl,
|
|
39871
41274
|
dashboardUrl: config2.dashboardUrl,
|
|
@@ -39890,7 +41293,7 @@ function createHttpClient(config2) {
|
|
|
39890
41293
|
}
|
|
39891
41294
|
const requestInfo = buildRequestInfo({
|
|
39892
41295
|
method,
|
|
39893
|
-
path:
|
|
41296
|
+
path: path25,
|
|
39894
41297
|
url,
|
|
39895
41298
|
baseUrl,
|
|
39896
41299
|
dashboardUrl: config2.dashboardUrl,
|
|
@@ -39920,17 +41323,17 @@ function createHttpClient(config2) {
|
|
|
39920
41323
|
return json.data;
|
|
39921
41324
|
}
|
|
39922
41325
|
return {
|
|
39923
|
-
async get(
|
|
39924
|
-
return request("GET",
|
|
41326
|
+
async get(path25, params) {
|
|
41327
|
+
return request("GET", path25, { params });
|
|
39925
41328
|
},
|
|
39926
|
-
async post(
|
|
39927
|
-
return request("POST",
|
|
41329
|
+
async post(path25, body) {
|
|
41330
|
+
return request("POST", path25, { body });
|
|
39928
41331
|
},
|
|
39929
|
-
async patch(
|
|
39930
|
-
return request("PATCH",
|
|
41332
|
+
async patch(path25, body) {
|
|
41333
|
+
return request("PATCH", path25, { body });
|
|
39931
41334
|
},
|
|
39932
|
-
async delete(
|
|
39933
|
-
await request("DELETE",
|
|
41335
|
+
async delete(path25, body) {
|
|
41336
|
+
await request("DELETE", path25, { body });
|
|
39934
41337
|
}
|
|
39935
41338
|
};
|
|
39936
41339
|
}
|
|
@@ -40602,6 +42005,15 @@ function createMediaOperations(config2) {
|
|
|
40602
42005
|
};
|
|
40603
42006
|
}
|
|
40604
42007
|
|
|
42008
|
+
// src/client/management/webhooks.ts
|
|
42009
|
+
function createWebhookOperations(http) {
|
|
42010
|
+
return {
|
|
42011
|
+
setupRevalidation(input) {
|
|
42012
|
+
return http.post("/webhooks/revalidation/setup", input);
|
|
42013
|
+
}
|
|
42014
|
+
};
|
|
42015
|
+
}
|
|
42016
|
+
|
|
40605
42017
|
// src/client/management/index.ts
|
|
40606
42018
|
function createManagementClient(config2) {
|
|
40607
42019
|
if (!config2.dashboardUrl) {
|
|
@@ -40631,6 +42043,7 @@ function createManagementClient(config2) {
|
|
|
40631
42043
|
blocks: createBlockOperations(http),
|
|
40632
42044
|
navigation: createNavigationOperations(http),
|
|
40633
42045
|
settings: createSettingsOperations(http),
|
|
42046
|
+
webhooks: createWebhookOperations(http),
|
|
40634
42047
|
forms: createFormOperations(http),
|
|
40635
42048
|
theme: createThemeOperations(http),
|
|
40636
42049
|
footer: createFooterOperations(http),
|
|
@@ -41049,10 +42462,10 @@ async function confirmAction(message, options, isRemote) {
|
|
|
41049
42462
|
input: process.stdin,
|
|
41050
42463
|
output: process.stdout
|
|
41051
42464
|
});
|
|
41052
|
-
return new Promise((
|
|
42465
|
+
return new Promise((resolve13) => {
|
|
41053
42466
|
rl.question(`${message} (y/N): `, (answer) => {
|
|
41054
42467
|
rl.close();
|
|
41055
|
-
|
|
42468
|
+
resolve13(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
|
|
41056
42469
|
});
|
|
41057
42470
|
});
|
|
41058
42471
|
}
|
|
@@ -41363,12 +42776,12 @@ function collectPushConfigSyncWarnings(sync) {
|
|
|
41363
42776
|
async function pushToDashboard(output, dashboardUrl, siteId, apiKey, config2, options) {
|
|
41364
42777
|
const normalizedDashboardUrl = dashboardUrl.replace(/\/+$/, "");
|
|
41365
42778
|
const baseUrl = `${normalizedDashboardUrl}/api`;
|
|
41366
|
-
const
|
|
41367
|
-
const pushUrl = `${baseUrl}${
|
|
42779
|
+
const path25 = `/sites/${siteId}/sdk-config`;
|
|
42780
|
+
const pushUrl = `${baseUrl}${path25}`;
|
|
41368
42781
|
output.info(`Pushing config to ${pushUrl}...`);
|
|
41369
42782
|
const requestInfo = {
|
|
41370
42783
|
method: "POST",
|
|
41371
|
-
path:
|
|
42784
|
+
path: path25,
|
|
41372
42785
|
url: pushUrl,
|
|
41373
42786
|
baseUrl,
|
|
41374
42787
|
dashboardUrl: normalizedDashboardUrl,
|
|
@@ -42965,7 +44378,7 @@ var DEFAULT_RETRY_CONFIG = {
|
|
|
42965
44378
|
// 10 seconds
|
|
42966
44379
|
};
|
|
42967
44380
|
function sleep(ms) {
|
|
42968
|
-
return new Promise((
|
|
44381
|
+
return new Promise((resolve13) => setTimeout(resolve13, ms));
|
|
42969
44382
|
}
|
|
42970
44383
|
function getBackoffDelay(attempt, baseDelayMs, maxDelayMs) {
|
|
42971
44384
|
const exponentialDelay = baseDelayMs * Math.pow(2, attempt);
|
|
@@ -44251,11 +45664,11 @@ function findChangedFields(local, remote, prefix = "") {
|
|
|
44251
45664
|
const changes = [];
|
|
44252
45665
|
const allKeys = /* @__PURE__ */ new Set([...Object.keys(local), ...Object.keys(remote)]);
|
|
44253
45666
|
for (const key of allKeys) {
|
|
44254
|
-
const
|
|
45667
|
+
const path25 = prefix ? `${prefix}.${key}` : key;
|
|
44255
45668
|
const localVal = local[key];
|
|
44256
45669
|
const remoteVal = remote[key];
|
|
44257
45670
|
if (!equal(localVal, remoteVal)) {
|
|
44258
|
-
changes.push(
|
|
45671
|
+
changes.push(path25);
|
|
44259
45672
|
}
|
|
44260
45673
|
}
|
|
44261
45674
|
return changes;
|
|
@@ -45325,11 +46738,11 @@ function findChangedFieldsWithValues(local, remote, prefix = "") {
|
|
|
45325
46738
|
const changes = [];
|
|
45326
46739
|
const allKeys = /* @__PURE__ */ new Set([...Object.keys(local), ...Object.keys(remote)]);
|
|
45327
46740
|
for (const key of allKeys) {
|
|
45328
|
-
const
|
|
46741
|
+
const path25 = prefix ? `${prefix}.${key}` : key;
|
|
45329
46742
|
const localVal = local[key];
|
|
45330
46743
|
const remoteVal = remote[key];
|
|
45331
46744
|
if (!equal(localVal, remoteVal)) {
|
|
45332
|
-
changes.push({ path:
|
|
46745
|
+
changes.push({ path: path25, before: remoteVal, after: localVal });
|
|
45333
46746
|
}
|
|
45334
46747
|
}
|
|
45335
46748
|
return changes;
|
|
@@ -50004,13 +51417,13 @@ function collectOfferingRequires(input, intervals, intervalPath) {
|
|
|
50004
51417
|
function optionalRef(ref, field) {
|
|
50005
51418
|
return ref ? [{ ref, field }] : [];
|
|
50006
51419
|
}
|
|
50007
|
-
function collectVenueRefsFromIntervals(intervals,
|
|
50008
|
-
return intervals.flatMap((interval, index) => optionalRef(interval.venueRef, `${
|
|
51420
|
+
function collectVenueRefsFromIntervals(intervals, path25) {
|
|
51421
|
+
return intervals.flatMap((interval, index) => optionalRef(interval.venueRef, `${path25}[${index}].venueRef`));
|
|
50009
51422
|
}
|
|
50010
|
-
function collectNavigationRefs(items,
|
|
51423
|
+
function collectNavigationRefs(items, path25) {
|
|
50011
51424
|
return items.flatMap((item, index) => {
|
|
50012
51425
|
if (!isRecord12(item)) return [];
|
|
50013
|
-
const itemPath = `${
|
|
51426
|
+
const itemPath = `${path25}[${index}]`;
|
|
50014
51427
|
const refs = [];
|
|
50015
51428
|
if (typeof item.pageRef === "string") {
|
|
50016
51429
|
refs.push({ ref: item.pageRef, field: `${itemPath}.pageRef` });
|
|
@@ -50024,26 +51437,26 @@ function collectNavigationRefs(items, path24) {
|
|
|
50024
51437
|
return refs;
|
|
50025
51438
|
});
|
|
50026
51439
|
}
|
|
50027
|
-
function collectBlockRefs(blocks,
|
|
51440
|
+
function collectBlockRefs(blocks, path25) {
|
|
50028
51441
|
return blocks.flatMap((block, index) => {
|
|
50029
51442
|
if (!isRecord12(block)) return [];
|
|
50030
|
-
const blockPath = `${
|
|
51443
|
+
const blockPath = `${path25}[${index}]`;
|
|
50031
51444
|
return [
|
|
50032
51445
|
...collectNestedRefs(block.props, `${blockPath}.props`),
|
|
50033
51446
|
...collectNestedRefs(block.children, `${blockPath}.children`)
|
|
50034
51447
|
];
|
|
50035
51448
|
});
|
|
50036
51449
|
}
|
|
50037
|
-
function collectNestedRefs(value,
|
|
51450
|
+
function collectNestedRefs(value, path25) {
|
|
50038
51451
|
if (typeof value === "string") {
|
|
50039
51452
|
const parsed = parseResourceRef(value);
|
|
50040
|
-
return parsed.ok ? [{ ref: value, field:
|
|
51453
|
+
return parsed.ok ? [{ ref: value, field: path25 }] : [];
|
|
50041
51454
|
}
|
|
50042
51455
|
if (Array.isArray(value)) {
|
|
50043
|
-
return value.flatMap((item, index) => collectNestedRefs(item, `${
|
|
51456
|
+
return value.flatMap((item, index) => collectNestedRefs(item, `${path25}[${index}]`));
|
|
50044
51457
|
}
|
|
50045
51458
|
if (!isRecord12(value)) return [];
|
|
50046
|
-
return Object.entries(value).flatMap(([key, child]) => collectNestedRefs(child, `${
|
|
51459
|
+
return Object.entries(value).flatMap(([key, child]) => collectNestedRefs(child, `${path25}.${key}`));
|
|
50047
51460
|
}
|
|
50048
51461
|
|
|
50049
51462
|
// ../site-commands/src/staticExecutionGaps.ts
|
|
@@ -50322,8 +51735,8 @@ function invalidPayloadError(input, issue2) {
|
|
|
50322
51735
|
message: `${field}: ${issue2.message}`
|
|
50323
51736
|
};
|
|
50324
51737
|
}
|
|
50325
|
-
function commandIndexForIssuePath(
|
|
50326
|
-
return
|
|
51738
|
+
function commandIndexForIssuePath(path25) {
|
|
51739
|
+
return path25[0] === "commands" && typeof path25[1] === "number" ? path25[1] : -1;
|
|
50327
51740
|
}
|
|
50328
51741
|
function commandTypeForIssue(input, commandIndex) {
|
|
50329
51742
|
if (!isRecord12(input) || !isUnknownArray3(input.commands)) return null;
|
|
@@ -50333,9 +51746,9 @@ function commandTypeForIssue(input, commandIndex) {
|
|
|
50333
51746
|
function isUnknownArray3(value) {
|
|
50334
51747
|
return Array.isArray(value);
|
|
50335
51748
|
}
|
|
50336
|
-
function formatIssuePath(
|
|
50337
|
-
if (
|
|
50338
|
-
return
|
|
51749
|
+
function formatIssuePath(path25) {
|
|
51750
|
+
if (path25.length === 0) return "<root>";
|
|
51751
|
+
return path25.reduce((formatted, segment) => {
|
|
50339
51752
|
if (typeof segment === "number") return `${formatted}[${segment}]`;
|
|
50340
51753
|
if (formatted.length === 0) return String(segment);
|
|
50341
51754
|
return `${formatted}.${String(segment)}`;
|
|
@@ -54424,7 +55837,7 @@ function firstNestedContainerChange(localChanges, remoteChanges) {
|
|
|
54424
55837
|
}
|
|
54425
55838
|
function firstSameFieldConflictPath(localChanges, remoteChanges) {
|
|
54426
55839
|
const remotePaths = new Set(remoteChanges.keys());
|
|
54427
|
-
return [...localChanges.keys()].filter((
|
|
55840
|
+
return [...localChanges.keys()].filter((path25) => remotePaths.has(path25)).sort()[0] ?? null;
|
|
54428
55841
|
}
|
|
54429
55842
|
function unsupportedNestedMerge(subject, fieldPath) {
|
|
54430
55843
|
return {
|
|
@@ -54506,37 +55919,37 @@ function valueKind(value) {
|
|
|
54506
55919
|
if (typeof value === "object") return "object";
|
|
54507
55920
|
return "scalar";
|
|
54508
55921
|
}
|
|
54509
|
-
function entryChange(
|
|
55922
|
+
function entryChange(path25, value, containerKind) {
|
|
54510
55923
|
switch (containerKind) {
|
|
54511
55924
|
case "array":
|
|
54512
|
-
if (Array.isArray(value)) return { path:
|
|
55925
|
+
if (Array.isArray(value)) return { path: path25, value, containerKind };
|
|
54513
55926
|
break;
|
|
54514
55927
|
case "object":
|
|
54515
55928
|
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
54516
|
-
return { path:
|
|
55929
|
+
return { path: path25, value, containerKind };
|
|
54517
55930
|
}
|
|
54518
55931
|
break;
|
|
54519
55932
|
case "null":
|
|
54520
|
-
if (value === null || value === void 0) return { path:
|
|
55933
|
+
if (value === null || value === void 0) return { path: path25, value, containerKind };
|
|
54521
55934
|
break;
|
|
54522
55935
|
case "scalar":
|
|
54523
|
-
if (isScalarEntryChangeValue(value)) return { path:
|
|
55936
|
+
if (isScalarEntryChangeValue(value)) return { path: path25, value, containerKind };
|
|
54524
55937
|
break;
|
|
54525
55938
|
default:
|
|
54526
55939
|
assertNever(containerKind);
|
|
54527
55940
|
}
|
|
54528
|
-
throw new Error(`Invalid entry merge change at ${
|
|
55941
|
+
throw new Error(`Invalid entry merge change at ${path25}.`);
|
|
54529
55942
|
}
|
|
54530
55943
|
function isScalarEntryChangeValue(value) {
|
|
54531
55944
|
return value === void 0 || value === null || ["boolean", "number", "string"].includes(typeof value);
|
|
54532
55945
|
}
|
|
54533
|
-
function expectStringValue(
|
|
55946
|
+
function expectStringValue(path25, value) {
|
|
54534
55947
|
if (typeof value === "string") return value;
|
|
54535
|
-
throw new Error(`Entry merge expected ${
|
|
55948
|
+
throw new Error(`Entry merge expected ${path25} to be a string.`);
|
|
54536
55949
|
}
|
|
54537
|
-
function expectBooleanValue(
|
|
55950
|
+
function expectBooleanValue(path25, value) {
|
|
54538
55951
|
if (typeof value === "boolean") return value;
|
|
54539
|
-
throw new Error(`Entry merge expected ${
|
|
55952
|
+
throw new Error(`Entry merge expected ${path25} to be a boolean.`);
|
|
54540
55953
|
}
|
|
54541
55954
|
function expectStatusValue(value) {
|
|
54542
55955
|
if (value === "draft" || value === "published") return value;
|
|
@@ -57560,9 +58973,9 @@ var THEME_FIELD_CATEGORY_MAP = {
|
|
|
57560
58973
|
"Core Fields": ["name", "description", "rationale", "siteStyleId"],
|
|
57561
58974
|
"Design Axes": ["axes"],
|
|
57562
58975
|
"Palette": ["palette"],
|
|
57563
|
-
"Typography": ["typography", "bodyText"],
|
|
58976
|
+
"Typography": ["typography", "bodyText", "headingDecoration"],
|
|
57564
58977
|
"Style Primitives": ["space", "border", "shadow", "motion", "corners", "gradients"],
|
|
57565
|
-
"Component Systems": ["buttons", "buttonSystem", "cards", "accordions", "inputs", "inputStyle", "blockOverrides"],
|
|
58978
|
+
"Component Systems": ["buttons", "buttonSystem", "cards", "accordions", "testimonialQuote", "inputs", "inputStyle", "blockOverrides"],
|
|
57566
58979
|
"Layout": ["header", "footer", "layout", "hero"],
|
|
57567
58980
|
"Custom CSS": [
|
|
57568
58981
|
"customCssRules",
|
|
@@ -58959,7 +60372,7 @@ var SimpleCache = class {
|
|
|
58959
60372
|
};
|
|
58960
60373
|
|
|
58961
60374
|
// src/version.ts
|
|
58962
|
-
var SDK_VERSION = "0.
|
|
60375
|
+
var SDK_VERSION = "0.80.0";
|
|
58963
60376
|
|
|
58964
60377
|
// src/client/error.ts
|
|
58965
60378
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -59358,7 +60771,7 @@ function getRetryDelay(error, attempt, config2) {
|
|
|
59358
60771
|
return calculateBackoff(attempt, config2);
|
|
59359
60772
|
}
|
|
59360
60773
|
function sleep2(ms) {
|
|
59361
|
-
return new Promise((
|
|
60774
|
+
return new Promise((resolve13) => setTimeout(resolve13, ms));
|
|
59362
60775
|
}
|
|
59363
60776
|
var CircuitOpenError = class extends Error {
|
|
59364
60777
|
constructor(state) {
|
|
@@ -59881,14 +61294,14 @@ function createRiverbankClient(config2) {
|
|
|
59881
61294
|
);
|
|
59882
61295
|
}
|
|
59883
61296
|
async function getPageWithResilienceInternal(params) {
|
|
59884
|
-
const { siteId, path:
|
|
59885
|
-
const cacheKey = `page:${siteId}:${
|
|
61297
|
+
const { siteId, path: path25, preview = false, signal } = params;
|
|
61298
|
+
const cacheKey = `page:${siteId}:${path25}:${preview}`;
|
|
59886
61299
|
return resilientFetch(
|
|
59887
61300
|
cacheKey,
|
|
59888
61301
|
async (sig) => {
|
|
59889
61302
|
return await apiClient({
|
|
59890
61303
|
endpoint: "getContentByPath",
|
|
59891
|
-
params: { siteId, path:
|
|
61304
|
+
params: { siteId, path: path25, preview: String(preview) },
|
|
59892
61305
|
options: { signal: sig }
|
|
59893
61306
|
});
|
|
59894
61307
|
},
|
|
@@ -59896,7 +61309,7 @@ function createRiverbankClient(config2) {
|
|
|
59896
61309
|
preview,
|
|
59897
61310
|
signal,
|
|
59898
61311
|
// Prebuild fallback only for published pages (not preview)
|
|
59899
|
-
prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadPage(siteId,
|
|
61312
|
+
prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadPage(siteId, path25) : void 0
|
|
59900
61313
|
}
|
|
59901
61314
|
);
|
|
59902
61315
|
}
|
|
@@ -60320,17 +61733,17 @@ function createRiverbankClient(config2) {
|
|
|
60320
61733
|
};
|
|
60321
61734
|
},
|
|
60322
61735
|
async checkRedirect(params) {
|
|
60323
|
-
const { siteId, path:
|
|
60324
|
-
if (!siteId || !
|
|
61736
|
+
const { siteId, path: path25, signal } = params;
|
|
61737
|
+
if (!siteId || !path25) {
|
|
60325
61738
|
throw new Error("checkRedirect() requires siteId and path");
|
|
60326
61739
|
}
|
|
60327
|
-
const cacheKey = `redirect:${siteId}:${
|
|
61740
|
+
const cacheKey = `redirect:${siteId}:${path25}`;
|
|
60328
61741
|
return resilientFetchData(
|
|
60329
61742
|
cacheKey,
|
|
60330
61743
|
async (sig) => {
|
|
60331
61744
|
return await apiClient({
|
|
60332
61745
|
endpoint: "checkRedirect",
|
|
60333
|
-
params: { site: siteId, path:
|
|
61746
|
+
params: { site: siteId, path: path25 },
|
|
60334
61747
|
options: { signal: sig }
|
|
60335
61748
|
});
|
|
60336
61749
|
},
|
|
@@ -60739,7 +62152,7 @@ async function loadDeployConfig() {
|
|
|
60739
62152
|
}
|
|
60740
62153
|
async function checkWorkingDirectoryClean(git, prebuildOutput) {
|
|
60741
62154
|
const status = await git.status();
|
|
60742
|
-
const dirtyFiles = status.files.map((f) => f.path).filter((
|
|
62155
|
+
const dirtyFiles = status.files.map((f) => f.path).filter((path25) => !path25.startsWith(prebuildOutput));
|
|
60743
62156
|
return {
|
|
60744
62157
|
clean: dirtyFiles.length === 0,
|
|
60745
62158
|
dirtyFiles
|
|
@@ -61270,25 +62683,25 @@ function mapMediaGuardDiagnosticsToAuditIssues(diagnostics) {
|
|
|
61270
62683
|
}
|
|
61271
62684
|
}));
|
|
61272
62685
|
}
|
|
61273
|
-
function extractEmbedReferences(data,
|
|
62686
|
+
function extractEmbedReferences(data, path25 = []) {
|
|
61274
62687
|
const refs = [];
|
|
61275
62688
|
if (!data || typeof data !== "object") return refs;
|
|
61276
62689
|
if (Array.isArray(data)) {
|
|
61277
62690
|
data.forEach((item, index) => {
|
|
61278
|
-
refs.push(...extractEmbedReferences(item, [...
|
|
62691
|
+
refs.push(...extractEmbedReferences(item, [...path25, String(index)]));
|
|
61279
62692
|
});
|
|
61280
62693
|
return refs;
|
|
61281
62694
|
}
|
|
61282
62695
|
const obj = data;
|
|
61283
62696
|
if (obj.kind === "embed" && obj.contentType && obj.identifier) {
|
|
61284
62697
|
refs.push({
|
|
61285
|
-
path:
|
|
62698
|
+
path: path25.join("."),
|
|
61286
62699
|
contentType: String(obj.contentType),
|
|
61287
62700
|
identifier: String(obj.identifier)
|
|
61288
62701
|
});
|
|
61289
62702
|
}
|
|
61290
62703
|
for (const [key, value] of Object.entries(obj)) {
|
|
61291
|
-
refs.push(...extractEmbedReferences(value, [...
|
|
62704
|
+
refs.push(...extractEmbedReferences(value, [...path25, key]));
|
|
61292
62705
|
}
|
|
61293
62706
|
return refs;
|
|
61294
62707
|
}
|
|
@@ -62222,7 +63635,7 @@ function formatThemeSummaryForPrompt(summary) {
|
|
|
62222
63635
|
}
|
|
62223
63636
|
|
|
62224
63637
|
// src/manifest/validation/layout-utils.ts
|
|
62225
|
-
function collectLayoutNodeInfos(node,
|
|
63638
|
+
function collectLayoutNodeInfos(node, path25 = "layout", out = []) {
|
|
62226
63639
|
if (!node || typeof node !== "object") return out;
|
|
62227
63640
|
const n = node;
|
|
62228
63641
|
const type = typeof n.type === "string" ? n.type : "unknown";
|
|
@@ -62231,10 +63644,10 @@ function collectLayoutNodeInfos(node, path24 = "layout", out = []) {
|
|
|
62231
63644
|
const b = n.$bind;
|
|
62232
63645
|
if (typeof b.from === "string") bindFrom = b.from;
|
|
62233
63646
|
}
|
|
62234
|
-
out.push({ path:
|
|
63647
|
+
out.push({ path: path25, type, bindFrom });
|
|
62235
63648
|
if (Array.isArray(n.children)) {
|
|
62236
63649
|
for (let i = 0; i < n.children.length; i++) {
|
|
62237
|
-
collectLayoutNodeInfos(n.children[i], `${
|
|
63650
|
+
collectLayoutNodeInfos(n.children[i], `${path25}.children[${i}]`, out);
|
|
62238
63651
|
}
|
|
62239
63652
|
}
|
|
62240
63653
|
return out;
|
|
@@ -62656,7 +64069,7 @@ function extractNestedHrefBindFromProps(props2) {
|
|
|
62656
64069
|
const bind2 = href.$bind;
|
|
62657
64070
|
return bind2 && typeof bind2 === "object" ? bind2 : null;
|
|
62658
64071
|
}
|
|
62659
|
-
function findMissingLinkHrefs(node, blockId, fields3,
|
|
64072
|
+
function findMissingLinkHrefs(node, blockId, fields3, path25 = "layout", repeatStack = []) {
|
|
62660
64073
|
const errors = [];
|
|
62661
64074
|
if (!node || typeof node !== "object") return errors;
|
|
62662
64075
|
const n = node;
|
|
@@ -62685,21 +64098,21 @@ function findMissingLinkHrefs(node, blockId, fields3, path24 = "layout", repeatS
|
|
|
62685
64098
|
if (isBoundToLinkField) {
|
|
62686
64099
|
if (!hrefBind || !hrefFrom) {
|
|
62687
64100
|
errors.push({
|
|
62688
|
-
path:
|
|
62689
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64101
|
+
path: path25,
|
|
64102
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} is bound to a link field but is missing props.href binding`,
|
|
62690
64103
|
suggestion: `Add props.href: { "$bind": { "from": "${bindFrom ?? "content.yourLinkField"}", "fallback": null, "transforms": [{ "id": "links.resolve" }] } }`
|
|
62691
64104
|
});
|
|
62692
64105
|
} else if (!bindingHasTransform(hrefBind, "links.resolve")) {
|
|
62693
64106
|
errors.push({
|
|
62694
|
-
path:
|
|
62695
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64107
|
+
path: path25,
|
|
64108
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} has props.href binding but is missing transforms: [{id:"links.resolve"}]`,
|
|
62696
64109
|
suggestion: `Set props.href.$bind.transforms to [{ "id": "links.resolve" }].`
|
|
62697
64110
|
});
|
|
62698
64111
|
}
|
|
62699
64112
|
if (bindFrom && bindFieldType === "link" && !bindingHasTransform(bind2, "links.label")) {
|
|
62700
64113
|
errors.push({
|
|
62701
|
-
path:
|
|
62702
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64114
|
+
path: path25,
|
|
64115
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} binds label from a link field but is missing links.label transform`,
|
|
62703
64116
|
suggestion: `Set node.$bind.transforms to [{ "id": "links.label" }] so the label renders as text.`
|
|
62704
64117
|
});
|
|
62705
64118
|
}
|
|
@@ -62712,7 +64125,7 @@ function findMissingLinkHrefs(node, blockId, fields3, path24 = "layout", repeatS
|
|
|
62712
64125
|
n.children[i],
|
|
62713
64126
|
blockId,
|
|
62714
64127
|
fields3,
|
|
62715
|
-
`${
|
|
64128
|
+
`${path25}.children[${i}]`,
|
|
62716
64129
|
nextRepeatStack
|
|
62717
64130
|
)
|
|
62718
64131
|
);
|
|
@@ -62720,7 +64133,7 @@ function findMissingLinkHrefs(node, blockId, fields3, path24 = "layout", repeatS
|
|
|
62720
64133
|
}
|
|
62721
64134
|
return errors;
|
|
62722
64135
|
}
|
|
62723
|
-
function detectRedundantLinkLabels(node, blockId, fields3,
|
|
64136
|
+
function detectRedundantLinkLabels(node, blockId, fields3, path25 = "layout", repeatStack = []) {
|
|
62724
64137
|
const errors = [];
|
|
62725
64138
|
if (!node || typeof node !== "object") return errors;
|
|
62726
64139
|
const n = node;
|
|
@@ -62742,7 +64155,7 @@ function detectRedundantLinkLabels(node, blockId, fields3, path24 = "layout", re
|
|
|
62742
64155
|
const redundancies = findRedundantLinkTextSiblings(
|
|
62743
64156
|
children,
|
|
62744
64157
|
nextRepeatStack,
|
|
62745
|
-
|
|
64158
|
+
path25
|
|
62746
64159
|
);
|
|
62747
64160
|
errors.push(
|
|
62748
64161
|
...redundancies.map((r) => ({
|
|
@@ -62759,7 +64172,7 @@ function detectRedundantLinkLabels(node, blockId, fields3, path24 = "layout", re
|
|
|
62759
64172
|
n.children[i],
|
|
62760
64173
|
blockId,
|
|
62761
64174
|
fields3,
|
|
62762
|
-
`${
|
|
64175
|
+
`${path25}.children[${i}]`,
|
|
62763
64176
|
nextRepeatStack
|
|
62764
64177
|
)
|
|
62765
64178
|
);
|
|
@@ -62998,19 +64411,19 @@ function extractBlockIdFromSelector(selector) {
|
|
|
62998
64411
|
const match = selector.match(/\[data-block=(["'])(custom\.[^"']+)\1\]/);
|
|
62999
64412
|
return match?.[2] ?? null;
|
|
63000
64413
|
}
|
|
63001
|
-
function validateNodeType(nodeType,
|
|
64414
|
+
function validateNodeType(nodeType, path25, ctx) {
|
|
63002
64415
|
if (!ALLOWED_NODE_TYPES.includes(
|
|
63003
64416
|
nodeType
|
|
63004
64417
|
)) {
|
|
63005
64418
|
return {
|
|
63006
|
-
path: `${
|
|
63007
|
-
message: `Block "${ctx.blockId}": Unknown node type "${nodeType}" at ${
|
|
64419
|
+
path: `${path25}.type`,
|
|
64420
|
+
message: `Block "${ctx.blockId}": Unknown node type "${nodeType}" at ${path25}`,
|
|
63008
64421
|
suggestion: `ALLOWED: ${ALLOWED_NODE_TYPES.slice(0, 10).join(", ")}... FIX: Replace "${nodeType}" with a valid node type.`
|
|
63009
64422
|
};
|
|
63010
64423
|
}
|
|
63011
64424
|
return null;
|
|
63012
64425
|
}
|
|
63013
|
-
function validateTransforms(transforms,
|
|
64426
|
+
function validateTransforms(transforms, path25, ctx) {
|
|
63014
64427
|
const errors = [];
|
|
63015
64428
|
for (let i = 0; i < transforms.length; i++) {
|
|
63016
64429
|
const transform = transforms[i];
|
|
@@ -63019,7 +64432,7 @@ function validateTransforms(transforms, path24, ctx) {
|
|
|
63019
64432
|
transform.id
|
|
63020
64433
|
)) {
|
|
63021
64434
|
errors.push({
|
|
63022
|
-
path: `${
|
|
64435
|
+
path: `${path25}.transforms[${i}].id`,
|
|
63023
64436
|
message: `Block "${ctx.blockId}": Unknown transform "${transform.id}"`,
|
|
63024
64437
|
suggestion: `ALLOWED: ${ALLOWED_TRANSFORM_IDS.slice(0, 8).join(", ")}... FIX: Replace with a valid transform ID or remove.`
|
|
63025
64438
|
});
|
|
@@ -63028,7 +64441,7 @@ function validateTransforms(transforms, path24, ctx) {
|
|
|
63028
64441
|
}
|
|
63029
64442
|
return errors;
|
|
63030
64443
|
}
|
|
63031
|
-
function validateBinding(bind2,
|
|
64444
|
+
function validateBinding(bind2, path25, ctx) {
|
|
63032
64445
|
const errors = [];
|
|
63033
64446
|
if ("from" in bind2 && typeof bind2.from === "string") {
|
|
63034
64447
|
const bindPath = bind2.from;
|
|
@@ -63036,7 +64449,7 @@ function validateBinding(bind2, path24, ctx) {
|
|
|
63036
64449
|
const fieldId = bindPath.replace("content.", "").split(".")[0] ?? "";
|
|
63037
64450
|
if (fieldId && !ctx.fieldIds.has(fieldId)) {
|
|
63038
64451
|
errors.push({
|
|
63039
|
-
path: `${
|
|
64452
|
+
path: `${path25}.from`,
|
|
63040
64453
|
message: `Block "${ctx.blockId}": $bind references unknown field "${fieldId}"`,
|
|
63041
64454
|
suggestion: `DEFINED FIELDS: ${Array.from(ctx.fieldIds).join(", ")}. FIX: Add field { id: '${fieldId}', type: '...' } or use existing field.`
|
|
63042
64455
|
});
|
|
@@ -63044,31 +64457,31 @@ function validateBinding(bind2, path24, ctx) {
|
|
|
63044
64457
|
}
|
|
63045
64458
|
}
|
|
63046
64459
|
if ("transforms" in bind2 && Array.isArray(bind2.transforms)) {
|
|
63047
|
-
errors.push(...validateTransforms(bind2.transforms,
|
|
64460
|
+
errors.push(...validateTransforms(bind2.transforms, path25, ctx));
|
|
63048
64461
|
}
|
|
63049
64462
|
return errors;
|
|
63050
64463
|
}
|
|
63051
|
-
function validateLayoutDeep(node, blockId, fields3,
|
|
64464
|
+
function validateLayoutDeep(node, blockId, fields3, path25 = "layout") {
|
|
63052
64465
|
const ctx = {
|
|
63053
64466
|
blockId,
|
|
63054
64467
|
fieldIds: collectFieldIds(fields3)
|
|
63055
64468
|
};
|
|
63056
|
-
return validateLayoutNode(node,
|
|
64469
|
+
return validateLayoutNode(node, path25, ctx);
|
|
63057
64470
|
}
|
|
63058
|
-
function validateLayoutNode(node,
|
|
64471
|
+
function validateLayoutNode(node, path25, ctx) {
|
|
63059
64472
|
const errors = [];
|
|
63060
64473
|
if (!node || typeof node !== "object") {
|
|
63061
64474
|
return errors;
|
|
63062
64475
|
}
|
|
63063
64476
|
const n = node;
|
|
63064
64477
|
if ("type" in n && typeof n.type === "string") {
|
|
63065
|
-
const typeError = validateNodeType(n.type,
|
|
64478
|
+
const typeError = validateNodeType(n.type, path25, ctx);
|
|
63066
64479
|
if (typeError) errors.push(typeError);
|
|
63067
64480
|
}
|
|
63068
64481
|
if ("$bind" in n && n.$bind && typeof n.$bind === "object") {
|
|
63069
64482
|
const bindErrors = validateBinding(
|
|
63070
64483
|
n.$bind,
|
|
63071
|
-
`${
|
|
64484
|
+
`${path25}.$bind`,
|
|
63072
64485
|
ctx
|
|
63073
64486
|
);
|
|
63074
64487
|
errors.push(...bindErrors);
|
|
@@ -63076,7 +64489,7 @@ function validateLayoutNode(node, path24, ctx) {
|
|
|
63076
64489
|
if ("props" in n && n.props && typeof n.props === "object") {
|
|
63077
64490
|
const propsErrors = validatePropsBindings(
|
|
63078
64491
|
n.props,
|
|
63079
|
-
`${
|
|
64492
|
+
`${path25}.props`,
|
|
63080
64493
|
ctx
|
|
63081
64494
|
);
|
|
63082
64495
|
errors.push(...propsErrors);
|
|
@@ -63085,7 +64498,7 @@ function validateLayoutNode(node, path24, ctx) {
|
|
|
63085
64498
|
for (let i = 0; i < n.children.length; i++) {
|
|
63086
64499
|
const childErrors = validateLayoutNode(
|
|
63087
64500
|
n.children[i],
|
|
63088
|
-
`${
|
|
64501
|
+
`${path25}.children[${i}]`,
|
|
63089
64502
|
ctx
|
|
63090
64503
|
);
|
|
63091
64504
|
errors.push(...childErrors);
|
|
@@ -63093,17 +64506,17 @@ function validateLayoutNode(node, path24, ctx) {
|
|
|
63093
64506
|
}
|
|
63094
64507
|
return errors;
|
|
63095
64508
|
}
|
|
63096
|
-
function validatePropsBindings(props2,
|
|
64509
|
+
function validatePropsBindings(props2, path25, ctx) {
|
|
63097
64510
|
const errors = [];
|
|
63098
64511
|
for (const [key, value] of Object.entries(props2)) {
|
|
63099
64512
|
if (value && typeof value === "object" && "$bind" in value) {
|
|
63100
64513
|
const bind2 = value.$bind;
|
|
63101
|
-
const bindErrors = validateBinding(bind2, `${
|
|
64514
|
+
const bindErrors = validateBinding(bind2, `${path25}.${key}.$bind`, ctx);
|
|
63102
64515
|
errors.push(...bindErrors);
|
|
63103
64516
|
} else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
63104
64517
|
const nestedErrors = validatePropsBindings(
|
|
63105
64518
|
value,
|
|
63106
|
-
`${
|
|
64519
|
+
`${path25}.${key}`,
|
|
63107
64520
|
ctx
|
|
63108
64521
|
);
|
|
63109
64522
|
errors.push(...nestedErrors);
|
|
@@ -63236,7 +64649,7 @@ function collectUsedFieldRefs(node) {
|
|
|
63236
64649
|
visit(node, []);
|
|
63237
64650
|
return { topLevel, nestedByRepeater, itemNameByRepeater };
|
|
63238
64651
|
}
|
|
63239
|
-
function findMissingBindings(node, blockId,
|
|
64652
|
+
function findMissingBindings(node, blockId, path25 = "layout") {
|
|
63240
64653
|
const errors = [];
|
|
63241
64654
|
if (!node || typeof node !== "object") {
|
|
63242
64655
|
return errors;
|
|
@@ -63246,15 +64659,15 @@ function findMissingBindings(node, blockId, path24 = "layout") {
|
|
|
63246
64659
|
if ("$repeat" in n && n.$repeat && typeof n.$repeat === "object") {
|
|
63247
64660
|
if (nodeType && CONTENT_NODE_TYPES.includes(nodeType)) {
|
|
63248
64661
|
errors.push({
|
|
63249
|
-
path:
|
|
63250
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64662
|
+
path: path25,
|
|
64663
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} uses $repeat, but content nodes cannot be repeat containers`,
|
|
63251
64664
|
suggestion: `Move $repeat to a container node (grid/stack/div) and put a ${nodeType} child inside with $bind.from like "item.field".`
|
|
63252
64665
|
});
|
|
63253
64666
|
}
|
|
63254
64667
|
if (!Array.isArray(n.children) || n.children.length === 0) {
|
|
63255
64668
|
errors.push({
|
|
63256
|
-
path:
|
|
63257
|
-
message: `Block "${blockId}": node at ${
|
|
64669
|
+
path: path25,
|
|
64670
|
+
message: `Block "${blockId}": node at ${path25} uses $repeat but has no children to repeat`,
|
|
63258
64671
|
suggestion: 'Add one or more child nodes under children[] that bind to the repeat item (e.g., $bind.from: "item.text").'
|
|
63259
64672
|
});
|
|
63260
64673
|
}
|
|
@@ -63263,15 +64676,15 @@ function findMissingBindings(node, blockId, path24 = "layout") {
|
|
|
63263
64676
|
const hasBind = "$bind" in n && n.$bind && typeof n.$bind === "object" && "from" in n.$bind;
|
|
63264
64677
|
if (Array.isArray(n.children) && n.children.length > 0) {
|
|
63265
64678
|
errors.push({
|
|
63266
|
-
path:
|
|
63267
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64679
|
+
path: path25,
|
|
64680
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} has children, but content nodes must have children: null`,
|
|
63268
64681
|
suggestion: `Replace this ${nodeType} with a container node (div/stack/inline) and put the ${nodeType} nodes inside it.`
|
|
63269
64682
|
});
|
|
63270
64683
|
}
|
|
63271
64684
|
if (!hasBind) {
|
|
63272
64685
|
errors.push({
|
|
63273
|
-
path: `${
|
|
63274
|
-
message: `Block "${blockId}": ${nodeType} node at ${
|
|
64686
|
+
path: `${path25}`,
|
|
64687
|
+
message: `Block "${blockId}": ${nodeType} node at ${path25} has no $bind - it won't display any content`,
|
|
63275
64688
|
suggestion: `Add $bind: { from: "content.fieldName" } to connect this ${nodeType} to a field. Example: { "type": "${nodeType}", "$bind": { "from": "content.headline" } }`
|
|
63276
64689
|
});
|
|
63277
64690
|
}
|
|
@@ -63281,7 +64694,7 @@ function findMissingBindings(node, blockId, path24 = "layout") {
|
|
|
63281
64694
|
const childErrors = findMissingBindings(
|
|
63282
64695
|
n.children[i],
|
|
63283
64696
|
blockId,
|
|
63284
|
-
`${
|
|
64697
|
+
`${path25}.children[${i}]`
|
|
63285
64698
|
);
|
|
63286
64699
|
errors.push(...childErrors);
|
|
63287
64700
|
}
|
|
@@ -63298,13 +64711,13 @@ function getMaxDepth(node, currentDepth = 0) {
|
|
|
63298
64711
|
);
|
|
63299
64712
|
}
|
|
63300
64713
|
var CONTAINER_NODE_TYPES = ["section", "stack", "grid", "div", "inline"];
|
|
63301
|
-
function detectPotentialTruncation(node, maxAllowedDepth, currentDepth = 0,
|
|
64714
|
+
function detectPotentialTruncation(node, maxAllowedDepth, currentDepth = 0, path25 = "layout") {
|
|
63302
64715
|
if (!node || typeof node !== "object") return [];
|
|
63303
64716
|
const n = node;
|
|
63304
64717
|
const truncatedPaths = [];
|
|
63305
64718
|
if (currentDepth === maxAllowedDepth && n.children === null) {
|
|
63306
64719
|
if (CONTAINER_NODE_TYPES.includes(n.type || "")) {
|
|
63307
|
-
truncatedPaths.push(`${
|
|
64720
|
+
truncatedPaths.push(`${path25} (${n.type} at depth ${currentDepth})`);
|
|
63308
64721
|
}
|
|
63309
64722
|
}
|
|
63310
64723
|
if (n.children && Array.isArray(n.children)) {
|
|
@@ -63314,7 +64727,7 @@ function detectPotentialTruncation(node, maxAllowedDepth, currentDepth = 0, path
|
|
|
63314
64727
|
child,
|
|
63315
64728
|
maxAllowedDepth,
|
|
63316
64729
|
currentDepth + 1,
|
|
63317
|
-
`${
|
|
64730
|
+
`${path25}.children[${i}]`
|
|
63318
64731
|
)
|
|
63319
64732
|
);
|
|
63320
64733
|
});
|
|
@@ -63334,8 +64747,8 @@ function formatValidationFeedback(errors, output) {
|
|
|
63334
64747
|
`The layout reached the maximum depth of ${MAX_LAYOUT_DEPTH} levels.`
|
|
63335
64748
|
);
|
|
63336
64749
|
lines.push("These container nodes at the depth limit have no children:");
|
|
63337
|
-
for (const
|
|
63338
|
-
lines.push(` \u26A0\uFE0F ${
|
|
64750
|
+
for (const path25 of truncatedPaths) {
|
|
64751
|
+
lines.push(` \u26A0\uFE0F ${path25}`);
|
|
63339
64752
|
}
|
|
63340
64753
|
lines.push("");
|
|
63341
64754
|
lines.push(
|
|
@@ -63797,11 +65210,11 @@ var pass3bOutputSchema = z.object({
|
|
|
63797
65210
|
customCssAtRules: z.array(llmMediaAtRuleSchema).nullable(),
|
|
63798
65211
|
rationale: z.string()
|
|
63799
65212
|
});
|
|
63800
|
-
function getNodeAtPath(layout,
|
|
63801
|
-
if (
|
|
65213
|
+
function getNodeAtPath(layout, path25) {
|
|
65214
|
+
if (path25 === "" || path25 === "root" || path25 === "layout") {
|
|
63802
65215
|
return layout;
|
|
63803
65216
|
}
|
|
63804
|
-
let normalizedPath =
|
|
65217
|
+
let normalizedPath = path25;
|
|
63805
65218
|
if (normalizedPath.startsWith("layout.")) {
|
|
63806
65219
|
normalizedPath = normalizedPath.slice(7);
|
|
63807
65220
|
}
|
|
@@ -66130,6 +67543,147 @@ Examples:
|
|
|
66130
67543
|
$ riverbankcms style apply --site-style-id site-style:calm-studio --base-selection-version 3 --palette-variant-id soft-natural-sage
|
|
66131
67544
|
`).addCommand(listCommand8).addCommand(applyCommand);
|
|
66132
67545
|
|
|
67546
|
+
// src/cli/commands/webhooks.ts
|
|
67547
|
+
init_src();
|
|
67548
|
+
var RIVERBANK_WEBHOOK_SECRET_ENV = "RIVERBANK_WEBHOOK_SECRET";
|
|
67549
|
+
function isNodeError(error) {
|
|
67550
|
+
return error instanceof Error && "code" in error;
|
|
67551
|
+
}
|
|
67552
|
+
function ensureTrailingNewline(content) {
|
|
67553
|
+
return content.length > 0 && !content.endsWith("\n") ? `${content}
|
|
67554
|
+
` : content;
|
|
67555
|
+
}
|
|
67556
|
+
function planEnvSecretPatch(existingContent, secret) {
|
|
67557
|
+
const line = `${RIVERBANK_WEBHOOK_SECRET_ENV}=${secret}`;
|
|
67558
|
+
if (existingContent === null) {
|
|
67559
|
+
return { tag: "create-file", nextContent: `${line}
|
|
67560
|
+
` };
|
|
67561
|
+
}
|
|
67562
|
+
const pattern = new RegExp(`^${RIVERBANK_WEBHOOK_SECRET_ENV}=.*$`, "m");
|
|
67563
|
+
if (pattern.test(existingContent)) {
|
|
67564
|
+
const nextContent = existingContent.replace(pattern, line);
|
|
67565
|
+
return nextContent === existingContent ? { tag: "unchanged", nextContent } : { tag: "replace-key", nextContent };
|
|
67566
|
+
}
|
|
67567
|
+
return {
|
|
67568
|
+
tag: "append-key",
|
|
67569
|
+
nextContent: `${ensureTrailingNewline(existingContent)}${line}
|
|
67570
|
+
`
|
|
67571
|
+
};
|
|
67572
|
+
}
|
|
67573
|
+
async function readEnvFile(filePath) {
|
|
67574
|
+
try {
|
|
67575
|
+
return await fs5.readFile(filePath, "utf-8");
|
|
67576
|
+
} catch (error) {
|
|
67577
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
67578
|
+
return null;
|
|
67579
|
+
}
|
|
67580
|
+
throw error;
|
|
67581
|
+
}
|
|
67582
|
+
}
|
|
67583
|
+
async function writeEnvSecret(filePath, secret) {
|
|
67584
|
+
const existing = await readEnvFile(filePath);
|
|
67585
|
+
const plan = planEnvSecretPatch(existing, secret);
|
|
67586
|
+
if (plan.tag === "unchanged") {
|
|
67587
|
+
return { path: filePath, plan, written: false };
|
|
67588
|
+
}
|
|
67589
|
+
await fs5.writeFile(filePath, plan.nextContent, "utf-8");
|
|
67590
|
+
return { path: filePath, plan, written: true };
|
|
67591
|
+
}
|
|
67592
|
+
function hasSecret(result) {
|
|
67593
|
+
return result.dryRun === false && (result.action === "created" || result.action === "rotated");
|
|
67594
|
+
}
|
|
67595
|
+
function formatAction(action) {
|
|
67596
|
+
return action.split("_").join(" ");
|
|
67597
|
+
}
|
|
67598
|
+
function envPatchLabel(tag) {
|
|
67599
|
+
switch (tag) {
|
|
67600
|
+
case "create-file":
|
|
67601
|
+
return "created .env.local";
|
|
67602
|
+
case "append-key":
|
|
67603
|
+
return "added RIVERBANK_WEBHOOK_SECRET to .env.local";
|
|
67604
|
+
case "replace-key":
|
|
67605
|
+
return "updated RIVERBANK_WEBHOOK_SECRET in .env.local";
|
|
67606
|
+
case "unchanged":
|
|
67607
|
+
return "left .env.local unchanged";
|
|
67608
|
+
default:
|
|
67609
|
+
return assertNever(tag);
|
|
67610
|
+
}
|
|
67611
|
+
}
|
|
67612
|
+
function planHumanResultOutput(input) {
|
|
67613
|
+
const { result, envWrite, writeEnv } = input;
|
|
67614
|
+
const details = [`Action: ${formatAction(result.action)}`];
|
|
67615
|
+
if (result.endpoint) {
|
|
67616
|
+
details.push(`Endpoint: ${result.endpoint.name} (${result.endpoint.url})`);
|
|
67617
|
+
} else {
|
|
67618
|
+
details.push(`Endpoint: ${result.plannedEndpoint.name} (${result.plannedEndpoint.url})`);
|
|
67619
|
+
}
|
|
67620
|
+
if (envWrite) {
|
|
67621
|
+
details.push(`Env: ${envPatchLabel(envWrite.plan.tag)} at ${path5.relative(process.cwd(), envWrite.path)}`);
|
|
67622
|
+
} else if (hasSecret(result) && writeEnv) {
|
|
67623
|
+
details.push("Env: no local env file changes were made");
|
|
67624
|
+
}
|
|
67625
|
+
if (hasSecret(result) && !writeEnv) {
|
|
67626
|
+
details.push("", "One-time secret:", result.secret);
|
|
67627
|
+
}
|
|
67628
|
+
if (result.checklist.length > 0) {
|
|
67629
|
+
details.push("", "Next steps:");
|
|
67630
|
+
result.checklist.forEach((item, index) => {
|
|
67631
|
+
details.push(` ${index + 1}. ${item}`);
|
|
67632
|
+
});
|
|
67633
|
+
}
|
|
67634
|
+
return { summary: result.message, details };
|
|
67635
|
+
}
|
|
67636
|
+
function printHumanResult(input) {
|
|
67637
|
+
const { output, ...planInput } = input;
|
|
67638
|
+
const outputPlan = planHumanResultOutput(planInput);
|
|
67639
|
+
output.success(outputPlan.summary);
|
|
67640
|
+
outputPlan.details.forEach((line) => output.info(line));
|
|
67641
|
+
}
|
|
67642
|
+
var setupCommand = new Command("setup").description("Create or update the CMS-managed SDK revalidation webhook").requiredOption("--url <url>", "Public SDK revalidation URL, e.g. https://www.example.com/api/revalidate").option("--name <name>", "CMS webhook endpoint name").option("--rotate-secret", "Rotate the webhook secret and return the new one-time secret").option("--dry-run", "Show the planned CMS change without mutating webhooks or env files").option("--no-write-env", "Do not write returned one-time secrets to .env.local").option("--vercel", "Print Vercel env setup guidance").option("--yes", "Confirm remote mutations").addHelpText("after", `
|
|
67643
|
+
Examples:
|
|
67644
|
+
$ riverbankcms webhooks setup --url=https://www.example.com/api/revalidate
|
|
67645
|
+
$ riverbankcms webhooks setup --env=remote --url=https://www.example.com/api/revalidate --yes --vercel
|
|
67646
|
+
$ riverbankcms webhooks setup --url=https://www.example.com/api/revalidate --rotate-secret
|
|
67647
|
+
$ riverbankcms webhooks setup --url=https://www.example.com/api/revalidate --dry-run
|
|
67648
|
+
`).action(
|
|
67649
|
+
withErrorHandling(async (options, command) => {
|
|
67650
|
+
const ctx = createCommandContext(command);
|
|
67651
|
+
if (ctx.isRemote && options.dryRun !== true && options.yes !== true) {
|
|
67652
|
+
ctx.output.error("Remote webhook setup requires --yes", {
|
|
67653
|
+
suggestion: "Add --yes to confirm mutating the remote CMS webhook endpoint."
|
|
67654
|
+
});
|
|
67655
|
+
}
|
|
67656
|
+
const writeEnv = options.writeEnv !== false;
|
|
67657
|
+
const result = await ctx.client.webhooks.setupRevalidation({
|
|
67658
|
+
url: options.url,
|
|
67659
|
+
name: options.name,
|
|
67660
|
+
rotateSecret: options.rotateSecret,
|
|
67661
|
+
dryRun: options.dryRun,
|
|
67662
|
+
vercel: options.vercel
|
|
67663
|
+
});
|
|
67664
|
+
const envPath = path5.resolve(process.cwd(), ".env.local");
|
|
67665
|
+
const envWrite = hasSecret(result) && writeEnv && !result.dryRun ? await writeEnvSecret(envPath, result.secret) : null;
|
|
67666
|
+
if (ctx.isJsonOutput) {
|
|
67667
|
+
ctx.output.json({
|
|
67668
|
+
...result,
|
|
67669
|
+
env: envWrite ? {
|
|
67670
|
+
path: envWrite.path,
|
|
67671
|
+
action: envWrite.plan.tag,
|
|
67672
|
+
written: envWrite.written
|
|
67673
|
+
} : null
|
|
67674
|
+
});
|
|
67675
|
+
return;
|
|
67676
|
+
}
|
|
67677
|
+
printHumanResult({
|
|
67678
|
+
output: ctx.output,
|
|
67679
|
+
result,
|
|
67680
|
+
envWrite,
|
|
67681
|
+
writeEnv
|
|
67682
|
+
});
|
|
67683
|
+
})
|
|
67684
|
+
);
|
|
67685
|
+
var webhooksCommand = new Command("webhooks").description("Webhook setup and maintenance").addCommand(setupCommand);
|
|
67686
|
+
|
|
66133
67687
|
// src/cli/index.ts
|
|
66134
67688
|
config({ path: ".env.local" });
|
|
66135
67689
|
config({ path: ".env" });
|
|
@@ -66180,6 +67734,7 @@ program.addCommand(compareCommand);
|
|
|
66180
67734
|
program.addCommand(eventCommand);
|
|
66181
67735
|
program.addCommand(courseCommand2);
|
|
66182
67736
|
program.addCommand(styleCommand);
|
|
67737
|
+
program.addCommand(webhooksCommand);
|
|
66183
67738
|
program.addCommand(manifestCommand);
|
|
66184
67739
|
program.addCommand(envCommand);
|
|
66185
67740
|
program.addCommand(migrateCommand);
|