riverbankcms 0.22.0 → 0.22.2

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { An as unsafeAsSafeDownloadFilename, B as isPresent, Bn as ok, Bt as mapReadonlyNonEmptyArray, C as stableJsonStringify, Dn as unsafeAsPositiveSeconds, En as unsafeAsPositiveByteCount, Fn as unsafeAsStorageBucketName, In as unsafeAsStoragePath, L as isCanonicalRichTextDoc, Ln as unsafeAsUploadSessionId, M as parseFooterCompositionV1, Mn as unsafeAsSiteId, N as footerNavigationLayouts, Nn as unsafeAsSiteScopedStoragePath, R as parsePublicContactDetails, Rn as unsafeAsUserId, Rt as fromArray, Sn as unsafeAsMediaAssetId, Xt as assertNever, _n as unsafeAsEntitlementId, at as localScheduleTimePattern, c as resolveSiteVerticalBookingConfig, d as ORDINARY_EVENT_PRESET_VALUES, dn as unsafeAsBookingRequirementId, fn as unsafeAsBookingSessionId, gn as unsafeAsDetectedMimeType, jn as unsafeAsSiteFontId, kn as unsafeAsProductId, mn as unsafeAsDeclaredMimeType, mt as validateBookingPaymentOptionKinds, pt as parseBookingTimeZone, r as NAVIGATION_LOCATIONS, rn as parseMediaAssetId, sn as parseSiteId, st as parseUtcIsoDateTimeString, u as EVENT_PRESET_VALUES, wn as unsafeAsOriginalFilename, xn as unsafeAsFileChecksumSha256, zn as err, zt as mapNonEmptyArray } from "./src-zzwJUef5.mjs";
2
+ import { $t as assertNever, An as unsafeAsPositiveSeconds, B as parseWeeklyOpeningHours, Bn as unsafeAsUploadSessionId, C as stableJsonStringify, Dn as unsafeAsOriginalFilename, Fn as unsafeAsSiteId, H as isPresent, Hn as err, Ht as mapNonEmptyArray, In as unsafeAsSiteScopedStoragePath, L as isCanonicalRichTextDoc, M as parseFooterCompositionV1, Mn as unsafeAsProductId, N as footerNavigationLayouts, Nn as unsafeAsSafeDownloadFilename, Pn as unsafeAsSiteFontId, Rn as unsafeAsStorageBucketName, Tn as unsafeAsMediaAssetId, Un as ok, Ut as mapReadonlyNonEmptyArray, Vn as unsafeAsUserId, Vt as fromArray, _n as unsafeAsDeclaredMimeType, _t as validateBookingPaymentOptionKinds, bn as unsafeAsEntitlementId, c as resolveSiteVerticalBookingConfig, d as ORDINARY_EVENT_PRESET_VALUES, gt as parseBookingTimeZone, hn as unsafeAsBookingSessionId, kn as unsafeAsPositiveByteCount, mn as unsafeAsBookingRequirementId, on as parseMediaAssetId, r as NAVIGATION_LOCATIONS, st as localScheduleTimePattern, u as EVENT_PRESET_VALUES, un as parseSiteId, ut as parseUtcIsoDateTimeString, wn as unsafeAsFileChecksumSha256, yn as unsafeAsDetectedMimeType, z as parsePublicContactDetails, zn as unsafeAsStoragePath } from "./src-ZACBG29u.mjs";
3
3
  import "node:module";
4
4
  import { z } from "zod";
5
5
 
@@ -6197,9 +6197,18 @@ const blockAppearancePresets = [
6197
6197
  defineArrangementLook("faq-questions-under-title", "faq", "Questions under the title", "default", []),
6198
6198
  defineArrangementLook("faq-title-beside-questions", "faq", "Title beside the questions", "two-column", [], { styleFallback: [id$1("faq-questions-under-title")] }),
6199
6199
  defineArrangementLook("faq-questions-two-columns", "faq", "Questions in two columns", "question-columns", [], { styleFallback: [id$1("faq-questions-under-title")] }),
6200
+ defineArrangementLook("faq-all-answers-showing", "faq", "All answers showing", "open", [], { styleFallback: [id$1("faq-questions-two-columns")] }),
6200
6201
  defineArrangementLook("image-gallery-lead-photo", "image-gallery", "One large photo, then smaller ones", "tiles", [], { styleFallback: [id$1("image-gallery-square-tiles")] }),
6201
6202
  defineArrangementLook("image-gallery-captions-under", "image-gallery", "Photos with captions underneath", "tiles", [], { styleFallback: [id$1("image-gallery-arched-captions"), id$1("image-gallery-square-tiles")] }),
6202
6203
  defineArrangementLook("cta-centred", "cta-full", "Centred, buttons below", "default", []),
6204
+ defineArrangementLook("cta-title-beside-buttons", "cta-full", "Title beside the buttons", "default", [], { styleFallback: [id$1("cta-centred")] }),
6205
+ defineArrangementLook("cta-figure-beside-offer", "cta-full", "Big figure beside the offer", "figure", [], {
6206
+ whenMissing: [{
6207
+ fact: "figure",
6208
+ look: id$1("cta-centred")
6209
+ }],
6210
+ styleFallback: [id$1("cta-centred")]
6211
+ }),
6203
6212
  {
6204
6213
  ...defineCardListLook("team-members-tall-portraits", "Tall portraits in a row", "cards", [
6205
6214
  "media",
@@ -6283,7 +6292,23 @@ const blockAppearancePresets = [
6283
6292
  forcedKnobs: { cardMarker: "none" },
6284
6293
  knobDefaults: { actionStyle: "link" },
6285
6294
  styleFallback: [id$1("feature-cards-index")]
6286
- })
6295
+ }),
6296
+ {
6297
+ ...defineCardListLook("card-list-photos-on-top", "Photos on top, three across", "cards", [
6298
+ "media",
6299
+ "title",
6300
+ "text",
6301
+ "facts",
6302
+ "action"
6303
+ ], ["showPhotos"], {
6304
+ knobDefaults: {
6305
+ actionStyle: "link",
6306
+ dates: "summary"
6307
+ },
6308
+ styleFallback: [id$1("feature-cards-cards")]
6309
+ }),
6310
+ blockKinds: ["block.offerings-preview", "block.appointment-services"]
6311
+ }
6287
6312
  ];
6288
6313
 
6289
6314
  //#endregion
