@riverbankcms/sdk 0.78.2 → 0.79.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/README.md +80 -0
- package/dist/{PreviewEditorSidebar-4DXLYX2V.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +724 -47
- package/dist/{PreviewEditorUI-CS5P4N3P.mjs → PreviewEditorUI-27KJVEET.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -0
- package/dist/_dts/api/src/endpoints.d.ts +55 -0
- package/dist/_dts/api/src/index.d.ts +5 -3
- package/dist/_dts/api/src/media.d.ts +8 -1
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
- package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
- package/dist/_dts/api/src/navigation.d.ts +2 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +1 -0
- package/dist/_dts/api/src/siteIcons.d.ts +128 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +16 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/api/src/webhooks.d.ts +239 -0
- package/dist/_dts/blocks/src/index.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +22 -22
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
- package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
- package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
- package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
- package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
- package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
- package/dist/_dts/blocks/src/system/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
- package/dist/_dts/core/src/branded.d.ts +6 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +191 -0
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
- package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
- package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -2
- package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
- package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +2 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
- package/dist/_dts/sdk/src/next/index.d.ts +1 -1
- package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
- package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
- package/dist/_dts/site-commands/src/commands.d.ts +3 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
- package/dist/_dts/theme-core/src/schema.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
- package/dist/_dts/ui/src/combobox.d.ts +1 -0
- package/dist/{chunk-RGTOD4AJ.mjs → chunk-4HCW7FHJ.mjs} +491 -56
- package/dist/{chunk-OKMBEAXY.mjs → chunk-A3HHFKVT.mjs} +1 -1
- package/dist/{chunk-6HYXHRAI.mjs → chunk-GP555I66.mjs} +177 -7
- package/dist/{chunk-CR5HKAGU.mjs → chunk-K2IIF34C.mjs} +55 -0
- package/dist/{chunk-4QEGTLK6.mjs → chunk-LCY32PXF.mjs} +1 -1
- package/dist/{chunk-MCRQMPET.mjs → chunk-V47ZU33I.mjs} +1745 -157
- package/dist/cli/index.mjs +1169 -171
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
- package/dist/client/{accordion-PLYNJIIM.mjs → accordion-QLA7KBYO.mjs} +1 -1
- package/dist/client/{bookingForm-BXAP6AO7.mjs → bookingForm-PYZIPA5G.mjs} +3 -3
- package/dist/client/bookings.mjs +110 -2
- package/dist/client/{carousel-TRBXDHGF.mjs → carousel-5EIULWBI.mjs} +2 -2
- package/dist/client/{cart-Z7H3HJRS.mjs → cart-DOP3FNI4.mjs} +5 -5
- package/dist/client/{checkout-WAFCUBIX.mjs → checkout-BVMF6FBV.mjs} +5 -5
- package/dist/client/{chunk-JRDUHZCT.mjs → chunk-44K2U3QI.mjs} +4 -4
- package/dist/client/{chunk-UVQEJJTN.mjs → chunk-CCNTDRCF.mjs} +1 -1
- package/dist/client/{chunk-ZI3LLBPZ.mjs → chunk-GG4M2NP6.mjs} +1 -1
- package/dist/client/{chunk-JGXPTEI2.mjs → chunk-R5ESWNKX.mjs} +6 -3
- package/dist/client/{chunk-CWGTG37I.mjs → chunk-TYONZMST.mjs} +1 -1
- package/dist/client/{chunk-75OUS5MT.mjs → chunk-UDS3NTWA.mjs} +1 -1
- package/dist/client/{chunk-DNRGY432.mjs → chunk-V6M5FCR5.mjs} +1 -1
- package/dist/client/{chunk-FUXW6VW2.mjs → chunk-YLDYVRZL.mjs} +4 -4
- package/dist/client/client.mjs +21329 -19729
- package/dist/client/{courseRegistration-AHFQHWIJ.mjs → courseRegistration-E6EAA6NL.mjs} +3 -3
- package/dist/client/{eventCalendar-LDXTV5R7.mjs → eventCalendar-HBG3HAK6.mjs} +5 -5
- package/dist/client/{eventCombined-A4JGTNJO.mjs → eventCombined-6K5ZZWAK.mjs} +5 -5
- package/dist/client/{eventDetails-4YXTZ7EG.mjs → eventDetails-Q75ICXLT.mjs} +5 -5
- package/dist/client/{eventListing-P72TPFFM.mjs → eventListing-27P5F7DZ.mjs} +5 -5
- package/dist/client/{eventRegistration-LSYJHGMT.mjs → eventRegistration-IQ7AMASR.mjs} +5 -5
- package/dist/client/{form-AOPYOKOW.mjs → form-JRTD65FN.mjs} +1 -1
- package/dist/client/{headerSection-5TFYDFVQ.mjs → headerSection-7FPSSZHS.mjs} +2 -2
- package/dist/client/hooks.mjs +350 -35
- package/dist/client/{locationMap-QSZ3ZVAZ.mjs → locationMap-7NGFNYBH.mjs} +1 -1
- package/dist/client/{newsletterForm-KTRHZY52.mjs → newsletterForm-F3BADCI2.mjs} +1 -1
- package/dist/client/{productDetail-N4E775RG.mjs → productDetail-V3HP7ITJ.mjs} +5 -5
- package/dist/client/{productList-UGUQ2S45.mjs → productList-L3EGJUF2.mjs} +5 -5
- package/dist/client/rendering/client.mjs +2713 -1382
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +2014 -414
- package/dist/client/{shop-VHSZEEQ2.mjs → shop-DQUB5E2C.mjs} +5 -5
- package/dist/preview-next/before-render.mjs +55 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +55 -0
- package/dist/{sdk-runtime-WHPJEF5G.mjs → sdk-runtime-AF6KXJU4.mjs} +6 -6
- package/dist/server/components.mjs +2169 -781
- package/dist/server/config-validation.mjs +350 -35
- package/dist/server/config.mjs +350 -35
- package/dist/server/data.mjs +350 -35
- package/dist/server/index.mjs +64 -1
- package/dist/server/next/revalidate.mjs +229 -34
- package/dist/server/next.mjs +2307 -818
- package/dist/server/page-converter.mjs +275 -34
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2174 -786
- package/dist/server/rendering.mjs +2187 -799
- package/dist/server/routing.mjs +767 -50
- package/dist/server/server.mjs +351 -36
- package/dist/server/theme-bridge.mjs +164 -2
- package/dist/server/theme.mjs +2 -2
- package/dist/server/webhooks.mjs +129 -25
- package/dist/styles/index.css +55 -0
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +0 -8
package/dist/cli/index.mjs
CHANGED
|
@@ -439,9 +439,24 @@ var init_fileSafety = __esm({
|
|
|
439
439
|
"../media-core/src/fileSafety.ts"() {
|
|
440
440
|
}
|
|
441
441
|
});
|
|
442
|
+
|
|
443
|
+
// ../media-core/src/fileDomain.ts
|
|
444
|
+
var AMBIENT_BACKGROUND_ROLES2;
|
|
442
445
|
var init_fileDomain = __esm({
|
|
443
446
|
"../media-core/src/fileDomain.ts"() {
|
|
444
447
|
init_src();
|
|
448
|
+
AMBIENT_BACKGROUND_ROLES2 = [
|
|
449
|
+
"light-texture",
|
|
450
|
+
"proof-band-dark",
|
|
451
|
+
"cta-wash",
|
|
452
|
+
"footer-detail",
|
|
453
|
+
"style-atmosphere-1",
|
|
454
|
+
"style-atmosphere-2"
|
|
455
|
+
];
|
|
456
|
+
[
|
|
457
|
+
"selected-background",
|
|
458
|
+
...AMBIENT_BACKGROUND_ROLES2
|
|
459
|
+
];
|
|
445
460
|
({
|
|
446
461
|
audio: unsafeAsPositiveByteCount(250 * 1024 * 1024),
|
|
447
462
|
rawVideoBeforeCompression: unsafeAsPositiveByteCount(500 * 1024 * 1024),
|
|
@@ -1159,6 +1174,14 @@ var init_repeaterGrid = __esm({
|
|
|
1159
1174
|
DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID = "gridColumn";
|
|
1160
1175
|
}
|
|
1161
1176
|
});
|
|
1177
|
+
|
|
1178
|
+
// ../blocks/src/system/icons/presets.ts
|
|
1179
|
+
var ICON_PICKER_PRESETS;
|
|
1180
|
+
var init_presets = __esm({
|
|
1181
|
+
"../blocks/src/system/icons/presets.ts"() {
|
|
1182
|
+
ICON_PICKER_PRESETS = ["cta", "feature"];
|
|
1183
|
+
}
|
|
1184
|
+
});
|
|
1162
1185
|
function isDisplayMediaKind(kind) {
|
|
1163
1186
|
return DISPLAY_MEDIA_KINDS.includes(kind);
|
|
1164
1187
|
}
|
|
@@ -1246,6 +1269,7 @@ var init_schema2 = __esm({
|
|
|
1246
1269
|
init_src2();
|
|
1247
1270
|
init_node();
|
|
1248
1271
|
init_repeaterGrid();
|
|
1272
|
+
init_presets();
|
|
1249
1273
|
visibilityLevels = ["admin", "designer", "author"];
|
|
1250
1274
|
MEDIA_KINDS = [
|
|
1251
1275
|
"image",
|
|
@@ -1397,7 +1421,7 @@ var init_schema2 = __esm({
|
|
|
1397
1421
|
layoutGridColumnField: z.string().optional(),
|
|
1398
1422
|
layoutGridMaxRows: z.number().int().positive().optional(),
|
|
1399
1423
|
// Icon picker configuration (used when ui.widget === 'iconPicker')
|
|
1400
|
-
iconPickerPreset: z.enum(
|
|
1424
|
+
iconPickerPreset: z.enum(ICON_PICKER_PRESETS).optional(),
|
|
1401
1425
|
// Entry picker configuration
|
|
1402
1426
|
contentTypeField: z.string().optional(),
|
|
1403
1427
|
fixedContentType: z.string().optional(),
|
|
@@ -3067,7 +3091,7 @@ function parseThemeColorToken(value) {
|
|
|
3067
3091
|
if (!isThemeColorToken(value)) return null;
|
|
3068
3092
|
return value.trim();
|
|
3069
3093
|
}
|
|
3070
|
-
var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet,
|
|
3094
|
+
var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, themeColorShadeSteps, shadeStepSet, themeColorTokenSchema;
|
|
3071
3095
|
var init_themeColorTokens = __esm({
|
|
3072
3096
|
"../theme-core/src/tokens/themeColorTokens.ts"() {
|
|
3073
3097
|
init_blockColorTokens();
|
|
@@ -3101,7 +3125,7 @@ var init_themeColorTokens = __esm({
|
|
|
3101
3125
|
"accentForeground"
|
|
3102
3126
|
];
|
|
3103
3127
|
themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
3104
|
-
|
|
3128
|
+
themeColorShadeSteps = [
|
|
3105
3129
|
"50",
|
|
3106
3130
|
"100",
|
|
3107
3131
|
"200",
|
|
@@ -3114,7 +3138,7 @@ var init_themeColorTokens = __esm({
|
|
|
3114
3138
|
"900",
|
|
3115
3139
|
"950"
|
|
3116
3140
|
];
|
|
3117
|
-
shadeStepSet = new Set(
|
|
3141
|
+
shadeStepSet = new Set(themeColorShadeSteps);
|
|
3118
3142
|
themeColorTokenSchema = z.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
3119
3143
|
}
|
|
3120
3144
|
});
|
|
@@ -4283,7 +4307,7 @@ var init_generateButtonCss = __esm({
|
|
|
4283
4307
|
});
|
|
4284
4308
|
|
|
4285
4309
|
// ../theme-core/src/buttons/presets.ts
|
|
4286
|
-
var
|
|
4310
|
+
var init_presets2 = __esm({
|
|
4287
4311
|
"../theme-core/src/buttons/presets.ts"() {
|
|
4288
4312
|
}
|
|
4289
4313
|
});
|
|
@@ -4308,7 +4332,7 @@ var init_buttons = __esm({
|
|
|
4308
4332
|
init_generateButtonCss();
|
|
4309
4333
|
init_generateDefaultButtonSystem();
|
|
4310
4334
|
init_constants();
|
|
4311
|
-
|
|
4335
|
+
init_presets2();
|
|
4312
4336
|
init_personalities();
|
|
4313
4337
|
init_types5();
|
|
4314
4338
|
init_registry();
|
|
@@ -7473,6 +7497,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
7473
7497
|
"site-style:personal-retreat-journal",
|
|
7474
7498
|
"site-style:tactile-workshop",
|
|
7475
7499
|
"site-style:modern-wellness",
|
|
7500
|
+
"site-style:clarity-zen-blue",
|
|
7476
7501
|
SOFT_EARTH_SITE_STYLE_ID_VALUE,
|
|
7477
7502
|
"site-style:bold-launch",
|
|
7478
7503
|
"site-style:south-west-twerk-school"
|
|
@@ -7825,6 +7850,114 @@ var init_curatedSiteStyles = __esm({
|
|
|
7825
7850
|
paletteChoice("warm-neutral-clay")
|
|
7826
7851
|
]
|
|
7827
7852
|
}),
|
|
7853
|
+
defineCuratedSiteStyle({
|
|
7854
|
+
id: "site-style:clarity-zen-blue",
|
|
7855
|
+
name: "Clarity Zen",
|
|
7856
|
+
description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
|
|
7857
|
+
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
|
+
siteCreatorSelection: {
|
|
7859
|
+
kind: "site_creator_keyword_heuristic",
|
|
7860
|
+
priority: 25
|
|
7861
|
+
},
|
|
7862
|
+
selectionKeywordRules: [
|
|
7863
|
+
{ kind: "substring", value: "psychotherap" },
|
|
7864
|
+
{ kind: "phrase", value: "mental health" },
|
|
7865
|
+
{ kind: "phrase", value: "talk therapy" },
|
|
7866
|
+
{ kind: "phrase", value: "therapy and wellbeing" }
|
|
7867
|
+
],
|
|
7868
|
+
tokenRecipes: {
|
|
7869
|
+
palette: "brand-led",
|
|
7870
|
+
contrast: "standard",
|
|
7871
|
+
radius: "rounded",
|
|
7872
|
+
shadow: "subtle",
|
|
7873
|
+
typography: "serif-editorial",
|
|
7874
|
+
spacing: "airy",
|
|
7875
|
+
motion: "subtle"
|
|
7876
|
+
},
|
|
7877
|
+
compositionBudget: balancedBudget,
|
|
7878
|
+
themeOverrides: {
|
|
7879
|
+
typography: {
|
|
7880
|
+
body: {
|
|
7881
|
+
family: "Inter, system-ui, sans-serif",
|
|
7882
|
+
size: "md",
|
|
7883
|
+
weight: "regular",
|
|
7884
|
+
lineHeight: "relaxed",
|
|
7885
|
+
letterSpacing: "normal"
|
|
7886
|
+
},
|
|
7887
|
+
headings: {
|
|
7888
|
+
default: {
|
|
7889
|
+
family: '"Cormorant Garamond", Georgia, serif',
|
|
7890
|
+
weight: "regular",
|
|
7891
|
+
lineHeight: "normal",
|
|
7892
|
+
letterSpacing: "normal",
|
|
7893
|
+
colorToken: "text",
|
|
7894
|
+
italic: null,
|
|
7895
|
+
case: null
|
|
7896
|
+
},
|
|
7897
|
+
h1: {
|
|
7898
|
+
size: "xl",
|
|
7899
|
+
weight: "regular",
|
|
7900
|
+
lineHeight: "normal",
|
|
7901
|
+
letterSpacing: "normal",
|
|
7902
|
+
italic: null
|
|
7903
|
+
},
|
|
7904
|
+
h2: {
|
|
7905
|
+
size: "lg",
|
|
7906
|
+
weight: "regular",
|
|
7907
|
+
lineHeight: "normal",
|
|
7908
|
+
letterSpacing: "normal",
|
|
7909
|
+
italic: null
|
|
7910
|
+
},
|
|
7911
|
+
h3: {
|
|
7912
|
+
size: "md",
|
|
7913
|
+
weight: "regular",
|
|
7914
|
+
lineHeight: "normal",
|
|
7915
|
+
letterSpacing: "normal",
|
|
7916
|
+
italic: null
|
|
7917
|
+
}
|
|
7918
|
+
},
|
|
7919
|
+
scale: "majorThird"
|
|
7920
|
+
},
|
|
7921
|
+
bodyText: {
|
|
7922
|
+
intro: {
|
|
7923
|
+
paragraphSize: "default",
|
|
7924
|
+
headingSize: "editorial"
|
|
7925
|
+
}
|
|
7926
|
+
}
|
|
7927
|
+
},
|
|
7928
|
+
defaultBlockVariants: {
|
|
7929
|
+
"block.faq": "split-heading-columns"
|
|
7930
|
+
},
|
|
7931
|
+
recommendedAppearancePresetIds: [
|
|
7932
|
+
"hero-split-editorial",
|
|
7933
|
+
"intro-organic-statement",
|
|
7934
|
+
"feature-cards-raised-rule",
|
|
7935
|
+
"media-text-quiet-story",
|
|
7936
|
+
"testimonials-brand-background-quotes",
|
|
7937
|
+
"faq-contained-help",
|
|
7938
|
+
"contact-form-panel"
|
|
7939
|
+
],
|
|
7940
|
+
recommendedHeaderLookIds: [
|
|
7941
|
+
"centered-calm",
|
|
7942
|
+
"serif-line",
|
|
7943
|
+
"minimal-transparent"
|
|
7944
|
+
],
|
|
7945
|
+
recommendedFooterLookIds: [
|
|
7946
|
+
"footer-muted-grounding",
|
|
7947
|
+
"site-footer-brand-two-band"
|
|
7948
|
+
],
|
|
7949
|
+
buttonPersonalityChoices: [
|
|
7950
|
+
buttonChoice("soft-pill"),
|
|
7951
|
+
buttonChoice("pebble"),
|
|
7952
|
+
buttonChoice("editorial-link")
|
|
7953
|
+
],
|
|
7954
|
+
paletteVariantChoices: [
|
|
7955
|
+
paletteChoice("brand-led-cool"),
|
|
7956
|
+
paletteChoice("soft-natural-watercolor"),
|
|
7957
|
+
paletteChoice("soft-natural-stone"),
|
|
7958
|
+
paletteChoice("warm-neutral-cream")
|
|
7959
|
+
]
|
|
7960
|
+
}),
|
|
7828
7961
|
defineCuratedSiteStyle({
|
|
7829
7962
|
id: "site-style:personal-retreat-journal",
|
|
7830
7963
|
name: "Personal Retreat Journal",
|
|
@@ -12212,36 +12345,46 @@ function buildCarouselLayout() {
|
|
|
12212
12345
|
[buildTestimonialCard(repeat("data.entries", "testimonial"))]
|
|
12213
12346
|
);
|
|
12214
12347
|
}
|
|
12348
|
+
function buildResponsiveGridCards() {
|
|
12349
|
+
return [
|
|
12350
|
+
// 2 columns
|
|
12351
|
+
grid(
|
|
12352
|
+
{ gap: "lg", cols: { base: 1, sm: 2 } },
|
|
12353
|
+
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12354
|
+
when("gridColumns", { equals: "2" })
|
|
12355
|
+
),
|
|
12356
|
+
// 3 columns (default when unset)
|
|
12357
|
+
grid(
|
|
12358
|
+
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
|
|
12359
|
+
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12360
|
+
when("gridColumns", { equals: "3" })
|
|
12361
|
+
),
|
|
12362
|
+
// 4 columns
|
|
12363
|
+
grid(
|
|
12364
|
+
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
|
|
12365
|
+
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12366
|
+
when("gridColumns", { equals: "4" })
|
|
12367
|
+
),
|
|
12368
|
+
// Fallback to 3 columns when gridColumns is not set
|
|
12369
|
+
grid(
|
|
12370
|
+
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
|
|
12371
|
+
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12372
|
+
when("gridColumns", { not: true })
|
|
12373
|
+
)
|
|
12374
|
+
];
|
|
12375
|
+
}
|
|
12215
12376
|
function buildGridLayout() {
|
|
12216
12377
|
return el(
|
|
12217
12378
|
"div",
|
|
12218
12379
|
{ className: "rb-mt-12 rb-testimonials-carousel" },
|
|
12219
|
-
|
|
12220
|
-
|
|
12221
|
-
|
|
12222
|
-
|
|
12223
|
-
|
|
12224
|
-
|
|
12225
|
-
|
|
12226
|
-
|
|
12227
|
-
grid(
|
|
12228
|
-
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
|
|
12229
|
-
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12230
|
-
when("gridColumns", { equals: "3" })
|
|
12231
|
-
),
|
|
12232
|
-
// 4 columns
|
|
12233
|
-
grid(
|
|
12234
|
-
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
|
|
12235
|
-
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12236
|
-
when("gridColumns", { equals: "4" })
|
|
12237
|
-
),
|
|
12238
|
-
// Fallback to 3 columns when gridColumns is not set
|
|
12239
|
-
grid(
|
|
12240
|
-
{ gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
|
|
12241
|
-
[buildTestimonialCard(repeat("data.entries", "testimonial"))],
|
|
12242
|
-
when("gridColumns", { not: true })
|
|
12243
|
-
)
|
|
12244
|
-
]
|
|
12380
|
+
buildResponsiveGridCards()
|
|
12381
|
+
);
|
|
12382
|
+
}
|
|
12383
|
+
function buildGridCardsLayout(className) {
|
|
12384
|
+
return el(
|
|
12385
|
+
"div",
|
|
12386
|
+
{ className },
|
|
12387
|
+
buildResponsiveGridCards()
|
|
12245
12388
|
);
|
|
12246
12389
|
}
|
|
12247
12390
|
var grid, testimonialsCarouselFragment;
|
|
@@ -14477,7 +14620,7 @@ var init_form_interactive = __esm({
|
|
|
14477
14620
|
});
|
|
14478
14621
|
|
|
14479
14622
|
// ../blocks/src/lib/typeGuards.ts
|
|
14480
|
-
function
|
|
14623
|
+
function isRecord3(value) {
|
|
14481
14624
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
14482
14625
|
}
|
|
14483
14626
|
var init_typeGuards = __esm({
|
|
@@ -19373,6 +19516,46 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
19373
19516
|
auth: "user",
|
|
19374
19517
|
responseKind: "json"
|
|
19375
19518
|
},
|
|
19519
|
+
getSiteIconStyleGuide: {
|
|
19520
|
+
path: "/sites/{siteId}/settings/icon-style-guide",
|
|
19521
|
+
method: "GET",
|
|
19522
|
+
revalidate: 120,
|
|
19523
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
19524
|
+
auth: "user",
|
|
19525
|
+
responseKind: "json",
|
|
19526
|
+
errors: []
|
|
19527
|
+
},
|
|
19528
|
+
updateSiteIconStyleGuide: {
|
|
19529
|
+
path: "/sites/{siteId}/settings/icon-style-guide",
|
|
19530
|
+
method: "POST",
|
|
19531
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
19532
|
+
auth: "user",
|
|
19533
|
+
responseKind: "json",
|
|
19534
|
+
errors: []
|
|
19535
|
+
},
|
|
19536
|
+
regenerateSiteIconStyleGuide: {
|
|
19537
|
+
path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
|
|
19538
|
+
method: "POST",
|
|
19539
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
19540
|
+
auth: "user",
|
|
19541
|
+
responseKind: "json",
|
|
19542
|
+
errors: []
|
|
19543
|
+
},
|
|
19544
|
+
generateGeneratedIconSet: {
|
|
19545
|
+
path: "/sites/{siteId}/ai/generated-icons/generate",
|
|
19546
|
+
method: "POST",
|
|
19547
|
+
auth: "user",
|
|
19548
|
+
responseKind: "json",
|
|
19549
|
+
errors: []
|
|
19550
|
+
},
|
|
19551
|
+
applyGeneratedIconSet: {
|
|
19552
|
+
path: "/sites/{siteId}/ai/generated-icons/apply",
|
|
19553
|
+
method: "POST",
|
|
19554
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
19555
|
+
auth: "user",
|
|
19556
|
+
responseKind: "json",
|
|
19557
|
+
errors: []
|
|
19558
|
+
},
|
|
19376
19559
|
getSiteAiProfile: {
|
|
19377
19560
|
path: "/sites/{siteId}/settings/ai-site-profile",
|
|
19378
19561
|
method: "GET",
|
|
@@ -21148,6 +21331,14 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
21148
21331
|
auth: "public",
|
|
21149
21332
|
responseKind: "json"
|
|
21150
21333
|
},
|
|
21334
|
+
getGeneratedIconRenderAssets: {
|
|
21335
|
+
path: "/public/sites/{siteId}/generated-icon-assets",
|
|
21336
|
+
method: "POST",
|
|
21337
|
+
tags: [TAG_TEMPLATES.siteRoutableContent],
|
|
21338
|
+
auth: "public",
|
|
21339
|
+
responseKind: "json",
|
|
21340
|
+
errors: []
|
|
21341
|
+
},
|
|
21151
21342
|
// Resolve entry subroute by kind and URL segment
|
|
21152
21343
|
resolveEntrySubroute: {
|
|
21153
21344
|
path: "/public/sites/{siteId}/routing/subroutes/resolve",
|
|
@@ -22852,6 +23043,13 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
22852
23043
|
auth: "service",
|
|
22853
23044
|
responseKind: "json"
|
|
22854
23045
|
},
|
|
23046
|
+
sdkDeleteNavigationMenu: {
|
|
23047
|
+
path: "/sdk/{siteId}/navigation/{menuId}",
|
|
23048
|
+
method: "DELETE",
|
|
23049
|
+
auth: "service",
|
|
23050
|
+
responseKind: "json",
|
|
23051
|
+
errors: ["resource:not_found", "server:internal_error"]
|
|
23052
|
+
},
|
|
22855
23053
|
sdkUpsertTheme: {
|
|
22856
23054
|
path: "/sdk/{siteId}/theme",
|
|
22857
23055
|
method: "POST",
|
|
@@ -23619,6 +23817,370 @@ var linkSchema = z.union([
|
|
|
23619
23817
|
|
|
23620
23818
|
// ../blocks/src/system/manifest/fieldValidation/index.ts
|
|
23621
23819
|
init_schema2();
|
|
23820
|
+
|
|
23821
|
+
// ../blocks/src/system/icons/ids.ts
|
|
23822
|
+
var GENERATED_ICON_SET_ID_PATTERN = /^generated-icon-set:[a-z0-9][a-z0-9:_-]{0,107}$/u;
|
|
23823
|
+
var GENERATED_ICON_ASSET_ID_PATTERN = /^generated-icon-asset:[a-z0-9][a-z0-9:_-]{0,105}$/u;
|
|
23824
|
+
var SITE_ICON_STYLE_GUIDE_VERSION_ID_PATTERN = /^site-icon-style-guide:[a-f0-9]{16}$/u;
|
|
23825
|
+
function normalizeString(value) {
|
|
23826
|
+
if (typeof value !== "string") return null;
|
|
23827
|
+
const normalized = value.trim();
|
|
23828
|
+
return normalized.length > 0 ? normalized : null;
|
|
23829
|
+
}
|
|
23830
|
+
function unsafeAsGeneratedIconSetId(value) {
|
|
23831
|
+
return value;
|
|
23832
|
+
}
|
|
23833
|
+
function unsafeAsGeneratedIconAssetId(value) {
|
|
23834
|
+
return value;
|
|
23835
|
+
}
|
|
23836
|
+
function unsafeAsSiteIconStyleGuideVersionId(value) {
|
|
23837
|
+
return value;
|
|
23838
|
+
}
|
|
23839
|
+
function parseGeneratedIconSetId(value) {
|
|
23840
|
+
const normalized = normalizeString(value);
|
|
23841
|
+
return normalized !== null && GENERATED_ICON_SET_ID_PATTERN.test(normalized) ? unsafeAsGeneratedIconSetId(normalized) : null;
|
|
23842
|
+
}
|
|
23843
|
+
function parseGeneratedIconAssetId(value) {
|
|
23844
|
+
const normalized = normalizeString(value);
|
|
23845
|
+
return normalized !== null && GENERATED_ICON_ASSET_ID_PATTERN.test(normalized) ? unsafeAsGeneratedIconAssetId(normalized) : null;
|
|
23846
|
+
}
|
|
23847
|
+
function parseSiteIconStyleGuideVersionId(value) {
|
|
23848
|
+
if (typeof value !== "string") return null;
|
|
23849
|
+
const normalized = value.trim();
|
|
23850
|
+
return SITE_ICON_STYLE_GUIDE_VERSION_ID_PATTERN.test(normalized) ? unsafeAsSiteIconStyleGuideVersionId(normalized) : null;
|
|
23851
|
+
}
|
|
23852
|
+
|
|
23853
|
+
// ../blocks/src/system/icons/semantic.ts
|
|
23854
|
+
var SEMANTIC_ICON_IDS = [
|
|
23855
|
+
"protection-trust",
|
|
23856
|
+
"confidentiality",
|
|
23857
|
+
"care-support",
|
|
23858
|
+
"partnership",
|
|
23859
|
+
"warmth",
|
|
23860
|
+
"community",
|
|
23861
|
+
"personal-guidance",
|
|
23862
|
+
"conversation",
|
|
23863
|
+
"friendly-welcome",
|
|
23864
|
+
"insight-learning",
|
|
23865
|
+
"natural-wellbeing",
|
|
23866
|
+
"growth",
|
|
23867
|
+
"gentle-care",
|
|
23868
|
+
"special-touch",
|
|
23869
|
+
"ideas",
|
|
23870
|
+
"direction",
|
|
23871
|
+
"focus",
|
|
23872
|
+
"quality",
|
|
23873
|
+
"highlight",
|
|
23874
|
+
"verified-quality",
|
|
23875
|
+
"learning",
|
|
23876
|
+
"training",
|
|
23877
|
+
"programmes-dates",
|
|
23878
|
+
"place",
|
|
23879
|
+
"products",
|
|
23880
|
+
"packages",
|
|
23881
|
+
"time",
|
|
23882
|
+
"practical-service",
|
|
23883
|
+
"at-home",
|
|
23884
|
+
"worldwide",
|
|
23885
|
+
"professional-service"
|
|
23886
|
+
];
|
|
23887
|
+
var featurePreset = ["feature"];
|
|
23888
|
+
var SEMANTIC_ICON_DEFINITIONS = [
|
|
23889
|
+
{
|
|
23890
|
+
id: "protection-trust",
|
|
23891
|
+
label: "Protection and trust",
|
|
23892
|
+
tags: ["safe", "safety", "security", "trust", "privacy", "confidence"],
|
|
23893
|
+
domains: ["wellbeing", "services", "technology"],
|
|
23894
|
+
tone: ["trustworthy", "practical"],
|
|
23895
|
+
presets: featurePreset
|
|
23896
|
+
},
|
|
23897
|
+
{
|
|
23898
|
+
id: "confidentiality",
|
|
23899
|
+
label: "Confidentiality",
|
|
23900
|
+
tags: ["confidential", "privacy", "secure", "protected", "private"],
|
|
23901
|
+
domains: ["wellbeing", "coaching", "services", "technology"],
|
|
23902
|
+
tone: ["trustworthy", "calm"],
|
|
23903
|
+
presets: featurePreset
|
|
23904
|
+
},
|
|
23905
|
+
{
|
|
23906
|
+
id: "care-support",
|
|
23907
|
+
label: "Care and support",
|
|
23908
|
+
tags: ["care", "support", "therapy", "kindness", "help", "compassion"],
|
|
23909
|
+
domains: ["wellbeing", "coaching", "community"],
|
|
23910
|
+
tone: ["warm", "human"],
|
|
23911
|
+
presets: featurePreset
|
|
23912
|
+
},
|
|
23913
|
+
{
|
|
23914
|
+
id: "partnership",
|
|
23915
|
+
label: "Partnership",
|
|
23916
|
+
tags: ["partnership", "together", "support", "relationship", "collaboration"],
|
|
23917
|
+
domains: ["coaching", "community", "services"],
|
|
23918
|
+
tone: ["warm", "human", "trustworthy"],
|
|
23919
|
+
presets: featurePreset
|
|
23920
|
+
},
|
|
23921
|
+
{
|
|
23922
|
+
id: "warmth",
|
|
23923
|
+
label: "Warmth",
|
|
23924
|
+
tags: ["heart", "warmth", "care", "love", "wellbeing", "personal"],
|
|
23925
|
+
domains: ["wellbeing", "community", "hospitality"],
|
|
23926
|
+
tone: ["warm", "human"],
|
|
23927
|
+
presets: featurePreset
|
|
23928
|
+
},
|
|
23929
|
+
{
|
|
23930
|
+
id: "community",
|
|
23931
|
+
label: "Community",
|
|
23932
|
+
tags: ["community", "group", "people", "team", "members", "belonging"],
|
|
23933
|
+
domains: ["community", "education", "events"],
|
|
23934
|
+
tone: ["human", "warm"],
|
|
23935
|
+
presets: featurePreset
|
|
23936
|
+
},
|
|
23937
|
+
{
|
|
23938
|
+
id: "personal-guidance",
|
|
23939
|
+
label: "Personal guidance",
|
|
23940
|
+
tags: ["guidance", "personal", "coach", "expert", "one to one", "trusted"],
|
|
23941
|
+
domains: ["coaching", "services", "education"],
|
|
23942
|
+
tone: ["trustworthy", "human"],
|
|
23943
|
+
presets: featurePreset
|
|
23944
|
+
},
|
|
23945
|
+
{
|
|
23946
|
+
id: "conversation",
|
|
23947
|
+
label: "Conversation",
|
|
23948
|
+
tags: ["conversation", "talk", "chat", "communication", "support"],
|
|
23949
|
+
domains: ["coaching", "community", "services"],
|
|
23950
|
+
tone: ["human", "warm"],
|
|
23951
|
+
presets: featurePreset
|
|
23952
|
+
},
|
|
23953
|
+
{
|
|
23954
|
+
id: "friendly-welcome",
|
|
23955
|
+
label: "Friendly welcome",
|
|
23956
|
+
tags: ["friendly", "welcome", "positive", "happy", "approachable"],
|
|
23957
|
+
domains: ["hospitality", "community", "services"],
|
|
23958
|
+
tone: ["warm", "playful", "human"],
|
|
23959
|
+
presets: featurePreset
|
|
23960
|
+
},
|
|
23961
|
+
{
|
|
23962
|
+
id: "insight-learning",
|
|
23963
|
+
label: "Insight and learning",
|
|
23964
|
+
tags: ["mind", "insight", "learning", "clarity", "thinking", "therapy"],
|
|
23965
|
+
domains: ["wellbeing", "coaching", "education"],
|
|
23966
|
+
tone: ["calm", "practical"],
|
|
23967
|
+
presets: featurePreset
|
|
23968
|
+
},
|
|
23969
|
+
{
|
|
23970
|
+
id: "natural-wellbeing",
|
|
23971
|
+
label: "Natural wellbeing",
|
|
23972
|
+
tags: ["natural", "wellbeing", "growth", "eco", "calm", "organic"],
|
|
23973
|
+
domains: ["wellbeing", "hospitality", "creative"],
|
|
23974
|
+
tone: ["calm", "warm"],
|
|
23975
|
+
presets: featurePreset
|
|
23976
|
+
},
|
|
23977
|
+
{
|
|
23978
|
+
id: "growth",
|
|
23979
|
+
label: "Growth",
|
|
23980
|
+
tags: ["growth", "new", "progress", "development", "nurture"],
|
|
23981
|
+
domains: ["wellbeing", "coaching", "education", "community"],
|
|
23982
|
+
tone: ["warm", "calm"],
|
|
23983
|
+
presets: featurePreset
|
|
23984
|
+
},
|
|
23985
|
+
{
|
|
23986
|
+
id: "gentle-care",
|
|
23987
|
+
label: "Gentle care",
|
|
23988
|
+
tags: ["gentle", "soft", "care", "wellbeing", "beauty", "calm"],
|
|
23989
|
+
domains: ["wellbeing", "creative", "hospitality"],
|
|
23990
|
+
tone: ["warm", "calm", "premium"],
|
|
23991
|
+
presets: featurePreset
|
|
23992
|
+
},
|
|
23993
|
+
{
|
|
23994
|
+
id: "special-touch",
|
|
23995
|
+
label: "Special touch",
|
|
23996
|
+
tags: ["special", "sparkle", "magic", "polish", "delight", "creative"],
|
|
23997
|
+
domains: ["creative", "commerce", "hospitality"],
|
|
23998
|
+
tone: ["playful", "premium"],
|
|
23999
|
+
presets: featurePreset
|
|
24000
|
+
},
|
|
24001
|
+
{
|
|
24002
|
+
id: "ideas",
|
|
24003
|
+
label: "Ideas",
|
|
24004
|
+
tags: ["idea", "innovation", "clarity", "creative", "strategy"],
|
|
24005
|
+
domains: ["coaching", "education", "creative", "technology"],
|
|
24006
|
+
tone: ["practical", "playful"],
|
|
24007
|
+
presets: featurePreset
|
|
24008
|
+
},
|
|
24009
|
+
{
|
|
24010
|
+
id: "direction",
|
|
24011
|
+
label: "Direction",
|
|
24012
|
+
tags: ["direction", "navigation", "path", "journey", "guidance"],
|
|
24013
|
+
domains: ["coaching", "education", "services"],
|
|
24014
|
+
tone: ["trustworthy", "practical"],
|
|
24015
|
+
presets: featurePreset
|
|
24016
|
+
},
|
|
24017
|
+
{
|
|
24018
|
+
id: "focus",
|
|
24019
|
+
label: "Focus",
|
|
24020
|
+
tags: ["focus", "goal", "outcome", "aim", "strategy"],
|
|
24021
|
+
domains: ["coaching", "services", "technology"],
|
|
24022
|
+
tone: ["practical"],
|
|
24023
|
+
presets: featurePreset
|
|
24024
|
+
},
|
|
24025
|
+
{
|
|
24026
|
+
id: "quality",
|
|
24027
|
+
label: "Quality",
|
|
24028
|
+
tags: ["quality", "award", "standard", "achievement", "premium"],
|
|
24029
|
+
domains: ["services", "education", "commerce"],
|
|
24030
|
+
tone: ["premium", "trustworthy"],
|
|
24031
|
+
presets: featurePreset
|
|
24032
|
+
},
|
|
24033
|
+
{
|
|
24034
|
+
id: "highlight",
|
|
24035
|
+
label: "Highlight",
|
|
24036
|
+
tags: ["highlight", "featured", "favorite", "quality", "special"],
|
|
24037
|
+
domains: ["creative", "commerce", "services"],
|
|
24038
|
+
tone: ["playful", "premium"],
|
|
24039
|
+
presets: featurePreset
|
|
24040
|
+
},
|
|
24041
|
+
{
|
|
24042
|
+
id: "verified-quality",
|
|
24043
|
+
label: "Verified quality",
|
|
24044
|
+
tags: ["verified", "quality", "approved", "trusted", "check"],
|
|
24045
|
+
domains: ["services", "commerce", "education"],
|
|
24046
|
+
tone: ["trustworthy", "practical"],
|
|
24047
|
+
presets: featurePreset
|
|
24048
|
+
},
|
|
24049
|
+
{
|
|
24050
|
+
id: "learning",
|
|
24051
|
+
label: "Learning",
|
|
24052
|
+
tags: ["learning", "book", "course", "knowledge", "education"],
|
|
24053
|
+
domains: ["education", "coaching", "community"],
|
|
24054
|
+
tone: ["calm", "practical"],
|
|
24055
|
+
presets: featurePreset
|
|
24056
|
+
},
|
|
24057
|
+
{
|
|
24058
|
+
id: "training",
|
|
24059
|
+
label: "Training",
|
|
24060
|
+
tags: ["training", "course", "qualification", "school", "education"],
|
|
24061
|
+
domains: ["education", "coaching"],
|
|
24062
|
+
tone: ["trustworthy", "practical"],
|
|
24063
|
+
presets: featurePreset
|
|
24064
|
+
},
|
|
24065
|
+
{
|
|
24066
|
+
id: "programmes-dates",
|
|
24067
|
+
label: "Programmes and dates",
|
|
24068
|
+
tags: ["calendar", "dates", "schedule", "events", "programme", "classes"],
|
|
24069
|
+
domains: ["events", "education", "community"],
|
|
24070
|
+
tone: ["practical"],
|
|
24071
|
+
presets: featurePreset
|
|
24072
|
+
},
|
|
24073
|
+
{
|
|
24074
|
+
id: "place",
|
|
24075
|
+
label: "Place",
|
|
24076
|
+
tags: ["place", "location", "local", "venue", "destination"],
|
|
24077
|
+
domains: ["events", "hospitality", "services"],
|
|
24078
|
+
tone: ["practical"],
|
|
24079
|
+
presets: featurePreset
|
|
24080
|
+
},
|
|
24081
|
+
{
|
|
24082
|
+
id: "products",
|
|
24083
|
+
label: "Products",
|
|
24084
|
+
tags: ["products", "shop", "store", "retail", "commerce"],
|
|
24085
|
+
domains: ["commerce"],
|
|
24086
|
+
tone: ["practical", "premium"],
|
|
24087
|
+
presets: featurePreset
|
|
24088
|
+
},
|
|
24089
|
+
{
|
|
24090
|
+
id: "packages",
|
|
24091
|
+
label: "Packages",
|
|
24092
|
+
tags: ["package", "bundle", "delivery", "offer", "product"],
|
|
24093
|
+
domains: ["commerce", "services"],
|
|
24094
|
+
tone: ["practical"],
|
|
24095
|
+
presets: featurePreset
|
|
24096
|
+
},
|
|
24097
|
+
{
|
|
24098
|
+
id: "time",
|
|
24099
|
+
label: "Time",
|
|
24100
|
+
tags: ["time", "duration", "schedule", "availability", "appointment"],
|
|
24101
|
+
domains: ["events", "services", "wellbeing"],
|
|
24102
|
+
tone: ["practical", "calm"],
|
|
24103
|
+
presets: featurePreset
|
|
24104
|
+
},
|
|
24105
|
+
{
|
|
24106
|
+
id: "practical-service",
|
|
24107
|
+
label: "Practical service",
|
|
24108
|
+
tags: ["service", "repair", "setup", "practical", "tools", "support"],
|
|
24109
|
+
domains: ["services", "technology"],
|
|
24110
|
+
tone: ["practical"],
|
|
24111
|
+
presets: featurePreset
|
|
24112
|
+
},
|
|
24113
|
+
{
|
|
24114
|
+
id: "at-home",
|
|
24115
|
+
label: "At home",
|
|
24116
|
+
tags: ["home", "domestic", "comfort", "local", "space"],
|
|
24117
|
+
domains: ["hospitality", "services", "community"],
|
|
24118
|
+
tone: ["warm", "calm"],
|
|
24119
|
+
presets: featurePreset
|
|
24120
|
+
},
|
|
24121
|
+
{
|
|
24122
|
+
id: "worldwide",
|
|
24123
|
+
label: "Worldwide",
|
|
24124
|
+
tags: ["global", "online", "worldwide", "remote", "international"],
|
|
24125
|
+
domains: ["technology", "education", "services"],
|
|
24126
|
+
tone: ["practical"],
|
|
24127
|
+
presets: featurePreset
|
|
24128
|
+
},
|
|
24129
|
+
{
|
|
24130
|
+
id: "professional-service",
|
|
24131
|
+
label: "Professional service",
|
|
24132
|
+
tags: ["business", "professional", "consulting", "service", "work"],
|
|
24133
|
+
domains: ["services", "technology", "coaching"],
|
|
24134
|
+
tone: ["practical", "trustworthy"],
|
|
24135
|
+
presets: featurePreset
|
|
24136
|
+
}
|
|
24137
|
+
];
|
|
24138
|
+
SEMANTIC_ICON_DEFINITIONS.map(({ id, label }) => ({
|
|
24139
|
+
id,
|
|
24140
|
+
label
|
|
24141
|
+
}));
|
|
24142
|
+
function isSemanticIconId(value) {
|
|
24143
|
+
return typeof value === "string" && SEMANTIC_ICON_IDS.includes(value);
|
|
24144
|
+
}
|
|
24145
|
+
|
|
24146
|
+
// ../blocks/src/system/icons/value.ts
|
|
24147
|
+
var NO_BLOCK_ICON_VALUE = { kind: "none" };
|
|
24148
|
+
function isRecord(value) {
|
|
24149
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
24150
|
+
}
|
|
24151
|
+
function parseBlockIconValue(value) {
|
|
24152
|
+
if (isSemanticIconId(value)) {
|
|
24153
|
+
return { kind: "semantic", iconId: value };
|
|
24154
|
+
}
|
|
24155
|
+
if (!isRecord(value)) {
|
|
24156
|
+
return NO_BLOCK_ICON_VALUE;
|
|
24157
|
+
}
|
|
24158
|
+
switch (value.kind) {
|
|
24159
|
+
case "none":
|
|
24160
|
+
return NO_BLOCK_ICON_VALUE;
|
|
24161
|
+
case "semantic":
|
|
24162
|
+
return isSemanticIconId(value.iconId) ? { kind: "semantic", iconId: value.iconId } : NO_BLOCK_ICON_VALUE;
|
|
24163
|
+
case "generated": {
|
|
24164
|
+
const setId = parseGeneratedIconSetId(value.setId);
|
|
24165
|
+
const assetId = parseGeneratedIconAssetId(value.assetId);
|
|
24166
|
+
const styleGuideVersionId = parseSiteIconStyleGuideVersionId(value.styleGuideVersionId);
|
|
24167
|
+
if (setId !== null && assetId !== null && isSemanticIconId(value.semanticFallbackIconId) && styleGuideVersionId !== null) {
|
|
24168
|
+
return {
|
|
24169
|
+
kind: "generated",
|
|
24170
|
+
setId,
|
|
24171
|
+
assetId,
|
|
24172
|
+
semanticFallbackIconId: value.semanticFallbackIconId,
|
|
24173
|
+
styleGuideVersionId
|
|
24174
|
+
};
|
|
24175
|
+
}
|
|
24176
|
+
return NO_BLOCK_ICON_VALUE;
|
|
24177
|
+
}
|
|
24178
|
+
default:
|
|
24179
|
+
return NO_BLOCK_ICON_VALUE;
|
|
24180
|
+
}
|
|
24181
|
+
}
|
|
24182
|
+
|
|
24183
|
+
// ../blocks/src/system/manifest/fieldValidation/index.ts
|
|
23622
24184
|
var TEL_RE = /^[+()0-9\s-]{3,}$/;
|
|
23623
24185
|
var SLUG_PATTERN = /^(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/(?:[a-z0-9]+(?:-[a-z0-9]+)*))*$/;
|
|
23624
24186
|
var ALLOWED_URL_PROTOCOLS = ["http:", "https:"];
|
|
@@ -23707,7 +24269,7 @@ function deriveFieldValidationPlan(field, path24 = [field.id]) {
|
|
|
23707
24269
|
return makePlan("number", "number", field, path24, required, constraints2);
|
|
23708
24270
|
}
|
|
23709
24271
|
const constraints = commonConstraints(required, {
|
|
23710
|
-
kind: "textType"
|
|
24272
|
+
kind: field.ui?.widget === "iconPicker" ? "blockIconValue" : "textType"
|
|
23711
24273
|
});
|
|
23712
24274
|
if (inputType === "email") constraints.push({ kind: "emailFormat" });
|
|
23713
24275
|
if (inputType === "tel") constraints.push({ kind: "phoneFormat" });
|
|
@@ -24040,39 +24602,52 @@ function isMissingForPlan(plan, value) {
|
|
|
24040
24602
|
return false;
|
|
24041
24603
|
}
|
|
24042
24604
|
function validateStringPlan(plan, value) {
|
|
24605
|
+
if (plan.constraints.some((constraint) => constraint.kind === "blockIconValue")) {
|
|
24606
|
+
return plan.constraints.flatMap((constraint) => validateStringConstraint(plan, constraint, value));
|
|
24607
|
+
}
|
|
24043
24608
|
if (typeof value !== "string") return [issue(plan, "wrongType", { expected: "text" })];
|
|
24044
24609
|
return plan.constraints.flatMap((constraint) => validateStringConstraint(plan, constraint, value));
|
|
24045
24610
|
}
|
|
24046
24611
|
function validateStringConstraint(plan, constraint, value) {
|
|
24047
24612
|
switch (constraint.kind) {
|
|
24048
24613
|
case "required":
|
|
24614
|
+
return [];
|
|
24049
24615
|
case "textType":
|
|
24050
24616
|
case "referenceText":
|
|
24051
|
-
return [];
|
|
24617
|
+
return typeof value === "string" ? [] : [issue(plan, "wrongType", { expected: "text" })];
|
|
24618
|
+
case "blockIconValue":
|
|
24619
|
+
return isValidIconPickerValue(value) ? [] : [issue(plan, "wrongType", { expected: "text or icon" })];
|
|
24052
24620
|
case "maxLength":
|
|
24053
|
-
return value.length > constraint.maximum ? [issue(plan, "tooLong", { maximum: constraint.maximum })] : [];
|
|
24621
|
+
return typeof value === "string" && value.length > constraint.maximum ? [issue(plan, "tooLong", { maximum: constraint.maximum })] : [];
|
|
24054
24622
|
case "emailFormat":
|
|
24055
|
-
return isCanonicalEmailValue(value) ? [] : [issue(plan, "invalidEmail")];
|
|
24623
|
+
return typeof value === "string" && isCanonicalEmailValue(value) ? [] : [issue(plan, "invalidEmail")];
|
|
24056
24624
|
case "phoneFormat":
|
|
24057
|
-
return isCanonicalPhoneValue(value) ? [] : [issue(plan, "invalidPhone")];
|
|
24625
|
+
return typeof value === "string" && isCanonicalPhoneValue(value) ? [] : [issue(plan, "invalidPhone")];
|
|
24058
24626
|
case "patternFormat": {
|
|
24627
|
+
if (typeof value !== "string") return [issue(plan, "wrongType", { expected: "text" })];
|
|
24059
24628
|
const re = compilePattern(constraint.pattern);
|
|
24060
24629
|
return re && !re.test(value) ? [issue(plan, "invalidPattern")] : [];
|
|
24061
24630
|
}
|
|
24062
24631
|
case "urlFormat":
|
|
24063
|
-
return isCanonicalUrlValue(value, { allowRelative: constraint.allowRelative }) ? [] : [issue(plan, "invalidUrl")];
|
|
24632
|
+
return typeof value === "string" && isCanonicalUrlValue(value, { allowRelative: constraint.allowRelative }) ? [] : [issue(plan, "invalidUrl")];
|
|
24064
24633
|
case "dateFormat":
|
|
24065
|
-
return isValidDateString(value) ? [] : [issue(plan, "invalidDate")];
|
|
24634
|
+
return typeof value === "string" && isValidDateString(value) ? [] : [issue(plan, "invalidDate")];
|
|
24066
24635
|
case "timeFormat":
|
|
24067
|
-
return isValidTimeString(value) ? [] : [issue(plan, "invalidTime")];
|
|
24636
|
+
return typeof value === "string" && isValidTimeString(value) ? [] : [issue(plan, "invalidTime")];
|
|
24068
24637
|
case "datetimeFormat":
|
|
24069
|
-
return isValidDateTimeInstantString(value) ? [] : [issue(plan, "invalidDateTime")];
|
|
24638
|
+
return typeof value === "string" && isValidDateTimeInstantString(value) ? [] : [issue(plan, "invalidDateTime")];
|
|
24070
24639
|
case "slugFormat":
|
|
24071
|
-
return SLUG_PATTERN.test(value) ? [] : [issue(plan, "invalidSlug")];
|
|
24640
|
+
return typeof value === "string" && SLUG_PATTERN.test(value) ? [] : [issue(plan, "invalidSlug")];
|
|
24072
24641
|
default:
|
|
24073
24642
|
return assertNever2(constraint);
|
|
24074
24643
|
}
|
|
24075
24644
|
}
|
|
24645
|
+
function isValidIconPickerValue(value) {
|
|
24646
|
+
if (typeof value === "string") return true;
|
|
24647
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
24648
|
+
if (value.kind === "none") return true;
|
|
24649
|
+
return parseBlockIconValue(value).kind !== "none";
|
|
24650
|
+
}
|
|
24076
24651
|
function validateNumberPlan(plan, value) {
|
|
24077
24652
|
if (!isValidNumber(value)) return [issue(plan, "invalidNumber")];
|
|
24078
24653
|
return plan.constraints.flatMap((constraint) => validateNumberConstraint(plan, constraint, Number(value)));
|
|
@@ -25639,6 +26214,24 @@ var questionColumnsLayout = styledSection({
|
|
|
25639
26214
|
}),
|
|
25640
26215
|
baseClass: ""
|
|
25641
26216
|
});
|
|
26217
|
+
var splitHeadingColumnsLayout = styledSection({
|
|
26218
|
+
children: styledContainer({
|
|
26219
|
+
baseClassName: "rb-relative rb-isolate",
|
|
26220
|
+
children: el(
|
|
26221
|
+
"div",
|
|
26222
|
+
{
|
|
26223
|
+
className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
|
|
26224
|
+
},
|
|
26225
|
+
[
|
|
26226
|
+
el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
|
|
26227
|
+
el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
|
|
26228
|
+
questionColumnsAccordionLayout
|
|
26229
|
+
])
|
|
26230
|
+
]
|
|
26231
|
+
)
|
|
26232
|
+
}),
|
|
26233
|
+
baseClass: ""
|
|
26234
|
+
});
|
|
25642
26235
|
var faqManifest = createBlockManifest({
|
|
25643
26236
|
id: "block.faq",
|
|
25644
26237
|
title: "FAQ",
|
|
@@ -25659,7 +26252,8 @@ var faqManifest = createBlockManifest({
|
|
|
25659
26252
|
variants: {
|
|
25660
26253
|
default: defaultLayout,
|
|
25661
26254
|
"two-column": twoColumnLayout,
|
|
25662
|
-
"question-columns": questionColumnsLayout
|
|
26255
|
+
"question-columns": questionColumnsLayout,
|
|
26256
|
+
"split-heading-columns": splitHeadingColumnsLayout
|
|
25663
26257
|
},
|
|
25664
26258
|
defaultVariant: "default",
|
|
25665
26259
|
variantOptions: {
|
|
@@ -25674,6 +26268,10 @@ var faqManifest = createBlockManifest({
|
|
|
25674
26268
|
"question-columns": {
|
|
25675
26269
|
label: "Question columns",
|
|
25676
26270
|
description: "A full-width heading above FAQ items split into two columns."
|
|
26271
|
+
},
|
|
26272
|
+
"split-heading-columns": {
|
|
26273
|
+
label: "Split heading columns",
|
|
26274
|
+
description: "A left heading column with FAQ items split into two columns on the right."
|
|
25677
26275
|
}
|
|
25678
26276
|
},
|
|
25679
26277
|
description: "Accordion of frequently asked questions and answers.",
|
|
@@ -26912,16 +27510,16 @@ var interpolateRichTextTokensOptionsSchema = z.object({
|
|
|
26912
27510
|
var richTextTokenPattern = /\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g;
|
|
26913
27511
|
function getSiteName(context) {
|
|
26914
27512
|
const viewModel = context.viewModel;
|
|
26915
|
-
if (!
|
|
27513
|
+
if (!isRecord3(viewModel)) return null;
|
|
26916
27514
|
const site = viewModel.site;
|
|
26917
|
-
if (
|
|
27515
|
+
if (isRecord3(site) && typeof site.title === "string") {
|
|
26918
27516
|
const title = site.title.trim();
|
|
26919
27517
|
return title.length > 0 ? title : null;
|
|
26920
27518
|
}
|
|
26921
27519
|
const root = viewModel.$root;
|
|
26922
|
-
if (
|
|
27520
|
+
if (isRecord3(root)) {
|
|
26923
27521
|
const rootSite = root.site;
|
|
26924
|
-
if (
|
|
27522
|
+
if (isRecord3(rootSite) && typeof rootSite.title === "string") {
|
|
26925
27523
|
const title = rootSite.title.trim();
|
|
26926
27524
|
if (title.length > 0) return title;
|
|
26927
27525
|
}
|
|
@@ -26943,7 +27541,7 @@ function replaceTokenText(input, allowedTokens, tokenValues) {
|
|
|
26943
27541
|
});
|
|
26944
27542
|
}
|
|
26945
27543
|
function visitRichTextNode(node, allowedTokens, tokenValues) {
|
|
26946
|
-
if (!
|
|
27544
|
+
if (!isRecord3(node)) return node;
|
|
26947
27545
|
let changed = false;
|
|
26948
27546
|
const nextNode = { ...node };
|
|
26949
27547
|
if (nextNode.type === "text" && typeof nextNode.text === "string") {
|
|
@@ -26969,13 +27567,13 @@ function visitRichTextNode(node, allowedTokens, tokenValues) {
|
|
|
26969
27567
|
return changed ? nextNode : node;
|
|
26970
27568
|
}
|
|
26971
27569
|
function interpolateRichTextTokens(value, options, context) {
|
|
26972
|
-
if (!
|
|
27570
|
+
if (!isRecord3(value)) return value;
|
|
26973
27571
|
const allowedTokens = new Set(options.tokens);
|
|
26974
27572
|
const tokenValues = {
|
|
26975
27573
|
year: String((/* @__PURE__ */ new Date()).getFullYear()),
|
|
26976
27574
|
site_name: getSiteName(context)
|
|
26977
27575
|
};
|
|
26978
|
-
if (
|
|
27576
|
+
if (isRecord3(value.doc)) {
|
|
26979
27577
|
const nextDoc = visitRichTextNode(value.doc, allowedTokens, tokenValues);
|
|
26980
27578
|
if (nextDoc === value.doc) return value;
|
|
26981
27579
|
return { ...value, doc: nextDoc };
|
|
@@ -27774,6 +28372,8 @@ init_boxStyles();
|
|
|
27774
28372
|
init_defineBlock();
|
|
27775
28373
|
init_builder();
|
|
27776
28374
|
init_fragments2();
|
|
28375
|
+
init_colorStyles();
|
|
28376
|
+
var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
|
|
27777
28377
|
var wrapVariant = (variantLayout) => styledSection({
|
|
27778
28378
|
children: styledContainer({
|
|
27779
28379
|
children: stack(
|
|
@@ -27787,10 +28387,53 @@ var wrapVariant = (variantLayout) => styledSection({
|
|
|
27787
28387
|
// styledContainer (rb-container) already provides horizontal padding
|
|
27788
28388
|
baseClass: "",
|
|
27789
28389
|
spacing: "comfortable",
|
|
27790
|
-
imageClassName:
|
|
28390
|
+
imageClassName: backgroundImageClassName
|
|
27791
28391
|
});
|
|
27792
28392
|
var carouselLayout = wrapVariant(buildCarouselLayout());
|
|
27793
28393
|
var gridLayout2 = wrapVariant(buildGridLayout());
|
|
28394
|
+
var splitHeading = stack(
|
|
28395
|
+
{ gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
|
|
28396
|
+
[
|
|
28397
|
+
text(
|
|
28398
|
+
{ as: "h2" },
|
|
28399
|
+
when("content.heading"),
|
|
28400
|
+
bind("content.heading")
|
|
28401
|
+
),
|
|
28402
|
+
headingDecoration({
|
|
28403
|
+
family: "short-center-rule",
|
|
28404
|
+
placement: "after-heading"
|
|
28405
|
+
}),
|
|
28406
|
+
text(
|
|
28407
|
+
{
|
|
28408
|
+
as: "p",
|
|
28409
|
+
className: "rb-prose",
|
|
28410
|
+
style: textColorStyle("mutedText")
|
|
28411
|
+
},
|
|
28412
|
+
when("content.subheading"),
|
|
28413
|
+
bind("content.subheading")
|
|
28414
|
+
)
|
|
28415
|
+
]
|
|
28416
|
+
);
|
|
28417
|
+
var splitGridLayout = styledSection({
|
|
28418
|
+
children: styledContainer({
|
|
28419
|
+
baseClassName: "rb-relative rb-isolate",
|
|
28420
|
+
children: el(
|
|
28421
|
+
"div",
|
|
28422
|
+
{
|
|
28423
|
+
className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
|
|
28424
|
+
},
|
|
28425
|
+
[
|
|
28426
|
+
el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
|
|
28427
|
+
el("div", { className: "rb-testimonials-split-grid-cards" }, [
|
|
28428
|
+
buildGridCardsLayout("rb-testimonials-split-grid-card-list")
|
|
28429
|
+
])
|
|
28430
|
+
]
|
|
28431
|
+
)
|
|
28432
|
+
}),
|
|
28433
|
+
baseClass: "",
|
|
28434
|
+
spacing: "comfortable",
|
|
28435
|
+
imageClassName: backgroundImageClassName
|
|
28436
|
+
});
|
|
27794
28437
|
var additionalFields = parseFieldDefinitions([
|
|
27795
28438
|
// Heading fields from fragment
|
|
27796
28439
|
...testimonialsHeadingFragment.fields,
|
|
@@ -27822,7 +28465,7 @@ var additionalFields = parseFieldDefinitions([
|
|
|
27822
28465
|
],
|
|
27823
28466
|
ui: {
|
|
27824
28467
|
intent: "display",
|
|
27825
|
-
visibleWhen: { field: "variant",
|
|
28468
|
+
visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
|
|
27826
28469
|
}
|
|
27827
28470
|
},
|
|
27828
28471
|
// Carousel-specific fields (from fragment)
|
|
@@ -27856,7 +28499,8 @@ var testimonialsManifest = createBlockManifest({
|
|
|
27856
28499
|
// Variant system - enables the variant switcher control in the editor
|
|
27857
28500
|
variants: {
|
|
27858
28501
|
carousel: carouselLayout,
|
|
27859
|
-
grid: gridLayout2
|
|
28502
|
+
grid: gridLayout2,
|
|
28503
|
+
"split-grid": splitGridLayout
|
|
27860
28504
|
},
|
|
27861
28505
|
defaultVariant: "carousel",
|
|
27862
28506
|
variantOptions: {
|
|
@@ -27869,6 +28513,11 @@ var testimonialsManifest = createBlockManifest({
|
|
|
27869
28513
|
label: "Grid",
|
|
27870
28514
|
description: "Responsive grid layout",
|
|
27871
28515
|
icon: "Grid"
|
|
28516
|
+
},
|
|
28517
|
+
"split-grid": {
|
|
28518
|
+
label: "Split grid",
|
|
28519
|
+
description: "Heading on the left with testimonial cards on the right",
|
|
28520
|
+
icon: "PanelLeft"
|
|
27872
28521
|
}
|
|
27873
28522
|
},
|
|
27874
28523
|
// Fields (variant field is auto-generated by augmentManifest)
|
|
@@ -28283,6 +28932,15 @@ init_ctas();
|
|
|
28283
28932
|
init_builder();
|
|
28284
28933
|
init_fragments();
|
|
28285
28934
|
init_colorStyles();
|
|
28935
|
+
|
|
28936
|
+
// ../blocks/src/system/blocks/feature-card-icons.ts
|
|
28937
|
+
var FEATURE_CARD_ICON_TREATMENTS = [
|
|
28938
|
+
"plain",
|
|
28939
|
+
"soft-badge",
|
|
28940
|
+
"utility-badge"
|
|
28941
|
+
];
|
|
28942
|
+
|
|
28943
|
+
// ../blocks/src/system/blocks/feature-cards.ts
|
|
28286
28944
|
function grid3(props2, children) {
|
|
28287
28945
|
return el("grid", props2 ?? void 0, children ?? void 0);
|
|
28288
28946
|
}
|
|
@@ -28324,6 +28982,15 @@ var featureCard = styledCard(
|
|
|
28324
28982
|
bind("card.media")
|
|
28325
28983
|
),
|
|
28326
28984
|
stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
|
|
28985
|
+
el(
|
|
28986
|
+
"feature-card-icon",
|
|
28987
|
+
{
|
|
28988
|
+
treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
|
|
28989
|
+
generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
|
|
28990
|
+
},
|
|
28991
|
+
null,
|
|
28992
|
+
bind("card.icon")
|
|
28993
|
+
),
|
|
28327
28994
|
text(
|
|
28328
28995
|
{
|
|
28329
28996
|
as: "h3",
|
|
@@ -28445,6 +29112,16 @@ var featureCardsConfig = {
|
|
|
28445
29112
|
defaultValue: "4/3",
|
|
28446
29113
|
visibleWhen: { field: "media", notEquals: null }
|
|
28447
29114
|
}),
|
|
29115
|
+
{
|
|
29116
|
+
id: "icon",
|
|
29117
|
+
type: "text",
|
|
29118
|
+
label: "Icon",
|
|
29119
|
+
required: false,
|
|
29120
|
+
ui: {
|
|
29121
|
+
widget: "iconPicker",
|
|
29122
|
+
iconPickerPreset: "feature"
|
|
29123
|
+
}
|
|
29124
|
+
},
|
|
28448
29125
|
{
|
|
28449
29126
|
id: "title",
|
|
28450
29127
|
type: "text",
|
|
@@ -28480,6 +29157,19 @@ var featureCardsConfig = {
|
|
|
28480
29157
|
]
|
|
28481
29158
|
}
|
|
28482
29159
|
},
|
|
29160
|
+
{
|
|
29161
|
+
id: "_iconTreatment",
|
|
29162
|
+
type: "select",
|
|
29163
|
+
label: "Icon style",
|
|
29164
|
+
required: false,
|
|
29165
|
+
defaultValue: "soft-badge",
|
|
29166
|
+
multiple: false,
|
|
29167
|
+
options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
|
|
29168
|
+
value,
|
|
29169
|
+
label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
|
|
29170
|
+
})),
|
|
29171
|
+
ui: { intent: "display" }
|
|
29172
|
+
},
|
|
28483
29173
|
cardStylesField({
|
|
28484
29174
|
id: "_cardStyles",
|
|
28485
29175
|
label: "Card styles"
|
|
@@ -33818,7 +34508,8 @@ var systemBlockDefinitionsRaw = [
|
|
|
33818
34508
|
layoutProfiles: [
|
|
33819
34509
|
layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
|
|
33820
34510
|
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
|
|
33821
|
-
layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
|
|
34511
|
+
layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
|
|
34512
|
+
layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
|
|
33822
34513
|
]
|
|
33823
34514
|
})),
|
|
33824
34515
|
withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
|
|
@@ -33849,6 +34540,12 @@ var systemBlockDefinitionsRaw = [
|
|
|
33849
34540
|
family: "grid",
|
|
33850
34541
|
weight: "standard",
|
|
33851
34542
|
bias: "soft"
|
|
34543
|
+
}),
|
|
34544
|
+
layoutProfile({
|
|
34545
|
+
variantKey: "split-grid",
|
|
34546
|
+
family: "split",
|
|
34547
|
+
weight: "featured",
|
|
34548
|
+
bias: "soft"
|
|
33852
34549
|
})
|
|
33853
34550
|
]
|
|
33854
34551
|
})),
|
|
@@ -37392,7 +38089,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
|
|
|
37392
38089
|
}
|
|
37393
38090
|
|
|
37394
38091
|
// ../api/src/utils/isRecord.ts
|
|
37395
|
-
function
|
|
38092
|
+
function isRecord4(value) {
|
|
37396
38093
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
37397
38094
|
}
|
|
37398
38095
|
var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
|
|
@@ -37665,7 +38362,7 @@ function sanitizeMarks(marks) {
|
|
|
37665
38362
|
if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
|
|
37666
38363
|
return [{ type: mark.type }];
|
|
37667
38364
|
}
|
|
37668
|
-
if (mark.type === "link" &&
|
|
38365
|
+
if (mark.type === "link" && isRecord4(mark.attrs) && typeof mark.attrs.href === "string") {
|
|
37669
38366
|
const attrs = { href: mark.attrs.href };
|
|
37670
38367
|
if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
|
|
37671
38368
|
attrs.target = mark.attrs.target;
|
|
@@ -37680,10 +38377,10 @@ function sanitizeMarks(marks) {
|
|
|
37680
38377
|
return sanitized.length > 0 ? sanitized : void 0;
|
|
37681
38378
|
}
|
|
37682
38379
|
function unwrapRichTextValue(value) {
|
|
37683
|
-
if (
|
|
38380
|
+
if (isRecord4(value) && isRecord4(value.doc)) {
|
|
37684
38381
|
return unwrapRichTextValue(value.doc);
|
|
37685
38382
|
}
|
|
37686
|
-
if (
|
|
38383
|
+
if (isRecord4(value) && value.type === "doc") {
|
|
37687
38384
|
return {
|
|
37688
38385
|
type: "doc",
|
|
37689
38386
|
content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
|
|
@@ -37692,7 +38389,7 @@ function unwrapRichTextValue(value) {
|
|
|
37692
38389
|
return EMPTY_SITE_BANNER_BODY;
|
|
37693
38390
|
}
|
|
37694
38391
|
function isTipTapNodeLike(value) {
|
|
37695
|
-
return
|
|
38392
|
+
return isRecord4(value) && typeof value.type === "string";
|
|
37696
38393
|
}
|
|
37697
38394
|
function coerceTipTapNode(value) {
|
|
37698
38395
|
return {
|
|
@@ -37700,9 +38397,9 @@ function coerceTipTapNode(value) {
|
|
|
37700
38397
|
...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
|
|
37701
38398
|
...typeof value.text === "string" ? { text: value.text } : {},
|
|
37702
38399
|
...Array.isArray(value.marks) ? {
|
|
37703
|
-
marks: value.marks.filter((mark) =>
|
|
38400
|
+
marks: value.marks.filter((mark) => isRecord4(mark) && typeof mark.type === "string").map((mark) => ({
|
|
37704
38401
|
type: mark.type,
|
|
37705
|
-
...
|
|
38402
|
+
...isRecord4(mark.attrs) ? { attrs: mark.attrs } : {}
|
|
37706
38403
|
}))
|
|
37707
38404
|
} : {}
|
|
37708
38405
|
};
|
|
@@ -37818,7 +38515,7 @@ function collectCartLinkStats(items, depth = 0) {
|
|
|
37818
38515
|
return result;
|
|
37819
38516
|
}
|
|
37820
38517
|
function isNavigationMenuValidationItem(value) {
|
|
37821
|
-
if (!
|
|
38518
|
+
if (!isRecord4(value)) return false;
|
|
37822
38519
|
return typeof value.label === "string";
|
|
37823
38520
|
}
|
|
37824
38521
|
|
|
@@ -37834,7 +38531,6 @@ var websiteSurfaceIds = [
|
|
|
37834
38531
|
"site.footerBlocks",
|
|
37835
38532
|
"site.navigation",
|
|
37836
38533
|
"site.media",
|
|
37837
|
-
"site.style",
|
|
37838
38534
|
"site.performance"
|
|
37839
38535
|
];
|
|
37840
38536
|
new Set(
|
|
@@ -37854,6 +38550,104 @@ var hiddenDemoSettingsNavSurfaceIds = [
|
|
|
37854
38550
|
"settings.backup"
|
|
37855
38551
|
];
|
|
37856
38552
|
new Set(hiddenDemoSettingsNavSurfaceIds);
|
|
38553
|
+
|
|
38554
|
+
// ../api/src/navigation/identity.ts
|
|
38555
|
+
init_src();
|
|
38556
|
+
function unsafeAsNavigationMenuIdentifier(identifier) {
|
|
38557
|
+
return identifier;
|
|
38558
|
+
}
|
|
38559
|
+
function unsafeAsNavigationMenuIdentity(identity) {
|
|
38560
|
+
return identity;
|
|
38561
|
+
}
|
|
38562
|
+
var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
|
|
38563
|
+
function parseNavigationMenuIdentifier(value) {
|
|
38564
|
+
if (typeof value !== "string") {
|
|
38565
|
+
return err({ kind: "not_string" });
|
|
38566
|
+
}
|
|
38567
|
+
const trimmed = value.trim();
|
|
38568
|
+
if (trimmed.length === 0) {
|
|
38569
|
+
return err({ kind: "empty_string" });
|
|
38570
|
+
}
|
|
38571
|
+
return ok(unsafeAsNavigationMenuIdentifier(trimmed));
|
|
38572
|
+
}
|
|
38573
|
+
function normalizeNavigationMenuIdentifier(identifier) {
|
|
38574
|
+
const parsed = parseNavigationMenuIdentifier(identifier);
|
|
38575
|
+
return parsed.ok ? parsed.value : null;
|
|
38576
|
+
}
|
|
38577
|
+
function navigationMenuIdentity(input) {
|
|
38578
|
+
return unsafeAsNavigationMenuIdentity(
|
|
38579
|
+
normalizeNavigationMenuIdentifier(input.identifier) ?? input.name
|
|
38580
|
+
);
|
|
38581
|
+
}
|
|
38582
|
+
function planNavigationMenuMatch(input, menus) {
|
|
38583
|
+
const identifier = normalizeNavigationMenuIdentifier(input.identifier);
|
|
38584
|
+
if (identifier) {
|
|
38585
|
+
const identifierMatches = menus.filter(
|
|
38586
|
+
(menu) => normalizeNavigationMenuIdentifier(menu.identifier) === identifier
|
|
38587
|
+
);
|
|
38588
|
+
const identifierMatch = identifierMatches[0];
|
|
38589
|
+
if (identifierMatches.length === 1 && identifierMatch) {
|
|
38590
|
+
return {
|
|
38591
|
+
type: "update",
|
|
38592
|
+
menuId: identifierMatch.id,
|
|
38593
|
+
identifier
|
|
38594
|
+
};
|
|
38595
|
+
}
|
|
38596
|
+
if (identifierMatches.length > 1) {
|
|
38597
|
+
return {
|
|
38598
|
+
type: "identifier_conflict",
|
|
38599
|
+
identifier,
|
|
38600
|
+
menuIds: identifierMatches.map((menu) => menu.id)
|
|
38601
|
+
};
|
|
38602
|
+
}
|
|
38603
|
+
if (identifier === MAIN_NAVIGATION_MENU_IDENTIFIER) {
|
|
38604
|
+
const legacyPrimaryMatches = menus.filter(
|
|
38605
|
+
(menu) => menu.isPrimary && normalizeNavigationMenuIdentifier(menu.identifier) === null
|
|
38606
|
+
);
|
|
38607
|
+
const legacyPrimaryMatch = legacyPrimaryMatches[0];
|
|
38608
|
+
if (legacyPrimaryMatches.length === 1 && legacyPrimaryMatch) {
|
|
38609
|
+
return {
|
|
38610
|
+
type: "adopt_legacy_primary",
|
|
38611
|
+
menuId: legacyPrimaryMatch.id,
|
|
38612
|
+
identifier
|
|
38613
|
+
};
|
|
38614
|
+
}
|
|
38615
|
+
if (legacyPrimaryMatches.length > 1) {
|
|
38616
|
+
return {
|
|
38617
|
+
type: "ambiguous_legacy_primary",
|
|
38618
|
+
identifier,
|
|
38619
|
+
menuIds: legacyPrimaryMatches.map((menu) => menu.id)
|
|
38620
|
+
};
|
|
38621
|
+
}
|
|
38622
|
+
}
|
|
38623
|
+
return { type: "create", identifier };
|
|
38624
|
+
}
|
|
38625
|
+
const nameMatches = menus.filter((menu) => menu.name === input.name);
|
|
38626
|
+
const nameMatch = nameMatches[0];
|
|
38627
|
+
if (nameMatches.length === 1 && nameMatch) {
|
|
38628
|
+
return { type: "update", menuId: nameMatch.id, identifier: null };
|
|
38629
|
+
}
|
|
38630
|
+
if (nameMatches.length > 1) {
|
|
38631
|
+
return {
|
|
38632
|
+
type: "ambiguous_name",
|
|
38633
|
+
name: input.name,
|
|
38634
|
+
menuIds: nameMatches.map((menu) => menu.id)
|
|
38635
|
+
};
|
|
38636
|
+
}
|
|
38637
|
+
return { type: "create", identifier: null };
|
|
38638
|
+
}
|
|
38639
|
+
function actionableNavigationMenuMatchPlan(plan) {
|
|
38640
|
+
switch (plan.type) {
|
|
38641
|
+
case "create":
|
|
38642
|
+
case "update":
|
|
38643
|
+
case "adopt_legacy_primary":
|
|
38644
|
+
return ok(plan);
|
|
38645
|
+
case "identifier_conflict":
|
|
38646
|
+
case "ambiguous_legacy_primary":
|
|
38647
|
+
case "ambiguous_name":
|
|
38648
|
+
return err(plan);
|
|
38649
|
+
}
|
|
38650
|
+
}
|
|
37857
38651
|
var Rfc6902PatchOp = z.discriminatedUnion("op", [
|
|
37858
38652
|
// Standard RFC-6902 operations
|
|
37859
38653
|
z.object({
|
|
@@ -38967,20 +39761,20 @@ var ManagementApiError = class extends Error {
|
|
|
38967
39761
|
function is404Error(error) {
|
|
38968
39762
|
return error instanceof ManagementApiError && error.statusCode === 404;
|
|
38969
39763
|
}
|
|
38970
|
-
function
|
|
39764
|
+
function isRecord5(value) {
|
|
38971
39765
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
38972
39766
|
}
|
|
38973
39767
|
function isFieldError(value) {
|
|
38974
|
-
return
|
|
39768
|
+
return isRecord5(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
|
|
38975
39769
|
}
|
|
38976
39770
|
function parseApiResponse(value) {
|
|
38977
|
-
if (!
|
|
39771
|
+
if (!isRecord5(value)) return null;
|
|
38978
39772
|
if (value.success === true) {
|
|
38979
39773
|
return { success: true, data: value.data };
|
|
38980
39774
|
}
|
|
38981
39775
|
if (value.success === false) {
|
|
38982
39776
|
const error = value.error;
|
|
38983
|
-
if (!
|
|
39777
|
+
if (!isRecord5(error) || typeof error.code !== "string" || typeof error.message !== "string") {
|
|
38984
39778
|
return { success: false, error: { code: "sdk:http-error", message: "Request failed", details: error } };
|
|
38985
39779
|
}
|
|
38986
39780
|
const fieldErrorsRaw = error.fieldErrors;
|
|
@@ -39324,9 +40118,10 @@ function createNavigationOperations(http) {
|
|
|
39324
40118
|
async upsert(input) {
|
|
39325
40119
|
const result = await http.post("/navigation", input);
|
|
39326
40120
|
return mapPulledNavigationMenu({
|
|
39327
|
-
...result.menu
|
|
39328
|
-
|
|
39329
|
-
|
|
40121
|
+
...result.menu});
|
|
40122
|
+
},
|
|
40123
|
+
async delete(menuId) {
|
|
40124
|
+
await http.delete(`/navigation/${encodeURIComponent(menuId)}`);
|
|
39330
40125
|
}
|
|
39331
40126
|
};
|
|
39332
40127
|
}
|
|
@@ -40496,7 +41291,7 @@ function createListCommand(config2) {
|
|
|
40496
41291
|
|
|
40497
41292
|
// src/cli/push-config.ts
|
|
40498
41293
|
var DEFAULT_CONFIG_PATH = "./riverbank.config.ts";
|
|
40499
|
-
function
|
|
41294
|
+
function isRecord6(value) {
|
|
40500
41295
|
return typeof value === "object" && value !== null;
|
|
40501
41296
|
}
|
|
40502
41297
|
function parseErrorDetails(value) {
|
|
@@ -40504,10 +41299,10 @@ function parseErrorDetails(value) {
|
|
|
40504
41299
|
if (typeof value === "string") {
|
|
40505
41300
|
return { message: value };
|
|
40506
41301
|
}
|
|
40507
|
-
if (!
|
|
41302
|
+
if (!isRecord6(value)) return {};
|
|
40508
41303
|
const message = typeof value.message === "string" ? value.message : void 0;
|
|
40509
41304
|
const fieldErrorsRaw = value.fieldErrors;
|
|
40510
|
-
const fieldErrors = Array.isArray(fieldErrorsRaw) ? fieldErrorsRaw.filter(
|
|
41305
|
+
const fieldErrors = Array.isArray(fieldErrorsRaw) ? fieldErrorsRaw.filter(isRecord6).map((d) => ({
|
|
40511
41306
|
field: typeof d.field === "string" ? d.field : "",
|
|
40512
41307
|
message: typeof d.message === "string" ? d.message : ""
|
|
40513
41308
|
})).filter((d) => d.field.length > 0 && d.message.length > 0) : void 0;
|
|
@@ -40519,12 +41314,12 @@ function formatFieldErrors(fieldErrors) {
|
|
|
40519
41314
|
}
|
|
40520
41315
|
function getDashboardErrorMessage(responseJson, fallback) {
|
|
40521
41316
|
if (!responseJson) return fallback;
|
|
40522
|
-
if (
|
|
41317
|
+
if (isRecord6(responseJson) && responseJson.success === false && "error" in responseJson) {
|
|
40523
41318
|
const parsed = parseErrorDetails(responseJson.error);
|
|
40524
41319
|
const msg = parsed.message ?? fallback;
|
|
40525
41320
|
return msg + formatFieldErrors(parsed.fieldErrors);
|
|
40526
41321
|
}
|
|
40527
|
-
if (
|
|
41322
|
+
if (isRecord6(responseJson) && "error" in responseJson) {
|
|
40528
41323
|
const parsed = parseErrorDetails(responseJson.error);
|
|
40529
41324
|
const msg = parsed.message ?? fallback;
|
|
40530
41325
|
return msg + formatFieldErrors(parsed.fieldErrors);
|
|
@@ -40882,9 +41677,34 @@ function convertPulledFooterToLocal(remoteFooter) {
|
|
|
40882
41677
|
return { bottomText: remoteFooter.bottomText };
|
|
40883
41678
|
}
|
|
40884
41679
|
|
|
41680
|
+
// src/cli/navigationIdentity.ts
|
|
41681
|
+
init_src();
|
|
41682
|
+
var navigationIdentity = navigationMenuIdentity;
|
|
41683
|
+
function navigationIdentityMap(menus) {
|
|
41684
|
+
const byIdentity = /* @__PURE__ */ new Map();
|
|
41685
|
+
const menuNamesByIdentity = /* @__PURE__ */ new Map();
|
|
41686
|
+
for (const menu of menus) {
|
|
41687
|
+
const identity = navigationIdentity(menu);
|
|
41688
|
+
const existingNames = menuNamesByIdentity.get(identity);
|
|
41689
|
+
if (existingNames) {
|
|
41690
|
+
return err({
|
|
41691
|
+
code: "duplicate_navigation_identity",
|
|
41692
|
+
identity,
|
|
41693
|
+
menuNames: [...existingNames, menu.name]
|
|
41694
|
+
});
|
|
41695
|
+
}
|
|
41696
|
+
byIdentity.set(identity, menu);
|
|
41697
|
+
menuNamesByIdentity.set(identity, [menu.name]);
|
|
41698
|
+
}
|
|
41699
|
+
return ok(byIdentity);
|
|
41700
|
+
}
|
|
41701
|
+
function duplicateNavigationIdentityMessage(error) {
|
|
41702
|
+
return `Duplicate navigation menu identity '${error.identity}' for menus: ${error.menuNames.join(", ")}. Use unique navigation identifiers or names before syncing.`;
|
|
41703
|
+
}
|
|
41704
|
+
|
|
40885
41705
|
// src/cli/media/portable.ts
|
|
40886
41706
|
var ENV_SPECIFIC_MEDIA_KEYS = ["assetId", "storagePath", "storageBucket"];
|
|
40887
|
-
var
|
|
41707
|
+
var isRecord7 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
40888
41708
|
var isMediaObject = (value) => value.type === "image" || value.type === "video";
|
|
40889
41709
|
function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
40890
41710
|
if (value === null || value === void 0) return;
|
|
@@ -40894,7 +41714,7 @@ function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
|
40894
41714
|
}
|
|
40895
41715
|
return;
|
|
40896
41716
|
}
|
|
40897
|
-
if (!
|
|
41717
|
+
if (!isRecord7(value)) return;
|
|
40898
41718
|
if (isMediaObject(value)) {
|
|
40899
41719
|
const hasCmsRef = typeof value.identifier === "string" || typeof value.assetId === "string" || typeof value.storagePath === "string" || typeof value.storageBucket === "string";
|
|
40900
41720
|
for (const key of ENV_SPECIFIC_MEDIA_KEYS) {
|
|
@@ -40905,7 +41725,7 @@ function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
|
40905
41725
|
}
|
|
40906
41726
|
delete value.mimeType;
|
|
40907
41727
|
}
|
|
40908
|
-
if (value.type === "image" &&
|
|
41728
|
+
if (value.type === "image" && isRecord7(value.attrs)) {
|
|
40909
41729
|
const attrs = value.attrs;
|
|
40910
41730
|
const hasIdentifier = typeof attrs.identifier === "string" && attrs.identifier.trim().length > 0;
|
|
40911
41731
|
if (hasIdentifier) {
|
|
@@ -41076,11 +41896,11 @@ function entryFilePath(input) {
|
|
|
41076
41896
|
}
|
|
41077
41897
|
|
|
41078
41898
|
// src/cli/content/writer.ts
|
|
41079
|
-
function
|
|
41899
|
+
function isRecord8(value) {
|
|
41080
41900
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
41081
41901
|
}
|
|
41082
41902
|
function parseThemeMeta(value) {
|
|
41083
|
-
if (!
|
|
41903
|
+
if (!isRecord8(value) || typeof value.pulledAt !== "string" || !isRecord8(value.themes)) {
|
|
41084
41904
|
return null;
|
|
41085
41905
|
}
|
|
41086
41906
|
return { pulledAt: value.pulledAt, themes: value.themes };
|
|
@@ -41210,7 +42030,7 @@ async function writeNavigation(contentDir, pulledNavigation, options) {
|
|
|
41210
42030
|
await writeJsonFile(filePath, localNavigation);
|
|
41211
42031
|
const menusMeta = {};
|
|
41212
42032
|
for (const menu of pulledNavigation.menus) {
|
|
41213
|
-
menusMeta[menu
|
|
42033
|
+
menusMeta[navigationIdentity(menu)] = {
|
|
41214
42034
|
createdAt: menu.createdAt,
|
|
41215
42035
|
updatedAt: menu.updatedAt
|
|
41216
42036
|
};
|
|
@@ -41519,7 +42339,7 @@ async function updateMetadataAfterPush(contentDir, remoteContent) {
|
|
|
41519
42339
|
const metaPath = path5.join(metaDir, "navigation.json");
|
|
41520
42340
|
const menusMeta = {};
|
|
41521
42341
|
for (const menu of remoteContent.navigation) {
|
|
41522
|
-
menusMeta[menu
|
|
42342
|
+
menusMeta[navigationIdentity(menu)] = {
|
|
41523
42343
|
createdAt: menu.createdAt,
|
|
41524
42344
|
updatedAt: menu.updatedAt
|
|
41525
42345
|
};
|
|
@@ -42466,9 +43286,9 @@ async function localMediaFileExists(filePath) {
|
|
|
42466
43286
|
}
|
|
42467
43287
|
|
|
42468
43288
|
// src/cli/media/identifiers.ts
|
|
42469
|
-
var
|
|
43289
|
+
var isRecord9 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
42470
43290
|
var isMediaValue = (value) => {
|
|
42471
|
-
if (!
|
|
43291
|
+
if (!isRecord9(value)) return false;
|
|
42472
43292
|
const type = value.type;
|
|
42473
43293
|
if (type !== "image" && type !== "video" && type !== "audio" && type !== "document" && type !== "spreadsheet" && type !== "archive") return false;
|
|
42474
43294
|
return typeof value.identifier === "string" || typeof value.assetId === "string" || typeof value.storagePath === "string" || typeof value.src === "string";
|
|
@@ -42483,7 +43303,7 @@ var walkMediaValues = (value, location2, handler) => {
|
|
|
42483
43303
|
});
|
|
42484
43304
|
return;
|
|
42485
43305
|
}
|
|
42486
|
-
if (
|
|
43306
|
+
if (isRecord9(value)) {
|
|
42487
43307
|
Object.entries(value).forEach(([key, entry]) => {
|
|
42488
43308
|
walkMediaValues(entry, location2 ? `${location2}.${key}` : key, handler);
|
|
42489
43309
|
});
|
|
@@ -42591,7 +43411,7 @@ var normalizeMediaValueToIdentifierOnly = (value, identifier, asset) => {
|
|
|
42591
43411
|
};
|
|
42592
43412
|
|
|
42593
43413
|
// src/cli/media/rich-text.ts
|
|
42594
|
-
var
|
|
43414
|
+
var isRecord10 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
42595
43415
|
function collectRichTextImageAttrs(value, out = [], location2 = "") {
|
|
42596
43416
|
if (Array.isArray(value)) {
|
|
42597
43417
|
value.forEach(
|
|
@@ -42599,8 +43419,8 @@ function collectRichTextImageAttrs(value, out = [], location2 = "") {
|
|
|
42599
43419
|
);
|
|
42600
43420
|
return out;
|
|
42601
43421
|
}
|
|
42602
|
-
if (!
|
|
42603
|
-
if (value.type === "image" &&
|
|
43422
|
+
if (!isRecord10(value)) return out;
|
|
43423
|
+
if (value.type === "image" && isRecord10(value.attrs)) {
|
|
42604
43424
|
out.push({ attrs: value.attrs, location: location2 ? `${location2}.attrs` : "attrs" });
|
|
42605
43425
|
}
|
|
42606
43426
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -43453,15 +44273,78 @@ function determineStatusChange(localStatus, remoteStatus) {
|
|
|
43453
44273
|
}
|
|
43454
44274
|
return void 0;
|
|
43455
44275
|
}
|
|
44276
|
+
function findRemoteNavigationMenuForLocal(localMenu, remoteNavigation) {
|
|
44277
|
+
const plan = actionableNavigationMenuMatchPlan(
|
|
44278
|
+
planNavigationMenuMatch(localMenu, remoteNavigationMatchCandidates(remoteNavigation))
|
|
44279
|
+
);
|
|
44280
|
+
const menuId = plan.ok ? matchedNavigationMenuId(plan.value) : void 0;
|
|
44281
|
+
if (!menuId) return void 0;
|
|
44282
|
+
return remoteNavigation.find((menu) => remoteNavigationCandidateId(menu) === menuId);
|
|
44283
|
+
}
|
|
44284
|
+
function findLocalNavigationMenuForRemote(remoteMenu, localNavigation) {
|
|
44285
|
+
const localMenus = localNavigation?.menus ?? [];
|
|
44286
|
+
const directPlan = actionableNavigationMenuMatchPlan(
|
|
44287
|
+
planNavigationMenuMatch(remoteMenu, localNavigationMatchCandidates(localMenus))
|
|
44288
|
+
);
|
|
44289
|
+
const directMenuId = directPlan.ok ? matchedNavigationMenuId(directPlan.value) : void 0;
|
|
44290
|
+
if (directMenuId) {
|
|
44291
|
+
return localMenus.find((menu) => navigationIdentity(menu) === directMenuId);
|
|
44292
|
+
}
|
|
44293
|
+
if (!remoteMenu.isPrimary || remoteMenu.identifier !== null) return void 0;
|
|
44294
|
+
const legacyMainPlan = actionableNavigationMenuMatchPlan(
|
|
44295
|
+
planNavigationMenuMatch(
|
|
44296
|
+
{ identifier: "main", name: remoteMenu.name },
|
|
44297
|
+
localNavigationMatchCandidates(localMenus)
|
|
44298
|
+
)
|
|
44299
|
+
);
|
|
44300
|
+
const legacyMainMenuId = legacyMainPlan.ok ? matchedNavigationMenuId(legacyMainPlan.value) : void 0;
|
|
44301
|
+
if (!legacyMainMenuId) return void 0;
|
|
44302
|
+
return localMenus.find((menu) => navigationIdentity(menu) === legacyMainMenuId);
|
|
44303
|
+
}
|
|
44304
|
+
function matchedNavigationMenuId(plan) {
|
|
44305
|
+
switch (plan.type) {
|
|
44306
|
+
case "create":
|
|
44307
|
+
return void 0;
|
|
44308
|
+
case "update":
|
|
44309
|
+
case "adopt_legacy_primary":
|
|
44310
|
+
return plan.menuId;
|
|
44311
|
+
}
|
|
44312
|
+
}
|
|
44313
|
+
function localNavigationMatchCandidates(menus) {
|
|
44314
|
+
return menus.map((menu) => ({
|
|
44315
|
+
id: navigationIdentity(menu),
|
|
44316
|
+
identifier: menu.identifier,
|
|
44317
|
+
name: menu.name,
|
|
44318
|
+
isPrimary: menu.isPrimary ?? false
|
|
44319
|
+
}));
|
|
44320
|
+
}
|
|
44321
|
+
function remoteNavigationMatchCandidates(menus) {
|
|
44322
|
+
return menus.map((menu) => ({
|
|
44323
|
+
id: remoteNavigationCandidateId(menu),
|
|
44324
|
+
identifier: menu.identifier,
|
|
44325
|
+
name: menu.name,
|
|
44326
|
+
isPrimary: menu.isPrimary
|
|
44327
|
+
}));
|
|
44328
|
+
}
|
|
44329
|
+
function remoteNavigationCandidateId(menu) {
|
|
44330
|
+
return menu.id ?? navigationIdentity(menu);
|
|
44331
|
+
}
|
|
43456
44332
|
function buildJsonDiff(diff, local, remote, mode) {
|
|
43457
44333
|
const summary = { creates: 0, updates: 0, deletes: 0, publishes: 0, unpublishes: 0 };
|
|
43458
44334
|
const changes = [];
|
|
44335
|
+
const warnings = [];
|
|
43459
44336
|
const localPages = new Map(local.pages.map((page) => [page.identifier, page]));
|
|
43460
44337
|
const remotePages = new Map(remote.pages.map((page) => [page.identifier, page]));
|
|
43461
44338
|
const localEntries = local.entries;
|
|
43462
44339
|
const remoteEntries = remote.entries;
|
|
43463
|
-
const localMenus =
|
|
43464
|
-
const remoteMenus =
|
|
44340
|
+
const localMenus = navigationIdentityMap(local.navigation?.menus ?? []);
|
|
44341
|
+
const remoteMenus = navigationIdentityMap(remote.navigation);
|
|
44342
|
+
if (!localMenus.ok) {
|
|
44343
|
+
warnings.push(jsonDiffDuplicateNavigationIdentityWarning("local", localMenus.error));
|
|
44344
|
+
}
|
|
44345
|
+
if (!remoteMenus.ok) {
|
|
44346
|
+
warnings.push(jsonDiffDuplicateNavigationIdentityWarning("remote", remoteMenus.error));
|
|
44347
|
+
}
|
|
43465
44348
|
const localForms = new Map(local.forms.map((form2) => [form2.slug, form2]));
|
|
43466
44349
|
const remoteForms = new Map(remote.forms.map((form2) => [form2.slug, form2]));
|
|
43467
44350
|
const addChange = (change) => {
|
|
@@ -43546,9 +44429,9 @@ function buildJsonDiff(diff, local, remote, mode) {
|
|
|
43546
44429
|
for (const navDiff of diff.navigation) {
|
|
43547
44430
|
if (navDiff.type === "unchanged") continue;
|
|
43548
44431
|
if (navDiff.type !== "create" && navDiff.type !== "update") continue;
|
|
43549
|
-
const identifier = navDiff
|
|
43550
|
-
const localMenu = localMenus.get(
|
|
43551
|
-
const remoteMenu = remoteMenus.get(
|
|
44432
|
+
const identifier = navigationIdentity(navDiff);
|
|
44433
|
+
const localMenu = localMenus.ok ? localMenus.value.get(identifier) : void 0;
|
|
44434
|
+
const remoteMenu = localMenu ? findRemoteNavigationMenuForLocal(localMenu, remote.navigation) : remoteMenus.ok ? remoteMenus.value.get(identifier) : void 0;
|
|
43552
44435
|
const change = {
|
|
43553
44436
|
type: "navigation",
|
|
43554
44437
|
identifier,
|
|
@@ -43592,7 +44475,20 @@ function buildJsonDiff(diff, local, remote, mode) {
|
|
|
43592
44475
|
}
|
|
43593
44476
|
addChange(change);
|
|
43594
44477
|
}
|
|
43595
|
-
return {
|
|
44478
|
+
return {
|
|
44479
|
+
summary,
|
|
44480
|
+
changes,
|
|
44481
|
+
...warnings.length > 0 ? { warnings } : {}
|
|
44482
|
+
};
|
|
44483
|
+
}
|
|
44484
|
+
function jsonDiffDuplicateNavigationIdentityWarning(source, error) {
|
|
44485
|
+
return {
|
|
44486
|
+
type: "duplicate_navigation_identity",
|
|
44487
|
+
source,
|
|
44488
|
+
identity: error.identity,
|
|
44489
|
+
menuNames: error.menuNames,
|
|
44490
|
+
message: duplicateNavigationIdentityMessage(error)
|
|
44491
|
+
};
|
|
43596
44492
|
}
|
|
43597
44493
|
function calculateEntryDiffs(localEntries, remoteEntries, options) {
|
|
43598
44494
|
const diffs = /* @__PURE__ */ new Map();
|
|
@@ -43853,20 +44749,23 @@ function calculateNavigationDiffs(localNavigation, remoteNavigation) {
|
|
|
43853
44749
|
if (!localNavigation || !localNavigation.menus) {
|
|
43854
44750
|
return { diffs, summary };
|
|
43855
44751
|
}
|
|
43856
|
-
const remoteLookup = /* @__PURE__ */ new Map();
|
|
43857
|
-
for (const menu of remoteNavigation) {
|
|
43858
|
-
remoteLookup.set(menu.name, menu);
|
|
43859
|
-
}
|
|
43860
44752
|
for (const localMenu of localNavigation.menus) {
|
|
43861
|
-
const remoteMenu =
|
|
44753
|
+
const remoteMenu = findRemoteNavigationMenuForLocal(
|
|
44754
|
+
localMenu,
|
|
44755
|
+
remoteNavigation
|
|
44756
|
+
);
|
|
43862
44757
|
if (!remoteMenu) {
|
|
43863
44758
|
diffs.push({
|
|
43864
44759
|
type: "create",
|
|
44760
|
+
identifier: localMenu.identifier,
|
|
43865
44761
|
name: localMenu.name
|
|
43866
44762
|
});
|
|
43867
44763
|
summary.create++;
|
|
43868
44764
|
} else {
|
|
43869
44765
|
const changes = [];
|
|
44766
|
+
if (localMenu.name !== remoteMenu.name) {
|
|
44767
|
+
changes.push("name");
|
|
44768
|
+
}
|
|
43870
44769
|
if (!equal(localMenu.items, stripNavigationItemIds(remoteMenu.items))) {
|
|
43871
44770
|
changes.push("items");
|
|
43872
44771
|
}
|
|
@@ -43879,6 +44778,7 @@ function calculateNavigationDiffs(localNavigation, remoteNavigation) {
|
|
|
43879
44778
|
if (changes.length > 0) {
|
|
43880
44779
|
diffs.push({
|
|
43881
44780
|
type: "update",
|
|
44781
|
+
identifier: localMenu.identifier,
|
|
43882
44782
|
name: localMenu.name,
|
|
43883
44783
|
changes
|
|
43884
44784
|
});
|
|
@@ -43886,6 +44786,7 @@ function calculateNavigationDiffs(localNavigation, remoteNavigation) {
|
|
|
43886
44786
|
} else {
|
|
43887
44787
|
diffs.push({
|
|
43888
44788
|
type: "unchanged",
|
|
44789
|
+
identifier: localMenu.identifier,
|
|
43889
44790
|
name: localMenu.name
|
|
43890
44791
|
});
|
|
43891
44792
|
summary.unchanged++;
|
|
@@ -44270,19 +45171,23 @@ function calculatePullDiff(remote, local) {
|
|
|
44270
45171
|
}
|
|
44271
45172
|
const navDiffs = [];
|
|
44272
45173
|
const navSummary = { create: 0, update: 0, unchanged: 0 };
|
|
44273
|
-
const localNavLookup = /* @__PURE__ */ new Map();
|
|
44274
|
-
if (local?.navigation?.menus) {
|
|
44275
|
-
for (const menu of local.navigation.menus) {
|
|
44276
|
-
localNavLookup.set(menu.name, menu);
|
|
44277
|
-
}
|
|
44278
|
-
}
|
|
44279
45174
|
for (const remoteMenu of remote.navigation) {
|
|
44280
|
-
const localMenu =
|
|
45175
|
+
const localMenu = findLocalNavigationMenuForRemote(
|
|
45176
|
+
remoteMenu,
|
|
45177
|
+
local?.navigation ?? null
|
|
45178
|
+
);
|
|
44281
45179
|
if (!localMenu) {
|
|
44282
|
-
navDiffs.push({
|
|
45180
|
+
navDiffs.push({
|
|
45181
|
+
type: "create",
|
|
45182
|
+
identifier: remoteMenu.identifier,
|
|
45183
|
+
name: remoteMenu.name
|
|
45184
|
+
});
|
|
44283
45185
|
navSummary.create++;
|
|
44284
45186
|
} else {
|
|
44285
45187
|
const changes = [];
|
|
45188
|
+
if (localMenu.name !== remoteMenu.name) {
|
|
45189
|
+
changes.push("name");
|
|
45190
|
+
}
|
|
44286
45191
|
if (!equal(stripNavigationItemIds(remoteMenu.items), localMenu.items)) {
|
|
44287
45192
|
changes.push("items");
|
|
44288
45193
|
}
|
|
@@ -44293,10 +45198,19 @@ function calculatePullDiff(remote, local) {
|
|
|
44293
45198
|
changes.push("isFooter");
|
|
44294
45199
|
}
|
|
44295
45200
|
if (changes.length > 0) {
|
|
44296
|
-
navDiffs.push({
|
|
45201
|
+
navDiffs.push({
|
|
45202
|
+
type: "update",
|
|
45203
|
+
identifier: remoteMenu.identifier,
|
|
45204
|
+
name: remoteMenu.name,
|
|
45205
|
+
changes
|
|
45206
|
+
});
|
|
44297
45207
|
navSummary.update++;
|
|
44298
45208
|
} else {
|
|
44299
|
-
navDiffs.push({
|
|
45209
|
+
navDiffs.push({
|
|
45210
|
+
type: "unchanged",
|
|
45211
|
+
identifier: remoteMenu.identifier,
|
|
45212
|
+
name: remoteMenu.name
|
|
45213
|
+
});
|
|
44300
45214
|
navSummary.unchanged++;
|
|
44301
45215
|
}
|
|
44302
45216
|
}
|
|
@@ -45234,12 +46148,17 @@ function buildPullJsonDiff(diff, remoteContent, localContent, mode) {
|
|
|
45234
46148
|
}
|
|
45235
46149
|
for (const navDiff of diff.navigation) {
|
|
45236
46150
|
if (navDiff.type === "unchanged") continue;
|
|
45237
|
-
const
|
|
45238
|
-
const
|
|
46151
|
+
const navIdentifier = navigationIdentity(navDiff);
|
|
46152
|
+
const remoteMenu = remoteContent.navigation.find(
|
|
46153
|
+
(m) => navigationIdentity(m) === navIdentifier
|
|
46154
|
+
);
|
|
46155
|
+
const localMenu = localContent?.navigation?.menus.find(
|
|
46156
|
+
(m) => navigationIdentity(m) === navIdentifier
|
|
46157
|
+
);
|
|
45239
46158
|
changes.push({
|
|
45240
46159
|
type: "navigation",
|
|
45241
46160
|
operation: navDiff.type,
|
|
45242
|
-
identifier:
|
|
46161
|
+
identifier: navIdentifier,
|
|
45243
46162
|
before: localMenu ?? null,
|
|
45244
46163
|
after: remoteMenu ?? null
|
|
45245
46164
|
});
|
|
@@ -46413,11 +47332,11 @@ function normalizeLocalContentShape(content) {
|
|
|
46413
47332
|
function nullishToNull(value) {
|
|
46414
47333
|
return value == null ? null : value;
|
|
46415
47334
|
}
|
|
46416
|
-
function
|
|
47335
|
+
function isRecord11(value) {
|
|
46417
47336
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46418
47337
|
}
|
|
46419
47338
|
function normalizeVenueAddress(value) {
|
|
46420
|
-
const obj =
|
|
47339
|
+
const obj = isRecord11(value) ? value : {};
|
|
46421
47340
|
return {
|
|
46422
47341
|
line1: nullishToNull(typeof obj.line1 === "string" ? obj.line1 : void 0),
|
|
46423
47342
|
line2: nullishToNull(typeof obj.line2 === "string" ? obj.line2 : void 0),
|
|
@@ -46434,7 +47353,7 @@ function normalizeVenueAddress(value) {
|
|
|
46434
47353
|
};
|
|
46435
47354
|
}
|
|
46436
47355
|
function normalizeVenueLocation(value) {
|
|
46437
|
-
if (!
|
|
47356
|
+
if (!isRecord11(value)) return null;
|
|
46438
47357
|
const obj = value;
|
|
46439
47358
|
const lat = typeof obj.lat === "number" ? obj.lat : null;
|
|
46440
47359
|
const lng = typeof obj.lng === "number" ? obj.lng : null;
|
|
@@ -46442,7 +47361,7 @@ function normalizeVenueLocation(value) {
|
|
|
46442
47361
|
return { lat, lng };
|
|
46443
47362
|
}
|
|
46444
47363
|
function normalizeVenueForCompare(venue) {
|
|
46445
|
-
const obj =
|
|
47364
|
+
const obj = isRecord11(venue) ? venue : {};
|
|
46446
47365
|
return {
|
|
46447
47366
|
slug: String(obj.slug),
|
|
46448
47367
|
title: String(obj.title),
|
|
@@ -46455,7 +47374,7 @@ function normalizeVenueForCompare(venue) {
|
|
|
46455
47374
|
};
|
|
46456
47375
|
}
|
|
46457
47376
|
function normalizeEventCategoryForCompare(category) {
|
|
46458
|
-
const obj =
|
|
47377
|
+
const obj = isRecord11(category) ? category : {};
|
|
46459
47378
|
return {
|
|
46460
47379
|
identifier: String(obj.identifier),
|
|
46461
47380
|
name: String(obj.name),
|
|
@@ -46465,9 +47384,9 @@ function normalizeEventCategoryForCompare(category) {
|
|
|
46465
47384
|
};
|
|
46466
47385
|
}
|
|
46467
47386
|
function normalizeRemoteEventForCompare(event) {
|
|
46468
|
-
const obj =
|
|
46469
|
-
const schedule =
|
|
46470
|
-
const pricing =
|
|
47387
|
+
const obj = isRecord11(event) ? event : {};
|
|
47388
|
+
const schedule = isRecord11(obj.schedule) ? obj.schedule : {};
|
|
47389
|
+
const pricing = isRecord11(obj.pricing) ? obj.pricing : {};
|
|
46471
47390
|
return {
|
|
46472
47391
|
identifier: String(obj.identifier),
|
|
46473
47392
|
title: String(obj.title),
|
|
@@ -46500,14 +47419,14 @@ function normalizeRemoteEventForCompare(event) {
|
|
|
46500
47419
|
venueRef: nullishToNull(typeof obj.venueRef === "string" ? obj.venueRef : void 0),
|
|
46501
47420
|
categoryRef: nullishToNull(typeof obj.categoryRef === "string" ? obj.categoryRef : void 0),
|
|
46502
47421
|
formRef: nullishToNull(typeof obj.formRef === "string" ? obj.formRef : void 0),
|
|
46503
|
-
content:
|
|
46504
|
-
settings:
|
|
46505
|
-
presentation:
|
|
47422
|
+
content: isRecord11(obj.content) ? obj.content : {},
|
|
47423
|
+
settings: isRecord11(obj.settings) ? obj.settings : {},
|
|
47424
|
+
presentation: isRecord11(obj.presentation) ? obj.presentation : null,
|
|
46506
47425
|
tags: Array.isArray(obj.tags) ? obj.tags : []
|
|
46507
47426
|
};
|
|
46508
47427
|
}
|
|
46509
47428
|
function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
46510
|
-
const local =
|
|
47429
|
+
const local = isRecord11(localEvent) ? localEvent : {};
|
|
46511
47430
|
const base = remoteEvent ? normalizeRemoteEventForCompare(remoteEvent) : normalizeRemoteEventForCompare({
|
|
46512
47431
|
identifier: local.identifier,
|
|
46513
47432
|
title: local.title,
|
|
@@ -46525,8 +47444,8 @@ function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
|
46525
47444
|
presentation: local.presentation ?? null,
|
|
46526
47445
|
tags: local.tags ?? []
|
|
46527
47446
|
});
|
|
46528
|
-
const schedule =
|
|
46529
|
-
const pricing =
|
|
47447
|
+
const schedule = isRecord11(local.schedule) ? local.schedule : {};
|
|
47448
|
+
const pricing = isRecord11(local.pricing) ? local.pricing : {};
|
|
46530
47449
|
return {
|
|
46531
47450
|
...base,
|
|
46532
47451
|
identifier: String(local.identifier ?? base.identifier),
|
|
@@ -46552,9 +47471,9 @@ function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
|
46552
47471
|
venueRef: local.venueRef === void 0 ? base.venueRef : nullishToNull(typeof local.venueRef === "string" ? local.venueRef : void 0),
|
|
46553
47472
|
categoryRef: local.categoryRef === void 0 ? base.categoryRef : nullishToNull(typeof local.categoryRef === "string" ? local.categoryRef : void 0),
|
|
46554
47473
|
formRef: local.formRef === void 0 ? base.formRef : nullishToNull(typeof local.formRef === "string" ? local.formRef : void 0),
|
|
46555
|
-
content: local.content === void 0 ? base.content :
|
|
46556
|
-
settings: local.settings === void 0 ? base.settings :
|
|
46557
|
-
presentation: local.presentation === void 0 ? base.presentation :
|
|
47474
|
+
content: local.content === void 0 ? base.content : isRecord11(local.content) ? local.content : {},
|
|
47475
|
+
settings: local.settings === void 0 ? base.settings : isRecord11(local.settings) ? local.settings : {},
|
|
47476
|
+
presentation: local.presentation === void 0 ? base.presentation : isRecord11(local.presentation) ? local.presentation : null,
|
|
46558
47477
|
tags: local.tags === void 0 ? base.tags : Array.isArray(local.tags) ? local.tags : []
|
|
46559
47478
|
};
|
|
46560
47479
|
}
|
|
@@ -46566,7 +47485,7 @@ function toIsoStringOrOriginal(value) {
|
|
|
46566
47485
|
function normalizeCourseSessions(value) {
|
|
46567
47486
|
if (!Array.isArray(value)) return [];
|
|
46568
47487
|
return value.map((session) => {
|
|
46569
|
-
const obj =
|
|
47488
|
+
const obj = isRecord11(session) ? session : {};
|
|
46570
47489
|
return {
|
|
46571
47490
|
startsAt: toIsoStringOrOriginal(obj.startsAt),
|
|
46572
47491
|
endsAt: toIsoStringOrOriginal(obj.endsAt)
|
|
@@ -46578,18 +47497,18 @@ function normalizeCourseSessions(value) {
|
|
|
46578
47497
|
}
|
|
46579
47498
|
function normalizeCourseProgram(value) {
|
|
46580
47499
|
if (value == null) return null;
|
|
46581
|
-
if (!
|
|
47500
|
+
if (!isRecord11(value)) {
|
|
46582
47501
|
return { identifier: null, data: {} };
|
|
46583
47502
|
}
|
|
46584
47503
|
return {
|
|
46585
47504
|
identifier: nullishToNull(
|
|
46586
47505
|
typeof value.identifier === "string" ? value.identifier : void 0
|
|
46587
47506
|
),
|
|
46588
|
-
data:
|
|
47507
|
+
data: isRecord11(value.data) ? value.data : {}
|
|
46589
47508
|
};
|
|
46590
47509
|
}
|
|
46591
47510
|
function normalizeRemoteCourseForCompare(course) {
|
|
46592
|
-
const obj =
|
|
47511
|
+
const obj = isRecord11(course) ? course : {};
|
|
46593
47512
|
return {
|
|
46594
47513
|
identifier: String(obj.identifier),
|
|
46595
47514
|
title: String(obj.title),
|
|
@@ -46612,7 +47531,7 @@ function normalizeRemoteCourseForCompare(course) {
|
|
|
46612
47531
|
};
|
|
46613
47532
|
}
|
|
46614
47533
|
function normalizeLocalCourseAgainstRemoteForCompare(localCourse, remoteCourse) {
|
|
46615
|
-
const local =
|
|
47534
|
+
const local = isRecord11(localCourse) ? localCourse : {};
|
|
46616
47535
|
const base = remoteCourse ? normalizeRemoteCourseForCompare(remoteCourse) : normalizeRemoteCourseForCompare({
|
|
46617
47536
|
identifier: local.identifier,
|
|
46618
47537
|
title: local.title,
|
|
@@ -46633,11 +47552,11 @@ function normalizeLocalCourseAgainstRemoteForCompare(localCourse, remoteCourse)
|
|
|
46633
47552
|
});
|
|
46634
47553
|
const status = local.status === void 0 ? base.status : local.status === "active" || local.status === "cancelled" || local.status === "completed" ? local.status : "draft";
|
|
46635
47554
|
const visibility = local.visibility === void 0 ? base.visibility : local.visibility === "public" || local.visibility === "private" || local.visibility === "unlisted" ? local.visibility : "public";
|
|
46636
|
-
const program2 = local.program === void 0 ? base.program : local.program === null ? null :
|
|
47555
|
+
const program2 = local.program === void 0 ? base.program : local.program === null ? null : isRecord11(local.program) ? {
|
|
46637
47556
|
identifier: local.program.identifier === void 0 ? base.program?.identifier ?? null : nullishToNull(
|
|
46638
47557
|
typeof local.program.identifier === "string" ? local.program.identifier : void 0
|
|
46639
47558
|
),
|
|
46640
|
-
data:
|
|
47559
|
+
data: isRecord11(local.program.data) ? local.program.data : base.program?.data ?? {}
|
|
46641
47560
|
} : base.program;
|
|
46642
47561
|
return {
|
|
46643
47562
|
...base,
|
|
@@ -47539,6 +48458,7 @@ var upsertNavigationMenuCommandSchema = z.object({
|
|
|
47539
48458
|
type: z.literal("upsertNavigationMenu"),
|
|
47540
48459
|
ref: navigationRefSchema,
|
|
47541
48460
|
input: z.object({
|
|
48461
|
+
identifier: z.string().min(1).optional(),
|
|
47542
48462
|
name: z.string().min(1).optional(),
|
|
47543
48463
|
location: z.enum(navigationLocations).optional(),
|
|
47544
48464
|
role: z.enum(navigationMenuRoles).optional(),
|
|
@@ -48824,7 +49744,7 @@ function getSiteCommandLifecycleIntent(command) {
|
|
|
48824
49744
|
init_src();
|
|
48825
49745
|
|
|
48826
49746
|
// ../site-commands/src/guards.ts
|
|
48827
|
-
function
|
|
49747
|
+
function isRecord12(value) {
|
|
48828
49748
|
return typeof value === "object" && value !== null;
|
|
48829
49749
|
}
|
|
48830
49750
|
|
|
@@ -49089,7 +50009,7 @@ function collectVenueRefsFromIntervals(intervals, path24) {
|
|
|
49089
50009
|
}
|
|
49090
50010
|
function collectNavigationRefs(items, path24) {
|
|
49091
50011
|
return items.flatMap((item, index) => {
|
|
49092
|
-
if (!
|
|
50012
|
+
if (!isRecord12(item)) return [];
|
|
49093
50013
|
const itemPath = `${path24}[${index}]`;
|
|
49094
50014
|
const refs = [];
|
|
49095
50015
|
if (typeof item.pageRef === "string") {
|
|
@@ -49106,7 +50026,7 @@ function collectNavigationRefs(items, path24) {
|
|
|
49106
50026
|
}
|
|
49107
50027
|
function collectBlockRefs(blocks, path24) {
|
|
49108
50028
|
return blocks.flatMap((block, index) => {
|
|
49109
|
-
if (!
|
|
50029
|
+
if (!isRecord12(block)) return [];
|
|
49110
50030
|
const blockPath = `${path24}[${index}]`;
|
|
49111
50031
|
return [
|
|
49112
50032
|
...collectNestedRefs(block.props, `${blockPath}.props`),
|
|
@@ -49122,7 +50042,7 @@ function collectNestedRefs(value, path24) {
|
|
|
49122
50042
|
if (Array.isArray(value)) {
|
|
49123
50043
|
return value.flatMap((item, index) => collectNestedRefs(item, `${path24}[${index}]`));
|
|
49124
50044
|
}
|
|
49125
|
-
if (!
|
|
50045
|
+
if (!isRecord12(value)) return [];
|
|
49126
50046
|
return Object.entries(value).flatMap(([key, child]) => collectNestedRefs(child, `${path24}.${key}`));
|
|
49127
50047
|
}
|
|
49128
50048
|
|
|
@@ -49378,9 +50298,9 @@ function deriveIdempotencyKey(input) {
|
|
|
49378
50298
|
].join("|"));
|
|
49379
50299
|
}
|
|
49380
50300
|
function findUnknownCommandTypes(input) {
|
|
49381
|
-
if (!
|
|
50301
|
+
if (!isRecord12(input) || !Array.isArray(input.commands)) return [];
|
|
49382
50302
|
return input.commands.flatMap((command, commandIndex) => {
|
|
49383
|
-
if (!
|
|
50303
|
+
if (!isRecord12(command) || typeof command.type !== "string") return [];
|
|
49384
50304
|
if (commandTypeSet.has(command.type)) return [];
|
|
49385
50305
|
return [{
|
|
49386
50306
|
code: "unknown_command_type",
|
|
@@ -49406,9 +50326,9 @@ function commandIndexForIssuePath(path24) {
|
|
|
49406
50326
|
return path24[0] === "commands" && typeof path24[1] === "number" ? path24[1] : -1;
|
|
49407
50327
|
}
|
|
49408
50328
|
function commandTypeForIssue(input, commandIndex) {
|
|
49409
|
-
if (!
|
|
50329
|
+
if (!isRecord12(input) || !isUnknownArray3(input.commands)) return null;
|
|
49410
50330
|
const command = input.commands[commandIndex];
|
|
49411
|
-
return
|
|
50331
|
+
return isRecord12(command) && typeof command.type === "string" ? command.type : null;
|
|
49412
50332
|
}
|
|
49413
50333
|
function isUnknownArray3(value) {
|
|
49414
50334
|
return Array.isArray(value);
|
|
@@ -50430,8 +51350,8 @@ function eventContentInput(content) {
|
|
|
50430
51350
|
if (!content) return void 0;
|
|
50431
51351
|
return {
|
|
50432
51352
|
...content.summary ? { summary: content.summary } : {},
|
|
50433
|
-
...typeof content.body === "string" ||
|
|
50434
|
-
...typeof content.image === "string" ||
|
|
51353
|
+
...typeof content.body === "string" || isRecord13(content.body) ? { body: content.body } : {},
|
|
51354
|
+
...typeof content.image === "string" || isRecord13(content.image) ? { image: content.image } : {}
|
|
50435
51355
|
};
|
|
50436
51356
|
}
|
|
50437
51357
|
function courseUpsertInput(command) {
|
|
@@ -50603,7 +51523,7 @@ function toUtcIso(date, time) {
|
|
|
50603
51523
|
const normalizedTime = time.length === 5 ? `${time}:00` : time;
|
|
50604
51524
|
return (/* @__PURE__ */ new Date(`${date}T${normalizedTime}Z`)).toISOString();
|
|
50605
51525
|
}
|
|
50606
|
-
function
|
|
51526
|
+
function isRecord13(value) {
|
|
50607
51527
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
50608
51528
|
}
|
|
50609
51529
|
function unsupported(identifier, message) {
|
|
@@ -51181,14 +52101,22 @@ var navigationSiteCommandTypes = [
|
|
|
51181
52101
|
];
|
|
51182
52102
|
function compileNavigationPushCommands(input) {
|
|
51183
52103
|
const commandBindings = [];
|
|
51184
|
-
const
|
|
51185
|
-
|
|
52104
|
+
const menusByIdentity = navigationIdentityMap(
|
|
52105
|
+
input.local.navigation?.menus ?? []
|
|
51186
52106
|
);
|
|
52107
|
+
if (!menusByIdentity.ok) {
|
|
52108
|
+
return err({
|
|
52109
|
+
code: menusByIdentity.error.code,
|
|
52110
|
+
identity: menusByIdentity.error.identity,
|
|
52111
|
+
message: duplicateNavigationIdentityMessage(menusByIdentity.error)
|
|
52112
|
+
});
|
|
52113
|
+
}
|
|
51187
52114
|
for (const navigationDiff of input.diff) {
|
|
51188
52115
|
if (navigationDiff.type === "unchanged") continue;
|
|
51189
|
-
const
|
|
51190
|
-
const menu =
|
|
52116
|
+
const menuIdentity = navigationIdentity(navigationDiff);
|
|
52117
|
+
const menu = menusByIdentity.value.get(menuIdentity);
|
|
51191
52118
|
if (!menu) {
|
|
52119
|
+
const menuName = unsafeAsCliNavigationMenuName(navigationDiff.name);
|
|
51192
52120
|
return err({
|
|
51193
52121
|
code: "missing_local_navigation_menu",
|
|
51194
52122
|
name: menuName,
|
|
@@ -51202,6 +52130,7 @@ function compileNavigationPushCommands(input) {
|
|
|
51202
52130
|
type: "upsertNavigationMenu",
|
|
51203
52131
|
ref: commandRef,
|
|
51204
52132
|
input: {
|
|
52133
|
+
...menu.identifier ? { identifier: menu.identifier } : {},
|
|
51205
52134
|
name: localMenuName,
|
|
51206
52135
|
...role ? { role } : {},
|
|
51207
52136
|
items: menu.items.map(navigationItemForCommand)
|
|
@@ -51232,6 +52161,7 @@ async function executeNavigationCommandPlan(input) {
|
|
|
51232
52161
|
case "upsertNavigationMenu": {
|
|
51233
52162
|
const role = navigationCommandRole(command);
|
|
51234
52163
|
await input.client.navigation.upsert({
|
|
52164
|
+
...command.input.identifier ? { identifier: command.input.identifier } : {},
|
|
51235
52165
|
name: navigationCommandMenuName(command),
|
|
51236
52166
|
items: command.input.items.map(navigationItemInput),
|
|
51237
52167
|
...role === "primary" ? { isPrimary: true } : {},
|
|
@@ -51258,10 +52188,22 @@ function executeNavigationCommandPlanAsReport(input) {
|
|
|
51258
52188
|
}
|
|
51259
52189
|
function navigationCommandCompileErrorToReport(error) {
|
|
51260
52190
|
return commandCompileFailureToReport({
|
|
51261
|
-
identifier: error
|
|
52191
|
+
identifier: navigationCompileErrorIdentifier(error),
|
|
51262
52192
|
message: error.message
|
|
51263
52193
|
});
|
|
51264
52194
|
}
|
|
52195
|
+
function navigationCompileErrorIdentifier(error) {
|
|
52196
|
+
switch (error.code) {
|
|
52197
|
+
case "missing_local_navigation_menu":
|
|
52198
|
+
return error.name;
|
|
52199
|
+
case "duplicate_navigation_identity":
|
|
52200
|
+
return error.identity;
|
|
52201
|
+
case "command_validation_failed":
|
|
52202
|
+
return "command-validation";
|
|
52203
|
+
default:
|
|
52204
|
+
return assertNever(error);
|
|
52205
|
+
}
|
|
52206
|
+
}
|
|
51265
52207
|
function navigationCommandExecutionToReport(input) {
|
|
51266
52208
|
return commandExecutionToReport({
|
|
51267
52209
|
execution: input.execution,
|
|
@@ -55545,6 +56487,7 @@ async function applyOneOffPageCommandReturningBlock(command, client) {
|
|
|
55545
56487
|
async function applyOneOffNavigationCommand(command, client) {
|
|
55546
56488
|
const role = navigationCommandRole2(command);
|
|
55547
56489
|
return client.navigation.upsert({
|
|
56490
|
+
...command.input.identifier ? { identifier: command.input.identifier } : {},
|
|
55548
56491
|
name: navigationCommandMenuName2(command),
|
|
55549
56492
|
items: command.input.items.map(navigationItemInput2),
|
|
55550
56493
|
...role === "primary" ? { isPrimary: true } : {},
|
|
@@ -55704,6 +56647,7 @@ function oneOffNavigationCommandBinding(mutation) {
|
|
|
55704
56647
|
type: "upsertNavigationMenu",
|
|
55705
56648
|
ref: createNavigationRef([name]),
|
|
55706
56649
|
input: {
|
|
56650
|
+
...mutation.identifier ? { identifier: mutation.identifier } : {},
|
|
55707
56651
|
name,
|
|
55708
56652
|
items: mutation.items.map(navigationItemForCommand2)
|
|
55709
56653
|
}
|
|
@@ -56463,7 +57407,7 @@ function countItems(items) {
|
|
|
56463
57407
|
}
|
|
56464
57408
|
return count;
|
|
56465
57409
|
}
|
|
56466
|
-
var upsertCommand4 = new Command("upsert").description("Create or update a navigation menu").argument("<menu-name>", "Navigation menu name").option("--file <path>", "Path to JSON file with menu items").option("--data <json>", "Menu items as JSON string").action(
|
|
57410
|
+
var upsertCommand4 = new Command("upsert").description("Create or update a navigation menu").argument("<menu-name>", "Navigation menu name").option("--identifier <identifier>", "Stable SDK identifier for this menu").option("--file <path>", "Path to JSON file with menu items").option("--data <json>", "Menu items as JSON string").action(
|
|
56467
57411
|
withCommandContext(async (ctx, menuName, options) => {
|
|
56468
57412
|
const { output, client, siteId, targetEnv } = ctx;
|
|
56469
57413
|
const items = await parseJsonArray(options);
|
|
@@ -56472,7 +57416,12 @@ var upsertCommand4 = new Command("upsert").description("Create or update a navig
|
|
|
56472
57416
|
source: "one_off_navigation",
|
|
56473
57417
|
siteId,
|
|
56474
57418
|
targetEnv,
|
|
56475
|
-
mutation: {
|
|
57419
|
+
mutation: {
|
|
57420
|
+
kind: "upsert",
|
|
57421
|
+
...options.identifier ? { identifier: options.identifier } : {},
|
|
57422
|
+
menuName,
|
|
57423
|
+
items
|
|
57424
|
+
}
|
|
56476
57425
|
});
|
|
56477
57426
|
if (!compiled.ok) {
|
|
56478
57427
|
return output.error(compiled.error.message);
|
|
@@ -56510,10 +57459,58 @@ var listCommand4 = createListCommand({
|
|
|
56510
57459
|
tableHeaders: ["Name", "Items", "Updated"],
|
|
56511
57460
|
formatRow: formatMenuRow
|
|
56512
57461
|
});
|
|
57462
|
+
function resolveNavigationMenuForDelete(menus, selector) {
|
|
57463
|
+
const idMatch = menus.find((menu) => menu.id === selector);
|
|
57464
|
+
if (idMatch) return idMatch;
|
|
57465
|
+
const nameMatches = menus.filter((menu) => menu.name === selector);
|
|
57466
|
+
const onlyNameMatch = nameMatches[0];
|
|
57467
|
+
if (nameMatches.length === 1 && onlyNameMatch) {
|
|
57468
|
+
return onlyNameMatch;
|
|
57469
|
+
}
|
|
57470
|
+
if (nameMatches.length > 1) {
|
|
57471
|
+
throw new Error(
|
|
57472
|
+
`Multiple navigation menus are named "${selector}". Delete by ID instead: ${nameMatches.map((menu) => menu.id).join(", ")}`
|
|
57473
|
+
);
|
|
57474
|
+
}
|
|
57475
|
+
throw new Error(`Navigation menu not found by ID or exact name: ${selector}`);
|
|
57476
|
+
}
|
|
57477
|
+
var deleteCommand = new Command("delete").description("Delete a navigation menu by ID or exact unique name").argument("<menu-id-or-name>", "Navigation menu ID, or exact name when unique").option("--yes", "Skip confirmation prompt (required for --env=remote)").action(
|
|
57478
|
+
withCommandContext(async (ctx, selector, options) => {
|
|
57479
|
+
const { client, isRemote, output, targetEnv } = ctx;
|
|
57480
|
+
const menu = resolveNavigationMenuForDelete(await client.navigation.list(), selector);
|
|
57481
|
+
const itemCount = countItems(menu.items);
|
|
57482
|
+
const flags = [
|
|
57483
|
+
menu.isPrimary ? "primary" : null,
|
|
57484
|
+
menu.isFooter ? "footer" : null
|
|
57485
|
+
].filter((flag) => Boolean(flag));
|
|
57486
|
+
const flagText = flags.length > 0 ? flags.join(", ") : "none";
|
|
57487
|
+
const confirmed = await confirmAction(
|
|
57488
|
+
`Delete navigation menu "${menu.name}" (${menu.id}) from ${targetEnv}? flags: ${flagText}; items: ${itemCount}`,
|
|
57489
|
+
options,
|
|
57490
|
+
isRemote
|
|
57491
|
+
);
|
|
57492
|
+
if (!confirmed) {
|
|
57493
|
+
output.info("Operation cancelled");
|
|
57494
|
+
return;
|
|
57495
|
+
}
|
|
57496
|
+
output.info(`Deleting navigation menu: ${menu.name}`);
|
|
57497
|
+
await client.navigation.delete(menu.id);
|
|
57498
|
+
output.success(`Navigation menu deleted: ${menu.name}`, {
|
|
57499
|
+
id: menu.id,
|
|
57500
|
+
name: menu.name,
|
|
57501
|
+
identifier: menu.identifier,
|
|
57502
|
+
isPrimary: menu.isPrimary,
|
|
57503
|
+
isFooter: menu.isFooter,
|
|
57504
|
+
itemCount,
|
|
57505
|
+
environment: targetEnv
|
|
57506
|
+
});
|
|
57507
|
+
})
|
|
57508
|
+
);
|
|
56513
57509
|
var navigationCommand = new Command("navigation").description("Manage navigation menus").addHelpText("after", `
|
|
56514
57510
|
Examples:
|
|
56515
57511
|
$ riverbankcms navigation upsert main --file ./main-nav.json
|
|
56516
57512
|
$ riverbankcms navigation upsert footer --data '[{"label": "Home", "url": "/"}]'
|
|
57513
|
+
$ riverbankcms navigation delete "Primary navigation" --yes
|
|
56517
57514
|
$ riverbankcms navigation get main
|
|
56518
57515
|
$ riverbankcms navigation list
|
|
56519
57516
|
|
|
@@ -56526,7 +57523,7 @@ JSON file format:
|
|
|
56526
57523
|
]}
|
|
56527
57524
|
]
|
|
56528
57525
|
}
|
|
56529
|
-
`).addCommand(upsertCommand4).addCommand(getCommand4).addCommand(listCommand4);
|
|
57526
|
+
`).addCommand(upsertCommand4).addCommand(deleteCommand).addCommand(getCommand4).addCommand(listCommand4);
|
|
56530
57527
|
var deleteEntryCommand = new Command("entry").description("Delete a content entry").argument("<type>", "Content type").argument("<identifier>", "Entry identifier").option("--yes", "Skip confirmation prompt (required for --env=remote)").action(
|
|
56531
57528
|
withConfirmation(
|
|
56532
57529
|
(type, identifier) => `Delete entry "${type}/${identifier}"?`,
|
|
@@ -56547,7 +57544,7 @@ var deleteBlockCommand = new Command("block").description("Delete a block from a
|
|
|
56547
57544
|
}
|
|
56548
57545
|
)
|
|
56549
57546
|
);
|
|
56550
|
-
var
|
|
57547
|
+
var deleteCommand2 = new Command("delete").description("Delete content from CMS").addHelpText("after", `
|
|
56551
57548
|
Examples:
|
|
56552
57549
|
$ riverbankcms delete entry blog-post my-post
|
|
56553
57550
|
$ riverbankcms delete entry blog-post my-post --yes
|
|
@@ -56577,7 +57574,7 @@ var THEME_FIELD_CATEGORY_MAP = {
|
|
|
56577
57574
|
};
|
|
56578
57575
|
|
|
56579
57576
|
// src/cli/init-docs/zod-to-markdown.ts
|
|
56580
|
-
function
|
|
57577
|
+
function isRecord14(value) {
|
|
56581
57578
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
56582
57579
|
}
|
|
56583
57580
|
function isZodTypeAny(value) {
|
|
@@ -56705,7 +57702,7 @@ function extractLiteralValue(schema) {
|
|
|
56705
57702
|
const typeName = getTypeName(schema);
|
|
56706
57703
|
if (typeName !== ZodTypeName.ZodLiteral) return void 0;
|
|
56707
57704
|
const def = schema._def;
|
|
56708
|
-
if (!
|
|
57705
|
+
if (!isRecord14(def)) return void 0;
|
|
56709
57706
|
return String(def.value);
|
|
56710
57707
|
}
|
|
56711
57708
|
function extractSchemaInfo(schema, skipFields = []) {
|
|
@@ -56775,7 +57772,7 @@ function extractFieldInfo(name, schema) {
|
|
|
56775
57772
|
}
|
|
56776
57773
|
if (typeName === ZodTypeName.ZodRecord) {
|
|
56777
57774
|
const def = inner._def;
|
|
56778
|
-
const valueSchema =
|
|
57775
|
+
const valueSchema = isRecord14(def) ? def.valueType : void 0;
|
|
56779
57776
|
if (!isZodTypeAny(valueSchema)) {
|
|
56780
57777
|
info.recordValueType = "unknown";
|
|
56781
57778
|
return info;
|
|
@@ -56790,7 +57787,7 @@ function extractFieldInfo(name, schema) {
|
|
|
56790
57787
|
}
|
|
56791
57788
|
} else if (getTypeName(valueInner) === ZodTypeName.ZodRecord) {
|
|
56792
57789
|
const nestedDef = valueInner._def;
|
|
56793
|
-
const nestedValueSchema =
|
|
57790
|
+
const nestedValueSchema = isRecord14(nestedDef) ? nestedDef.valueType : void 0;
|
|
56794
57791
|
if (!isZodTypeAny(nestedValueSchema)) {
|
|
56795
57792
|
info.recordValueType = "record<string, unknown>";
|
|
56796
57793
|
return info;
|
|
@@ -56801,7 +57798,7 @@ function extractFieldInfo(name, schema) {
|
|
|
56801
57798
|
}
|
|
56802
57799
|
if (typeName === ZodTypeName.ZodUnion || typeName === ZodTypeName.ZodDiscriminatedUnion) {
|
|
56803
57800
|
const def = inner._def;
|
|
56804
|
-
const optionsValue =
|
|
57801
|
+
const optionsValue = isRecord14(def) ? def.options : void 0;
|
|
56805
57802
|
const options = Array.isArray(optionsValue) ? optionsValue.filter(isZodTypeAny) : [];
|
|
56806
57803
|
const optionTypes = options.map((opt) => {
|
|
56807
57804
|
const { inner: optInner } = unwrapSchema(opt);
|
|
@@ -57190,7 +58187,7 @@ function renderConfigGuideSection() {
|
|
|
57190
58187
|
" navigation: {",
|
|
57191
58188
|
" siteNav: {",
|
|
57192
58189
|
" // mode: 'augment' | 'restrict'",
|
|
57193
|
-
" // allowIds: ['site.
|
|
58190
|
+
" // allowIds: ['site.performance']",
|
|
57194
58191
|
" // denyIds: ['site.performance', 'site.newsletter']",
|
|
57195
58192
|
" roles: {",
|
|
57196
58193
|
" editor: { mode: 'restrict', allowIds: ['site.overview', 'site.content', 'site.media', 'site.bookings'] },",
|
|
@@ -57211,7 +58208,7 @@ function renderConfigGuideSection() {
|
|
|
57211
58208
|
"Navigation IDs:",
|
|
57212
58209
|
"",
|
|
57213
58210
|
"- Top nav (`dashboard.navigation.siteNav`):",
|
|
57214
|
-
" - `site.overview`, `site.content`, `site.media`, `site.bookings`, `site.newsletter`, `site.
|
|
58211
|
+
" - `site.overview`, `site.content`, `site.media`, `site.bookings`, `site.newsletter`, `site.performance`, `site.settings`",
|
|
57215
58212
|
"- Settings sidebar (`dashboard.navigation.settingsNav`):",
|
|
57216
58213
|
" - `settings.general`, `settings.domains`, `settings.fonts`, `settings.navigation`, `settings.redirects`, `settings.emails`",
|
|
57217
58214
|
" - `settings.ai.siteProfile`, `settings.ai.brandGuidelines`",
|
|
@@ -57636,7 +58633,8 @@ async function initDocs(options) {
|
|
|
57636
58633
|
{ filename: "templates.md", template: "workflow-templates" },
|
|
57637
58634
|
{ filename: "cmsify-page.md", template: "workflow-cmsify-page" },
|
|
57638
58635
|
{ filename: "editor-workflows.md", template: "workflow-editor-workflows" },
|
|
57639
|
-
{ filename: "preview-mode.md", template: "workflow-preview-mode" }
|
|
58636
|
+
{ filename: "preview-mode.md", template: "workflow-preview-mode" },
|
|
58637
|
+
{ filename: "isr-revalidation.md", template: "workflow-isr-revalidation" }
|
|
57640
58638
|
];
|
|
57641
58639
|
await Promise.all(
|
|
57642
58640
|
coreWorkflows.map(
|
|
@@ -57961,7 +58959,7 @@ var SimpleCache = class {
|
|
|
57961
58959
|
};
|
|
57962
58960
|
|
|
57963
58961
|
// src/version.ts
|
|
57964
|
-
var SDK_VERSION = "0.
|
|
58962
|
+
var SDK_VERSION = "0.79.0";
|
|
57965
58963
|
|
|
57966
58964
|
// src/client/error.ts
|
|
57967
58965
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -64553,7 +65551,7 @@ var listCommand6 = createListCommand({
|
|
|
64553
65551
|
tableHeaders: ["Identifier", "Status", "Visibility", "Updated"],
|
|
64554
65552
|
formatRow: formatEventRow
|
|
64555
65553
|
});
|
|
64556
|
-
var
|
|
65554
|
+
var deleteCommand3 = new Command("delete").description("Delete an event series").argument("<identifier>", "Event identifier").option("--yes", "Skip confirmation prompt (required for --env=remote)").action(
|
|
64557
65555
|
withConfirmation(
|
|
64558
65556
|
(identifier) => `Delete event "${identifier}"?`,
|
|
64559
65557
|
async (ctx, identifier) => {
|
|
@@ -64600,7 +65598,7 @@ Examples:
|
|
|
64600
65598
|
$ riverbankcms event cancel summer-fest
|
|
64601
65599
|
$ riverbankcms event delete summer-fest --yes
|
|
64602
65600
|
`
|
|
64603
|
-
).addCommand(listCommand6).addCommand(getCommand5).addCommand(upsertCommand5).addCommand(cancelCommand).addCommand(
|
|
65601
|
+
).addCommand(listCommand6).addCommand(getCommand5).addCommand(upsertCommand5).addCommand(cancelCommand).addCommand(deleteCommand3);
|
|
64604
65602
|
var courseUpsertInputSchema = z.object({
|
|
64605
65603
|
identifier: z.string().min(1).optional(),
|
|
64606
65604
|
title: z.string().min(1, "title is required"),
|
|
@@ -64722,7 +65720,7 @@ var listCommand7 = createListCommand({
|
|
|
64722
65720
|
tableHeaders: ["Identifier", "Status", "Visibility", "Updated"],
|
|
64723
65721
|
formatRow: formatCourseRow
|
|
64724
65722
|
});
|
|
64725
|
-
var
|
|
65723
|
+
var deleteCommand4 = new Command("delete").description("Delete a course run").argument("<identifier>", "Course identifier").option("--yes", "Skip confirmation prompt (required for --env=remote)").action(
|
|
64726
65724
|
withConfirmation(
|
|
64727
65725
|
(identifier) => `Delete course "${identifier}"?`,
|
|
64728
65726
|
async (ctx, identifier) => {
|
|
@@ -64773,7 +65771,7 @@ Examples:
|
|
|
64773
65771
|
$ riverbankcms course cancel beginner-yoga
|
|
64774
65772
|
$ riverbankcms course delete beginner-yoga --yes
|
|
64775
65773
|
`
|
|
64776
|
-
).addCommand(listCommand7).addCommand(getCommand6).addCommand(upsertCommand6).addCommand(cancelCommand2).addCommand(
|
|
65774
|
+
).addCommand(listCommand7).addCommand(getCommand6).addCommand(upsertCommand6).addCommand(cancelCommand2).addCommand(deleteCommand4);
|
|
64777
65775
|
function isPlainObject3(value) {
|
|
64778
65776
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
64779
65777
|
}
|
|
@@ -65170,7 +66168,7 @@ program.addCommand(entryCommand);
|
|
|
65170
66168
|
program.addCommand(pageCommand);
|
|
65171
66169
|
program.addCommand(blockCommand);
|
|
65172
66170
|
program.addCommand(navigationCommand);
|
|
65173
|
-
program.addCommand(
|
|
66171
|
+
program.addCommand(deleteCommand2);
|
|
65174
66172
|
program.addCommand(initDocsCommand);
|
|
65175
66173
|
program.addCommand(identifiersCommand);
|
|
65176
66174
|
program.addCommand(deployCommand);
|