riverbankcms 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acceptance/matrix.mjs +3 -3
- package/dist/cli/index.mjs +1676 -3575
- package/dist/{eventUpsertInputSchema-Dg60PKJI.mjs → eventUpsertInputSchema-7QFvBuxF.mjs} +4 -108
- package/dist/load-config-FmixWCpv.mjs +5 -0
- package/dist/{load-config-CCaUI4HN.mjs → load-config-lESIf8eO.mjs} +1 -1
- package/dist/{plan-CaWqAqfn.mjs → plan-DPS1XAby.mjs} +1 -1
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{sdk-event-upsert-C6zsxDcf.mjs → sdk-event-upsert-Dy08IXYL.mjs} +82 -7
- package/dist/{sdk-peer-C6kOODEY.mjs → sdk-peer-CeNepTFW.mjs} +2 -2
- package/dist/{src-BRAF1Dee.mjs → src-DKm0bLEA.mjs} +40 -24
- package/dist/{style-qH8rqy9H.mjs → style-J8_HbTIm.mjs} +735 -491
- package/dist/testing.mjs +4 -4
- package/package.json +1 -1
- package/dist/load-config-CNhueqVc.mjs +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { At as ok, B as parseUtcIsoDateTimeString, Ct as unsafeAsSiteScopedStoragePath, D as mapNonEmptyArray, Dt as unsafeAsUploadSessionId, E as fromArray, Et as unsafeAsStoragePath, O as hasText, Ot as unsafeAsUserId, St as unsafeAsSiteId, Tt as unsafeAsStorageBucketName, Z as assertNever, _ as parseFooterCompositionV1, _t as unsafeAsPositiveByteCount, a as parseVerticalPresetId, at as unsafeAsBookingRequirementId, bt as unsafeAsSafeDownloadFilename, c as EVENT_PRESET_VALUES, dt as unsafeAsEventOfferingId, f as createSecret, ft as unsafeAsEventSeriesId, g as footerNavigationLayouts, gt as unsafeAsOriginalFilename, h as stableJsonStringify, ht as unsafeAsOccurrenceId, i as parseVerticalId, k as isPresent, kt as err, l as ORDINARY_EVENT_PRESET_VALUES, lt as unsafeAsDetectedMimeType, m as parseManagementKey, mt as unsafeAsMediaAssetId, n as canonicalizeConfiguredBookingVerticalConfig, nt as parseSiteId, o as resolveSiteVerticalBookingConfig, ot as unsafeAsBookingSessionId, p as exposeSecret, pt as unsafeAsFileChecksumSha256, st as unsafeAsDeclaredMimeType, ut as unsafeAsEntitlementId, vt as unsafeAsPositiveSeconds, w as isCanonicalRichTextDoc, xt as unsafeAsSiteFontId, yt as unsafeAsProductId } from "./src-
|
|
3
|
-
import { a as classifySdkEventPricing, n as sdkEventOccurrenceInputSchema, o as classifySdkEventPaymentTerms } from "./sdk-event-upsert-
|
|
4
|
-
import { t as CliSdkPeerError } from "./sdk-peer-
|
|
2
|
+
import { At as ok, B as parseUtcIsoDateTimeString, Ct as unsafeAsSiteScopedStoragePath, D as mapNonEmptyArray, Dt as unsafeAsUploadSessionId, E as fromArray, Et as unsafeAsStoragePath, O as hasText, Ot as unsafeAsUserId, St as unsafeAsSiteId, Tt as unsafeAsStorageBucketName, Z as assertNever, _ as parseFooterCompositionV1, _t as unsafeAsPositiveByteCount, a as parseVerticalPresetId, at as unsafeAsBookingRequirementId, bt as unsafeAsSafeDownloadFilename, c as EVENT_PRESET_VALUES, dt as unsafeAsEventOfferingId, f as createSecret, ft as unsafeAsEventSeriesId, g as footerNavigationLayouts, gt as unsafeAsOriginalFilename, h as stableJsonStringify, ht as unsafeAsOccurrenceId, i as parseVerticalId, k as isPresent, kt as err, l as ORDINARY_EVENT_PRESET_VALUES, lt as unsafeAsDetectedMimeType, m as parseManagementKey, mt as unsafeAsMediaAssetId, n as canonicalizeConfiguredBookingVerticalConfig, nt as parseSiteId, o as resolveSiteVerticalBookingConfig, ot as unsafeAsBookingSessionId, p as exposeSecret, pt as unsafeAsFileChecksumSha256, st as unsafeAsDeclaredMimeType, ut as unsafeAsEntitlementId, vt as unsafeAsPositiveSeconds, w as isCanonicalRichTextDoc, xt as unsafeAsSiteFontId, yt as unsafeAsProductId } from "./src-DKm0bLEA.mjs";
|
|
3
|
+
import { a as classifySdkEventPricing, n as sdkEventOccurrenceInputSchema, o as classifySdkEventPaymentTerms } from "./sdk-event-upsert-Dy08IXYL.mjs";
|
|
4
|
+
import { t as CliSdkPeerError } from "./sdk-peer-CeNepTFW.mjs";
|
|
5
5
|
import "node:module";
|
|
6
6
|
import { Command } from "commander";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -10254,12 +10254,8 @@ const legacyHeaderVariantValues = Object.keys(legacyHeaderVariants);
|
|
|
10254
10254
|
* `@riverbankcms/api` is `z.input<typeof themeSchema>`, so a widened input here
|
|
10255
10255
|
* would leak straight into a public type.
|
|
10256
10256
|
*
|
|
10257
|
-
*
|
|
10258
|
-
*
|
|
10259
|
-
* `apps/dashboard/src/server/services/sites/runtimeSiteResponse.ts` returns the
|
|
10260
|
-
* raw database JSON asserted as `Theme` with no parse, so a theme still
|
|
10261
|
-
* carrying a legacy spelling reaches the theme editor un-aliased. That gap
|
|
10262
|
-
* predates this alias and is harmless while persisted usage is zero.
|
|
10257
|
+
* Persisted runtime themes are admitted through `parseThemeForPersistence`
|
|
10258
|
+
* before reaching consumers, so legacy spellings normalize at that boundary.
|
|
10263
10259
|
*/
|
|
10264
10260
|
const headerVariantWithLegacyAliasSchema = z.enum([...headerVariantValues, ...legacyHeaderVariantValues]).transform((value) => value in legacyHeaderVariants ? legacyHeaderVariants[value] : value);
|
|
10265
10261
|
|
|
@@ -10904,7 +10900,6 @@ const navFontWeight = z.enum([
|
|
|
10904
10900
|
"bold"
|
|
10905
10901
|
]);
|
|
10906
10902
|
const headerMaxWidth = z.enum(["container", "full"]);
|
|
10907
|
-
const headerBarFrame = z.enum(["full-bleed", "inset-shell"]);
|
|
10908
10903
|
const headerBorderSchema = componentBorderSchema.extend({ position: z.enum([
|
|
10909
10904
|
"bottom",
|
|
10910
10905
|
"top",
|
|
@@ -10933,12 +10928,6 @@ const headerLogoTextSchema = z.object({
|
|
|
10933
10928
|
]).optional(),
|
|
10934
10929
|
hideOnShrink: z.boolean().optional()
|
|
10935
10930
|
}).optional();
|
|
10936
|
-
const navEffectsSchema = z.object({
|
|
10937
|
-
underlineGradient: z.boolean().default(false),
|
|
10938
|
-
glow: z.boolean().default(false),
|
|
10939
|
-
glowColor: z.string().optional(),
|
|
10940
|
-
neumorphic: z.boolean().default(false)
|
|
10941
|
-
}).optional();
|
|
10942
10931
|
const dropdownStyleSchema = z.object({
|
|
10943
10932
|
background: themeColorTokenSchema.default("surface"),
|
|
10944
10933
|
textColor: themeColorTokenSchema.default("text"),
|
|
@@ -11030,9 +11019,7 @@ const headerSchema = z.object({
|
|
|
11030
11019
|
positioning: headerPositioning,
|
|
11031
11020
|
shrinkOnScroll: z.boolean(),
|
|
11032
11021
|
maxWidth: headerMaxWidth,
|
|
11033
|
-
barFrame: headerBarFrame.optional(),
|
|
11034
11022
|
scrollTreatment: headerScrollTreatmentSchema,
|
|
11035
|
-
logoOverride: mediaSchema.nullable().optional(),
|
|
11036
11023
|
background: headerBackgroundSchema.default({
|
|
11037
11024
|
type: "color",
|
|
11038
11025
|
color: "surface"
|
|
@@ -11044,13 +11031,11 @@ const headerSchema = z.object({
|
|
|
11044
11031
|
navFontRole: z.enum(["body", "heading"]).optional(),
|
|
11045
11032
|
navTextSize: navLinkStyleSchema.shape.textSize,
|
|
11046
11033
|
interactionPalette: headerInteractionPaletteSchema.optional(),
|
|
11047
|
-
navPlacement: z.enum(["end", "center"]).optional(),
|
|
11048
11034
|
container: headerContainerSchema,
|
|
11049
11035
|
border: headerBorderSchema,
|
|
11050
11036
|
shadow: componentShadowSchema.optional(),
|
|
11051
11037
|
logo: logoStyleSchema,
|
|
11052
11038
|
logoText: headerLogoTextSchema,
|
|
11053
|
-
navEffects: navEffectsSchema,
|
|
11054
11039
|
navContainer: navContainerSchema,
|
|
11055
11040
|
navLinkStyle: navLinkStyleSchema.optional(),
|
|
11056
11041
|
ctaGap: headerCtaGapSchema.optional(),
|
|
@@ -12638,7 +12623,7 @@ const blockAppearancePresets = [
|
|
|
12638
12623
|
id: "schedule-details-brand-depth",
|
|
12639
12624
|
target: "events",
|
|
12640
12625
|
label: "Brand-depth schedule details",
|
|
12641
|
-
blockKinds: ["block.event-details"
|
|
12626
|
+
blockKinds: ["block.event-details"],
|
|
12642
12627
|
design: {
|
|
12643
12628
|
sectionSurface: "brand-depth-band",
|
|
12644
12629
|
contentFrame: plainFrame,
|
|
@@ -16360,90 +16345,6 @@ function deriveHeaderLogoShapeFromDimensions({ width, height }) {
|
|
|
16360
16345
|
}
|
|
16361
16346
|
const defaultHeaderLogoContext = { shape: "text-only" };
|
|
16362
16347
|
|
|
16363
|
-
//#endregion
|
|
16364
|
-
//#region ../theme-core/src/site-styles/headerInteractionPalette.ts
|
|
16365
|
-
const clearSplitInteractionPalette = defineLookOptionGroup({
|
|
16366
|
-
id: "interaction-palette",
|
|
16367
|
-
label: "Hover colour",
|
|
16368
|
-
defaultOptionId: "accent",
|
|
16369
|
-
options: [
|
|
16370
|
-
{
|
|
16371
|
-
id: "accent",
|
|
16372
|
-
label: "Accent"
|
|
16373
|
-
},
|
|
16374
|
-
{
|
|
16375
|
-
id: "primary",
|
|
16376
|
-
label: "Primary"
|
|
16377
|
-
},
|
|
16378
|
-
{
|
|
16379
|
-
id: "secondary",
|
|
16380
|
-
label: "Secondary"
|
|
16381
|
-
}
|
|
16382
|
-
]
|
|
16383
|
-
});
|
|
16384
|
-
function resolveHeaderInteractionPaletteControl(group, preference) {
|
|
16385
|
-
if (!group) return { kind: "unavailable" };
|
|
16386
|
-
if (preference === "recommended") {
|
|
16387
|
-
const resolution$1 = resolveLookOption(group, undefined);
|
|
16388
|
-
return availableControlState(group, preference, resolution$1.option.id, null);
|
|
16389
|
-
}
|
|
16390
|
-
const resolution = resolveHeaderInteractionPalette(group, preference);
|
|
16391
|
-
return availableControlState(group, preference, resolution.option.id, resolution.kind === "repaired" ? {
|
|
16392
|
-
requested: preference,
|
|
16393
|
-
fallback: resolution.option.id,
|
|
16394
|
-
reason: resolution.reason
|
|
16395
|
-
} : null);
|
|
16396
|
-
}
|
|
16397
|
-
function availableControlState(group, preference, effectivePalette, repair$1) {
|
|
16398
|
-
return {
|
|
16399
|
-
kind: "available",
|
|
16400
|
-
preference,
|
|
16401
|
-
effectivePalette,
|
|
16402
|
-
options: [{
|
|
16403
|
-
value: "recommended",
|
|
16404
|
-
label: `Recommended (${defaultOptionLabel(group)})`
|
|
16405
|
-
}, ...group.options.map((option) => ({
|
|
16406
|
-
value: option.id,
|
|
16407
|
-
label: option.label
|
|
16408
|
-
}))],
|
|
16409
|
-
repair: repair$1
|
|
16410
|
-
};
|
|
16411
|
-
}
|
|
16412
|
-
function applyHeaderInteractionPalette(header, group, preference) {
|
|
16413
|
-
if (!group) return header;
|
|
16414
|
-
if (!header.navLinkStyle) {
|
|
16415
|
-
throw new Error(`Header interaction palette "${group.id}" requires a nav link style.`);
|
|
16416
|
-
}
|
|
16417
|
-
const palette = resolveHeaderInteractionPalette(group, preference).option.id;
|
|
16418
|
-
const pair = headerInteractionPalettePair(palette);
|
|
16419
|
-
const pillEffect = {
|
|
16420
|
-
effectId: "background-on-hover",
|
|
16421
|
-
options: {
|
|
16422
|
-
colorToken: pair.backgroundToken,
|
|
16423
|
-
textColorToken: pair.foregroundToken
|
|
16424
|
-
}
|
|
16425
|
-
};
|
|
16426
|
-
return {
|
|
16427
|
-
...header,
|
|
16428
|
-
navLinkStyle: {
|
|
16429
|
-
...header.navLinkStyle,
|
|
16430
|
-
hoverColorToken: null,
|
|
16431
|
-
borderRadius: "full",
|
|
16432
|
-
effects: {
|
|
16433
|
-
...header.navLinkStyle.effects,
|
|
16434
|
-
hover: [pillEffect],
|
|
16435
|
-
focus: [pillEffect]
|
|
16436
|
-
}
|
|
16437
|
-
}
|
|
16438
|
-
};
|
|
16439
|
-
}
|
|
16440
|
-
function resolveHeaderInteractionPalette(group, preference) {
|
|
16441
|
-
return resolveLookOption(group, preference === "recommended" ? undefined : preference);
|
|
16442
|
-
}
|
|
16443
|
-
function defaultOptionLabel(group) {
|
|
16444
|
-
return resolveLookOption(group, undefined).option.label;
|
|
16445
|
-
}
|
|
16446
|
-
|
|
16447
16348
|
//#endregion
|
|
16448
16349
|
//#region ../theme-core/src/site-styles/headerLayoutCatalog.ts
|
|
16449
16350
|
const titleOnlyLogoAccommodation = {
|
|
@@ -16660,43 +16561,37 @@ const headerStyleCatalog = defineExactCatalog()([
|
|
|
16660
16561
|
id: asHeaderStyleId("minimal"),
|
|
16661
16562
|
label: "Minimal",
|
|
16662
16563
|
description: "Quiet surface with simple color-change navigation.",
|
|
16663
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16664
|
-
navTypography: "plain"
|
|
16564
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16665
16565
|
},
|
|
16666
16566
|
{
|
|
16667
16567
|
id: asHeaderStyleId("fine-line"),
|
|
16668
16568
|
label: "Seamless",
|
|
16669
16569
|
description: "Borderless surface with underline hover for a quieter page transition.",
|
|
16670
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16671
|
-
navTypography: "plain"
|
|
16570
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16672
16571
|
},
|
|
16673
16572
|
{
|
|
16674
16573
|
id: asHeaderStyleId("soft-bar"),
|
|
16675
16574
|
label: "Soft Bar",
|
|
16676
16575
|
description: "Soft tinted surface with gentle pill hover states.",
|
|
16677
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16678
|
-
navTypography: "plain"
|
|
16576
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16679
16577
|
},
|
|
16680
16578
|
{
|
|
16681
16579
|
id: asHeaderStyleId("pill-nav"),
|
|
16682
16580
|
label: "Pill Nav",
|
|
16683
16581
|
description: "A calm pill navigation rail over a neutral header.",
|
|
16684
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16685
|
-
navTypography: "plain"
|
|
16582
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16686
16583
|
},
|
|
16687
16584
|
{
|
|
16688
16585
|
id: asHeaderStyleId("brand-bar"),
|
|
16689
16586
|
label: "Brand Bar",
|
|
16690
16587
|
description: "Solid brand surface with high-contrast navigation.",
|
|
16691
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16692
|
-
navTypography: "brand-caps"
|
|
16588
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16693
16589
|
},
|
|
16694
16590
|
{
|
|
16695
16591
|
id: asHeaderStyleId("brand-underline"),
|
|
16696
16592
|
label: "Brand Underline",
|
|
16697
16593
|
description: "Brand surface with underline-grow navigation.",
|
|
16698
|
-
supportedLayoutIds: supportedLayouts(["classic"])
|
|
16699
|
-
navTypography: "brand-caps"
|
|
16594
|
+
supportedLayoutIds: supportedLayouts(["classic"])
|
|
16700
16595
|
},
|
|
16701
16596
|
{
|
|
16702
16597
|
id: asHeaderStyleId("brand-pill"),
|
|
@@ -16706,69 +16601,55 @@ const headerStyleCatalog = defineExactCatalog()([
|
|
|
16706
16601
|
"classic",
|
|
16707
16602
|
"centered",
|
|
16708
16603
|
"floating"
|
|
16709
|
-
])
|
|
16710
|
-
navTypography: "brand-caps"
|
|
16604
|
+
])
|
|
16711
16605
|
},
|
|
16712
16606
|
{
|
|
16713
16607
|
id: asHeaderStyleId("brand-capsule"),
|
|
16714
16608
|
label: "Brand Capsule",
|
|
16715
16609
|
description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.",
|
|
16716
|
-
supportedLayoutIds: supportedLayouts(["classic"])
|
|
16717
|
-
navTypography: "quiet-caps"
|
|
16610
|
+
supportedLayoutIds: supportedLayouts(["classic"])
|
|
16718
16611
|
},
|
|
16719
16612
|
{
|
|
16720
16613
|
id: asHeaderStyleId("serif-line"),
|
|
16721
16614
|
label: "Serif Line",
|
|
16722
16615
|
description: "Typographic logo treatment with understated underline navigation.",
|
|
16723
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16724
|
-
navTypography: "heading"
|
|
16616
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16725
16617
|
},
|
|
16726
16618
|
{
|
|
16727
16619
|
id: asHeaderStyleId("flat-tabs"),
|
|
16728
16620
|
label: "Flat Tabs",
|
|
16729
16621
|
description: "Flat block hover and active states with a Swiss utility feel.",
|
|
16730
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16731
|
-
navTypography: "quiet-caps"
|
|
16622
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"])
|
|
16732
16623
|
},
|
|
16733
16624
|
{
|
|
16734
16625
|
id: asHeaderStyleId("glass"),
|
|
16735
16626
|
label: "Glass",
|
|
16736
16627
|
description: "Translucent chrome with frosted navigation backing.",
|
|
16737
|
-
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16738
|
-
navTypography: "plain"
|
|
16628
|
+
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16739
16629
|
},
|
|
16740
16630
|
{
|
|
16741
16631
|
id: asHeaderStyleId("minimal-surface"),
|
|
16742
16632
|
label: "Clear Split",
|
|
16743
16633
|
description: "Floating logo with transparent navigation and no shared shell.",
|
|
16744
|
-
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16745
|
-
navTypography: "plain",
|
|
16746
|
-
openingForegroundTarget: "all",
|
|
16747
|
-
scrollTreatment: "contrast-glass",
|
|
16748
|
-
interactionPalette: clearSplitInteractionPalette
|
|
16634
|
+
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16749
16635
|
},
|
|
16750
16636
|
{
|
|
16751
16637
|
id: asHeaderStyleId("soft-shell"),
|
|
16752
16638
|
label: "Soft Shell",
|
|
16753
16639
|
description: "Floating rounded shell with soft pill navigation states.",
|
|
16754
|
-
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16755
|
-
navTypography: "plain"
|
|
16640
|
+
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16756
16641
|
},
|
|
16757
16642
|
{
|
|
16758
16643
|
id: asHeaderStyleId("split-glass"),
|
|
16759
16644
|
label: "Split Glass",
|
|
16760
16645
|
description: "Logo floats independently while the navigation sits in a glass rail.",
|
|
16761
|
-
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16762
|
-
navTypography: "quiet-caps",
|
|
16763
|
-
openingForegroundTarget: "brand-only"
|
|
16646
|
+
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16764
16647
|
},
|
|
16765
16648
|
{
|
|
16766
16649
|
id: asHeaderStyleId("split-pill"),
|
|
16767
16650
|
label: "Split Pill",
|
|
16768
16651
|
description: "Logo floats independently with a soft pill-backed navigation rail.",
|
|
16769
|
-
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16770
|
-
navTypography: "heading",
|
|
16771
|
-
openingForegroundTarget: "brand-only"
|
|
16652
|
+
supportedLayoutIds: supportedLayouts(["floating"])
|
|
16772
16653
|
}
|
|
16773
16654
|
]);
|
|
16774
16655
|
const headerLayoutsById = new Map(headerLayoutCatalog.map((layout) => [layout.id, layout]));
|
|
@@ -16955,6 +16836,449 @@ function resolveHeaderLayoutStyleSelection(selection) {
|
|
|
16955
16836
|
};
|
|
16956
16837
|
}
|
|
16957
16838
|
|
|
16839
|
+
//#endregion
|
|
16840
|
+
//#region ../theme-core/src/site-styles/headerInteractionPalette.ts
|
|
16841
|
+
const clearSplitInteractionPalette = defineLookOptionGroup({
|
|
16842
|
+
id: "interaction-palette",
|
|
16843
|
+
label: "Hover colour",
|
|
16844
|
+
defaultOptionId: "accent",
|
|
16845
|
+
options: [
|
|
16846
|
+
{
|
|
16847
|
+
id: "accent",
|
|
16848
|
+
label: "Accent"
|
|
16849
|
+
},
|
|
16850
|
+
{
|
|
16851
|
+
id: "primary",
|
|
16852
|
+
label: "Primary"
|
|
16853
|
+
},
|
|
16854
|
+
{
|
|
16855
|
+
id: "secondary",
|
|
16856
|
+
label: "Secondary"
|
|
16857
|
+
}
|
|
16858
|
+
]
|
|
16859
|
+
});
|
|
16860
|
+
function resolveHeaderInteractionPaletteControl(group, preference) {
|
|
16861
|
+
if (!group) return { kind: "unavailable" };
|
|
16862
|
+
if (preference === "recommended") {
|
|
16863
|
+
const resolution$1 = resolveLookOption(group, undefined);
|
|
16864
|
+
return availableControlState(group, preference, resolution$1.option.id, null);
|
|
16865
|
+
}
|
|
16866
|
+
const resolution = resolveHeaderInteractionPalette(group, preference);
|
|
16867
|
+
return availableControlState(group, preference, resolution.option.id, resolution.kind === "repaired" ? {
|
|
16868
|
+
requested: preference,
|
|
16869
|
+
fallback: resolution.option.id,
|
|
16870
|
+
reason: resolution.reason
|
|
16871
|
+
} : null);
|
|
16872
|
+
}
|
|
16873
|
+
function availableControlState(group, preference, effectivePalette, repair$1) {
|
|
16874
|
+
return {
|
|
16875
|
+
kind: "available",
|
|
16876
|
+
preference,
|
|
16877
|
+
effectivePalette,
|
|
16878
|
+
options: [{
|
|
16879
|
+
value: "recommended",
|
|
16880
|
+
label: `Recommended (${defaultOptionLabel(group)})`
|
|
16881
|
+
}, ...group.options.map((option) => ({
|
|
16882
|
+
value: option.id,
|
|
16883
|
+
label: option.label
|
|
16884
|
+
}))],
|
|
16885
|
+
repair: repair$1
|
|
16886
|
+
};
|
|
16887
|
+
}
|
|
16888
|
+
function applyHeaderInteractionPalette(header, group, preference) {
|
|
16889
|
+
if (!group) return header;
|
|
16890
|
+
if (!header.navLinkStyle) {
|
|
16891
|
+
throw new Error(`Header interaction palette "${group.id}" requires a nav link style.`);
|
|
16892
|
+
}
|
|
16893
|
+
const palette = resolveHeaderInteractionPalette(group, preference).option.id;
|
|
16894
|
+
const pair = headerInteractionPalettePair(palette);
|
|
16895
|
+
const pillEffect = {
|
|
16896
|
+
effectId: "background-on-hover",
|
|
16897
|
+
options: {
|
|
16898
|
+
colorToken: pair.backgroundToken,
|
|
16899
|
+
textColorToken: pair.foregroundToken
|
|
16900
|
+
}
|
|
16901
|
+
};
|
|
16902
|
+
return {
|
|
16903
|
+
...header,
|
|
16904
|
+
navLinkStyle: {
|
|
16905
|
+
...header.navLinkStyle,
|
|
16906
|
+
hoverColorToken: null,
|
|
16907
|
+
borderRadius: "full",
|
|
16908
|
+
effects: {
|
|
16909
|
+
...header.navLinkStyle.effects,
|
|
16910
|
+
hover: [pillEffect],
|
|
16911
|
+
focus: [pillEffect]
|
|
16912
|
+
}
|
|
16913
|
+
}
|
|
16914
|
+
};
|
|
16915
|
+
}
|
|
16916
|
+
function resolveHeaderInteractionPalette(group, preference) {
|
|
16917
|
+
return resolveLookOption(group, preference === "recommended" ? undefined : preference);
|
|
16918
|
+
}
|
|
16919
|
+
function defaultOptionLabel(group) {
|
|
16920
|
+
return resolveLookOption(group, undefined).option.label;
|
|
16921
|
+
}
|
|
16922
|
+
|
|
16923
|
+
//#endregion
|
|
16924
|
+
//#region ../theme-core/src/site-styles/headerStyleDefaults.ts
|
|
16925
|
+
/**
|
|
16926
|
+
* A style either takes the default recipe or authors a complete one. This is
|
|
16927
|
+
* deliberately not a deep merge: the same "declare the variant or fall back"
|
|
16928
|
+
* rule cards use, so a half-authored recipe cannot exist.
|
|
16929
|
+
*/
|
|
16930
|
+
function resolveHeaderStyleRecipe(siteStyle, styleId) {
|
|
16931
|
+
return siteStyle?.headerStyleRecipes?.[styleId] ?? defaultHeaderStyleRecipes[styleId];
|
|
16932
|
+
}
|
|
16933
|
+
/**
|
|
16934
|
+
* The default header appearance for every catalogue style id (#1318).
|
|
16935
|
+
*
|
|
16936
|
+
* This is the only id-keyed structure in the header appearance pipeline, and it
|
|
16937
|
+
* is data rather than dispatch — the same shape `cards/siteStyleDefaults.ts`
|
|
16938
|
+
* uses. A site style that wants a different header takes over an entry here
|
|
16939
|
+
* with its own recipe; it does not add a branch anywhere.
|
|
16940
|
+
*
|
|
16941
|
+
* `navWeight` (the bar) and `navLinkWeight` (the link text) are separate fields
|
|
16942
|
+
* and they disagree on five styles. That disagreement is real and pre-existing;
|
|
16943
|
+
* it is spelled out here rather than left implicit in a helper default. See the
|
|
16944
|
+
* note on `HeaderStyleRecipeCore.navLinkWeight`.
|
|
16945
|
+
*/
|
|
16946
|
+
const defaultHeaderStyleRecipes = {
|
|
16947
|
+
minimal: {
|
|
16948
|
+
tone: "neutral",
|
|
16949
|
+
background: {
|
|
16950
|
+
kind: "token",
|
|
16951
|
+
token: "surface"
|
|
16952
|
+
},
|
|
16953
|
+
nav: {
|
|
16954
|
+
kind: "minimal",
|
|
16955
|
+
hoverColorToken: "primary"
|
|
16956
|
+
},
|
|
16957
|
+
navWeight: "medium",
|
|
16958
|
+
navLinkWeight: "medium",
|
|
16959
|
+
navTypography: "plain",
|
|
16960
|
+
border: "none",
|
|
16961
|
+
shadow: { kind: "absent" },
|
|
16962
|
+
frame: { kind: "none" },
|
|
16963
|
+
cta: { treatment: "default" }
|
|
16964
|
+
},
|
|
16965
|
+
"fine-line": {
|
|
16966
|
+
tone: "neutral",
|
|
16967
|
+
background: {
|
|
16968
|
+
kind: "token",
|
|
16969
|
+
token: "surface"
|
|
16970
|
+
},
|
|
16971
|
+
nav: {
|
|
16972
|
+
kind: "underline",
|
|
16973
|
+
hover: "underline"
|
|
16974
|
+
},
|
|
16975
|
+
navWeight: "medium",
|
|
16976
|
+
navLinkWeight: "medium",
|
|
16977
|
+
navTypography: "plain",
|
|
16978
|
+
border: "none",
|
|
16979
|
+
shadow: { kind: "absent" },
|
|
16980
|
+
frame: { kind: "none" },
|
|
16981
|
+
cta: { treatment: "outline" }
|
|
16982
|
+
},
|
|
16983
|
+
"soft-bar": {
|
|
16984
|
+
tone: "neutral",
|
|
16985
|
+
background: {
|
|
16986
|
+
kind: "token",
|
|
16987
|
+
token: "surfaceAlt"
|
|
16988
|
+
},
|
|
16989
|
+
nav: {
|
|
16990
|
+
kind: "pill",
|
|
16991
|
+
backing: "capsule",
|
|
16992
|
+
hoverColorToken: "primary",
|
|
16993
|
+
hoverAlpha: 8
|
|
16994
|
+
},
|
|
16995
|
+
navWeight: "medium",
|
|
16996
|
+
navLinkWeight: "medium",
|
|
16997
|
+
navTypography: "plain",
|
|
16998
|
+
border: "bottom",
|
|
16999
|
+
shadow: { kind: "absent" },
|
|
17000
|
+
frame: { kind: "none" },
|
|
17001
|
+
cta: { treatment: "default" }
|
|
17002
|
+
},
|
|
17003
|
+
"pill-nav": {
|
|
17004
|
+
tone: "neutral",
|
|
17005
|
+
background: {
|
|
17006
|
+
kind: "token",
|
|
17007
|
+
token: "surface"
|
|
17008
|
+
},
|
|
17009
|
+
nav: {
|
|
17010
|
+
kind: "pill",
|
|
17011
|
+
backing: "capsule",
|
|
17012
|
+
hoverColorToken: "primary",
|
|
17013
|
+
hoverAlpha: 10
|
|
17014
|
+
},
|
|
17015
|
+
navWeight: "medium",
|
|
17016
|
+
navLinkWeight: "medium",
|
|
17017
|
+
navTypography: "plain",
|
|
17018
|
+
border: "none",
|
|
17019
|
+
shadow: { kind: "absent" },
|
|
17020
|
+
frame: {
|
|
17021
|
+
kind: "nav-container",
|
|
17022
|
+
type: "pill",
|
|
17023
|
+
tint: "surfaceAlt",
|
|
17024
|
+
opacity: .7
|
|
17025
|
+
},
|
|
17026
|
+
cta: { treatment: "default" }
|
|
17027
|
+
},
|
|
17028
|
+
"brand-bar": {
|
|
17029
|
+
tone: "brand",
|
|
17030
|
+
background: {
|
|
17031
|
+
kind: "token",
|
|
17032
|
+
token: "primary"
|
|
17033
|
+
},
|
|
17034
|
+
nav: {
|
|
17035
|
+
kind: "minimal",
|
|
17036
|
+
hoverColorToken: "secondary"
|
|
17037
|
+
},
|
|
17038
|
+
navWeight: "semibold",
|
|
17039
|
+
navLinkWeight: "medium",
|
|
17040
|
+
navTypography: "brand-caps",
|
|
17041
|
+
border: "none",
|
|
17042
|
+
shadow: { kind: "absent" },
|
|
17043
|
+
frame: { kind: "none" },
|
|
17044
|
+
cta: { treatment: "inverted" }
|
|
17045
|
+
},
|
|
17046
|
+
"brand-underline": {
|
|
17047
|
+
tone: "brand",
|
|
17048
|
+
background: {
|
|
17049
|
+
kind: "token",
|
|
17050
|
+
token: "primary"
|
|
17051
|
+
},
|
|
17052
|
+
nav: {
|
|
17053
|
+
kind: "underline",
|
|
17054
|
+
hover: "both",
|
|
17055
|
+
hoverColorToken: "secondary",
|
|
17056
|
+
underlineColorToken: "secondary"
|
|
17057
|
+
},
|
|
17058
|
+
navWeight: "bold",
|
|
17059
|
+
navLinkWeight: "bold",
|
|
17060
|
+
navTypography: "brand-caps",
|
|
17061
|
+
border: "none",
|
|
17062
|
+
shadow: { kind: "absent" },
|
|
17063
|
+
frame: { kind: "none" },
|
|
17064
|
+
cta: {
|
|
17065
|
+
treatment: "inverted",
|
|
17066
|
+
gap: "compact"
|
|
17067
|
+
}
|
|
17068
|
+
},
|
|
17069
|
+
"brand-pill": {
|
|
17070
|
+
tone: "brand",
|
|
17071
|
+
background: {
|
|
17072
|
+
kind: "token",
|
|
17073
|
+
token: "primary"
|
|
17074
|
+
},
|
|
17075
|
+
nav: {
|
|
17076
|
+
kind: "pill",
|
|
17077
|
+
backing: "capsule",
|
|
17078
|
+
hoverColorToken: "primaryForeground",
|
|
17079
|
+
hoverAlpha: 14
|
|
17080
|
+
},
|
|
17081
|
+
navWeight: "semibold",
|
|
17082
|
+
navLinkWeight: "medium",
|
|
17083
|
+
navTypography: "brand-caps",
|
|
17084
|
+
border: "none",
|
|
17085
|
+
shadow: { kind: "absent" },
|
|
17086
|
+
frame: { kind: "none" },
|
|
17087
|
+
cta: { treatment: "inverted" },
|
|
17088
|
+
onFloating: {
|
|
17089
|
+
background: { kind: "transparent" },
|
|
17090
|
+
frame: {
|
|
17091
|
+
kind: "container",
|
|
17092
|
+
rounded: "2xl",
|
|
17093
|
+
padding: "sm",
|
|
17094
|
+
tint: "primary",
|
|
17095
|
+
opacity: .95
|
|
17096
|
+
}
|
|
17097
|
+
}
|
|
17098
|
+
},
|
|
17099
|
+
"brand-capsule": {
|
|
17100
|
+
tone: "brand",
|
|
17101
|
+
background: {
|
|
17102
|
+
kind: "token",
|
|
17103
|
+
token: "primary"
|
|
17104
|
+
},
|
|
17105
|
+
nav: {
|
|
17106
|
+
kind: "pill",
|
|
17107
|
+
backing: "capsule",
|
|
17108
|
+
hoverColorToken: "primaryForeground",
|
|
17109
|
+
hoverAlpha: 16
|
|
17110
|
+
},
|
|
17111
|
+
navWeight: "semibold",
|
|
17112
|
+
navLinkWeight: "medium",
|
|
17113
|
+
navTypography: "quiet-caps",
|
|
17114
|
+
border: "none",
|
|
17115
|
+
shadow: {
|
|
17116
|
+
kind: "fixed",
|
|
17117
|
+
elevation: "md"
|
|
17118
|
+
},
|
|
17119
|
+
frame: { kind: "none" },
|
|
17120
|
+
cta: { treatment: "inverted" }
|
|
17121
|
+
},
|
|
17122
|
+
"serif-line": {
|
|
17123
|
+
tone: "neutral",
|
|
17124
|
+
background: {
|
|
17125
|
+
kind: "token",
|
|
17126
|
+
token: "background"
|
|
17127
|
+
},
|
|
17128
|
+
nav: {
|
|
17129
|
+
kind: "underline",
|
|
17130
|
+
hover: "underline"
|
|
17131
|
+
},
|
|
17132
|
+
navWeight: "medium",
|
|
17133
|
+
navLinkWeight: "medium",
|
|
17134
|
+
navTypography: "heading",
|
|
17135
|
+
border: "none",
|
|
17136
|
+
shadow: { kind: "explicit-none" },
|
|
17137
|
+
frame: { kind: "none" },
|
|
17138
|
+
cta: {
|
|
17139
|
+
treatment: "outline",
|
|
17140
|
+
gap: "relaxed"
|
|
17141
|
+
},
|
|
17142
|
+
logo: {
|
|
17143
|
+
fontFamily: "heading",
|
|
17144
|
+
letterSpacing: "wide",
|
|
17145
|
+
gradient: false
|
|
17146
|
+
}
|
|
17147
|
+
},
|
|
17148
|
+
"flat-tabs": {
|
|
17149
|
+
tone: "neutral",
|
|
17150
|
+
background: {
|
|
17151
|
+
kind: "token",
|
|
17152
|
+
token: "surface"
|
|
17153
|
+
},
|
|
17154
|
+
nav: { kind: "flat-tab" },
|
|
17155
|
+
navWeight: "semibold",
|
|
17156
|
+
navLinkWeight: "semibold",
|
|
17157
|
+
navTypography: "quiet-caps",
|
|
17158
|
+
border: "bottom",
|
|
17159
|
+
shadow: { kind: "themed" },
|
|
17160
|
+
frame: { kind: "none" },
|
|
17161
|
+
cta: {
|
|
17162
|
+
treatment: "primary",
|
|
17163
|
+
gap: "compact"
|
|
17164
|
+
}
|
|
17165
|
+
},
|
|
17166
|
+
glass: {
|
|
17167
|
+
tone: "neutral",
|
|
17168
|
+
background: { kind: "transparent" },
|
|
17169
|
+
nav: {
|
|
17170
|
+
kind: "pill",
|
|
17171
|
+
backing: "frosted",
|
|
17172
|
+
hoverColorToken: "primary",
|
|
17173
|
+
hoverAlpha: 8
|
|
17174
|
+
},
|
|
17175
|
+
navWeight: "semibold",
|
|
17176
|
+
navLinkWeight: "medium",
|
|
17177
|
+
navTypography: "plain",
|
|
17178
|
+
border: "none",
|
|
17179
|
+
shadow: { kind: "absent" },
|
|
17180
|
+
frame: {
|
|
17181
|
+
kind: "container",
|
|
17182
|
+
rounded: "2xl",
|
|
17183
|
+
padding: "sm",
|
|
17184
|
+
tint: "surface",
|
|
17185
|
+
opacity: .4
|
|
17186
|
+
},
|
|
17187
|
+
cta: { treatment: "default" }
|
|
17188
|
+
},
|
|
17189
|
+
"minimal-surface": {
|
|
17190
|
+
tone: "neutral",
|
|
17191
|
+
background: { kind: "transparent" },
|
|
17192
|
+
nav: {
|
|
17193
|
+
kind: "minimal",
|
|
17194
|
+
hoverColorToken: "primary"
|
|
17195
|
+
},
|
|
17196
|
+
navWeight: "medium",
|
|
17197
|
+
navLinkWeight: "medium",
|
|
17198
|
+
navTypography: "plain",
|
|
17199
|
+
border: "none",
|
|
17200
|
+
shadow: { kind: "absent" },
|
|
17201
|
+
frame: { kind: "none" },
|
|
17202
|
+
cta: { treatment: "default" },
|
|
17203
|
+
navLinkExtras: {
|
|
17204
|
+
textSize: "lg",
|
|
17205
|
+
contrastTreatment: "soft-glow"
|
|
17206
|
+
},
|
|
17207
|
+
openingForeground: "all",
|
|
17208
|
+
scrollTreatment: "contrast-glass",
|
|
17209
|
+
interactionPalette: clearSplitInteractionPalette
|
|
17210
|
+
},
|
|
17211
|
+
"soft-shell": {
|
|
17212
|
+
tone: "neutral",
|
|
17213
|
+
background: { kind: "transparent" },
|
|
17214
|
+
nav: {
|
|
17215
|
+
kind: "pill",
|
|
17216
|
+
backing: "capsule",
|
|
17217
|
+
hoverColorToken: "primary",
|
|
17218
|
+
hoverAlpha: 8
|
|
17219
|
+
},
|
|
17220
|
+
navWeight: "medium",
|
|
17221
|
+
navLinkWeight: "medium",
|
|
17222
|
+
navTypography: "plain",
|
|
17223
|
+
border: "none",
|
|
17224
|
+
shadow: { kind: "absent" },
|
|
17225
|
+
frame: {
|
|
17226
|
+
kind: "container",
|
|
17227
|
+
rounded: "2xl",
|
|
17228
|
+
padding: "md",
|
|
17229
|
+
tint: "surfaceAlt",
|
|
17230
|
+
opacity: .95
|
|
17231
|
+
},
|
|
17232
|
+
cta: { treatment: "default" }
|
|
17233
|
+
},
|
|
17234
|
+
"split-glass": {
|
|
17235
|
+
tone: "neutral",
|
|
17236
|
+
background: { kind: "transparent" },
|
|
17237
|
+
nav: {
|
|
17238
|
+
kind: "pill",
|
|
17239
|
+
backing: "frosted",
|
|
17240
|
+
hoverColorToken: "primary",
|
|
17241
|
+
hoverAlpha: 8
|
|
17242
|
+
},
|
|
17243
|
+
navWeight: "semibold",
|
|
17244
|
+
navLinkWeight: "medium",
|
|
17245
|
+
navTypography: "quiet-caps",
|
|
17246
|
+
border: "none",
|
|
17247
|
+
shadow: { kind: "absent" },
|
|
17248
|
+
frame: {
|
|
17249
|
+
kind: "nav-container",
|
|
17250
|
+
type: "glass",
|
|
17251
|
+
tint: "surface",
|
|
17252
|
+
opacity: .4
|
|
17253
|
+
},
|
|
17254
|
+
cta: { treatment: "default" },
|
|
17255
|
+
openingForeground: "brand-only"
|
|
17256
|
+
},
|
|
17257
|
+
"split-pill": {
|
|
17258
|
+
tone: "neutral",
|
|
17259
|
+
background: { kind: "transparent" },
|
|
17260
|
+
nav: {
|
|
17261
|
+
kind: "pill",
|
|
17262
|
+
backing: "capsule",
|
|
17263
|
+
hoverColorToken: "primary",
|
|
17264
|
+
hoverAlpha: 10
|
|
17265
|
+
},
|
|
17266
|
+
navWeight: "medium",
|
|
17267
|
+
navLinkWeight: "medium",
|
|
17268
|
+
navTypography: "heading",
|
|
17269
|
+
border: "none",
|
|
17270
|
+
shadow: { kind: "absent" },
|
|
17271
|
+
frame: {
|
|
17272
|
+
kind: "nav-container",
|
|
17273
|
+
type: "pill",
|
|
17274
|
+
tint: "surface",
|
|
17275
|
+
opacity: .94
|
|
17276
|
+
},
|
|
17277
|
+
cta: { treatment: "default" },
|
|
17278
|
+
openingForeground: "brand-only"
|
|
17279
|
+
}
|
|
17280
|
+
};
|
|
17281
|
+
|
|
16958
17282
|
//#endregion
|
|
16959
17283
|
//#region ../theme-core/src/site-styles/headerNavStyles.ts
|
|
16960
17284
|
function applyNavTypography(style, typography) {
|
|
@@ -17078,95 +17402,133 @@ function flatTabNavLinkStyle(colorToken, typography = "plain") {
|
|
|
17078
17402
|
}
|
|
17079
17403
|
|
|
17080
17404
|
//#endregion
|
|
17081
|
-
//#region ../theme-core/src/site-styles/
|
|
17082
|
-
function
|
|
17083
|
-
return {
|
|
17084
|
-
...
|
|
17085
|
-
|
|
17086
|
-
|
|
17087
|
-
shrinkOnScroll: layout.shrinkOnScroll,
|
|
17088
|
-
ctaGap: layout.id === asHeaderLayoutId("floating") ? "compact" : "default",
|
|
17089
|
-
logoText: layout.id === asHeaderLayoutId("classic") ? {
|
|
17090
|
-
mobileMaxWidth: "sm",
|
|
17091
|
-
mobileWrapLines: 1,
|
|
17092
|
-
hideOnShrink: false
|
|
17093
|
-
} : undefined
|
|
17094
|
-
};
|
|
17405
|
+
//#region ../theme-core/src/site-styles/headerStyleRecipe.ts
|
|
17406
|
+
function effectiveRecipe(layout, recipe) {
|
|
17407
|
+
return layout.id === asHeaderLayoutId("floating") && recipe.onFloating ? {
|
|
17408
|
+
...recipe,
|
|
17409
|
+
...recipe.onFloating
|
|
17410
|
+
} : recipe;
|
|
17095
17411
|
}
|
|
17096
|
-
|
|
17097
|
-
|
|
17098
|
-
|
|
17099
|
-
|
|
17100
|
-
|
|
17412
|
+
/**
|
|
17413
|
+
* One token drives the header text, the nav text and the nav link colour: they
|
|
17414
|
+
* are the same decision, and splitting them was how they could disagree.
|
|
17415
|
+
*/
|
|
17416
|
+
function toneColorToken(tone) {
|
|
17417
|
+
switch (tone) {
|
|
17418
|
+
case "neutral": return "text";
|
|
17419
|
+
case "brand": return "primaryForeground";
|
|
17420
|
+
default: return assertNever$5(tone, "Unhandled header tone recipe");
|
|
17421
|
+
}
|
|
17101
17422
|
}
|
|
17102
|
-
function
|
|
17103
|
-
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
|
|
17111
|
-
|
|
17423
|
+
function toneDropdownStyle(tone) {
|
|
17424
|
+
switch (tone) {
|
|
17425
|
+
case "neutral": return {
|
|
17426
|
+
background: "surface",
|
|
17427
|
+
textColor: "text",
|
|
17428
|
+
borderColor: "border",
|
|
17429
|
+
shadow: "md",
|
|
17430
|
+
borderRadius: "md",
|
|
17431
|
+
textTransform: "none",
|
|
17432
|
+
letterSpacing: "normal"
|
|
17433
|
+
};
|
|
17434
|
+
case "brand": return {
|
|
17435
|
+
background: "primary-700",
|
|
17436
|
+
textColor: "primaryForeground",
|
|
17437
|
+
borderColor: null,
|
|
17438
|
+
shadow: "md",
|
|
17439
|
+
borderRadius: "md",
|
|
17440
|
+
hoverBackground: "primary-900",
|
|
17441
|
+
hoverTextColor: "secondary",
|
|
17442
|
+
textTransform: "uppercase",
|
|
17443
|
+
letterSpacing: "wider",
|
|
17444
|
+
fontWeight: "bold",
|
|
17445
|
+
textSize: "sm"
|
|
17446
|
+
};
|
|
17447
|
+
default: return assertNever$5(tone, "Unhandled header tone recipe");
|
|
17448
|
+
}
|
|
17112
17449
|
}
|
|
17113
|
-
function
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
|
|
17123
|
-
|
|
17124
|
-
|
|
17125
|
-
textSize: "sm"
|
|
17126
|
-
};
|
|
17450
|
+
function recipeBackground(background) {
|
|
17451
|
+
switch (background.kind) {
|
|
17452
|
+
case "token": return {
|
|
17453
|
+
type: "color",
|
|
17454
|
+
color: background.token
|
|
17455
|
+
};
|
|
17456
|
+
case "transparent": return {
|
|
17457
|
+
type: "color",
|
|
17458
|
+
color: "transparent"
|
|
17459
|
+
};
|
|
17460
|
+
default: return assertNever$5(background, "Unhandled header background recipe");
|
|
17461
|
+
}
|
|
17127
17462
|
}
|
|
17128
|
-
function
|
|
17129
|
-
|
|
17130
|
-
|
|
17131
|
-
|
|
17132
|
-
|
|
17133
|
-
|
|
17463
|
+
function recipeBorder(border$1) {
|
|
17464
|
+
switch (border$1) {
|
|
17465
|
+
case "none": return {
|
|
17466
|
+
style: "solid",
|
|
17467
|
+
width: "none",
|
|
17468
|
+
position: "none"
|
|
17469
|
+
};
|
|
17470
|
+
case "bottom": return {
|
|
17471
|
+
style: "solid",
|
|
17472
|
+
width: "thin",
|
|
17473
|
+
position: "bottom",
|
|
17474
|
+
colorToken: "border"
|
|
17475
|
+
};
|
|
17476
|
+
default: return assertNever$5(border$1, "Unhandled header border recipe");
|
|
17477
|
+
}
|
|
17134
17478
|
}
|
|
17135
|
-
function
|
|
17136
|
-
|
|
17137
|
-
|
|
17138
|
-
|
|
17139
|
-
|
|
17140
|
-
|
|
17141
|
-
|
|
17479
|
+
function recipeNavStyle(nav) {
|
|
17480
|
+
switch (nav.kind) {
|
|
17481
|
+
case "minimal": return "minimal";
|
|
17482
|
+
case "underline": return "underline-grow";
|
|
17483
|
+
case "pill": return nav.backing;
|
|
17484
|
+
case "flat-tab": return "solid";
|
|
17485
|
+
default: return assertNever$5(nav, "Unhandled header nav recipe");
|
|
17486
|
+
}
|
|
17142
17487
|
}
|
|
17143
|
-
function
|
|
17144
|
-
|
|
17145
|
-
|
|
17146
|
-
|
|
17488
|
+
function underlineHoverEffects(nav) {
|
|
17489
|
+
const underline = {
|
|
17490
|
+
effectId: "nav-underline",
|
|
17491
|
+
options: {
|
|
17492
|
+
style: "grow",
|
|
17493
|
+
...nav.underlineColorToken ? { colorToken: nav.underlineColorToken } : {}
|
|
17494
|
+
}
|
|
17147
17495
|
};
|
|
17496
|
+
switch (nav.hover) {
|
|
17497
|
+
case "underline": return [underline];
|
|
17498
|
+
case "colour": return [{
|
|
17499
|
+
effectId: "text-color-change",
|
|
17500
|
+
options: { hoverColorToken: nav.hoverColorToken }
|
|
17501
|
+
}];
|
|
17502
|
+
case "both": return [{
|
|
17503
|
+
effectId: "text-color-change",
|
|
17504
|
+
options: { hoverColorToken: nav.hoverColorToken }
|
|
17505
|
+
}, underline];
|
|
17506
|
+
default: return assertNever$5(nav, "Unhandled underline nav hover affordance");
|
|
17507
|
+
}
|
|
17148
17508
|
}
|
|
17149
|
-
function
|
|
17509
|
+
function underlineNavLink(nav, colorToken, typography) {
|
|
17510
|
+
const base = underlineNavLinkStyle(colorToken, nav.underlineColorToken, typography);
|
|
17150
17511
|
return {
|
|
17151
|
-
|
|
17152
|
-
|
|
17153
|
-
|
|
17512
|
+
...base,
|
|
17513
|
+
...nav.hover === "underline" ? {} : { hoverColorToken: nav.hoverColorToken },
|
|
17514
|
+
effects: {
|
|
17515
|
+
...base.effects,
|
|
17516
|
+
hover: underlineHoverEffects(nav)
|
|
17517
|
+
}
|
|
17154
17518
|
};
|
|
17155
17519
|
}
|
|
17156
|
-
function
|
|
17157
|
-
|
|
17158
|
-
|
|
17159
|
-
|
|
17160
|
-
|
|
17161
|
-
|
|
17162
|
-
|
|
17163
|
-
|
|
17164
|
-
|
|
17165
|
-
|
|
17166
|
-
opacity: input.opacity
|
|
17167
|
-
};
|
|
17520
|
+
function recipeNavLinkStyle(recipe) {
|
|
17521
|
+
const colorToken = toneColorToken(recipe.tone);
|
|
17522
|
+
const nav = recipe.nav;
|
|
17523
|
+
switch (nav.kind) {
|
|
17524
|
+
case "minimal": return minimalNavLinkStyle(colorToken, nav.hoverColorToken, recipe.navTypography);
|
|
17525
|
+
case "underline": return underlineNavLink(nav, colorToken, recipe.navTypography);
|
|
17526
|
+
case "pill": return pillNavLinkStyle(colorToken, nav.hoverColorToken, nav.hoverAlpha, recipe.navTypography);
|
|
17527
|
+
case "flat-tab": return flatTabNavLinkStyle(colorToken, recipe.navTypography);
|
|
17528
|
+
default: return assertNever$5(nav, "Unhandled header nav recipe");
|
|
17529
|
+
}
|
|
17168
17530
|
}
|
|
17169
|
-
function
|
|
17531
|
+
function themedShadow(theme) {
|
|
17170
17532
|
switch (theme.shadow.elevation) {
|
|
17171
17533
|
case "none": return undefined;
|
|
17172
17534
|
case "low": return { elevation: "sm" };
|
|
@@ -17175,248 +17537,120 @@ function themedHeaderShadow(theme) {
|
|
|
17175
17537
|
default: return assertNever$5(theme.shadow.elevation, "Unhandled theme shadow elevation");
|
|
17176
17538
|
}
|
|
17177
17539
|
}
|
|
17178
|
-
function
|
|
17179
|
-
|
|
17540
|
+
function recipeShadow(shadow$1, theme) {
|
|
17541
|
+
switch (shadow$1.kind) {
|
|
17542
|
+
case "absent": return {};
|
|
17543
|
+
case "explicit-none": return { shadow: { elevation: "none" } };
|
|
17544
|
+
case "fixed": return { shadow: { elevation: shadow$1.elevation } };
|
|
17545
|
+
case "themed": {
|
|
17546
|
+
const resolved = themedShadow(theme);
|
|
17547
|
+
return resolved ? { shadow: resolved } : {};
|
|
17548
|
+
}
|
|
17549
|
+
default: return assertNever$5(shadow$1, "Unhandled header shadow recipe");
|
|
17550
|
+
}
|
|
17551
|
+
}
|
|
17552
|
+
/**
|
|
17553
|
+
* `{kind: 'none'}` writes nothing: the base header already carries the
|
|
17554
|
+
* `{type: 'none', tint: null, opacity: 0.15}` nav container default, and
|
|
17555
|
+
* omitting the key would be a different JSON.
|
|
17556
|
+
*/
|
|
17557
|
+
function recipeFrame(frame) {
|
|
17558
|
+
switch (frame.kind) {
|
|
17559
|
+
case "none": return {};
|
|
17560
|
+
case "container": return { container: {
|
|
17561
|
+
rounded: frame.rounded,
|
|
17562
|
+
border: true,
|
|
17563
|
+
shadow: true,
|
|
17564
|
+
padding: frame.padding,
|
|
17565
|
+
tint: frame.tint,
|
|
17566
|
+
opacity: frame.opacity
|
|
17567
|
+
} };
|
|
17568
|
+
case "nav-container": return { navContainer: {
|
|
17569
|
+
type: frame.type,
|
|
17570
|
+
tint: frame.tint,
|
|
17571
|
+
opacity: frame.opacity
|
|
17572
|
+
} };
|
|
17573
|
+
default: return assertNever$5(frame, "Unhandled header frame recipe");
|
|
17574
|
+
}
|
|
17575
|
+
}
|
|
17576
|
+
/**
|
|
17577
|
+
* `ctaVariant` is spread conditionally everywhere, which is byte-safe for the
|
|
17578
|
+
* nine `'default'` styles only because `resolveHeaderCtaVariant(theme,
|
|
17579
|
+
* 'default')` returns `undefined`. The compiler used to mix a conditional
|
|
17580
|
+
* spread with three direct assignments; the difference was invisible in
|
|
17581
|
+
* persisted JSON and visible to an in-memory `toEqual`, so it is normalised
|
|
17582
|
+
* here (ledger D1).
|
|
17583
|
+
*/
|
|
17584
|
+
function recipeCta(cta, theme) {
|
|
17585
|
+
const variant = resolveHeaderCtaVariant(theme, cta.treatment);
|
|
17180
17586
|
return {
|
|
17181
|
-
|
|
17182
|
-
...
|
|
17183
|
-
|
|
17184
|
-
dropdownStyle: brandDropdownStyle(),
|
|
17185
|
-
border: noHeaderBorder(),
|
|
17186
|
-
ctaTreatment: "inverted",
|
|
17187
|
-
...ctaVariant ? { ctaVariant } : {}
|
|
17587
|
+
ctaTreatment: cta.treatment,
|
|
17588
|
+
...variant ? { ctaVariant: variant } : {},
|
|
17589
|
+
...cta.gap ? { ctaGap: cta.gap } : {}
|
|
17188
17590
|
};
|
|
17189
17591
|
}
|
|
17190
|
-
|
|
17592
|
+
/** Layout-derived structure. The only part of the header a recipe cannot reach. */
|
|
17593
|
+
function headerForLayout(theme, layout) {
|
|
17191
17594
|
return {
|
|
17192
|
-
...
|
|
17193
|
-
|
|
17194
|
-
|
|
17195
|
-
|
|
17196
|
-
|
|
17197
|
-
|
|
17198
|
-
|
|
17199
|
-
|
|
17200
|
-
|
|
17201
|
-
|
|
17202
|
-
|
|
17203
|
-
navStyle: "minimal",
|
|
17204
|
-
navWeight: "medium",
|
|
17205
|
-
navLinkStyle: minimalNavLinkStyle("text", "primary", style.navTypography),
|
|
17206
|
-
border: noHeaderBorder(),
|
|
17207
|
-
ctaTreatment: "default"
|
|
17208
|
-
};
|
|
17209
|
-
case "fine-line": return {
|
|
17210
|
-
...header,
|
|
17211
|
-
...neutralHeaderBase(),
|
|
17212
|
-
background: colorHeaderBackground("surface"),
|
|
17213
|
-
navStyle: "underline-grow",
|
|
17214
|
-
navWeight: "medium",
|
|
17215
|
-
navLinkStyle: underlineNavLinkStyle("text", undefined, style.navTypography),
|
|
17216
|
-
border: noHeaderBorder(),
|
|
17217
|
-
ctaTreatment: "outline",
|
|
17218
|
-
ctaVariant: resolveHeaderCtaVariant(theme, "outline")
|
|
17219
|
-
};
|
|
17220
|
-
case "soft-bar": return {
|
|
17221
|
-
...header,
|
|
17222
|
-
...neutralHeaderBase(),
|
|
17223
|
-
background: colorHeaderBackground("surfaceAlt"),
|
|
17224
|
-
navStyle: "capsule",
|
|
17225
|
-
navWeight: "medium",
|
|
17226
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 8, style.navTypography),
|
|
17227
|
-
border: bottomHeaderBorder(),
|
|
17228
|
-
ctaTreatment: "default"
|
|
17229
|
-
};
|
|
17230
|
-
case "pill-nav": return {
|
|
17231
|
-
...header,
|
|
17232
|
-
...neutralHeaderBase(),
|
|
17233
|
-
background: colorHeaderBackground("surface"),
|
|
17234
|
-
navStyle: "capsule",
|
|
17235
|
-
navWeight: "medium",
|
|
17236
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 10, style.navTypography),
|
|
17237
|
-
navContainer: {
|
|
17238
|
-
type: "pill",
|
|
17239
|
-
tint: "surfaceAlt",
|
|
17240
|
-
opacity: .7
|
|
17241
|
-
},
|
|
17242
|
-
border: noHeaderBorder(),
|
|
17243
|
-
ctaTreatment: "default"
|
|
17244
|
-
};
|
|
17245
|
-
default: return assertNever$5(id, "Unhandled basic header style id");
|
|
17246
|
-
}
|
|
17247
|
-
}
|
|
17248
|
-
function applyBrandHeaderStyle(id, theme, header, style) {
|
|
17249
|
-
switch (id) {
|
|
17250
|
-
case "brand-bar": return {
|
|
17251
|
-
...brandSurfaceBase(theme, header),
|
|
17252
|
-
navStyle: "minimal",
|
|
17253
|
-
navWeight: "semibold",
|
|
17254
|
-
navLinkStyle: minimalNavLinkStyle("primaryForeground", "secondary", style.navTypography)
|
|
17255
|
-
};
|
|
17256
|
-
case "brand-underline": return {
|
|
17257
|
-
...brandSurfaceBase(theme, header),
|
|
17258
|
-
navStyle: "underline-grow",
|
|
17259
|
-
navWeight: "bold",
|
|
17260
|
-
navLinkStyle: underlineNavLinkStyle("primaryForeground", "secondary", style.navTypography)
|
|
17261
|
-
};
|
|
17262
|
-
case "brand-pill": return {
|
|
17263
|
-
...brandSurfaceBase(theme, header),
|
|
17264
|
-
...header.variant === "floating" ? {
|
|
17265
|
-
background: transparentHeaderBackground(),
|
|
17266
|
-
container: floatingContainer({
|
|
17267
|
-
rounded: "2xl",
|
|
17268
|
-
padding: "sm",
|
|
17269
|
-
tint: "primary",
|
|
17270
|
-
opacity: .95
|
|
17271
|
-
})
|
|
17272
|
-
} : {},
|
|
17273
|
-
navStyle: "capsule",
|
|
17274
|
-
navWeight: "semibold",
|
|
17275
|
-
navLinkStyle: pillNavLinkStyle("primaryForeground", "primaryForeground", 14, style.navTypography)
|
|
17276
|
-
};
|
|
17277
|
-
case "brand-capsule": return {
|
|
17278
|
-
...brandSurfaceBase(theme, header),
|
|
17279
|
-
navStyle: "capsule",
|
|
17280
|
-
navWeight: "semibold",
|
|
17281
|
-
navLinkStyle: pillNavLinkStyle("primaryForeground", "primaryForeground", 16, style.navTypography),
|
|
17282
|
-
shadow: { elevation: "md" }
|
|
17283
|
-
};
|
|
17284
|
-
default: return assertNever$5(id, "Unhandled brand header style id");
|
|
17285
|
-
}
|
|
17286
|
-
}
|
|
17287
|
-
function applyEditorialHeaderStyle(id, theme, header, style) {
|
|
17288
|
-
switch (id) {
|
|
17289
|
-
case "serif-line": return {
|
|
17290
|
-
...header,
|
|
17291
|
-
...neutralHeaderBase(),
|
|
17292
|
-
background: colorHeaderBackground("background"),
|
|
17293
|
-
navStyle: "underline-grow",
|
|
17294
|
-
navWeight: "medium",
|
|
17295
|
-
navLinkStyle: underlineNavLinkStyle("text", undefined, style.navTypography),
|
|
17296
|
-
border: noHeaderBorder(),
|
|
17297
|
-
shadow: { elevation: "none" },
|
|
17298
|
-
logo: {
|
|
17299
|
-
fontFamily: "heading",
|
|
17300
|
-
letterSpacing: "wide",
|
|
17301
|
-
gradient: false
|
|
17302
|
-
},
|
|
17303
|
-
ctaTreatment: "outline",
|
|
17304
|
-
ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
|
|
17305
|
-
ctaGap: "relaxed"
|
|
17306
|
-
};
|
|
17307
|
-
case "flat-tabs": return {
|
|
17308
|
-
...header,
|
|
17309
|
-
...neutralHeaderBase(),
|
|
17310
|
-
background: colorHeaderBackground("surface"),
|
|
17311
|
-
navStyle: "solid",
|
|
17312
|
-
navWeight: "semibold",
|
|
17313
|
-
navLinkStyle: flatTabNavLinkStyle("text", style.navTypography),
|
|
17314
|
-
border: bottomHeaderBorder(),
|
|
17315
|
-
shadow: themedHeaderShadow(theme),
|
|
17316
|
-
ctaTreatment: "primary",
|
|
17317
|
-
ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
|
|
17318
|
-
ctaGap: "compact"
|
|
17319
|
-
};
|
|
17320
|
-
default: return assertNever$5(id, "Unhandled editorial header style id");
|
|
17321
|
-
}
|
|
17322
|
-
}
|
|
17323
|
-
function applyFloatingHeaderStyle(id, header, style) {
|
|
17324
|
-
switch (id) {
|
|
17325
|
-
case "glass": return {
|
|
17326
|
-
...floatingSurfaceBase(header),
|
|
17327
|
-
...neutralHeaderBase(),
|
|
17328
|
-
navStyle: "frosted",
|
|
17329
|
-
navWeight: "semibold",
|
|
17330
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 8, style.navTypography),
|
|
17331
|
-
container: floatingContainer({
|
|
17332
|
-
rounded: "2xl",
|
|
17333
|
-
padding: "sm",
|
|
17334
|
-
tint: "surface",
|
|
17335
|
-
opacity: .4
|
|
17336
|
-
}),
|
|
17337
|
-
ctaTreatment: "default"
|
|
17338
|
-
};
|
|
17339
|
-
case "minimal-surface": return {
|
|
17340
|
-
...floatingSurfaceBase(header),
|
|
17341
|
-
...neutralHeaderBase(),
|
|
17342
|
-
navStyle: "minimal",
|
|
17343
|
-
navWeight: "medium",
|
|
17344
|
-
navLinkStyle: {
|
|
17345
|
-
...minimalNavLinkStyle("text", "primary", style.navTypography),
|
|
17346
|
-
textSize: "lg",
|
|
17347
|
-
contrastTreatment: "soft-glow"
|
|
17348
|
-
},
|
|
17349
|
-
ctaTreatment: "default"
|
|
17350
|
-
};
|
|
17351
|
-
case "soft-shell": return {
|
|
17352
|
-
...floatingSurfaceBase(header),
|
|
17353
|
-
...neutralHeaderBase(),
|
|
17354
|
-
navStyle: "capsule",
|
|
17355
|
-
navWeight: "medium",
|
|
17356
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 8, style.navTypography),
|
|
17357
|
-
container: floatingContainer({
|
|
17358
|
-
rounded: "2xl",
|
|
17359
|
-
padding: "md",
|
|
17360
|
-
tint: "surfaceAlt",
|
|
17361
|
-
opacity: .95
|
|
17362
|
-
}),
|
|
17363
|
-
ctaTreatment: "default"
|
|
17364
|
-
};
|
|
17365
|
-
case "split-glass": return {
|
|
17366
|
-
...floatingSurfaceBase(header),
|
|
17367
|
-
...neutralHeaderBase(),
|
|
17368
|
-
navStyle: "frosted",
|
|
17369
|
-
navWeight: "semibold",
|
|
17370
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 8, style.navTypography),
|
|
17371
|
-
navContainer: {
|
|
17372
|
-
type: "glass",
|
|
17373
|
-
tint: "surface",
|
|
17374
|
-
opacity: .4
|
|
17375
|
-
},
|
|
17376
|
-
ctaTreatment: "default"
|
|
17377
|
-
};
|
|
17378
|
-
case "split-pill": return {
|
|
17379
|
-
...floatingSurfaceBase(header),
|
|
17380
|
-
...neutralHeaderBase(),
|
|
17381
|
-
navStyle: "capsule",
|
|
17382
|
-
navWeight: "medium",
|
|
17383
|
-
navLinkStyle: pillNavLinkStyle("text", "primary", 10, style.navTypography),
|
|
17384
|
-
navContainer: {
|
|
17385
|
-
type: "pill",
|
|
17386
|
-
tint: "surface",
|
|
17387
|
-
opacity: .94
|
|
17388
|
-
},
|
|
17389
|
-
ctaTreatment: "default"
|
|
17390
|
-
};
|
|
17391
|
-
default: return assertNever$5(id, "Unhandled floating header style id");
|
|
17392
|
-
}
|
|
17393
|
-
}
|
|
17394
|
-
const headerStyleCompilers = {
|
|
17395
|
-
minimal: (theme, header, style) => applyBasicHeaderStyle("minimal", theme, header, style),
|
|
17396
|
-
"fine-line": (theme, header, style) => applyBasicHeaderStyle("fine-line", theme, header, style),
|
|
17397
|
-
"soft-bar": (theme, header, style) => applyBasicHeaderStyle("soft-bar", theme, header, style),
|
|
17398
|
-
"pill-nav": (theme, header, style) => applyBasicHeaderStyle("pill-nav", theme, header, style),
|
|
17399
|
-
"brand-bar": (theme, header, style) => applyBrandHeaderStyle("brand-bar", theme, header, style),
|
|
17400
|
-
"brand-underline": (theme, header, style) => applyBrandHeaderStyle("brand-underline", theme, header, style),
|
|
17401
|
-
"brand-pill": (theme, header, style) => applyBrandHeaderStyle("brand-pill", theme, header, style),
|
|
17402
|
-
"brand-capsule": (theme, header, style) => applyBrandHeaderStyle("brand-capsule", theme, header, style),
|
|
17403
|
-
"serif-line": (theme, header, style) => applyEditorialHeaderStyle("serif-line", theme, header, style),
|
|
17404
|
-
"flat-tabs": (theme, header, style) => applyEditorialHeaderStyle("flat-tabs", theme, header, style),
|
|
17405
|
-
glass: (_theme, header, style) => applyFloatingHeaderStyle("glass", header, style),
|
|
17406
|
-
"minimal-surface": (_theme, header, style) => applyFloatingHeaderStyle("minimal-surface", header, style),
|
|
17407
|
-
"soft-shell": (_theme, header, style) => applyFloatingHeaderStyle("soft-shell", header, style),
|
|
17408
|
-
"split-glass": (_theme, header, style) => applyFloatingHeaderStyle("split-glass", header, style),
|
|
17409
|
-
"split-pill": (_theme, header, style) => applyFloatingHeaderStyle("split-pill", header, style)
|
|
17410
|
-
};
|
|
17411
|
-
function applyHeaderStyle(theme, header, style) {
|
|
17412
|
-
return headerStyleCompilers[headerStyleIdValue(style.id)](theme, header, style);
|
|
17595
|
+
...baseHeader(theme),
|
|
17596
|
+
variant: layout.variant,
|
|
17597
|
+
positioning: layout.defaultPositioning,
|
|
17598
|
+
shrinkOnScroll: layout.shrinkOnScroll,
|
|
17599
|
+
ctaGap: layout.id === asHeaderLayoutId("floating") ? "compact" : "default",
|
|
17600
|
+
logoText: layout.id === asHeaderLayoutId("classic") ? {
|
|
17601
|
+
mobileMaxWidth: "sm",
|
|
17602
|
+
mobileWrapLines: 1,
|
|
17603
|
+
hideOnShrink: false
|
|
17604
|
+
} : undefined
|
|
17605
|
+
};
|
|
17413
17606
|
}
|
|
17414
|
-
|
|
17415
|
-
|
|
17607
|
+
/**
|
|
17608
|
+
* The single header interpreter. Pure and total: same `(theme, layout, recipe)`
|
|
17609
|
+
* in, same object out, no throws of its own.
|
|
17610
|
+
*/
|
|
17611
|
+
function compileHeaderRecipe(theme, layout, recipe) {
|
|
17612
|
+
const effective = effectiveRecipe(layout, recipe);
|
|
17613
|
+
const navLinkStyle = recipeNavLinkStyle(effective);
|
|
17614
|
+
return {
|
|
17615
|
+
...headerForLayout(theme, layout),
|
|
17616
|
+
textColor: toneColorToken(effective.tone),
|
|
17617
|
+
navColor: toneColorToken(effective.tone),
|
|
17618
|
+
dropdownStyle: toneDropdownStyle(effective.tone),
|
|
17619
|
+
background: recipeBackground(effective.background),
|
|
17620
|
+
border: recipeBorder(effective.border),
|
|
17621
|
+
navStyle: recipeNavStyle(effective.nav),
|
|
17622
|
+
navWeight: effective.navWeight,
|
|
17623
|
+
navLinkStyle: {
|
|
17624
|
+
...navLinkStyle,
|
|
17625
|
+
fontWeight: effective.navLinkWeight,
|
|
17626
|
+
...effective.navLinkExtras ?? {}
|
|
17627
|
+
},
|
|
17628
|
+
...recipeShadow(effective.shadow, theme),
|
|
17629
|
+
...recipeFrame(effective.frame),
|
|
17630
|
+
...effective.logo ? { logo: effective.logo } : {},
|
|
17631
|
+
...recipeCta(effective.cta, theme)
|
|
17632
|
+
};
|
|
17416
17633
|
}
|
|
17417
|
-
|
|
17418
|
-
|
|
17419
|
-
|
|
17634
|
+
|
|
17635
|
+
//#endregion
|
|
17636
|
+
//#region ../theme-core/src/site-styles/headerStyleCompiler.ts
|
|
17637
|
+
/**
|
|
17638
|
+
* The header compilation pipeline: pick the recipe, interpret it, then apply
|
|
17639
|
+
* the user's interaction-palette preference.
|
|
17640
|
+
*
|
|
17641
|
+
* Appearance decisions live in `headerStyleDefaults.ts` (data), optionally
|
|
17642
|
+
* taken over per site style, and `headerStyleRecipe.ts` (one pure interpreter).
|
|
17643
|
+
* Nothing here switches on a header style id.
|
|
17644
|
+
*
|
|
17645
|
+
* `siteStyle` is required rather than optional: a caller that has no resolved
|
|
17646
|
+
* site style has to say so, because silently falling back to the catalogue
|
|
17647
|
+
* default is exactly the ownership leak this slice closes. Pass `null` when
|
|
17648
|
+
* there genuinely is no site style (initial site provisioning).
|
|
17649
|
+
*/
|
|
17650
|
+
function compileHeaderLayoutStyleSelection(theme, resolution, siteStyle) {
|
|
17651
|
+
const recipe = resolveHeaderStyleRecipe(siteStyle, resolution.style.id);
|
|
17652
|
+
const header = compileHeaderRecipe(theme, resolution.layout, recipe);
|
|
17653
|
+
return applyHeaderInteractionPalette(header, recipe.interactionPalette, theme.header.interactionPalette ?? "recommended");
|
|
17420
17654
|
}
|
|
17421
17655
|
|
|
17422
17656
|
//#endregion
|
|
@@ -18228,7 +18462,6 @@ const modernMinimalTheme = {
|
|
|
18228
18462
|
positioning: "static",
|
|
18229
18463
|
shrinkOnScroll: false,
|
|
18230
18464
|
maxWidth: "container",
|
|
18231
|
-
logoOverride: null,
|
|
18232
18465
|
background: {
|
|
18233
18466
|
type: "color",
|
|
18234
18467
|
color: "surface"
|
|
@@ -21085,6 +21318,19 @@ const curatedSiteStyles = [
|
|
|
21085
21318
|
})
|
|
21086
21319
|
];
|
|
21087
21320
|
const curatedSiteStylesById = new Map(curatedSiteStyles.map((style) => [style.id, style]));
|
|
21321
|
+
/**
|
|
21322
|
+
* The header appearance a persisted theme actually renders: the catalogue
|
|
21323
|
+
* recipe unless the theme's own site style has taken that id over (#1318).
|
|
21324
|
+
*
|
|
21325
|
+
* Consumers that hold a theme and a selected style id — the public frontend and
|
|
21326
|
+
* the chrome customiser — go through here rather than reading the style
|
|
21327
|
+
* definition, so a site-style override is visible to every reader rather than
|
|
21328
|
+
* only to the compiler.
|
|
21329
|
+
*/
|
|
21330
|
+
function headerStyleRecipeForTheme(theme, styleId) {
|
|
21331
|
+
const siteStyle = theme?.siteStyleId ? getCuratedSiteStyle(theme.siteStyleId) : null;
|
|
21332
|
+
return resolveHeaderStyleRecipe(siteStyle, styleId);
|
|
21333
|
+
}
|
|
21088
21334
|
function getCuratedSiteStyle(id) {
|
|
21089
21335
|
return curatedSiteStylesById.get(id) ?? null;
|
|
21090
21336
|
}
|
|
@@ -22786,7 +23032,7 @@ function compileHeaderDirective(input) {
|
|
|
22786
23032
|
layoutId: resolvedLayoutId,
|
|
22787
23033
|
styleId: resolvedStyleId
|
|
22788
23034
|
});
|
|
22789
|
-
const header = compileHeaderLayoutStyleSelection(input.theme, resolution);
|
|
23035
|
+
const header = compileHeaderLayoutStyleSelection(input.theme, resolution, input.siteStyle);
|
|
22790
23036
|
const brandPresentation = input.directive.brandPresentation.kind === "apply-logo-context" ? resolveHeaderBrandPresentationForLayout({
|
|
22791
23037
|
layout: resolution.layout,
|
|
22792
23038
|
logo: input.directive.brandPresentation.logo
|
|
@@ -23926,8 +24172,8 @@ function runGeneratedPageDesignPipeline(input) {
|
|
|
23926
24172
|
|
|
23927
24173
|
//#endregion
|
|
23928
24174
|
//#region ../theme-core/src/site-styles/headerOpeningForeground.ts
|
|
23929
|
-
function headerStyleAvailability(
|
|
23930
|
-
if (!
|
|
24175
|
+
function headerStyleAvailability(recipe, context) {
|
|
24176
|
+
if (!recipe.openingForeground) return { kind: "available" };
|
|
23931
24177
|
return context?.openingForeground?.kind === "known" ? { kind: "available" } : {
|
|
23932
24178
|
kind: "unavailable",
|
|
23933
24179
|
reason: "requires-known-opening-foreground"
|
|
@@ -23939,16 +24185,16 @@ function headerStyleAvailabilityReasonLabel(reason) {
|
|
|
23939
24185
|
default: return assertNever$5(reason, "Unhandled header style availability reason");
|
|
23940
24186
|
}
|
|
23941
24187
|
}
|
|
23942
|
-
function applyOpeningForeground(theme, header,
|
|
23943
|
-
if (!
|
|
24188
|
+
function applyOpeningForeground(theme, header, recipe, context) {
|
|
24189
|
+
if (!recipe.openingForeground) return header;
|
|
23944
24190
|
const foreground = context?.openingForeground ?? { kind: "unknown" };
|
|
23945
24191
|
if (foreground.kind === "unknown") return applyUnknownOpeningForegroundFallback(header);
|
|
23946
24192
|
const withBrandForeground = {
|
|
23947
24193
|
...header,
|
|
23948
24194
|
textColor: foreground.roles.text
|
|
23949
24195
|
};
|
|
23950
|
-
if (
|
|
23951
|
-
const scrollTreatment = compileHeaderScrollTreatment(theme,
|
|
24196
|
+
if (recipe.openingForeground === "brand-only") return withBrandForeground;
|
|
24197
|
+
const scrollTreatment = compileHeaderScrollTreatment(theme, recipe, foreground.roles.text);
|
|
23952
24198
|
return {
|
|
23953
24199
|
...withBrandForeground,
|
|
23954
24200
|
navColor: foreground.roles.text,
|
|
@@ -23965,8 +24211,8 @@ function applyOpeningForeground(theme, header, style, context) {
|
|
|
23965
24211
|
...scrollTreatment ? { scrollTreatment } : {}
|
|
23966
24212
|
};
|
|
23967
24213
|
}
|
|
23968
|
-
function compileHeaderScrollTreatment(theme,
|
|
23969
|
-
if (
|
|
24214
|
+
function compileHeaderScrollTreatment(theme, recipe, foregroundToken) {
|
|
24215
|
+
if (recipe.scrollTreatment !== "contrast-glass") return undefined;
|
|
23970
24216
|
const tokenParts = parseColorTokenParts(foregroundToken);
|
|
23971
24217
|
if (tokenParts.kind !== "token") return undefined;
|
|
23972
24218
|
const foregroundHex = expandPalette(theme.palette)[tokenParts.token];
|
|
@@ -24003,11 +24249,11 @@ function applyUnknownOpeningForegroundFallback(header) {
|
|
|
24003
24249
|
container: UNKNOWN_OPENING_FOREGROUND_CONTAINER
|
|
24004
24250
|
};
|
|
24005
24251
|
}
|
|
24006
|
-
function applyPageOpeningForegroundToTheme(theme,
|
|
24007
|
-
if (!
|
|
24252
|
+
function applyPageOpeningForegroundToTheme(theme, recipe, context) {
|
|
24253
|
+
if (!recipe?.openingForeground) return theme;
|
|
24008
24254
|
return {
|
|
24009
24255
|
...theme,
|
|
24010
|
-
header: applyOpeningForeground(theme, theme.header,
|
|
24256
|
+
header: applyOpeningForeground(theme, theme.header, recipe, context)
|
|
24011
24257
|
};
|
|
24012
24258
|
}
|
|
24013
24259
|
|
|
@@ -27708,7 +27954,7 @@ const resourceKinds = [
|
|
|
27708
27954
|
"customer-pass",
|
|
27709
27955
|
"customer-membership",
|
|
27710
27956
|
"appointment",
|
|
27711
|
-
"
|
|
27957
|
+
"event-series-registration",
|
|
27712
27958
|
"event-registration",
|
|
27713
27959
|
"pass-redemption",
|
|
27714
27960
|
"order",
|
|
@@ -27857,7 +28103,7 @@ const appointmentBookingStatuses = [
|
|
|
27857
28103
|
"cancelled",
|
|
27858
28104
|
"no_show"
|
|
27859
28105
|
];
|
|
27860
|
-
const
|
|
28106
|
+
const eventSeriesRegistrationStatuses = ["enrolled"];
|
|
27861
28107
|
const eventRegistrationStatuses = ["confirmed"];
|
|
27862
28108
|
|
|
27863
28109
|
//#endregion
|
|
@@ -28011,7 +28257,6 @@ const classicProfessionalTheme = {
|
|
|
28011
28257
|
positioning: "static",
|
|
28012
28258
|
shrinkOnScroll: false,
|
|
28013
28259
|
maxWidth: "container",
|
|
28014
|
-
logoOverride: null,
|
|
28015
28260
|
background: {
|
|
28016
28261
|
type: "color",
|
|
28017
28262
|
color: "surface"
|
|
@@ -28168,7 +28413,6 @@ const vibrantCreativeTheme = {
|
|
|
28168
28413
|
positioning: "sticky",
|
|
28169
28414
|
shrinkOnScroll: false,
|
|
28170
28415
|
maxWidth: "container",
|
|
28171
|
-
logoOverride: null,
|
|
28172
28416
|
background: {
|
|
28173
28417
|
type: "color",
|
|
28174
28418
|
color: "surface"
|
|
@@ -31363,7 +31607,7 @@ const appointmentBookingRefSchema = resourceRefSchema("appointment");
|
|
|
31363
31607
|
const appointmentResourceRefSchema = resourceRefSchema("appointment-resource");
|
|
31364
31608
|
const appointmentServiceRefSchema = resourceRefSchema("appointment-service");
|
|
31365
31609
|
const bookingCustomerRefSchema = resourceRefSchema("customer");
|
|
31366
|
-
const
|
|
31610
|
+
const eventSeriesRegistrationRefSchema = resourceRefSchema("event-series-registration");
|
|
31367
31611
|
const customerMembershipRefSchema = resourceRefSchema("customer-membership");
|
|
31368
31612
|
const customerPassRefSchema = resourceRefSchema("customer-pass");
|
|
31369
31613
|
const eventRegistrationRefSchema = resourceRefSchema("event-registration");
|
|
@@ -31544,13 +31788,13 @@ const seedAppointmentBookingCommandSchema = z.object({
|
|
|
31544
31788
|
});
|
|
31545
31789
|
})
|
|
31546
31790
|
}).strict();
|
|
31547
|
-
const
|
|
31548
|
-
type: z.literal("
|
|
31549
|
-
ref:
|
|
31791
|
+
const seedEventSeriesRegistrationCommandSchema = z.object({
|
|
31792
|
+
type: z.literal("seedEventSeriesRegistration"),
|
|
31793
|
+
ref: eventSeriesRegistrationRefSchema,
|
|
31550
31794
|
input: z.object({
|
|
31551
31795
|
customerRef: bookingCustomerRefSchema,
|
|
31552
31796
|
eventRef: eventSeriesRefSchema$1,
|
|
31553
|
-
status: z.enum(
|
|
31797
|
+
status: z.enum(eventSeriesRegistrationStatuses).default("enrolled"),
|
|
31554
31798
|
paymentMethod: z.literal("free").default("free"),
|
|
31555
31799
|
paymentStatus: z.literal("not_required").default("not_required"),
|
|
31556
31800
|
formSubmission: unknownRecordSchema.default({}),
|
|
@@ -31592,8 +31836,8 @@ const portalOrderSubjectSchema = z.discriminatedUnion("kind", [z.object({
|
|
|
31592
31836
|
kind: z.literal("event_registration"),
|
|
31593
31837
|
eventRegistrationRef: eventRegistrationRefSchema
|
|
31594
31838
|
}).strict(), z.object({
|
|
31595
|
-
kind: z.literal("
|
|
31596
|
-
|
|
31839
|
+
kind: z.literal("event_series_registration"),
|
|
31840
|
+
eventSeriesRegistrationRef: eventSeriesRegistrationRefSchema
|
|
31597
31841
|
}).strict()]);
|
|
31598
31842
|
const seedPortalOrderCommandSchema = z.object({
|
|
31599
31843
|
type: z.literal("seedPortalOrder"),
|
|
@@ -32253,7 +32497,7 @@ const siteCommandSchema = z.discriminatedUnion("type", [
|
|
|
32253
32497
|
grantCustomerPassCommandSchema,
|
|
32254
32498
|
grantCustomerMembershipCommandSchema,
|
|
32255
32499
|
seedAppointmentBookingCommandSchema,
|
|
32256
|
-
|
|
32500
|
+
seedEventSeriesRegistrationCommandSchema,
|
|
32257
32501
|
seedEventRegistrationCommandSchema,
|
|
32258
32502
|
seedPassRedemptionCommandSchema,
|
|
32259
32503
|
seedPortalOrderCommandSchema,
|
|
@@ -32377,7 +32621,7 @@ const commandScopes = [
|
|
|
32377
32621
|
"customer_pass",
|
|
32378
32622
|
"customer_membership",
|
|
32379
32623
|
"appointment",
|
|
32380
|
-
"
|
|
32624
|
+
"event_series_registration",
|
|
32381
32625
|
"event_registration",
|
|
32382
32626
|
"pass_redemption",
|
|
32383
32627
|
"order",
|
|
@@ -32972,8 +33216,8 @@ const siteCommandMetadata = {
|
|
|
32972
33216
|
capability: "bookings.appointments.write",
|
|
32973
33217
|
support: "supported"
|
|
32974
33218
|
},
|
|
32975
|
-
|
|
32976
|
-
scope: "
|
|
33219
|
+
seedEventSeriesRegistration: {
|
|
33220
|
+
scope: "event_series_registration",
|
|
32977
33221
|
risk: "medium",
|
|
32978
33222
|
writeSemantics: "upsert",
|
|
32979
33223
|
lifecycleIntent: "seed",
|
|
@@ -32982,7 +33226,7 @@ const siteCommandMetadata = {
|
|
|
32982
33226
|
previewability: "dry_run_only",
|
|
32983
33227
|
allowedRuntimes: allRuntimes,
|
|
32984
33228
|
intendedExposure: recipeExposure,
|
|
32985
|
-
capability: "bookings.
|
|
33229
|
+
capability: "bookings.event_series_registrations.write",
|
|
32986
33230
|
support: "supported"
|
|
32987
33231
|
},
|
|
32988
33232
|
seedEventRegistration: {
|
|
@@ -33199,7 +33443,7 @@ const bookingRefCommandTypeValues = [
|
|
|
33199
33443
|
"grantCustomerPass",
|
|
33200
33444
|
"grantCustomerMembership",
|
|
33201
33445
|
"seedAppointmentBooking",
|
|
33202
|
-
"
|
|
33446
|
+
"seedEventSeriesRegistration",
|
|
33203
33447
|
"seedEventRegistration",
|
|
33204
33448
|
"seedPassRedemption",
|
|
33205
33449
|
"seedPortalOrder",
|
|
@@ -33253,7 +33497,7 @@ function bookingCommandRefContributions(command) {
|
|
|
33253
33497
|
field: "input.resourceRef"
|
|
33254
33498
|
}
|
|
33255
33499
|
]);
|
|
33256
|
-
case "
|
|
33500
|
+
case "seedEventSeriesRegistration": return providedWithRequirements(command.ref, [{
|
|
33257
33501
|
ref: command.input.customerRef,
|
|
33258
33502
|
field: "input.customerRef"
|
|
33259
33503
|
}, {
|
|
@@ -33329,9 +33573,9 @@ function portalOrderSubjectRefContribution(subject) {
|
|
|
33329
33573
|
ref: subject.eventRegistrationRef,
|
|
33330
33574
|
field: "input.subject.eventRegistrationRef"
|
|
33331
33575
|
};
|
|
33332
|
-
case "
|
|
33333
|
-
ref: subject.
|
|
33334
|
-
field: "input.subject.
|
|
33576
|
+
case "event_series_registration": return {
|
|
33577
|
+
ref: subject.eventSeriesRegistrationRef,
|
|
33578
|
+
field: "input.subject.eventSeriesRegistrationRef"
|
|
33335
33579
|
};
|
|
33336
33580
|
default: return assertNever(subject);
|
|
33337
33581
|
}
|
|
@@ -33765,7 +34009,7 @@ function matchSiteCommand(command, match) {
|
|
|
33765
34009
|
case "grantCustomerPass": return match(command);
|
|
33766
34010
|
case "grantCustomerMembership": return match(command);
|
|
33767
34011
|
case "seedAppointmentBooking": return match(command);
|
|
33768
|
-
case "
|
|
34012
|
+
case "seedEventSeriesRegistration": return match(command);
|
|
33769
34013
|
case "seedEventRegistration": return match(command);
|
|
33770
34014
|
case "seedPassRedemption": return match(command);
|
|
33771
34015
|
case "seedPortalOrder": return match(command);
|
|
@@ -34022,7 +34266,7 @@ function checkPortalOrdersHaveUniqueSubjects(batch) {
|
|
|
34022
34266
|
function portalOrderSubjectKey(subject) {
|
|
34023
34267
|
switch (subject.kind) {
|
|
34024
34268
|
case "event_registration": return `event_registration:${subject.eventRegistrationRef}`;
|
|
34025
|
-
case "
|
|
34269
|
+
case "event_series_registration": return `event_series_registration:${subject.eventSeriesRegistrationRef}`;
|
|
34026
34270
|
}
|
|
34027
34271
|
}
|
|
34028
34272
|
function indexOfferingCommands(batch) {
|
|
@@ -34071,7 +34315,7 @@ function indexOfferingCommands(batch) {
|
|
|
34071
34315
|
case "grantCustomerPass":
|
|
34072
34316
|
case "grantCustomerMembership":
|
|
34073
34317
|
case "seedAppointmentBooking":
|
|
34074
|
-
case "
|
|
34318
|
+
case "seedEventSeriesRegistration":
|
|
34075
34319
|
case "seedEventRegistration":
|
|
34076
34320
|
case "seedPassRedemption":
|
|
34077
34321
|
case "seedPortalOrder":
|
|
@@ -44945,4 +45189,4 @@ Examples:
|
|
|
44945
45189
|
}
|
|
44946
45190
|
|
|
44947
45191
|
//#endregion
|
|
44948
|
-
export {
|
|
45192
|
+
export { pagePathForCommand as $, NAV_LINK_BORDER_RADIUS_MAP as $n, DEFAULT_SURFACE_TEXT_COLOR as $r, loadSdkEnvironment as $t, getDirectImageUrlForRelativePath as A, sdkConfiguredBookingVerticalConfigSchema as Ai, MQ_MD_DOWN as An, resolveContextualButtonRole as Ar, mapEntryForOutput as At, sortRecord as B, eventListTreatmentValues as Bn, textColorStyle as Br, executeEnvironmentPlan as Bt, deleteEnvSpecificKeys as C, internalLinkSchema as Ci, getHeaderPaintTargets as Cn, generateButtonCss as Cr, createListCommand$1 as Ct, isExplicitRectCrop as D, isResolvedInternalLinkEntityType as Di, BREAKPOINT_SM as Dn, contextualButtonSurfaceResetStyles as Dr, getOutputContext as Dt, normalizeWidthCandidates as E, isInternalResolvedLinkValue as Ei, BREAKPOINT_MD as En, resolvedButtonFocusDeclarations as Er, formatDateShort as Et, resolveVideoSelectionIntentForMediaField as F, pageDesignEditorBackgroundOverrideOwner as Fn, backgroundColorStyle as Fr, runWithInvocation as Ft, evaluateSiteCommandBatchExposure as G, offeringsPreviewCompositionTreatmentValues as Gn, generateInteractiveChildInheritanceCSS as Gr, withRiverbankEnv as Gt, createDryRunReport as H, featureCardCompositionTreatmentValues as Hn, generateDefaultButtonSystem as Hr, planEnvironmentExecution as Ht, asRecord as I, assertNever$5 as In, borderColorStyle as Ir, withCommandContext as It, blockIdentifierForCommand as J, visibleHeadingDecorationFamilyValues as Jn, themeButtonClassName as Jr, getEnvPrefix as Jt, evaluateSiteCommandExposure as K, testimonialsCompositionTreatmentValues as Kn, TokenResolver as Kr, formatError as Kt, parseRelativeStoragePath as L, defineBlockDesignCapability as Ln, cssVarValue as Lr, withConfirmation as Lt, getImageUrl as M, MQ_SM_UP as Mn, resolveOnColorForThemeToken as Mr, parseJsonData as Mt, isSiteScopedDirectImageStoragePath as N, MQ_TABLET_ONLY as Nn, resolveThemeColorReferenceValue as Nr, parsePaginationOptions as Nt, parseAspectRatioValue as O, linkSchema as Oi, BREAKPOINT_XL as On, contextualButtonSurfaceStyles as Or, getOutputOnlyContext as Ot, deriveVideoSlotPolicy as P, headerVariantValues as Pn, resolveTokenOrCssColorValue as Pr, resolveCommandPath as Pt, pageIdentifierForCommand as Q, parseCustomCssRules as Qn, generateShadowValue$1 as Qr, isRemoteConfigured as Qt, classifyKnownMimeType as R, defineFrameCapability as Rn, mergeStyles as Rr, withErrorHandling as Rt, walkAndCollectImageAttrs as S, externalLinkSchema$1 as Si, generateMobileOverlayBackdropFilterFix as Sn, AFFORDANCE_SUPPRESS_CLASS as Sr, createGetCommand as St, rotateNormalizedPoint as T, internalRouteOnlyLinkSchema as Ti, BREAKPOINT_LG as Tn, resolvedButtonColourDeclarations as Tr, currentInvocationEnvelope as Tt, parseAndPlanCommandBatchForTypes as U, headingDecorationColorTokenValues as Un, generateEffectsCSS as Ur, planEnvironmentWriteAuthorization as Ut, stableStringify as V, eyebrowTreatmentValues as Vn, resolveSurfaceForeground as Vr, parseEnvironmentSelection as Vt, mapEventCommandContent as W, introCompositionTreatmentValues as Wn, generateBaseInteractiveCSS as Wr, requireEnvironmentWriteAuthorization as Wt, entryIdentifierForCommand as X, getComponentShadowVar as Xn, compileButtonColourStates as Xr, getEnvironmentDebugInfo as Xt, blockOrderIdentifiersForCommand as Y, getComponentBorderWidthPx as Yn, parseThemeForPersistence as Yr, getEnvVarName as Yt, pageIdentifierForBlockCommand as Z, parseBlockCustomCssRules as Zn, formatButtonColourContractError as Zr, isLocalConfigured as Zt, hasOwnSettingsField as _, persistableMediaSchema as _i, sdkThemeWireSchema as _n, generateShadowValue as _r, refSlug as _t, syncLocalMediaForPull as a, onColorTokenName as ai, getCuratedSiteStyle as an, INPUT_FONT_SIZE_MAP as ar, createBlockRef as at, attachRenderableMediaAssetFields as b, customLinkSchema$1 as bi, boxBackgroundSchema as bn, normalizeCardRole as br, createClientForEnv as bt, sha256 as c, featuresFromHex as ci, getGradientPreset as cn, ACCORDION_OPEN_ACCENT_THICKNESS as cr, createContentEntryRef as ct, walkLocalContentMedia as d, buttonVariantIdSchema as di, backgroundAppearanceColorTokenNames as dn, ACCORDION_TRIGGER_LETTER_SPACING as dr, createFooterRef as dt, surfaceForegroundDeclarations as ei, createManagementClient as en, NAV_LINK_LETTER_SPACING_MAP as er, hasConfiguredBookingVertical as et, buildStorageUrl as f, unsafeAsOpaqueButtonColourToken as fi, backgroundAppearanceQuickColorTokenNames as fn, ICON_CONFIG as fr, createFormRef as ft, buildSettingsUpdateInput as g, mediaTypeDiscriminants as gi, sdkSettingsUpdateSchema as gn, generateCardCss as gr, createVenueRef as gt, SETTINGS_FILE_FIELDS as h, mediaSchema as hi, defineBlockDesignMetadata as hn, getDefaultCardVariants as hr, createSiteCommandSiteRef as ht, syncLocalMediaForPush as i, isOnColorBackgroundCandidateToken as ii, readHeaderNavFontSizePreference as in, FONT_WEIGHT_MAP as ir, generateCssVars as it, getDirectImageUrlForSiteScopedPath as j, __toESM as ji, MQ_SM_DOWN as jn, isCssColorLiteral as jr, parseJsonArray as jt, resolveMediaTransformForAspect as k, pageLinkSchema$1 as ki, MQ_LG_UP as kn, deriveButtonSurfaceContext as kr, handleCommandError as kt, normalizeMediaIdentifierInput as l, hexToRgb$1 as li, parseGradientPresetId as ln, ACCORDION_SPACING_MAP as lr, createEventCategoryRef as lt, extractMediaIdentifiers as m, mediaIdentifierSchema as mi, defaultThemeTokens as mn, generateCardCoreCss as mr, createPageRef as mt, createStyleCommand as n, surfaceForegroundValue as ni, ManagementApiError as nn, NAV_LINK_PADDING_X_MAP as nr, require_react as nt, applyLocalMediaPush as o, getTextColorForBackground as oi, gradientToCss as on, INPUT_SPACING_MAP as or, createBlocksRef as ot, downloadMedia as p, parseBlockColorToken as pi, parseBackgroundAppearanceColorToken as pn, ICON_SIZE_PX as pr, createNavigationRef as pt, getSiteCommandMetadata as q, tileTreatmentValues as qn, parseThemeButtonVariantId as qr, CliExit as qt, revalidateLocalMediaPushPlan as r, expandPalette as ri, mergeHeaderNavTypographyPreference as rn, NAV_LINK_TEXT_SIZE_MAP as rr, pickShadeTowardBackground as rt, prepareLocalMediaForPush as s, ORDINARY_TEXT_MIN_CONTRAST_RATIO as si, GRADIENT_PRESET_IDS as sn, LABEL_FONT_SIZE_MAP as sr, createCommandRef as st, buildStyleSelectionInitializeCommandFromOptions as t, surfaceForegroundStyle as ti, formatIgnoredDocumentSyncSectionWarning as tn, NAV_LINK_PADDING_MAP as tr, require_jsx_runtime as tt, normalizeMediaValueToIdentifierOnly as u, VARIANT_ROLES as ui, boundaryRuntimeMetricsForTransition as un, ACCORDION_TRIGGER_FONT_SCALE as ur, createEventSeriesRef as ut, writeMediaManifest as v, linkPayloadSchema as vi, themeSchema as vn, cardRoleSchema as vr, slugPart as vt, looksLikeUuid as w, internalResolvedLinkSchema as wi, renderHeaderPaintTargetRules as wn, RESOLVED_BUTTON_DISABLED_DECLARATIONS as wr, createOutputForCommand as wt, buildRenderableMediaAssetIndex as x, entryLinkSchema$1 as xi, generateHeaderScrollTreatmentStyles as xn, PUBLIC_BUTTON_ROLES as xr, createCommandContext as xt, isMediaValue as y, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as yi, boxBackgroundOverlaySchema as yn, cardVariantRoleValues as yr, confirmAction as yt, venueManagementFields as z, defineNoBlockDesignCapability as zn, rgbColorValue as zr, withOutputOnlyErrorHandling as zt };
|