@@ -10157,7 +10182,7 @@ function planFileUploadFinalization(input) {
10157
10182
  const declaredMimeType = input.declaredMimeType;
10158
10183
  const declaredKind = classifyOptionalDeclaredMimeType(declaredMimeType);
10159
10184
  if (!declaredKind.ok) return declaredKind;
10160
- if (declaredMimeType !== undefined && declaredKind.value !== undefined && !areFileKindsEqual(declaredKind.value, detectedKind.value)) {
10185
+ if (declaredMimeType !== undefined && declaredKind.value !== undefined && !areUploadFormatsInterchangeable(declaredKind.value, detectedKind.value)) {
10161
10186
  return err({
10162
10187
  tag: "declared-detected-mime-mismatch",
10163
10188
  declaredMimeType,
@@ -10308,6 +10333,18 @@ function accessPolicyForFinalizedUpload(uploadSession) {
10308
10333
  };
10309
10334
  }
10310
10335
  }
10336
+ function areUploadFormatsInterchangeable(declared, detected) {
10337
+ if (areFileKindsEqual(declared, detected)) return true;
10338
+ switch (declared.tag) {
10339
+ case "image": return detected.tag === "image" && declared.format !== "svg" && detected.format !== "svg";
10340
+ case "audio":
10341
+ case "video": return detected.tag === declared.tag;
10342
+ case "document":
10343
+ case "spreadsheet":
10344
+ case "font":
10345
+ case "archive": return false;
10346
+ }
10347
+ }
10311
10348
 
10312
10349
  //#endregion
10313
10350
  //#region ../media-core/src/fileUploadSessionCreation.ts
@@ -10370,6 +10407,63 @@ function planFileUploadSessionCreation(input) {
10370
10407
  });
10371
10408
  }
10372
10409
 
10410
+ //#endregion
10411
+ //#region ../media-core/src/mimeType.ts
10412
+ const MIME_TYPES_BY_EXTENSION = {
10413
+ ".jpg": "image/jpeg",
10414
+ ".jpeg": "image/jpeg",
10415
+ ".png": "image/png",
10416
+ ".gif": "image/gif",
10417
+ ".webp": "image/webp",
10418
+ ".svg": "image/svg+xml",
10419
+ ".avif": "image/avif",
10420
+ ".heic": "image/heic",
10421
+ ".heif": "image/heif",
10422
+ ".mp4": "video/mp4",
10423
+ ".webm": "video/webm",
10424
+ ".mov": "video/quicktime",
10425
+ ".mp3": "audio/mpeg",
10426
+ ".m4a": "audio/mp4",
10427
+ ".wav": "audio/wav",
10428
+ ".ogg": "audio/ogg",
10429
+ ".flac": "audio/flac",
10430
+ ".pdf": "application/pdf"
10431
+ };
10432
+ const EXTENSIONS_BY_MIME_TYPE = {
10433
+ "image/jpeg": ".jpg",
10434
+ "image/png": ".png",
10435
+ "image/gif": ".gif",
10436
+ "image/webp": ".webp",
10437
+ "image/svg+xml": ".svg",
10438
+ "image/avif": ".avif",
10439
+ "image/heic": ".heic",
10440
+ "image/heif": ".heif",
10441
+ "video/mp4": ".mp4",
10442
+ "video/webm": ".webm",
10443
+ "video/quicktime": ".mov",
10444
+ "audio/mpeg": ".mp3",
10445
+ "audio/mp4": ".m4a",
10446
+ "audio/wav": ".wav",
10447
+ "audio/x-wav": ".wav",
10448
+ "audio/ogg": ".ogg",
10449
+ "audio/webm": ".webm",
10450
+ "audio/flac": ".flac",
10451
+ "application/pdf": ".pdf"
10452
+ };
10453
+ function fileExtension(filename) {
10454
+ const pathSegments = filename.replace(/\\/g, "/").split("/");
10455
+ const basename = pathSegments[pathSegments.length - 1] ?? filename;
10456
+ const dotIndex = basename.lastIndexOf(".");
10457
+ return dotIndex <= 0 ? "" : basename.slice(dotIndex).toLowerCase();
10458
+ }
10459
+ function getMimeType(filename) {
10460
+ return MIME_TYPES_BY_EXTENSION[fileExtension(filename)] ?? "application/octet-stream";
10461
+ }
10462
+ function getExtensionForMimeType(mimeType) {
10463
+ if (!mimeType) return null;
10464
+ return EXTENSIONS_BY_MIME_TYPE[mimeType.toLowerCase()] ?? null;
10465
+ }
10466
+
10373
10467
  //#endregion
10374
10468
  //#region ../media-core/src/fileUploadAssetBuilder.ts
10375
10469
  /**
@@ -10395,38 +10489,41 @@ function toDurableFinalizeUploadAssetPlan(plan) {
10395
10489
  });
10396
10490
  }
10397
10491
  function expectedDurableUploadStoragePath(finalizationPlan, assetId) {
10398
- if (finalizationPlan.uploadSession.safeDownloadFilename === undefined) {
10492
+ const storage = finalizedUploadStorage(finalizationPlan, assetId);
10493
+ return storage.ok ? ok(storage.value.storagePath) : storage;
10494
+ }
10495
+ function finalizedUploadStorage(plan, assetId) {
10496
+ if (plan.uploadSession.safeDownloadFilename === undefined) {
10399
10497
  return err({ tag: "safe-download-filename-required" });
10400
10498
  }
10401
- const targetStoragePath = buildDurableFileStoragePath({
10402
- siteId: finalizationPlan.uploadSession.siteId,
10499
+ const safe = asSafeDownloadFilename(finalizedUploadFilename(plan.uploadSession.safeDownloadFilename, plan.detectedMimeType));
10500
+ if (!safe.ok) return err({ tag: "safe-download-filename-required" });
10501
+ const path = buildDurableFileStoragePath({
10502
+ siteId: plan.uploadSession.siteId,
10403
10503
  fileAssetId: assetId,
10404
- safeDownloadFilename: finalizationPlan.uploadSession.safeDownloadFilename
10504
+ safeDownloadFilename: safe.value
10505
+ });
10506
+ return path.ok ? ok({
10507
+ storagePath: path.value,
10508
+ filename: unsafeAsOriginalFilename(finalizedUploadFilename(plan.uploadSession.originalFilename, plan.detectedMimeType)),
10509
+ safeDownloadFilename: safe.value
10510
+ }) : err({
10511
+ tag: "invalid-storage-path",
10512
+ error: path.error
10405
10513
  });
10406
- if (!targetStoragePath.ok) {
10407
- return err({
10408
- tag: "invalid-storage-path",
10409
- error: targetStoragePath.error
10410
- });
10411
- }
10412
- return ok(targetStoragePath.value);
10413
10514
  }
10414
10515
  /**
10415
10516
  * Builds a validated active durable file asset from a policy-checked upload finalization plan.
10416
10517
  */
10417
10518
  function buildFinalizedUploadFileAsset(input) {
10418
10519
  const { finalizationPlan } = input;
10419
- const targetStoragePath = expectedDurableUploadStoragePath(finalizationPlan, input.assetId);
10420
- if (!targetStoragePath.ok) {
10421
- return targetStoragePath;
10422
- }
10520
+ const storage = finalizedUploadStorage(finalizationPlan, input.assetId);
10521
+ if (!storage.ok) return storage;
10423
10522
  const asset = {
10424
10523
  id: input.assetId,
10425
10524
  siteId: finalizationPlan.uploadSession.siteId,
10426
10525
  storageBucket: finalizationPlan.targetStorageBucket,
10427
- storagePath: targetStoragePath.value,
10428
- filename: finalizationPlan.uploadSession.originalFilename,
10429
- safeDownloadFilename: finalizationPlan.uploadSession.safeDownloadFilename,
10526
+ ...storage.value,
10430
10527
  mimeType: unsafeAsDeclaredMimeType(finalizationPlan.detectedMimeType),
10431
10528
  kind: finalizationPlan.detectedKind,
10432
10529
  uses: finalizationPlan.fileUses,
@@ -10459,6 +10556,11 @@ function defaultMetadataForKind(kind) {
10459
10556
  case "archive": return { tag: "file-metadata" };
10460
10557
  }
10461
10558
  }
10559
+ function finalizedUploadFilename(filename, detectedMimeType) {
10560
+ const extension = getExtensionForMimeType(detectedMimeType);
10561
+ if (extension === null || getMimeType(filename) === detectedMimeType) return filename;
10562
+ return `${filename.replace(/\.[^.\/\\]+$/u, "")}${extension}`;
10563
+ }
10462
10564
 
10463
10565
  //#endregion
10464
10566
  //#region ../media-core/src/fileUploadCompletion.ts
@@ -10485,7 +10587,8 @@ function planDurableFileUploadCompletion(input) {
10485
10587
  const promoteStep = {
10486
10588
  tag: "promote-staged-object",
10487
10589
  sourceObject,
10488
- targetObject
10590
+ targetObject,
10591
+ ...input.finalizationPlan.uploadSession.declaredMimeType !== String(input.finalizationPlan.detectedMimeType) ? { correctedContentType: input.finalizationPlan.detectedMimeType } : {}
10489
10592
  };
10490
10593
  const insertStep = {
10491
10594
  tag: "insert-file-asset",
@@ -11302,61 +11405,6 @@ function startsWithIgnoreCase(text, token, index) {
11302
11405
  return text.slice(index, index + token.length).toLowerCase() === token;
11303
11406
  }
11304
11407
 
11305
- //#endregion
11306
- //#region ../media-core/src/mimeType.ts
11307
- const MIME_TYPES_BY_EXTENSION = {
11308
- ".jpg": "image/jpeg",
11309
- ".jpeg": "image/jpeg",
11310
- ".png": "image/png",
11311
- ".gif": "image/gif",
11312
- ".webp": "image/webp",
11313
- ".svg": "image/svg+xml",
11314
- ".avif": "image/avif",
11315
- ".heic": "image/heic",
11316
- ".mp4": "video/mp4",
11317
- ".webm": "video/webm",
11318
- ".mov": "video/quicktime",
11319
- ".mp3": "audio/mpeg",
11320
- ".m4a": "audio/mp4",
11321
- ".wav": "audio/wav",
11322
- ".ogg": "audio/ogg",
11323
- ".flac": "audio/flac",
11324
- ".pdf": "application/pdf"
11325
- };
11326
- const EXTENSIONS_BY_MIME_TYPE = {
11327
- "image/jpeg": ".jpg",
11328
- "image/png": ".png",
11329
- "image/gif": ".gif",
11330
- "image/webp": ".webp",
11331
- "image/svg+xml": ".svg",
11332
- "image/avif": ".avif",
11333
- "image/heic": ".heic",
11334
- "video/mp4": ".mp4",
11335
- "video/webm": ".webm",
11336
- "video/quicktime": ".mov",
11337
- "audio/mpeg": ".mp3",
11338
- "audio/mp4": ".m4a",
11339
- "audio/wav": ".wav",
11340
- "audio/x-wav": ".wav",
11341
- "audio/ogg": ".ogg",
11342
- "audio/webm": ".webm",
11343
- "audio/flac": ".flac",
11344
- "application/pdf": ".pdf"
11345
- };
11346
- function fileExtension(filename) {
11347
- const pathSegments = filename.replace(/\\/g, "/").split("/");
11348
- const basename = pathSegments[pathSegments.length - 1] ?? filename;
11349
- const dotIndex = basename.lastIndexOf(".");
11350
- return dotIndex <= 0 ? "" : basename.slice(dotIndex).toLowerCase();
11351
- }
11352
- function getMimeType(filename) {
11353
- return MIME_TYPES_BY_EXTENSION[fileExtension(filename)] ?? "application/octet-stream";
11354
- }
11355
- function getExtensionForMimeType(mimeType) {
11356
- if (!mimeType) return null;
11357
- return EXTENSIONS_BY_MIME_TYPE[mimeType.toLowerCase()] ?? null;
11358
- }
11359
-
11360
11408
  //#endregion
11361
11409
  //#region ../media-core/src/filename.ts
11362
11410
  function filenameExtension(filename) {
@@ -11913,6 +11961,7 @@ function mediaUsageLocationLabel(location) {
11913
11961
  }
11914
11962
  case "newsletterTemplate": return `Newsletter template: ${location.templateName}`;
11915
11963
  case "newsletterCampaign": return `Newsletter campaign: ${location.campaignName}`;
11964
+ case "appointmentService": return `Appointment service: ${location.serviceTitle}`;
11916
11965
  case "productFileDownload": return `${location.productTitle} — Product download`;
11917
11966
  default: return assertNever$2(location);
11918
11967
  }
@@ -13897,7 +13946,21 @@ function parseCanonicalRuntimeBackground(content) {
13897
13946
  };
13898
13947
  }
13899
13948
  function resolveSectionBackground(source, lookDefault, rhythm, arrangementHeroPhoto) {
13900
- if (heroPhotoIsContent(source, arrangementHeroPhoto)) return rhythmBackground(rhythm);
13949
+ if (heroPhotoIsContent(source, arrangementHeroPhoto, rhythm !== undefined)) {
13950
+ if (rhythm !== undefined) return rhythmBackground(rhythm);
13951
+ return {
13952
+ kind: "content-media",
13953
+ background: source.background,
13954
+ ground: {
13955
+ type: "color",
13956
+ color: arrangementHeroPhoto?.fallbackToken ?? "background",
13957
+ textColor: source.background.textColor,
13958
+ headingColor: source.background.headingColor,
13959
+ linkColor: source.background.linkColor,
13960
+ supportingColor: source.background.supportingColor
13961
+ }
13962
+ };
13963
+ }
13901
13964
  if (source.kind === "page-design-override") {
13902
13965
  return {
13903
13966
  kind: "override",
@@ -13927,7 +13990,7 @@ function resolveSectionPhotoPlacement(background, heroPhoto) {
13927
13990
  return background.kind !== "base" && background.background.type === "image" && background.background.image !== undefined ? "behind-text" : "none";
13928
13991
  }
13929
13992
  function resolveSectionForeground(background, palette) {
13930
- return resolveSurfaceForeground(background.kind === "base" ? null : background.background, palette, {}, { compositeBase: "background" });
13993
+ return resolveSurfaceForeground(sectionForegroundBackground(background, palette), palette, {}, { compositeBase: "background" });
13931
13994
  }
13932
13995
  /**
13933
13996
  * Read foreground authority from post-compiler block content. The preview
@@ -13935,9 +13998,40 @@ function resolveSectionForeground(background, palette) {
13935
13998
  * `_sectionStyles`; raw authored content must be composed with its Look through
13936
13999
  * `resolveSectionBackground` instead.
13937
14000
  */
13938
- function resolveCompiledSectionForegroundFromContent(content, palette) {
14001
+ function resolveCompiledSectionForegroundFromContent(content, palette, photo) {
13939
14002
  if (!content) return resolveSurfaceForeground(null, palette);
13940
- return resolveSectionForeground(resolveSectionBackground(parseCanonicalRuntimeBackground(content), null), palette);
14003
+ return resolveSectionForeground(resolveSectionBackground(parseCanonicalRuntimeBackground(content), null, compiledOpeningRhythm(content), photo), palette);
14004
+ }
14005
+ /** Legacy detached photos keep already-legible authored ink and its exact CSS treatment. */
14006
+ function sectionForegroundBackground(resolved, palette) {
14007
+ if (resolved.kind === "base") return null;
14008
+ if (resolved.kind !== "content-media") return resolved.background;
14009
+ const original = resolveSurfaceForeground(resolved.background, palette);
14010
+ const measured = resolveSurfaceForeground(resolved.ground, palette);
14011
+ if (original.kind === "unknown" || measured.kind === "unknown") return resolved.background;
14012
+ const roles = [
14013
+ "text",
14014
+ "heading",
14015
+ "link",
14016
+ "supporting"
14017
+ ];
14018
+ return roles.every((role) => original.roles[role] === measured.roles[role]) ? resolved.background : resolved.ground;
14019
+ }
14020
+ /** One photo-placement decision for legacy and arrangement hero renderers. */
14021
+ function heroPhotoPaintsGround(variant) {
14022
+ return ![
14023
+ "split",
14024
+ "splitReverse",
14025
+ "headline-row",
14026
+ "copy-over-gallery",
14027
+ "page-head"
14028
+ ].includes(variant ?? "classic");
14029
+ }
14030
+ function compiledOpeningRhythm(content) {
14031
+ const arrangement = readRecord(content._arrangementLooks);
14032
+ if (!Array.isArray(arrangement?.rhythm)) return undefined;
14033
+ const parsed = runtimeBoxBackgroundSchema.safeParse(arrangement.rhythm[0]);
14034
+ return parsed.success ? parsed.data : null;
13941
14035
  }
13942
14036
  function mergeLookForegroundWithAuthoredMedia(lookDefault, authored) {
13943
14037
  const paintsBand = lookDefault.type === "color" || lookDefault.type === "gradient";
@@ -13957,8 +14051,8 @@ function mergeLookForegroundWithAuthoredMedia(lookDefault, authored) {
13957
14051
  function readRecord(value) {
13958
14052
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
13959
14053
  }
13960
- function heroPhotoIsContent(source, photo) {
13961
- return photo !== undefined && !photo.paintsGround && source.kind === "block-authored" && source.background.type === "image";
14054
+ function heroPhotoIsContent(source, photo, hasArrangementGround) {
14055
+ return photo !== undefined && !photo.paintsGround && source.kind === "block-authored" && source.background.type === "image" && (hasArrangementGround || !source.background.overlay);
13962
14056
  }
13963
14057
  function isAuthoredMedia(source) {
13964
14058
  return source.kind === "block-authored" && (source.background.type === "image" || source.background.type === "video");
@@ -13988,9 +14082,10 @@ const solidGrounds = {
13988
14082
  };
13989
14083
  function deriveSectionGround(resolved, palette) {
13990
14084
  if (resolved.kind === "base") return "light";
13991
- const solid = solidSectionGround(resolved.background);
14085
+ const background = resolved.kind === "content-media" ? resolved.ground : resolved.background;
14086
+ const solid = solidSectionGround(background);
13992
14087
  if (solid) return solid;
13993
- const tone = scrimTone(sectionScrimSamples(resolved.background, palette)) ?? sectionForegroundTone(resolved, palette);
14088
+ const tone = scrimTone(sectionScrimSamples(background, palette)) ?? sectionForegroundTone(resolved, palette);
13994
14089
  return tone === "dark" ? "deep" : "light";
13995
14090
  }
13996
14091
  function solidSectionGround(background) {
@@ -34083,6 +34178,11 @@ const folioLooks = {
34083
34178
  itemRoles: { items: "card" },
34084
34179
  roleMap: folioRoles
34085
34180
  },
34181
+ {
34182
+ id: id("faq-all-answers-showing"),
34183
+ treatment: "faq-open",
34184
+ roleMap: folioRoles
34185
+ },
34086
34186
  {
34087
34187
  id: id("image-gallery-square-tiles"),
34088
34188
  treatment: "gallery-tiles",
@@ -34102,6 +34202,21 @@ const folioLooks = {
34102
34202
  id: id("cta-centred"),
34103
34203
  treatment: "cta-centred",
34104
34204
  roleMap: folioRoles
34205
+ },
34206
+ {
34207
+ id: id("cta-title-beside-buttons"),
34208
+ treatment: "cta-beside",
34209
+ roleMap: folioRoles
34210
+ },
34211
+ {
34212
+ id: id("cta-figure-beside-offer"),
34213
+ treatment: "cta-figure",
34214
+ roleMap: folioRoles
34215
+ },
34216
+ {
34217
+ id: id("card-list-photos-on-top"),
34218
+ treatment: "photos-on-top",
34219
+ roleMap: folioRoles
34105
34220
  }
34106
34221
  ]
34107
34222
  };
@@ -34321,6 +34436,11 @@ const fulcrumOffers = [
34321
34436
  treatment: "faq-columns",
34322
34437
  roleMap: fulcrumRoles
34323
34438
  },
34439
+ {
34440
+ id: id("faq-all-answers-showing"),
34441
+ treatment: "faq-open",
34442
+ roleMap: fulcrumRoles
34443
+ },
34324
34444
  {
34325
34445
  id: id("image-gallery-square-tiles"),
34326
34446
  treatment: "gallery-tiles",
@@ -34340,6 +34460,21 @@ const fulcrumOffers = [
34340
34460
  id: id("cta-centred"),
34341
34461
  treatment: "cta-centred",
34342
34462
  roleMap: fulcrumRoles
34463
+ },
34464
+ {
34465
+ id: id("cta-title-beside-buttons"),
34466
+ treatment: "cta-beside",
34467
+ roleMap: fulcrumRoles
34468
+ },
34469
+ {
34470
+ id: id("cta-figure-beside-offer"),
34471
+ treatment: "cta-figure",
34472
+ roleMap: fulcrumRoles
34473
+ },
34474
+ {
34475
+ id: id("card-list-photos-on-top"),
34476
+ treatment: "photos-on-top",
34477
+ roleMap: fulcrumRoles
34343
34478
  }
34344
34479
  ];
34345
34480
  const fulcrumLooks = {
@@ -34616,6 +34751,11 @@ const posterOffers = [
34616
34751
  treatment: "faq-columns",
34617
34752
  roleMap: posterRoles
34618
34753
  },
34754
+ {
34755
+ id: id("faq-all-answers-showing"),
34756
+ treatment: "faq-open",
34757
+ roleMap: posterRoles
34758
+ },
34619
34759
  {
34620
34760
  id: id("image-gallery-square-tiles"),
34621
34761
  treatment: "gallery-tiles",
@@ -34635,6 +34775,21 @@ const posterOffers = [
34635
34775
  id: id("cta-centred"),
34636
34776
  treatment: "cta-centred",
34637
34777
  roleMap: posterRoles
34778
+ },
34779
+ {
34780
+ id: id("cta-title-beside-buttons"),
34781
+ treatment: "cta-beside",
34782
+ roleMap: posterRoles
34783
+ },
34784
+ {
34785
+ id: id("cta-figure-beside-offer"),
34786
+ treatment: "cta-figure",
34787
+ roleMap: posterRoles
34788
+ },
34789
+ {
34790
+ id: id("card-list-photos-on-top"),
34791
+ treatment: "photos-on-top",
34792
+ roleMap: posterRoles
34638
34793
  }
34639
34794
  ];
34640
34795
  const posterLooks = {
@@ -34983,6 +35138,11 @@ const lanternOffers = [
34983
35138
  itemRoles: { items: "card" },
34984
35139
  roleMap: lanternRoles
34985
35140
  },
35141
+ {
35142
+ id: id("faq-all-answers-showing"),
35143
+ treatment: "faq-open",
35144
+ roleMap: lanternRoles
35145
+ },
34986
35146
  {
34987
35147
  id: id("image-gallery-lead-photo"),
34988
35148
  treatment: "gallery-lead",
@@ -34992,6 +35152,21 @@ const lanternOffers = [
34992
35152
  id: id("cta-centred"),
34993
35153
  treatment: "cta-centred",
34994
35154
  roleMap: lanternRoles
35155
+ },
35156
+ {
35157
+ id: id("cta-title-beside-buttons"),
35158
+ treatment: "cta-beside",
35159
+ roleMap: lanternRoles
35160
+ },
35161
+ {
35162
+ id: id("cta-figure-beside-offer"),
35163
+ treatment: "cta-figure",
35164
+ roleMap: lanternRoles
35165
+ },
35166
+ {
35167
+ id: id("card-list-photos-on-top"),
35168
+ treatment: "photos-on-top",
35169
+ roleMap: lanternRoles
34995
35170
  }
34996
35171
  ];
34997
35172
  const lanternLooks = {
@@ -35262,6 +35437,11 @@ const measureOffers = [
35262
35437
  treatment: "faq-columns",
35263
35438
  roleMap: measureRoles
35264
35439
  },
35440
+ {
35441
+ id: id("faq-all-answers-showing"),
35442
+ treatment: "faq-open",
35443
+ roleMap: measureRoles
35444
+ },
35265
35445
  {
35266
35446
  id: id("image-gallery-square-tiles"),
35267
35447
  treatment: "gallery-tiles",
@@ -35281,6 +35461,21 @@ const measureOffers = [
35281
35461
  id: id("cta-centred"),
35282
35462
  treatment: "cta-centred",
35283
35463
  roleMap: measureRoles
35464
+ },
35465
+ {
35466
+ id: id("cta-title-beside-buttons"),
35467
+ treatment: "cta-beside",
35468
+ roleMap: measureRoles
35469
+ },
35470
+ {
35471
+ id: id("cta-figure-beside-offer"),
35472
+ treatment: "cta-figure",
35473
+ roleMap: measureRoles
35474
+ },
35475
+ {
35476
+ id: id("card-list-photos-on-top"),
35477
+ treatment: "photos-on-top",
35478
+ roleMap: measureRoles
35284
35479
  }
35285
35480
  ];
35286
35481
  const measureLooks = {
@@ -36397,8 +36592,10 @@ function arrangementManifestFromVariants(manifest) {
36397
36592
  lookOnlyKeys: manifest.variantMeaning?.lookOnlyKeys
36398
36593
  };
36399
36594
  }
36595
+ /** A Look-only arrangement is never a default: a block whose only variants are Look-only keeps its plain layout. */
36400
36596
  function manifestDefaultArrangement(manifest) {
36401
- const key = manifest.defaultKey !== null && manifest.keys.includes(manifest.defaultKey) ? manifest.defaultKey : manifest.keys[0];
36597
+ const defaults = manifest.keys.filter((key$1) => !manifest.lookOnlyKeys?.includes(key$1));
36598
+ const key = manifest.defaultKey !== null && defaults.includes(manifest.defaultKey) ? manifest.defaultKey : defaults[0];
36402
36599
  return key === undefined ? null : asLayoutVariantKey(key);
36403
36600
  }
36404
36601
  /** A declared secondary axis shares the arrangement rule, without rewriting content. */
@@ -36486,7 +36683,8 @@ function formatLayoutVariantLabel(variantKey) {
36486
36683
  function editorLayoutManifest(block, first) {
36487
36684
  return {
36488
36685
  keys: block.layoutVariantKeys ?? block.designMetadata?.layoutProfiles.map((profile) => profile.variantKey) ?? [],
36489
- defaultKey: block.defaultLayoutVariantKey ?? first?.id ?? null
36686
+ defaultKey: block.defaultLayoutVariantKey ?? first?.id ?? null,
36687
+ lookOnlyKeys: block.variantMeaning?.lookOnlyKeys
36490
36688
  };
36491
36689
  }
36492
36690
 
@@ -36789,62 +36987,51 @@ function layoutFamilyForEffectiveSelection(block) {
36789
36987
  return block.availableLayouts.find((layout) => layout.id === effectiveLayout)?.profile.layoutFamily ?? null;
36790
36988
  }
36791
36989
  function planPageDesignLayoutLookCompatibility(block, layoutVariantKey) {
36792
- const layout = block.availableLayouts.find((option) => option.id === layoutVariantKey) ?? null;
36793
- if (!layout) {
36990
+ if (!block.availableLayouts.some((option) => option.id === layoutVariantKey)) {
36794
36991
  return {
36795
36992
  kind: "layout-unavailable",
36796
36993
  layoutVariantKey
36797
36994
  };
36798
36995
  }
36799
36996
  const availableLooks = availableLooksForLayout(block.availableLooksByLayout, layoutVariantKey);
36800
- const defaultLookId = block.availableLooksByLayout.find((entry) => entry.layoutVariantKey === layoutVariantKey)?.autoLookId ?? null;
36801
- const layoutSelection = {
36802
- kind: "selected",
36803
- value: layoutVariantKey,
36804
- status: "supported",
36805
- effectiveValue: layoutVariantKey
36806
- };
36807
- const lookAvailability = block.lookAvailability.kind === "not-applicable" ? block.lookAvailability : availableLooks.length > 0 ? { kind: "available" } : {
36808
- kind: "misconfigured",
36809
- reason: "empty-look-catalog"
36997
+ const autoLookId = block.availableLooksByLayout.find((entry) => entry.layoutVariantKey === layoutVariantKey)?.autoLookId ?? null;
36998
+ return {
36999
+ kind: "layout-supported",
37000
+ layout: {
37001
+ kind: "selected",
37002
+ value: layoutVariantKey,
37003
+ status: "supported",
37004
+ effectiveValue: layoutVariantKey
37005
+ },
37006
+ layoutChoice: userPinnedEditorChoice(layoutVariantKey),
37007
+ availableLooks,
37008
+ autoLookId,
37009
+ lookAvailability: block.lookAvailability.kind === "not-applicable" ? block.lookAvailability : availableLooks.length > 0 ? { kind: "available" } : {
37010
+ kind: "misconfigured",
37011
+ reason: "empty-look-catalog"
37012
+ },
37013
+ ...compatibleLookIntent(block.look, availableLooks, autoLookId)
36810
37014
  };
36811
- if (block.look.kind === "auto") {
37015
+ }
37016
+ /** Preserve an available pin; an incompatible pin returns to the layout's automatic Look. */
37017
+ function compatibleLookIntent(look, availableLooks, autoLookId) {
37018
+ if (look.kind === "auto") {
36812
37019
  return {
36813
- kind: "layout-supported",
36814
- layout: layoutSelection,
36815
- availableLooks,
36816
- autoLookId: defaultLookId,
36817
- lookAvailability,
36818
- look: autoEditorChoice(defaultLookId),
37020
+ look: autoEditorChoice(autoLookId),
36819
37021
  lookIntentChange: { kind: "preserve-auto" }
36820
37022
  };
36821
37023
  }
36822
- const pinnedLook = block.look;
36823
- const pinnedLookStillSupported = availableLooks.some((look) => look.id === pinnedLook.value);
36824
- if (pinnedLookStillSupported) {
36825
- return {
36826
- kind: "layout-supported",
36827
- layout: layoutSelection,
36828
- availableLooks,
36829
- autoLookId: defaultLookId,
36830
- lookAvailability,
36831
- look: userPinnedEditorChoice(pinnedLook.value),
36832
- lookIntentChange: {
36833
- kind: "preserve-supported-pin",
36834
- appearancePresetId: pinnedLook.value
36835
- }
36836
- };
36837
- }
36838
- return {
36839
- kind: "layout-supported",
36840
- layout: layoutSelection,
36841
- availableLooks,
36842
- autoLookId: defaultLookId,
36843
- lookAvailability,
36844
- look: autoEditorChoice(defaultLookId),
37024
+ return availableLooks.some((option) => option.id === look.value) ? {
37025
+ look: userPinnedEditorChoice(look.value),
37026
+ lookIntentChange: {
37027
+ kind: "preserve-supported-pin",
37028
+ appearancePresetId: look.value
37029
+ }
37030
+ } : {
37031
+ look: autoEditorChoice(autoLookId),
36845
37032
  lookIntentChange: {
36846
37033
  kind: "reset-incompatible-pin",
36847
- previousAppearancePresetId: pinnedLook.value
37034
+ previousAppearancePresetId: look.value
36848
37035
  }
36849
37036
  };
36850
37037
  }
@@ -44428,6 +44615,15 @@ const siteBusinessAddressSchema = z.object({
44428
44615
  lat: z.number().gte(-90).lte(90),
44429
44616
  lng: z.number().gte(-180).lte(180)
44430
44617
  }).strict();
44618
+ const openingHoursSchema = z.unknown().transform((value, ctx) => {
44619
+ const parsed = parseWeeklyOpeningHours(value);
44620
+ if (parsed.ok) return parsed.value;
44621
+ ctx.addIssue({
44622
+ code: "custom",
44623
+ message: parsed.error.message
44624
+ });
44625
+ return z.NEVER;
44626
+ });
44431
44627
  /** Configures site-level metadata that must be available before content commands run. */
44432
44628
  const configureSiteIdentityCommandSchema = z.object({
44433
44629
  type: z.literal("configureSiteIdentity"),
@@ -44442,6 +44638,7 @@ const configureSiteIdentityCommandSchema = z.object({
44442
44638
  "noindex_demo"
44443
44639
  ]).optional(),
44444
44640
  contact: siteContactSchema.optional(),
44641
+ openingHours: openingHoursSchema.nullable().optional(),
44445
44642
  businessAddress: siteBusinessAddressSchema.optional(),
44446
44643
  privacyPolicy: z.literal("published").optional()
44447
44644
  }).strict()
@@ -45030,6 +45227,7 @@ const seedPortalOrderCommandSchema = z.object({
45030
45227
  }).strict().superRefine(validatePortalOrder)
45031
45228
  }).strict();
45032
45229
  const appointmentServiceCommonInputFields = {
45230
+ imageRef: resourceRefSchema("media").nullable().optional(),
45033
45231
  title: z.string().trim().min(1),
45034
45232
  description: z.string().nullable().optional(),
45035
45233
  durationMinutes: z.number().int().min(5).max(24 * 60),
@@ -46586,10 +46784,13 @@ function bookingCommandRefContributions(command) {
46586
46784
  case "seedBookingCustomer":
46587
46785
  case "upsertAppointmentServiceCategory":
46588
46786
  case "upsertBookableResource": return provided(command.ref);
46589
- case "upsertAppointmentService": return providedWithRequirements(command.ref, command.input.categoryRef === undefined ? [] : [{
46787
+ case "upsertAppointmentService": return providedWithRequirements(command.ref, [...command.input.categoryRef === undefined ? [] : [{
46590
46788
  ref: command.input.categoryRef,
46591
46789
  field: "input.categoryRef"
46592
- }]);
46790
+ }], ...command.input.imageRef == null ? [] : [{
46791
+ ref: command.input.imageRef,
46792
+ field: "input.imageRef"
46793
+ }]]);
46593
46794
  case "upsertBookingPassProduct": return {
46594
46795
  ...provided(command.ref),
46595
46796
  requires: command.input.appointmentScope?.mode === "selected_services" ? command.input.appointmentScope.serviceRefs.map((ref, index) => ({
@@ -47661,6 +47862,16 @@ function venueManagementFields(command) {
47661
47862
  };
47662
47863
  }
47663
47864
 
47865
+ //#endregion
47866
+ //#region ../site-commands/src/pageSeo.ts
47867
+ /** Effective metadata written by a page upsert, shared with CLI previews. */
47868
+ function resolvePageUpsertSeo(input) {
47869
+ return {
47870
+ seoTitle: input.seoTitle ?? input.title,
47871
+ seoDescription: input.seoDescription ?? null
47872
+ };
47873
+ }
47874
+
47664
47875
  //#endregion
47665
47876
  //#region ../api/src/event-visibility.ts
47666
47877
  const EVENT_VISIBILITY_VALUES = ["public", "unlisted"];
@@ -47669,6 +47880,13 @@ function isEventVisibility(value) {
47669
47880
  return value === "public" || value === "unlisted";
47670
47881
  }
47671
47882
  const eventVisibilitySchema = z.enum(EVENT_VISIBILITY_VALUES, { error: EVENT_VISIBILITY_ERROR_MESSAGE });
47883
+ /** Archived runs do not advertise a page. Announced and informational runs do.
47884
+ * Empty pages and unavailable run facts keep their existing indexing behavior.
47885
+ */
47886
+ function isUnlistedEventPage(linkedRuns) {
47887
+ const pageRuns = linkedRuns.filter((run) => run?.status !== "archived");
47888
+ return pageRuns.length > 0 && pageRuns.every((run) => run?.visibility === "unlisted");
47889
+ }
47672
47890
 
47673
47891
  //#endregion
47674
47892
  //#region ../blocks/src/system/types/link.ts
@@ -48268,4 +48486,4 @@ function parseSdkEventRunUpsertInput(input, runIndex, options) {
48268
48486
  }
48269
48487
 
48270
48488
  //#endregion
48271
- export { createNavigationRef as $, cardRoleSchema as $n, __toESM as $r, footerPreferencesSchema as $t, eventManagementTiming as A, runtimeMediaSchema as An, backgroundColorStyle as Ar, BREAKPOINT_SM as At, bookingPaymentCollectionOptionSchema as B, deriveVideoSlotPolicy as Bn, PUBLIC_BUTTON_ROLES as Br, themeButtonSizeClassName as Bt, stableStringify as C, getDirectImageUrlForRelativePath as Cn, tileTreatmentValues as Cr, themeSchema as Ct, evaluateSiteCommandBatchExposure as D, mediaPosterSchema as Dn, surfaceDecorationColors as Dr, renderHeaderPaintTargetRules as Dt, mapEventCommandContent as E, isSiteScopedDirectImageStoragePath as En, resolveSurface as Er, getHeaderPaintTargets as Et, pageIdentifierForCommand as F, buildMediaIdentifierFromFilename as Fn, opaqueSurfaceDeclarations as Fr, getComponentShadowVar as Ft, createBlockRef as G, normalizeAmbiguousStoragePathForSite as Gn, surfaceForegroundInputFromResolved as Gr, buildTextContrastShadow as Gt, require_jsx_runtime as H, getExtensionForMimeType as Hn, surfaceToneFromForegroundToken as Hr, parseThemeForPersistence as Ht, pagePathForCommand as I, parseCanonicalMediaIdentifier as In, isCssColorLiteral as Ir, ICON_CONFIG as It, createContentEntryRef as J, MAX_MANAGEMENT_MEDIA_UPLOAD_BYTES as Jn, expandPalette as Jr, arrangementSlotNames as Jt, createBlocksRef as K, parseRelativeStoragePath as Kn, surfaceForegroundStyle as Kr, generateNavLinkCSS as Kt, hasConfiguredBookingVertical as L, parseMediaIdentifier as Ln, resolveOnColorForThemeToken as Lr, generateDefaultButtonSystem as Lt, blockOrderIdentifiersForCommand as M, resolveManagedMediaReference as Mn, mergeStyles as Mr, MQ_MD_DOWN as Mt, entryIdentifierForCommand as N, mediaTypeDiscriminants as Nn, rgbColorValue as Nr, headerVariantValues as Nt, evaluateSiteCommandExposure as O, mediaSchema as On, resolveSurfaceForeground as Or, BREAKPOINT_LG as Ot, pageIdentifierForBlockCommand as P, mediaIdentifierSchema as Pn, textColorStyle as Pr, getComponentBorderWidthPx as Pt, createFormRef as Q, renderCssDeclarations as Qn, __commonJSMin as Qr, pageDesignIntentSchemaVersion as Qt, eventCommandScheduleSchema as R, resolveMediaIdentifier as Rn, resolveThemeColorReferenceValue as Rr, parseThemeButtonVariantId as Rt, sortRecord as S, resolveMediaTransformForAspect as Sn, testimonialsCompositionTreatmentValues as Sr, deriveSiteStyleBlockPolicy as St, parseAndPlanCommandBatchForTypes as T, getImageUrl as Tn, visibleHeadingDecorationFamilyValues as Tr, generateMobileOverlayBackdropFilterFix as Tt, require_react as U, getMimeType as Un, defaultThemeTokens as Ur, buttonStyleSelectionSchema as Ut, bookingPaymentTermsSchema as V, resolveVideoSelectionIntentForMediaField as Vn, selectLogoVariant as Vr, themeButtonVariantClassNames as Vt, ianaTimezoneSchema as W, asRecord as Wn, surfaceForegroundDeclarations as Wr, footerForegroundCandidates as Wt, createEventSeriesRef as X, managementMediaLibraryUploadLimitForMimeType as Xn, parseThemeColorToken as Xr, resolveLookSlotSurfaces as Xt, createEventCategoryRef as Y, classifyKnownMimeType as Yn, getTextColorForBackground as Yr, resolveItemSurface as Yt, createFooterRef as Z, parseSafeDownloadFilename as Zn, parseBlockColorToken as Zr, pageDesignBoundaryTreatmentSchema as Zt, normalizeLinkValue as _, looksLikeUuid as _n, featureCardCompositionTreatmentValues as _r, requireCuratedSiteStyle as _t, classifySdkEventSchedule as a, parseCanonicalRuntimeBackground as an, cardListKnobBlocks as ar, effectiveHeaderNavLinkStyle as at, isEventVisibility as b, isExplicitRectCrop as bn, makeBoundaryId as br, getGradientPreset as bt, customLinkSchema as c, boxBackgroundOverlaySchema as cn, asLayoutVariantKey as cr, transparentHeaderForegroundInput as ct, internalLinkSchema as d, siteChromeBackgroundOverrideOwner as dn, assertNever$1 as dr, readHeaderNavFontSizePreference as dt, headerRootPaint as en, cardVariantRoleValues as er, createPageRef as et, internalResolvedLinkSchema as f, stripStaleTransitionStyleGroup as fn, defineBlockDesignCapability as fr, arrangementManifestFromVariants as ft, linkSchema as g, deleteEnvSpecificKeys as gn, eyebrowTreatmentValues as gr, resolvePublishedLook as gt, isResolvedInternalLinkEntityType as h, walkAndCollectImageAttrs as hn, eventListTreatmentValues as hr, resolveModeArrangement as ht, sdkEventUpsertOptionalFieldSchemas as i, deriveSectionGround as in, cardListFamilyBlocks as ir, slugPart as it, blockIdentifierForCommand as j, buildRenderableMediaAssetIndex as jn, borderColorStyle as jr, BREAKPOINT_XL as jt, getSiteCommandMetadata as k, persistableMediaSchema as kn, TokenResolver as kr, BREAKPOINT_MD as kt, entryLinkSchema as l, boxBackgroundSchema as ln, asPageFlowPresetId as lr, readOpeningForegroundProjection as lt, isInternalResolvedLinkValue as m, summarizePortableMediaReferences as mn, defineNoBlockDesignCapability as mr, resolveEffectiveArrangement as mt, sdkCourseBookingSettingsSchema as n, composeBoundary as nn, defineBlockDesignMetadata as nr, createVenueRef as nt, classifySdkEventBookingOffer as o, resolveSectionBackground as on, asAppearancePresetId as or, headerForegroundCandidates as ot, internalRouteOnlyLinkSchema as p, collectPortableMediaReferencesFromContent as pn, defineFrameCapability as pr, readStoredMode as pt, createCommandRef as q, FILE_SIZE_LIMITS as qn, surfaceForegroundValue as qr, arrangementLookHooks as qt, sdkEventOccurrenceInputSchema as r, sectionFactsForContent as rn, resolveEffectiveKnobs as rr, refSlug as rt, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as s, resolveSectionPhotoPlacement as sn, asDesignBlockId as sr, headerLeafTextColor as st, classifySdkEventTiming as t, boundaryLayout as tn, normalizeCardRole as tr, createSiteCommandSiteRef as tt, externalLinkSchema as u, runtimeBoxBackgroundSchema as un, asSiteStyleId as ur, mergeHeaderNavTypographyPreference as ut, pageLinkSchema as v, rotateNormalizedPoint as vn, headingDecorationColorTokenValues as vr, compiledRuntimeStyleFieldNames as vt, createDryRunReport as w, getDirectImageUrlForSiteScopedPath as wn, toNonEmptyReadonlyArray as wr, generateHeaderScrollTreatmentStyles as wt, venueManagementFields as x, parseAspectRatioValue as xn, offeringsPreviewCompositionTreatmentValues as xr, parseGradientPresetId as xt, eventVisibilitySchema as y, normalizeWidthCandidates as yn, introCompositionTreatmentValues as yr, gradientToCss as yt, eventBookingOfferIntentSchema as z, slugifyMediaIdentifier as zn, resolveTokenOrCssColorValue as zr, themeButtonExtraClassesWithTrailingIcon as zt };
48489
+ export { createFormRef as $, managementMediaLibraryUploadLimitForMimeType as $n, parseThemeColorToken as $r, pageDesignIntentSchemaVersion as $t, getSiteCommandMetadata as A, mediaPosterSchema as An, surfaceDecorationColors as Ar, BREAKPOINT_MD as At, eventBookingOfferIntentSchema as B, parseMediaIdentifier as Bn, resolveOnColorForThemeToken as Br, themeButtonExtraClassesWithTrailingIcon as Bt, sortRecord as C, isExplicitRectCrop as Cn, makeBoundaryId as Cr, deriveSiteStyleBlockPolicy as Ct, mapEventCommandContent as D, getDirectImageUrlForSiteScopedPath as Dn, toNonEmptyReadonlyArray as Dr, getHeaderPaintTargets as Dt, parseAndPlanCommandBatchForTypes as E, getDirectImageUrlForRelativePath as En, tileTreatmentValues as Er, generateMobileOverlayBackdropFilterFix as Et, pageIdentifierForBlockCommand as F, resolveManagedMediaReference as Fn, mergeStyles as Fr, getComponentBorderWidthPx as Ft, ianaTimezoneSchema as G, getExtensionForMimeType as Gn, surfaceToneFromForegroundToken as Gr, footerForegroundCandidates as Gt, bookingPaymentTermsSchema as H, slugifyMediaIdentifier as Hn, resolveTokenOrCssColorValue as Hr, themeButtonVariantClassNames as Ht, pageIdentifierForCommand as I, mediaTypeDiscriminants as In, rgbColorValue as Ir, getComponentShadowVar as It, createCommandRef as J, normalizeAmbiguousStoragePathForSite as Jn, surfaceForegroundInputFromResolved as Jr, arrangementLookHooks as Jt, createBlockRef as K, getMimeType as Kn, defaultThemeTokens as Kr, buildTextContrastShadow as Kt, pagePathForCommand as L, mediaIdentifierSchema as Ln, textColorStyle as Lr, ICON_CONFIG as Lt, blockIdentifierForCommand as M, persistableMediaSchema as Mn, TokenResolver as Mr, BREAKPOINT_XL as Mt, blockOrderIdentifiersForCommand as N, runtimeMediaSchema as Nn, backgroundColorStyle as Nr, MQ_MD_DOWN as Nt, evaluateSiteCommandBatchExposure as O, getImageUrl as On, visibleHeadingDecorationFamilyValues as Or, renderHeaderPaintTargetRules as Ot, entryIdentifierForCommand as P, buildRenderableMediaAssetIndex as Pn, borderColorStyle as Pr, headerVariantValues as Pt, createFooterRef as Q, classifyKnownMimeType as Qn, getTextColorForBackground as Qr, pageDesignBoundaryTreatmentSchema as Qt, hasConfiguredBookingVertical as R, buildMediaIdentifierFromFilename as Rn, opaqueSurfaceDeclarations as Rr, generateDefaultButtonSystem as Rt, venueManagementFields as S, normalizeWidthCandidates as Sn, introCompositionTreatmentValues as Sr, parseGradientPresetId as St, createDryRunReport as T, resolveMediaTransformForAspect as Tn, testimonialsCompositionTreatmentValues as Tr, generateHeaderScrollTreatmentStyles as Tt, require_jsx_runtime as U, deriveVideoSlotPolicy as Un, PUBLIC_BUTTON_ROLES as Ur, parseThemeForPersistence as Ut, bookingPaymentCollectionOptionSchema as V, resolveMediaIdentifier as Vn, resolveThemeColorReferenceValue as Vr, themeButtonSizeClassName as Vt, require_react as W, resolveVideoSelectionIntentForMediaField as Wn, selectLogoVariant as Wr, buttonStyleSelectionSchema as Wt, createEventCategoryRef as X, FILE_SIZE_LIMITS as Xn, surfaceForegroundValue as Xr, resolveItemSurface as Xt, createContentEntryRef as Y, parseRelativeStoragePath as Yn, surfaceForegroundStyle as Yr, arrangementSlotNames as Yt, createEventSeriesRef as Z, MAX_MANAGEMENT_MEDIA_UPLOAD_BYTES as Zn, expandPalette as Zr, resolveLookSlotSurfaces as Zt, normalizeLinkValue as _, summarizePortableMediaReferences as _n, defineNoBlockDesignCapability as _r, resolvePublishedLook as _t, classifySdkEventSchedule as a, deriveSectionGround as an, defineBlockDesignMetadata as ar, slugPart as at, isEventVisibility as b, looksLikeUuid as bn, featureCardCompositionTreatmentValues as br, gradientToCss as bt, customLinkSchema as c, resolveSectionBackground as cn, cardListKnobBlocks as cr, headerLeafTextColor as ct, internalLinkSchema as d, boxBackgroundOverlaySchema as dn, asLayoutVariantKey as dr, mergeHeaderNavTypographyPreference as dt, parseBlockColorToken as ei, footerPreferencesSchema as en, parseSafeDownloadFilename as er, createNavigationRef as et, internalResolvedLinkSchema as f, boxBackgroundSchema as fn, asPageFlowPresetId as fr, readHeaderNavFontSizePreference as ft, linkSchema as g, collectPortableMediaReferencesFromContent as gn, defineFrameCapability as gr, resolveModeArrangement as gt, isResolvedInternalLinkEntityType as h, stripStaleTransitionStyleGroup as hn, defineBlockDesignCapability as hr, resolveEffectiveArrangement as ht, sdkEventUpsertOptionalFieldSchemas as i, sectionFactsForContent as in, normalizeCardRole as ir, refSlug as it, eventManagementTiming as j, mediaSchema as jn, resolveSurfaceForeground as jr, BREAKPOINT_SM as jt, evaluateSiteCommandExposure as k, isSiteScopedDirectImageStoragePath as kn, resolveSurface as kr, BREAKPOINT_LG as kt, entryLinkSchema as l, resolveSectionPhotoPlacement as ln, asAppearancePresetId as lr, transparentHeaderForegroundInput as lt, isInternalResolvedLinkValue as m, siteChromeBackgroundOverrideOwner as mn, assertNever$1 as mr, readStoredMode as mt, sdkCourseBookingSettingsSchema as n, __toESM as ni, boundaryLayout as nn, cardRoleSchema as nr, createSiteCommandSiteRef as nt, classifySdkEventBookingOffer as o, heroPhotoPaintsGround as on, resolveEffectiveKnobs as or, effectiveHeaderNavLinkStyle as ot, internalRouteOnlyLinkSchema as p, runtimeBoxBackgroundSchema as pn, asSiteStyleId as pr, arrangementManifestFromVariants as pt, createBlocksRef as q, asRecord as qn, surfaceForegroundDeclarations as qr, generateNavLinkCSS as qt, sdkEventOccurrenceInputSchema as r, composeBoundary as rn, cardVariantRoleValues as rr, createVenueRef as rt, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as s, parseCanonicalRuntimeBackground as sn, cardListFamilyBlocks as sr, headerForegroundCandidates as st, classifySdkEventTiming as t, __commonJSMin as ti, headerRootPaint as tn, renderCssDeclarations as tr, createPageRef as tt, externalLinkSchema as u, sectionForegroundBackground as un, asDesignBlockId as ur, readOpeningForegroundProjection as ut, pageLinkSchema as v, walkAndCollectImageAttrs as vn, eventListTreatmentValues as vr, requireCuratedSiteStyle as vt, stableStringify as w, parseAspectRatioValue as wn, offeringsPreviewCompositionTreatmentValues as wr, themeSchema as wt, resolvePageUpsertSeo as x, rotateNormalizedPoint as xn, headingDecorationColorTokenValues as xr, getGradientPreset as xt, eventVisibilitySchema as y, deleteEnvSpecificKeys as yn, eyebrowTreatmentValues as yr, compiledRuntimeStyleFieldNames as yt, eventCommandScheduleSchema as z, parseCanonicalMediaIdentifier as zn, isCssColorLiteral as zr, parseThemeButtonVariantId as zt };