@riverbankcms/sdk 0.104.1 → 0.104.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/{PreviewEditorSidebar-CmaPXdKu.mjs → PreviewEditorSidebar-CBMhU9p_.mjs} +3 -3
- package/dist/{PreviewEditorUI-C5xRTh2b.mjs → PreviewEditorUI-C5KEw4M8.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-Eks51NcN.mjs → SdkPreviewModeRuntime-Iq12HjL7.mjs} +1142 -177
- package/dist/{SiteChromeCustomizeContext-Bt8zb3qu.mjs → SiteChromeCustomizeContext-Cx0NMdyv.mjs} +1640 -877
- package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -0
- package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +12 -8
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +11 -1
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/constants/events.d.ts +1 -1
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +12 -0
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +33 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +28 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +32 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +77 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -40
- package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +14 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +11 -0
- package/dist/_dts/core/src/branded.d.ts +5 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +18 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +29 -0
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +6 -0
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/personalities/flat-ink.d.ts +20 -0
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +4 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +34 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/gradients/types.d.ts +27 -3
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +51 -15
- package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +13 -0
- package/dist/_dts/theme-core/src/palette/curated/index.d.ts +12 -0
- package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +44 -0
- package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +13 -2
- package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +17 -2
- package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +3 -4
- package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +1 -0
- package/dist/_dts/theme-core/src/schema.d.ts +108 -26
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +50 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +56 -1
- package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
- package/dist/_dts/theme-core/src/status/index.d.ts +0 -1
- package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +19 -0
- package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +9 -0
- package/dist/_dts/theme-core/src/surfaces/index.d.ts +2 -0
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/cli/index.mjs +1558 -468
- package/dist/client/{DiscountCodeDisclosure-Dit2aItR.mjs → DiscountCodeDisclosure-BXM73_E5.mjs} +1 -1
- package/dist/client/{EventCombined.client-BnREyCjf.mjs → EventCombined.client-DT5elP7j.mjs} +4 -4
- package/dist/client/{EventListing.client-0uHld51x.mjs → EventListing.client-pTYGfV9C.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DJcvSfmj.mjs → LeafletStaticMap-dQrhlUe3.mjs} +1 -1
- package/dist/client/{MagicLinkForm-EAsIktfw.mjs → MagicLinkForm-u6Dul4j5.mjs} +2 -2
- package/dist/client/{StepIndicator-CRR17tYI.mjs → StepIndicator-nWqineJ2.mjs} +2 -2
- package/dist/client/{accordion-B47HIuuH.mjs → accordion-CSJcTUyH.mjs} +1 -1
- package/dist/client/{bookingForm-I1E-8F9P.mjs → bookingForm-C73wOuVa.mjs} +6 -6
- package/dist/client/bookings.mjs +137 -1
- package/dist/client/{buttons-BbPn8OKA.mjs → buttons-DfYyqt8C.mjs} +138 -2
- package/dist/client/{carousel-OlM7SyBs.mjs → carousel-fMBb0JSc.mjs} +1 -1
- package/dist/client/{cart-BKpG5jz6.mjs → cart-BtaCwT3S.mjs} +3 -3
- package/dist/client/{checkout-Dmmr6qoU.mjs → checkout-DkTwZSnh.mjs} +3 -3
- package/dist/client/client.mjs +2327 -542
- package/dist/client/{colorStyles-DuW4Fjqd.mjs → colorStyles-Wyl6JujD.mjs} +45 -4
- package/dist/client/{courseRegistration-CflZiqGk.mjs → courseRegistration-DnLmapJu.mjs} +7 -7
- package/dist/client/{eventCalendar-BvoLWcp-.mjs → eventCalendar-BvLOc9KY.mjs} +165 -5
- package/dist/client/{eventCombined-DsrO8t_t.mjs → eventCombined-kShgJPQr.mjs} +2 -2
- package/dist/client/{eventDetails-C3hxgcJm.mjs → eventDetails-C5NTM0Vo.mjs} +3 -3
- package/dist/client/{eventListing-C-hb237X.mjs → eventListing-B82ZdKP6.mjs} +2 -2
- package/dist/client/{eventRegistration-B0gyzDGi.mjs → eventRegistration-qJVFqBWo.mjs} +7 -7
- package/dist/client/{form-C_RUi6oJ.mjs → form-BvAcKiuu.mjs} +2 -2
- package/dist/client/{headerSection-IKQiD2U0.mjs → headerSection-NvAiEHAg.mjs} +3 -3
- package/dist/client/hooks.mjs +1034 -356
- package/dist/client/{locationMap-8ZBrMzRJ.mjs → locationMap-D0j52xfI.mjs} +3 -3
- package/dist/client/{media-CZJKL7fi.mjs → media-BCW_g2cQ.mjs} +1 -1
- package/dist/client/{newsletterForm-CYk3ucwj.mjs → newsletterForm-B8_i93qH.mjs} +2 -2
- package/dist/client/{pricing-B5GmvfIH.mjs → pricing-DIYnyHOk.mjs} +1 -1
- package/dist/client/{productDetail-BjS2Dqzo.mjs → productDetail-w0eAHkuQ.mjs} +3 -3
- package/dist/client/{productList-BOHvC8My.mjs → productList-Vsguq5Xt.mjs} +3 -3
- package/dist/client/{propsDecoder-WS6UEJwZ.mjs → propsDecoder-CD2pJ1WB.mjs} +37 -2
- package/dist/client/rendering/client.mjs +1722 -760
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2303 -518
- package/dist/client/{shop-CON03-wN.mjs → shop-Dgxs-Q8F.mjs} +6 -6
- package/dist/client/{shop-commerce-DlqrFgH8.mjs → shop-commerce-DJAhsTaT.mjs} +6 -6
- package/dist/client/{shop-commerce-store-l74-Kne6.mjs → shop-commerce-store-CfCXltXW.mjs} +1 -1
- package/dist/client/{shopShared-CQheEXSg.mjs → shopShared-CmDcPXUt.mjs} +2 -2
- package/dist/client/{useDiscountCodeUi-v6OluyWl.mjs → useDiscountCodeUi-CirrT2bM.mjs} +1 -1
- package/dist/client/{useEventFilters-BqSTcNOf.mjs → useEventFilters-CNZxlCcO.mjs} +5 -5
- package/dist/client/{usePolling-DMfADjIF.mjs → usePolling-Baks_iBI.mjs} +2 -2
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-BUmJ0DaT.mjs → sdk-runtime-BfNiFeNJ.mjs} +1 -1
- package/dist/{separator-Dd-JYok7.mjs → separator-BhAR_Xmf.mjs} +1 -1
- package/dist/server/components.mjs +2293 -531
- package/dist/server/config-validation.mjs +1040 -357
- package/dist/server/config.mjs +1040 -357
- package/dist/server/data.mjs +1034 -356
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +2296 -534
- package/dist/server/page-converter.mjs +1018 -324
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2278 -521
- package/dist/server/rendering.mjs +2293 -531
- package/dist/server/routing.mjs +1092 -338
- package/dist/server/server.mjs +1016 -338
- package/dist/server/theme-bridge.mjs +1240 -77
- package/dist/server/theme.mjs +165 -5
- package/dist/styles/index.css +617 -34
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +0 -2
- package/dist/_dts/theme-core/src/status/contextualColors.d.ts +0 -6
package/dist/cli/index.mjs
CHANGED
|
@@ -8005,11 +8005,11 @@ var init_fileStorage = __esmMin((() => {
|
|
|
8005
8005
|
var init_fileAssetLegacyProjection = __esmMin((() => {}));
|
|
8006
8006
|
//#endregion
|
|
8007
8007
|
//#region ../media-core/src/typeGuards.ts
|
|
8008
|
-
function isRecord$
|
|
8008
|
+
function isRecord$51(value) {
|
|
8009
8009
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
8010
8010
|
}
|
|
8011
8011
|
function asRecord$4(value) {
|
|
8012
|
-
return isRecord$
|
|
8012
|
+
return isRecord$51(value) ? value : void 0;
|
|
8013
8013
|
}
|
|
8014
8014
|
var init_typeGuards$1 = __esmMin((() => {}));
|
|
8015
8015
|
function isFileJsonObject(value) {
|
|
@@ -8019,7 +8019,7 @@ function isFileJsonValue(value) {
|
|
|
8019
8019
|
if (value === null || typeof value === "string" || typeof value === "boolean") return true;
|
|
8020
8020
|
if (typeof value === "number") return Number.isFinite(value);
|
|
8021
8021
|
if (Array.isArray(value)) return value.every(isFileJsonValue);
|
|
8022
|
-
return isRecord$
|
|
8022
|
+
return isRecord$51(value) && isFileJsonObject(value);
|
|
8023
8023
|
}
|
|
8024
8024
|
var init_filePersistence = __esmMin((() => {
|
|
8025
8025
|
init_src$4();
|
|
@@ -8453,7 +8453,7 @@ function isCmsMediaObjectType(value) {
|
|
|
8453
8453
|
return typeof value === "string" && CMS_MEDIA_OBJECT_TYPES.includes(value);
|
|
8454
8454
|
}
|
|
8455
8455
|
function isCmsMediaObject(value) {
|
|
8456
|
-
if (!isRecord$
|
|
8456
|
+
if (!isRecord$51(value)) return false;
|
|
8457
8457
|
const type = value.type;
|
|
8458
8458
|
if (!isCmsMediaObjectType(type)) return false;
|
|
8459
8459
|
if ("attrs" in value) return false;
|
|
@@ -8464,7 +8464,7 @@ function collectMediaObjects(value, out, location = "") {
|
|
|
8464
8464
|
value.forEach((item, index) => collectMediaObjects(item, out, `${location}[${index}]`));
|
|
8465
8465
|
return;
|
|
8466
8466
|
}
|
|
8467
|
-
if (!isRecord$
|
|
8467
|
+
if (!isRecord$51(value)) return;
|
|
8468
8468
|
if (isCmsMediaObject(value)) out.push({
|
|
8469
8469
|
obj: value,
|
|
8470
8470
|
location
|
|
@@ -8498,8 +8498,8 @@ function walkAndCollectImageAttrs(value, out, location = "") {
|
|
|
8498
8498
|
value.forEach((item, index) => walkAndCollectImageAttrs(item, out, `${location}[${index}]`));
|
|
8499
8499
|
return;
|
|
8500
8500
|
}
|
|
8501
|
-
if (!isRecord$
|
|
8502
|
-
if (value.type === "image" && isRecord$
|
|
8501
|
+
if (!isRecord$51(value)) return;
|
|
8502
|
+
if (value.type === "image" && isRecord$51(value.attrs)) out.push({
|
|
8503
8503
|
attrs: value.attrs,
|
|
8504
8504
|
location: location ? `${location}.attrs` : "attrs"
|
|
8505
8505
|
});
|
|
@@ -8788,6 +8788,9 @@ var init_validation_constants = __esmMin((() => {
|
|
|
8788
8788
|
"richText",
|
|
8789
8789
|
"media",
|
|
8790
8790
|
"videoEmbed",
|
|
8791
|
+
"icon",
|
|
8792
|
+
"feature-card-icon",
|
|
8793
|
+
"svg",
|
|
8791
8794
|
"button",
|
|
8792
8795
|
"link",
|
|
8793
8796
|
"carousel",
|
|
@@ -8817,11 +8820,13 @@ var init_validation_constants = __esmMin((() => {
|
|
|
8817
8820
|
"value.jsonArray",
|
|
8818
8821
|
"value.csv",
|
|
8819
8822
|
"array.marqueeLoop",
|
|
8823
|
+
"value.mapToken",
|
|
8820
8824
|
"layout.maxWidthClass",
|
|
8821
8825
|
"layout.headerRootClass",
|
|
8822
8826
|
"layout.footerRootClass",
|
|
8823
8827
|
"layout.headerRootStyle",
|
|
8824
8828
|
"layout.headerSectionBackground",
|
|
8829
|
+
"layout.classicNavMode",
|
|
8825
8830
|
"layout.footerRootStyle",
|
|
8826
8831
|
"ui.headerNavLinkClass",
|
|
8827
8832
|
"ui.headingClassFromAlignment",
|
|
@@ -10697,7 +10702,7 @@ function getSemanticIconComponent(name) {
|
|
|
10697
10702
|
//#endregion
|
|
10698
10703
|
//#region ../blocks/src/system/icons/value.ts
|
|
10699
10704
|
const NO_BLOCK_ICON_VALUE = { kind: "none" };
|
|
10700
|
-
function isRecord$
|
|
10705
|
+
function isRecord$50(value) {
|
|
10701
10706
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10702
10707
|
}
|
|
10703
10708
|
function parseBlockIconValue(value) {
|
|
@@ -10705,7 +10710,7 @@ function parseBlockIconValue(value) {
|
|
|
10705
10710
|
kind: "semantic",
|
|
10706
10711
|
iconId: value
|
|
10707
10712
|
};
|
|
10708
|
-
if (!isRecord$
|
|
10713
|
+
if (!isRecord$50(value)) return NO_BLOCK_ICON_VALUE;
|
|
10709
10714
|
switch (value.kind) {
|
|
10710
10715
|
case "none": return NO_BLOCK_ICON_VALUE;
|
|
10711
10716
|
case "semantic": return isSemanticIconId(value.iconId) ? {
|
|
@@ -10778,7 +10783,7 @@ function buildGeneratedBlockIconRenderAssetLookupFromUnknown(value) {
|
|
|
10778
10783
|
if (!Array.isArray(value)) return { kind: "invalid_asset_list" };
|
|
10779
10784
|
const inputs = [];
|
|
10780
10785
|
for (const [index, item] of value.entries()) {
|
|
10781
|
-
if (!isRecord$
|
|
10786
|
+
if (!isRecord$50(item)) return {
|
|
10782
10787
|
kind: "invalid_asset_entry",
|
|
10783
10788
|
index,
|
|
10784
10789
|
reason: "not_object"
|
|
@@ -13195,6 +13200,246 @@ var init_all = __esmMin((() => {
|
|
|
13195
13200
|
init_PaletteCard();
|
|
13196
13201
|
}));
|
|
13197
13202
|
//#endregion
|
|
13203
|
+
//#region ../theme-core/src/tokens/colorTokenParts.ts
|
|
13204
|
+
function parseOpacityPercent(source) {
|
|
13205
|
+
const trimmed = source.trim();
|
|
13206
|
+
if (!trimmed) return null;
|
|
13207
|
+
if (!/^\d{1,3}(?:\.\d+)?$/.test(trimmed)) return null;
|
|
13208
|
+
const value = Number(trimmed);
|
|
13209
|
+
if (!Number.isFinite(value)) return null;
|
|
13210
|
+
if (value < 0 || value > 100) return null;
|
|
13211
|
+
return value;
|
|
13212
|
+
}
|
|
13213
|
+
function parseColorTokenParts(source) {
|
|
13214
|
+
const trimmed = source.trim();
|
|
13215
|
+
if (trimmed.startsWith("raw:")) return {
|
|
13216
|
+
kind: "raw",
|
|
13217
|
+
value: trimmed.slice(4)
|
|
13218
|
+
};
|
|
13219
|
+
const [token, opacityRaw, extra] = trimmed.split("/");
|
|
13220
|
+
if (!token || extra !== void 0) return {
|
|
13221
|
+
kind: "invalid",
|
|
13222
|
+
token: trimmed
|
|
13223
|
+
};
|
|
13224
|
+
if (opacityRaw === void 0) return {
|
|
13225
|
+
kind: "token",
|
|
13226
|
+
token,
|
|
13227
|
+
opacityPercent: null
|
|
13228
|
+
};
|
|
13229
|
+
const opacityPercent = parseOpacityPercent(opacityRaw);
|
|
13230
|
+
if (opacityPercent === null) return {
|
|
13231
|
+
kind: "invalid",
|
|
13232
|
+
token: trimmed
|
|
13233
|
+
};
|
|
13234
|
+
return {
|
|
13235
|
+
kind: "token",
|
|
13236
|
+
token,
|
|
13237
|
+
opacityPercent
|
|
13238
|
+
};
|
|
13239
|
+
}
|
|
13240
|
+
var init_colorTokenParts = __esmMin((() => {}));
|
|
13241
|
+
function isBlockColorToken(value) {
|
|
13242
|
+
if (typeof value !== "string") return false;
|
|
13243
|
+
const parts = parseColorTokenParts(value);
|
|
13244
|
+
return parts.kind === "token" && blockColorTokenNameSet.has(parts.token);
|
|
13245
|
+
}
|
|
13246
|
+
function parseBlockColorToken(value) {
|
|
13247
|
+
if (!isBlockColorToken(value)) return null;
|
|
13248
|
+
return value.trim();
|
|
13249
|
+
}
|
|
13250
|
+
var blockColorTokenNames, blockColorTokenNameSet;
|
|
13251
|
+
var init_blockColorTokens = __esmMin((() => {
|
|
13252
|
+
init_colorTokenParts();
|
|
13253
|
+
blockColorTokenNames = [
|
|
13254
|
+
"text",
|
|
13255
|
+
"heading",
|
|
13256
|
+
"mutedText",
|
|
13257
|
+
"surface",
|
|
13258
|
+
"background",
|
|
13259
|
+
"foreground",
|
|
13260
|
+
"border",
|
|
13261
|
+
"primary",
|
|
13262
|
+
"secondary",
|
|
13263
|
+
"accent",
|
|
13264
|
+
"success",
|
|
13265
|
+
"warning",
|
|
13266
|
+
"info",
|
|
13267
|
+
"error",
|
|
13268
|
+
"destructive",
|
|
13269
|
+
"scrim",
|
|
13270
|
+
"shadow",
|
|
13271
|
+
"onPrimary",
|
|
13272
|
+
"onSecondary",
|
|
13273
|
+
"onAccent",
|
|
13274
|
+
"onSuccess",
|
|
13275
|
+
"onWarning",
|
|
13276
|
+
"onInfo",
|
|
13277
|
+
"onError",
|
|
13278
|
+
"onDestructive",
|
|
13279
|
+
"onSurface"
|
|
13280
|
+
];
|
|
13281
|
+
blockColorTokenNameSet = new Set(blockColorTokenNames);
|
|
13282
|
+
}));
|
|
13283
|
+
//#endregion
|
|
13284
|
+
//#region ../theme-core/src/tokens/themeColorTokens.ts
|
|
13285
|
+
function isKnownBaseToken(value) {
|
|
13286
|
+
return themeColorBaseTokenSet.has(value);
|
|
13287
|
+
}
|
|
13288
|
+
function isKnownShadeToken(value) {
|
|
13289
|
+
const match = value.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:-([0-9]{2,3}))$/);
|
|
13290
|
+
if (!match) return false;
|
|
13291
|
+
const [, base, shade] = match;
|
|
13292
|
+
return Boolean(base && shade && isKnownBaseToken(base) && shadeStepSet.has(shade));
|
|
13293
|
+
}
|
|
13294
|
+
function isThemeColorTokenBase(value) {
|
|
13295
|
+
return isKnownBaseToken(value) || isKnownShadeToken(value);
|
|
13296
|
+
}
|
|
13297
|
+
function isThemeColorToken(value) {
|
|
13298
|
+
if (typeof value !== "string") return false;
|
|
13299
|
+
const parts = parseColorTokenParts(value);
|
|
13300
|
+
return parts.kind === "token" && isThemeColorTokenBase(parts.token);
|
|
13301
|
+
}
|
|
13302
|
+
function parseThemeColorToken(value) {
|
|
13303
|
+
if (!isThemeColorToken(value)) return null;
|
|
13304
|
+
return value.trim();
|
|
13305
|
+
}
|
|
13306
|
+
var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, themeColorShadeSteps, shadeStepSet, themeColorTokenSchema;
|
|
13307
|
+
var init_themeColorTokens = __esmMin((() => {
|
|
13308
|
+
init_blockColorTokens();
|
|
13309
|
+
init_colorTokenParts();
|
|
13310
|
+
PALETTE_TOKEN_NAMES = [
|
|
13311
|
+
"primary",
|
|
13312
|
+
"primaryForeground",
|
|
13313
|
+
"secondary",
|
|
13314
|
+
"accent",
|
|
13315
|
+
"success",
|
|
13316
|
+
"warning",
|
|
13317
|
+
"destructive",
|
|
13318
|
+
"background",
|
|
13319
|
+
"surface",
|
|
13320
|
+
"surfaceAlt",
|
|
13321
|
+
"muted",
|
|
13322
|
+
"text",
|
|
13323
|
+
"border"
|
|
13324
|
+
];
|
|
13325
|
+
paletteTokenNameSchema = z$1.enum(PALETTE_TOKEN_NAMES);
|
|
13326
|
+
themeColorBaseTokenNames = [
|
|
13327
|
+
...PALETTE_TOKEN_NAMES,
|
|
13328
|
+
...blockColorTokenNames,
|
|
13329
|
+
"white",
|
|
13330
|
+
"neutral",
|
|
13331
|
+
"primaryText",
|
|
13332
|
+
"secondaryForeground",
|
|
13333
|
+
"accentForeground"
|
|
13334
|
+
];
|
|
13335
|
+
themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
13336
|
+
themeColorShadeSteps = [
|
|
13337
|
+
"50",
|
|
13338
|
+
"100",
|
|
13339
|
+
"200",
|
|
13340
|
+
"300",
|
|
13341
|
+
"400",
|
|
13342
|
+
"500",
|
|
13343
|
+
"600",
|
|
13344
|
+
"700",
|
|
13345
|
+
"800",
|
|
13346
|
+
"900",
|
|
13347
|
+
"950"
|
|
13348
|
+
];
|
|
13349
|
+
shadeStepSet = new Set(themeColorShadeSteps);
|
|
13350
|
+
themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
13351
|
+
}));
|
|
13352
|
+
//#endregion
|
|
13353
|
+
//#region ../theme-core/src/palette/colors.ts
|
|
13354
|
+
function normalizePaletteHex(value) {
|
|
13355
|
+
if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
|
|
13356
|
+
const normalized = value.toLowerCase();
|
|
13357
|
+
if (normalized.length === 7) return normalized;
|
|
13358
|
+
const triplet = normalized.slice(1);
|
|
13359
|
+
const red = triplet.charAt(0);
|
|
13360
|
+
const green = triplet.charAt(1);
|
|
13361
|
+
const blue = triplet.charAt(2);
|
|
13362
|
+
return `#${red}${red}${green}${green}${blue}${blue}`;
|
|
13363
|
+
}
|
|
13364
|
+
function paletteColorsFromEntries(entries) {
|
|
13365
|
+
const values = {};
|
|
13366
|
+
for (const entry of entries) {
|
|
13367
|
+
const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
|
|
13368
|
+
if (!parsedRole.success) return {
|
|
13369
|
+
ok: false,
|
|
13370
|
+
error: {
|
|
13371
|
+
kind: "unknown-role",
|
|
13372
|
+
role: entry.name
|
|
13373
|
+
}
|
|
13374
|
+
};
|
|
13375
|
+
const role = parsedRole.data;
|
|
13376
|
+
if (values[role] !== void 0) return {
|
|
13377
|
+
ok: false,
|
|
13378
|
+
error: {
|
|
13379
|
+
kind: "duplicate-role",
|
|
13380
|
+
role
|
|
13381
|
+
}
|
|
13382
|
+
};
|
|
13383
|
+
const hex = normalizePaletteHex(entry.hex);
|
|
13384
|
+
if (!hex) return {
|
|
13385
|
+
ok: false,
|
|
13386
|
+
error: {
|
|
13387
|
+
kind: "invalid-color",
|
|
13388
|
+
role,
|
|
13389
|
+
value: entry.hex
|
|
13390
|
+
}
|
|
13391
|
+
};
|
|
13392
|
+
values[role] = hex;
|
|
13393
|
+
}
|
|
13394
|
+
const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
|
|
13395
|
+
if (missing.length > 0) return {
|
|
13396
|
+
ok: false,
|
|
13397
|
+
error: {
|
|
13398
|
+
kind: "missing-roles",
|
|
13399
|
+
roles: missing
|
|
13400
|
+
}
|
|
13401
|
+
};
|
|
13402
|
+
return {
|
|
13403
|
+
ok: true,
|
|
13404
|
+
colors: paletteColorsSchema.parse(values)
|
|
13405
|
+
};
|
|
13406
|
+
}
|
|
13407
|
+
function requirePaletteColorsFromEntries(entries) {
|
|
13408
|
+
const result = paletteColorsFromEntries(entries);
|
|
13409
|
+
if (result.ok) return result.colors;
|
|
13410
|
+
throw new Error(`Invalid complete palette: ${result.error.kind}`);
|
|
13411
|
+
}
|
|
13412
|
+
var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, hexColorSchema$1, paletteModeSchema, paletteColorsSchema, init_colors = __esmMin((() => {
|
|
13413
|
+
init_themeColorTokens();
|
|
13414
|
+
HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
13415
|
+
NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
13416
|
+
hexColorSchema$1 = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
13417
|
+
paletteModeSchema = z$1.enum(["light", "dark"]);
|
|
13418
|
+
z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
|
|
13419
|
+
paletteColorsSchema = z$1.object({
|
|
13420
|
+
primary: hexColorSchema$1,
|
|
13421
|
+
primaryForeground: hexColorSchema$1,
|
|
13422
|
+
secondary: hexColorSchema$1,
|
|
13423
|
+
accent: hexColorSchema$1,
|
|
13424
|
+
success: hexColorSchema$1,
|
|
13425
|
+
warning: hexColorSchema$1,
|
|
13426
|
+
destructive: hexColorSchema$1,
|
|
13427
|
+
background: hexColorSchema$1,
|
|
13428
|
+
surface: hexColorSchema$1,
|
|
13429
|
+
surfaceAlt: hexColorSchema$1,
|
|
13430
|
+
muted: hexColorSchema$1,
|
|
13431
|
+
text: hexColorSchema$1,
|
|
13432
|
+
border: hexColorSchema$1
|
|
13433
|
+
}).strict().transform((value) => value);
|
|
13434
|
+
}));
|
|
13435
|
+
var init_historicalThemePalette = __esmMin((() => {
|
|
13436
|
+
init_themeColorTokens();
|
|
13437
|
+
init_colors();
|
|
13438
|
+
init_colorConversion();
|
|
13439
|
+
init_textColor();
|
|
13440
|
+
new Set(PALETTE_TOKEN_NAMES);
|
|
13441
|
+
}));
|
|
13442
|
+
//#endregion
|
|
13198
13443
|
//#region ../theme-core/src/palette/types.ts
|
|
13199
13444
|
var init_types$16 = __esmMin((() => {}));
|
|
13200
13445
|
//#endregion
|
|
@@ -14321,240 +14566,6 @@ var init_browser = __esmMin((() => {
|
|
|
14321
14566
|
var init_extractPalette = __esmMin((() => {
|
|
14322
14567
|
init_browser();
|
|
14323
14568
|
}));
|
|
14324
|
-
//#endregion
|
|
14325
|
-
//#region ../theme-core/src/tokens/colorTokenParts.ts
|
|
14326
|
-
function parseOpacityPercent(source) {
|
|
14327
|
-
const trimmed = source.trim();
|
|
14328
|
-
if (!trimmed) return null;
|
|
14329
|
-
if (!/^\d{1,3}(?:\.\d+)?$/.test(trimmed)) return null;
|
|
14330
|
-
const value = Number(trimmed);
|
|
14331
|
-
if (!Number.isFinite(value)) return null;
|
|
14332
|
-
if (value < 0 || value > 100) return null;
|
|
14333
|
-
return value;
|
|
14334
|
-
}
|
|
14335
|
-
function parseColorTokenParts(source) {
|
|
14336
|
-
const trimmed = source.trim();
|
|
14337
|
-
if (trimmed.startsWith("raw:")) return {
|
|
14338
|
-
kind: "raw",
|
|
14339
|
-
value: trimmed.slice(4)
|
|
14340
|
-
};
|
|
14341
|
-
const [token, opacityRaw, extra] = trimmed.split("/");
|
|
14342
|
-
if (!token || extra !== void 0) return {
|
|
14343
|
-
kind: "invalid",
|
|
14344
|
-
token: trimmed
|
|
14345
|
-
};
|
|
14346
|
-
if (opacityRaw === void 0) return {
|
|
14347
|
-
kind: "token",
|
|
14348
|
-
token,
|
|
14349
|
-
opacityPercent: null
|
|
14350
|
-
};
|
|
14351
|
-
const opacityPercent = parseOpacityPercent(opacityRaw);
|
|
14352
|
-
if (opacityPercent === null) return {
|
|
14353
|
-
kind: "invalid",
|
|
14354
|
-
token: trimmed
|
|
14355
|
-
};
|
|
14356
|
-
return {
|
|
14357
|
-
kind: "token",
|
|
14358
|
-
token,
|
|
14359
|
-
opacityPercent
|
|
14360
|
-
};
|
|
14361
|
-
}
|
|
14362
|
-
var init_colorTokenParts = __esmMin((() => {}));
|
|
14363
|
-
function isBlockColorToken(value) {
|
|
14364
|
-
if (typeof value !== "string") return false;
|
|
14365
|
-
const parts = parseColorTokenParts(value);
|
|
14366
|
-
return parts.kind === "token" && blockColorTokenNameSet.has(parts.token);
|
|
14367
|
-
}
|
|
14368
|
-
function parseBlockColorToken(value) {
|
|
14369
|
-
if (!isBlockColorToken(value)) return null;
|
|
14370
|
-
return value.trim();
|
|
14371
|
-
}
|
|
14372
|
-
var blockColorTokenNames, blockColorTokenNameSet;
|
|
14373
|
-
var init_blockColorTokens = __esmMin((() => {
|
|
14374
|
-
init_colorTokenParts();
|
|
14375
|
-
blockColorTokenNames = [
|
|
14376
|
-
"text",
|
|
14377
|
-
"heading",
|
|
14378
|
-
"mutedText",
|
|
14379
|
-
"surface",
|
|
14380
|
-
"background",
|
|
14381
|
-
"foreground",
|
|
14382
|
-
"border",
|
|
14383
|
-
"primary",
|
|
14384
|
-
"secondary",
|
|
14385
|
-
"accent",
|
|
14386
|
-
"success",
|
|
14387
|
-
"warning",
|
|
14388
|
-
"info",
|
|
14389
|
-
"error",
|
|
14390
|
-
"destructive",
|
|
14391
|
-
"scrim",
|
|
14392
|
-
"shadow",
|
|
14393
|
-
"onPrimary",
|
|
14394
|
-
"onSecondary",
|
|
14395
|
-
"onAccent",
|
|
14396
|
-
"onSuccess",
|
|
14397
|
-
"onWarning",
|
|
14398
|
-
"onInfo",
|
|
14399
|
-
"onError",
|
|
14400
|
-
"onDestructive",
|
|
14401
|
-
"onSurface"
|
|
14402
|
-
];
|
|
14403
|
-
blockColorTokenNameSet = new Set(blockColorTokenNames);
|
|
14404
|
-
}));
|
|
14405
|
-
//#endregion
|
|
14406
|
-
//#region ../theme-core/src/tokens/themeColorTokens.ts
|
|
14407
|
-
function isKnownBaseToken(value) {
|
|
14408
|
-
return themeColorBaseTokenSet.has(value);
|
|
14409
|
-
}
|
|
14410
|
-
function isKnownShadeToken(value) {
|
|
14411
|
-
const match = value.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:-([0-9]{2,3}))$/);
|
|
14412
|
-
if (!match) return false;
|
|
14413
|
-
const [, base, shade] = match;
|
|
14414
|
-
return Boolean(base && shade && isKnownBaseToken(base) && shadeStepSet.has(shade));
|
|
14415
|
-
}
|
|
14416
|
-
function isThemeColorTokenBase(value) {
|
|
14417
|
-
return isKnownBaseToken(value) || isKnownShadeToken(value);
|
|
14418
|
-
}
|
|
14419
|
-
function isThemeColorToken(value) {
|
|
14420
|
-
if (typeof value !== "string") return false;
|
|
14421
|
-
const parts = parseColorTokenParts(value);
|
|
14422
|
-
return parts.kind === "token" && isThemeColorTokenBase(parts.token);
|
|
14423
|
-
}
|
|
14424
|
-
function parseThemeColorToken(value) {
|
|
14425
|
-
if (!isThemeColorToken(value)) return null;
|
|
14426
|
-
return value.trim();
|
|
14427
|
-
}
|
|
14428
|
-
var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, themeColorShadeSteps, shadeStepSet, themeColorTokenSchema;
|
|
14429
|
-
var init_themeColorTokens = __esmMin((() => {
|
|
14430
|
-
init_blockColorTokens();
|
|
14431
|
-
init_colorTokenParts();
|
|
14432
|
-
PALETTE_TOKEN_NAMES = [
|
|
14433
|
-
"primary",
|
|
14434
|
-
"primaryForeground",
|
|
14435
|
-
"secondary",
|
|
14436
|
-
"accent",
|
|
14437
|
-
"success",
|
|
14438
|
-
"warning",
|
|
14439
|
-
"destructive",
|
|
14440
|
-
"background",
|
|
14441
|
-
"surface",
|
|
14442
|
-
"surfaceAlt",
|
|
14443
|
-
"muted",
|
|
14444
|
-
"text",
|
|
14445
|
-
"border"
|
|
14446
|
-
];
|
|
14447
|
-
paletteTokenNameSchema = z$1.enum(PALETTE_TOKEN_NAMES);
|
|
14448
|
-
themeColorBaseTokenNames = [
|
|
14449
|
-
...PALETTE_TOKEN_NAMES,
|
|
14450
|
-
...blockColorTokenNames,
|
|
14451
|
-
"white",
|
|
14452
|
-
"neutral",
|
|
14453
|
-
"primaryText",
|
|
14454
|
-
"secondaryForeground",
|
|
14455
|
-
"accentForeground"
|
|
14456
|
-
];
|
|
14457
|
-
themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
14458
|
-
themeColorShadeSteps = [
|
|
14459
|
-
"50",
|
|
14460
|
-
"100",
|
|
14461
|
-
"200",
|
|
14462
|
-
"300",
|
|
14463
|
-
"400",
|
|
14464
|
-
"500",
|
|
14465
|
-
"600",
|
|
14466
|
-
"700",
|
|
14467
|
-
"800",
|
|
14468
|
-
"900",
|
|
14469
|
-
"950"
|
|
14470
|
-
];
|
|
14471
|
-
shadeStepSet = new Set(themeColorShadeSteps);
|
|
14472
|
-
themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
14473
|
-
}));
|
|
14474
|
-
//#endregion
|
|
14475
|
-
//#region ../theme-core/src/palette/colors.ts
|
|
14476
|
-
function normalizePaletteHex(value) {
|
|
14477
|
-
if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
|
|
14478
|
-
const normalized = value.toLowerCase();
|
|
14479
|
-
if (normalized.length === 7) return normalized;
|
|
14480
|
-
const triplet = normalized.slice(1);
|
|
14481
|
-
const red = triplet.charAt(0);
|
|
14482
|
-
const green = triplet.charAt(1);
|
|
14483
|
-
const blue = triplet.charAt(2);
|
|
14484
|
-
return `#${red}${red}${green}${green}${blue}${blue}`;
|
|
14485
|
-
}
|
|
14486
|
-
function paletteColorsFromEntries(entries) {
|
|
14487
|
-
const values = {};
|
|
14488
|
-
for (const entry of entries) {
|
|
14489
|
-
const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
|
|
14490
|
-
if (!parsedRole.success) return {
|
|
14491
|
-
ok: false,
|
|
14492
|
-
error: {
|
|
14493
|
-
kind: "unknown-role",
|
|
14494
|
-
role: entry.name
|
|
14495
|
-
}
|
|
14496
|
-
};
|
|
14497
|
-
const role = parsedRole.data;
|
|
14498
|
-
if (values[role] !== void 0) return {
|
|
14499
|
-
ok: false,
|
|
14500
|
-
error: {
|
|
14501
|
-
kind: "duplicate-role",
|
|
14502
|
-
role
|
|
14503
|
-
}
|
|
14504
|
-
};
|
|
14505
|
-
const hex = normalizePaletteHex(entry.hex);
|
|
14506
|
-
if (!hex) return {
|
|
14507
|
-
ok: false,
|
|
14508
|
-
error: {
|
|
14509
|
-
kind: "invalid-color",
|
|
14510
|
-
role,
|
|
14511
|
-
value: entry.hex
|
|
14512
|
-
}
|
|
14513
|
-
};
|
|
14514
|
-
values[role] = hex;
|
|
14515
|
-
}
|
|
14516
|
-
const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
|
|
14517
|
-
if (missing.length > 0) return {
|
|
14518
|
-
ok: false,
|
|
14519
|
-
error: {
|
|
14520
|
-
kind: "missing-roles",
|
|
14521
|
-
roles: missing
|
|
14522
|
-
}
|
|
14523
|
-
};
|
|
14524
|
-
return {
|
|
14525
|
-
ok: true,
|
|
14526
|
-
colors: paletteColorsSchema.parse(values)
|
|
14527
|
-
};
|
|
14528
|
-
}
|
|
14529
|
-
function requirePaletteColorsFromEntries(entries) {
|
|
14530
|
-
const result = paletteColorsFromEntries(entries);
|
|
14531
|
-
if (result.ok) return result.colors;
|
|
14532
|
-
throw new Error(`Invalid complete palette: ${result.error.kind}`);
|
|
14533
|
-
}
|
|
14534
|
-
var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, hexColorSchema$1, paletteModeSchema, paletteColorsSchema;
|
|
14535
|
-
var init_colors = __esmMin((() => {
|
|
14536
|
-
init_themeColorTokens();
|
|
14537
|
-
HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
14538
|
-
NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
14539
|
-
hexColorSchema$1 = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
14540
|
-
paletteModeSchema = z$1.enum(["light", "dark"]);
|
|
14541
|
-
z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
|
|
14542
|
-
paletteColorsSchema = z$1.object({
|
|
14543
|
-
primary: hexColorSchema$1,
|
|
14544
|
-
primaryForeground: hexColorSchema$1,
|
|
14545
|
-
secondary: hexColorSchema$1,
|
|
14546
|
-
accent: hexColorSchema$1,
|
|
14547
|
-
success: hexColorSchema$1,
|
|
14548
|
-
warning: hexColorSchema$1,
|
|
14549
|
-
destructive: hexColorSchema$1,
|
|
14550
|
-
background: hexColorSchema$1,
|
|
14551
|
-
surface: hexColorSchema$1,
|
|
14552
|
-
surfaceAlt: hexColorSchema$1,
|
|
14553
|
-
muted: hexColorSchema$1,
|
|
14554
|
-
text: hexColorSchema$1,
|
|
14555
|
-
border: hexColorSchema$1
|
|
14556
|
-
}).strict().transform((value) => value);
|
|
14557
|
-
}));
|
|
14558
14569
|
var init_editorState = __esmMin((() => {}));
|
|
14559
14570
|
var init_libraryModel = __esmMin((() => {}));
|
|
14560
14571
|
var init_themePaletteCompatibility = __esmMin((() => {
|
|
@@ -14565,6 +14576,7 @@ var init_legacySelection = __esmMin((() => {
|
|
|
14565
14576
|
init_themeColorTokens();
|
|
14566
14577
|
init_colors();
|
|
14567
14578
|
init_themePaletteCompatibility();
|
|
14579
|
+
init_historicalThemePalette();
|
|
14568
14580
|
}));
|
|
14569
14581
|
//#endregion
|
|
14570
14582
|
//#region ../theme-core/src/site-styles/styleTags.ts
|
|
@@ -14645,7 +14657,7 @@ var init_types$15 = __esmMin((() => {
|
|
|
14645
14657
|
}));
|
|
14646
14658
|
//#endregion
|
|
14647
14659
|
//#region ../theme-core/src/palette/curated/brand-led.ts
|
|
14648
|
-
var brandLedCool, brandLedWarm, brandLedJewel, brandLedBurgundyGold;
|
|
14660
|
+
var brandLedCool, brandLedWarm, brandLedJewel, brandLedSpruce, brandLedBurgundyGold;
|
|
14649
14661
|
var init_brand_led = __esmMin((() => {
|
|
14650
14662
|
init_types$15();
|
|
14651
14663
|
brandLedCool = defineCuratedPalette({
|
|
@@ -14843,6 +14855,71 @@ var init_brand_led = __esmMin((() => {
|
|
|
14843
14855
|
}
|
|
14844
14856
|
]
|
|
14845
14857
|
});
|
|
14858
|
+
brandLedSpruce = defineCuratedPalette({
|
|
14859
|
+
id: "brand-led-spruce",
|
|
14860
|
+
name: "Brand-led — Spruce",
|
|
14861
|
+
description: "Spruce-ink primary and moss secondary with an amber accent over a green-mist ground and hairline sage borders.",
|
|
14862
|
+
tags: {
|
|
14863
|
+
tone: "classic",
|
|
14864
|
+
energy: "calm",
|
|
14865
|
+
era: "editorial"
|
|
14866
|
+
},
|
|
14867
|
+
mode: "light",
|
|
14868
|
+
colors: [
|
|
14869
|
+
{
|
|
14870
|
+
name: "primary",
|
|
14871
|
+
hex: "#14312b"
|
|
14872
|
+
},
|
|
14873
|
+
{
|
|
14874
|
+
name: "secondary",
|
|
14875
|
+
hex: "#356a59"
|
|
14876
|
+
},
|
|
14877
|
+
{
|
|
14878
|
+
name: "accent",
|
|
14879
|
+
hex: "#f08a4b"
|
|
14880
|
+
},
|
|
14881
|
+
{
|
|
14882
|
+
name: "success",
|
|
14883
|
+
hex: "#356a59"
|
|
14884
|
+
},
|
|
14885
|
+
{
|
|
14886
|
+
name: "warning",
|
|
14887
|
+
hex: "#f08a4b"
|
|
14888
|
+
},
|
|
14889
|
+
{
|
|
14890
|
+
name: "destructive",
|
|
14891
|
+
hex: "#b5561f"
|
|
14892
|
+
},
|
|
14893
|
+
{
|
|
14894
|
+
name: "background",
|
|
14895
|
+
hex: "#ecefe9"
|
|
14896
|
+
},
|
|
14897
|
+
{
|
|
14898
|
+
name: "surface",
|
|
14899
|
+
hex: "#ffffff"
|
|
14900
|
+
},
|
|
14901
|
+
{
|
|
14902
|
+
name: "surfaceAlt",
|
|
14903
|
+
hex: "#f4f6f1"
|
|
14904
|
+
},
|
|
14905
|
+
{
|
|
14906
|
+
name: "muted",
|
|
14907
|
+
hex: "#5c6a64"
|
|
14908
|
+
},
|
|
14909
|
+
{
|
|
14910
|
+
name: "text",
|
|
14911
|
+
hex: "#1c2a26"
|
|
14912
|
+
},
|
|
14913
|
+
{
|
|
14914
|
+
name: "primaryForeground",
|
|
14915
|
+
hex: "#f4f7f1"
|
|
14916
|
+
},
|
|
14917
|
+
{
|
|
14918
|
+
name: "border",
|
|
14919
|
+
hex: "#d7ddd2"
|
|
14920
|
+
}
|
|
14921
|
+
]
|
|
14922
|
+
});
|
|
14846
14923
|
brandLedBurgundyGold = defineCuratedPalette({
|
|
14847
14924
|
id: "brand-led-burgundy-gold",
|
|
14848
14925
|
name: "Brand-led — Burgundy Gold",
|
|
@@ -15795,6 +15872,7 @@ var curatedPalettes, curatedPalettesById, init_curated = __esmMin((() => {
|
|
|
15795
15872
|
brandLedWarm,
|
|
15796
15873
|
brandLedJewel,
|
|
15797
15874
|
brandLedBurgundyGold,
|
|
15875
|
+
brandLedSpruce,
|
|
15798
15876
|
warmNeutralClay,
|
|
15799
15877
|
warmNeutralCream,
|
|
15800
15878
|
warmNeutralSoftEarth,
|
|
@@ -15911,6 +15989,7 @@ var init_palette = __esmMin((() => {
|
|
|
15911
15989
|
init_expandPalette();
|
|
15912
15990
|
init_generateCssVars();
|
|
15913
15991
|
init_generateShades();
|
|
15992
|
+
init_historicalThemePalette();
|
|
15914
15993
|
init_neutralScale();
|
|
15915
15994
|
init_types$16();
|
|
15916
15995
|
init_utils$5();
|
|
@@ -16296,7 +16375,7 @@ function asSpecialVariantId(value) {
|
|
|
16296
16375
|
if (value.length === 0) throw new Error("SpecialVariantId must be a non-empty string");
|
|
16297
16376
|
return value;
|
|
16298
16377
|
}
|
|
16299
|
-
var VARIANT_ROLES, DEFAULT_VARIANT_ALIAS_ID, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonBackgroundSchema, effectApplicationSchema$1, buttonBorderSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
|
|
16378
|
+
var VARIANT_ROLES, DEFAULT_VARIANT_ALIAS_ID, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonBackgroundSchema, effectApplicationSchema$1, buttonBorderSchema, buttonVariantAffordanceSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
|
|
16300
16379
|
var init_types$14 = __esmMin((() => {
|
|
16301
16380
|
init_themeColorTokens();
|
|
16302
16381
|
VARIANT_ROLES = [
|
|
@@ -16456,6 +16535,10 @@ var init_types$14 = __esmMin((() => {
|
|
|
16456
16535
|
widthClass: z$1.string(),
|
|
16457
16536
|
colorToken: themeColorTokenSchema
|
|
16458
16537
|
});
|
|
16538
|
+
buttonVariantAffordanceSchema = z$1.object({
|
|
16539
|
+
iconId: z$1.string().min(1),
|
|
16540
|
+
colorToken: themeColorTokenSchema.optional()
|
|
16541
|
+
});
|
|
16459
16542
|
variantShadowSchema = z$1.object({
|
|
16460
16543
|
elevation: z$1.enum([
|
|
16461
16544
|
"none",
|
|
@@ -16496,7 +16579,8 @@ var init_types$14 = __esmMin((() => {
|
|
|
16496
16579
|
border: buttonBorderSchema.optional(),
|
|
16497
16580
|
hoverBackgroundToken: z$1.string().optional(),
|
|
16498
16581
|
effects: variantEffectsSchema.optional(),
|
|
16499
|
-
sizes: variantSizeOverridesSchema.optional()
|
|
16582
|
+
sizes: variantSizeOverridesSchema.optional(),
|
|
16583
|
+
affordance: buttonVariantAffordanceSchema.optional()
|
|
16500
16584
|
});
|
|
16501
16585
|
buttonSystemSchema = z$1.object({
|
|
16502
16586
|
global: buttonGlobalSettingsSchema,
|
|
@@ -17046,6 +17130,132 @@ var init_editorial_link = __esmMin((() => {
|
|
|
17046
17130
|
});
|
|
17047
17131
|
}));
|
|
17048
17132
|
//#endregion
|
|
17133
|
+
//#region ../theme-core/src/buttons/personalities/flat-ink.ts
|
|
17134
|
+
var flatInk;
|
|
17135
|
+
var init_flat_ink = __esmMin((() => {
|
|
17136
|
+
init_types$13();
|
|
17137
|
+
flatInk = defineButtonPersonality({
|
|
17138
|
+
id: "flat-ink",
|
|
17139
|
+
name: "Flat Ink",
|
|
17140
|
+
description: "Flat solid-ink primary, hairline ghost secondary, and a single amber accent climax — modest radius, no shadow.",
|
|
17141
|
+
tags: {
|
|
17142
|
+
tone: "classic",
|
|
17143
|
+
energy: "calm",
|
|
17144
|
+
motion: "subtle",
|
|
17145
|
+
era: "editorial"
|
|
17146
|
+
},
|
|
17147
|
+
buttonSystem: {
|
|
17148
|
+
global: {
|
|
17149
|
+
cornerStyle: "rounded",
|
|
17150
|
+
shadow: "low",
|
|
17151
|
+
textTransform: "none",
|
|
17152
|
+
fontWeight: 600,
|
|
17153
|
+
borderWidth: 1,
|
|
17154
|
+
typography: "body",
|
|
17155
|
+
letterSpacing: "tight",
|
|
17156
|
+
paddingPreset: "default",
|
|
17157
|
+
hoverTransform: "lift",
|
|
17158
|
+
hoverColor: "none"
|
|
17159
|
+
},
|
|
17160
|
+
sizes: {
|
|
17161
|
+
sm: {
|
|
17162
|
+
padding: "0.625rem 1.125rem",
|
|
17163
|
+
fontSize: "text-sm"
|
|
17164
|
+
},
|
|
17165
|
+
md: { padding: "0.8125rem 1.375rem" },
|
|
17166
|
+
lg: {
|
|
17167
|
+
padding: "0.9375rem 1.625rem",
|
|
17168
|
+
fontSize: "text-lg"
|
|
17169
|
+
},
|
|
17170
|
+
xl: {
|
|
17171
|
+
padding: "1.0625rem 2rem",
|
|
17172
|
+
fontSize: "text-xl"
|
|
17173
|
+
}
|
|
17174
|
+
},
|
|
17175
|
+
variants: [
|
|
17176
|
+
{
|
|
17177
|
+
id: "primary",
|
|
17178
|
+
name: "Primary",
|
|
17179
|
+
enabled: true,
|
|
17180
|
+
priority: 1,
|
|
17181
|
+
background: {
|
|
17182
|
+
type: "solid",
|
|
17183
|
+
colorToken: "primary"
|
|
17184
|
+
},
|
|
17185
|
+
textColorToken: "primaryForeground",
|
|
17186
|
+
borderRadius: "rounded-lg",
|
|
17187
|
+
affordance: {
|
|
17188
|
+
iconId: "ArrowRight",
|
|
17189
|
+
colorToken: "accent"
|
|
17190
|
+
},
|
|
17191
|
+
shadow: {
|
|
17192
|
+
elevation: "none",
|
|
17193
|
+
softness: null,
|
|
17194
|
+
position: "bottom"
|
|
17195
|
+
},
|
|
17196
|
+
effects: { hover: [{
|
|
17197
|
+
effectId: "lift",
|
|
17198
|
+
options: { translateY: "-2px" }
|
|
17199
|
+
}, {
|
|
17200
|
+
effectId: "background-on-hover",
|
|
17201
|
+
options: { colorToken: "secondary" }
|
|
17202
|
+
}] }
|
|
17203
|
+
},
|
|
17204
|
+
{
|
|
17205
|
+
id: "secondary",
|
|
17206
|
+
name: "Secondary",
|
|
17207
|
+
enabled: true,
|
|
17208
|
+
priority: 2,
|
|
17209
|
+
background: { type: "transparent" },
|
|
17210
|
+
textColorToken: "primary",
|
|
17211
|
+
borderRadius: "rounded-lg",
|
|
17212
|
+
border: {
|
|
17213
|
+
widthClass: "border",
|
|
17214
|
+
colorToken: "border"
|
|
17215
|
+
},
|
|
17216
|
+
shadow: {
|
|
17217
|
+
elevation: "none",
|
|
17218
|
+
softness: null,
|
|
17219
|
+
position: "bottom"
|
|
17220
|
+
},
|
|
17221
|
+
effects: { hover: [{
|
|
17222
|
+
effectId: "lift",
|
|
17223
|
+
options: { translateY: "-2px" }
|
|
17224
|
+
}, {
|
|
17225
|
+
effectId: "background-on-hover",
|
|
17226
|
+
options: { colorToken: "surfaceAlt" }
|
|
17227
|
+
}] }
|
|
17228
|
+
},
|
|
17229
|
+
{
|
|
17230
|
+
id: "accent",
|
|
17231
|
+
name: "Accent",
|
|
17232
|
+
enabled: true,
|
|
17233
|
+
priority: 3,
|
|
17234
|
+
background: {
|
|
17235
|
+
type: "solid",
|
|
17236
|
+
colorToken: "accent"
|
|
17237
|
+
},
|
|
17238
|
+
textColorToken: "accentForeground",
|
|
17239
|
+
borderRadius: "rounded-lg",
|
|
17240
|
+
shadow: {
|
|
17241
|
+
elevation: "none",
|
|
17242
|
+
softness: null,
|
|
17243
|
+
position: "bottom"
|
|
17244
|
+
},
|
|
17245
|
+
affordance: {
|
|
17246
|
+
iconId: "ArrowRight",
|
|
17247
|
+
colorToken: "accentForeground"
|
|
17248
|
+
},
|
|
17249
|
+
effects: { hover: [{
|
|
17250
|
+
effectId: "lift",
|
|
17251
|
+
options: { translateY: "-2px" }
|
|
17252
|
+
}] }
|
|
17253
|
+
}
|
|
17254
|
+
]
|
|
17255
|
+
}
|
|
17256
|
+
});
|
|
17257
|
+
}));
|
|
17258
|
+
//#endregion
|
|
17049
17259
|
//#region ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
17050
17260
|
var inkStamp;
|
|
17051
17261
|
var init_ink_stamp = __esmMin((() => {
|
|
@@ -17818,6 +18028,7 @@ var init_personalities = __esmMin((() => {
|
|
|
17818
18028
|
init_confident_chip();
|
|
17819
18029
|
init_earth_pill();
|
|
17820
18030
|
init_editorial_link();
|
|
18031
|
+
init_flat_ink();
|
|
17821
18032
|
init_ink_stamp();
|
|
17822
18033
|
init_joy_stamp();
|
|
17823
18034
|
init_ornate_ritual();
|
|
@@ -17832,6 +18043,7 @@ var init_personalities = __esmMin((() => {
|
|
|
17832
18043
|
editorialLink,
|
|
17833
18044
|
pebble,
|
|
17834
18045
|
inkStamp,
|
|
18046
|
+
flatInk,
|
|
17835
18047
|
brushedWash,
|
|
17836
18048
|
showtimePill,
|
|
17837
18049
|
joyStamp,
|
|
@@ -18304,6 +18516,50 @@ function getCompatibleHeaderStyleIds(layoutId) {
|
|
|
18304
18516
|
return isHeaderStyleCompatibleWithLayout(getHeaderStyleOrThrow(styleId), layoutId);
|
|
18305
18517
|
});
|
|
18306
18518
|
}
|
|
18519
|
+
function applyNavTypography(style, typography) {
|
|
18520
|
+
switch (typography) {
|
|
18521
|
+
case "plain": return style;
|
|
18522
|
+
case "heading": return {
|
|
18523
|
+
...style,
|
|
18524
|
+
typography: "heading",
|
|
18525
|
+
fontWeight: "medium",
|
|
18526
|
+
letterSpacing: "wide"
|
|
18527
|
+
};
|
|
18528
|
+
case "quiet-caps": return {
|
|
18529
|
+
...style,
|
|
18530
|
+
textTransform: "uppercase",
|
|
18531
|
+
textSize: "sm",
|
|
18532
|
+
letterSpacing: "wide"
|
|
18533
|
+
};
|
|
18534
|
+
case "brand-caps": return {
|
|
18535
|
+
...style,
|
|
18536
|
+
textTransform: "uppercase",
|
|
18537
|
+
textSize: "sm",
|
|
18538
|
+
letterSpacing: "wider"
|
|
18539
|
+
};
|
|
18540
|
+
default: return assertNever$19(typography, "Unhandled header nav typography");
|
|
18541
|
+
}
|
|
18542
|
+
}
|
|
18543
|
+
function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
|
|
18544
|
+
return applyNavTypography({
|
|
18545
|
+
name: "Underline grow",
|
|
18546
|
+
typography: "body",
|
|
18547
|
+
fontWeight: "medium",
|
|
18548
|
+
textTransform: "none",
|
|
18549
|
+
italic: false,
|
|
18550
|
+
colorToken,
|
|
18551
|
+
padding: "compact",
|
|
18552
|
+
paddingX: "compact",
|
|
18553
|
+
borderRadius: "none",
|
|
18554
|
+
effects: { hover: [{
|
|
18555
|
+
effectId: "nav-underline",
|
|
18556
|
+
options: {
|
|
18557
|
+
style: "grow",
|
|
18558
|
+
...underlineColorToken ? { colorToken: underlineColorToken } : {}
|
|
18559
|
+
}
|
|
18560
|
+
}] }
|
|
18561
|
+
}, typography);
|
|
18562
|
+
}
|
|
18307
18563
|
function themedHeaderShadow(theme) {
|
|
18308
18564
|
switch (theme.shadow.elevation) {
|
|
18309
18565
|
case "none": return;
|
|
@@ -18403,6 +18659,38 @@ function cleanBaseHeader(theme) {
|
|
|
18403
18659
|
ctaGap: "default"
|
|
18404
18660
|
};
|
|
18405
18661
|
}
|
|
18662
|
+
function classicCenteredNavHeader(theme) {
|
|
18663
|
+
return {
|
|
18664
|
+
...baseHeader(theme),
|
|
18665
|
+
variant: "classic",
|
|
18666
|
+
navPlacement: "center",
|
|
18667
|
+
positioning: "sticky",
|
|
18668
|
+
shrinkOnScroll: false,
|
|
18669
|
+
background: {
|
|
18670
|
+
type: "color",
|
|
18671
|
+
color: "surface"
|
|
18672
|
+
},
|
|
18673
|
+
textColor: "text",
|
|
18674
|
+
navColor: "text",
|
|
18675
|
+
navStyle: "underline-grow",
|
|
18676
|
+
navWeight: "medium",
|
|
18677
|
+
navLinkStyle: underlineNavLinkStyle("text", "accent"),
|
|
18678
|
+
border: {
|
|
18679
|
+
style: "solid",
|
|
18680
|
+
width: "thin",
|
|
18681
|
+
position: "bottom",
|
|
18682
|
+
colorToken: "border"
|
|
18683
|
+
},
|
|
18684
|
+
ctaTreatment: "primary",
|
|
18685
|
+
ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
|
|
18686
|
+
ctaGap: "default",
|
|
18687
|
+
logoText: {
|
|
18688
|
+
mobileMaxWidth: "sm",
|
|
18689
|
+
mobileWrapLines: 1,
|
|
18690
|
+
hideOnShrink: false
|
|
18691
|
+
}
|
|
18692
|
+
};
|
|
18693
|
+
}
|
|
18406
18694
|
function serifLineHeader(theme) {
|
|
18407
18695
|
return {
|
|
18408
18696
|
...baseHeader(theme),
|
|
@@ -18984,6 +19272,13 @@ var init_headerLooks = __esmMin((() => {
|
|
|
18984
19272
|
styleId: asHeaderStyleId("minimal")
|
|
18985
19273
|
}
|
|
18986
19274
|
},
|
|
19275
|
+
{
|
|
19276
|
+
lookId: asHeaderLookId("classic-centered-nav"),
|
|
19277
|
+
selection: {
|
|
19278
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
19279
|
+
styleId: asHeaderStyleId("fine-line")
|
|
19280
|
+
}
|
|
19281
|
+
},
|
|
18987
19282
|
{
|
|
18988
19283
|
lookId: asHeaderLookId("brand-solid"),
|
|
18989
19284
|
selection: {
|
|
@@ -19050,6 +19345,21 @@ var init_headerLooks = __esmMin((() => {
|
|
|
19050
19345
|
logoAccommodations: inlineClassicLogoAccommodations,
|
|
19051
19346
|
compile: cleanBaseHeader
|
|
19052
19347
|
},
|
|
19348
|
+
{
|
|
19349
|
+
id: asHeaderLookId("classic-centered-nav"),
|
|
19350
|
+
label: "Centered nav",
|
|
19351
|
+
visualTreatment: "solid-neutral",
|
|
19352
|
+
layoutBehavior: "sticky",
|
|
19353
|
+
configuration: {
|
|
19354
|
+
structure: "inline-classic",
|
|
19355
|
+
treatment: "solid-neutral",
|
|
19356
|
+
behavior: "sticky"
|
|
19357
|
+
},
|
|
19358
|
+
openingRequirement: "none",
|
|
19359
|
+
maxRecommendedNavItems: 6,
|
|
19360
|
+
logoAccommodations: inlineClassicLogoAccommodations,
|
|
19361
|
+
compile: classicCenteredNavHeader
|
|
19362
|
+
},
|
|
19053
19363
|
{
|
|
19054
19364
|
id: asHeaderLookId("brand-solid"),
|
|
19055
19365
|
label: "Brand solid",
|
|
@@ -19618,7 +19928,7 @@ function defineTypographyPreset(preset) {
|
|
|
19618
19928
|
function findTypographyPreset(id) {
|
|
19619
19929
|
return typographyPresetsById.get(id);
|
|
19620
19930
|
}
|
|
19621
|
-
var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, kirtanOrnateTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
|
|
19931
|
+
var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, kirtanOrnateTypography, boldDisplayTypography, originalJoyTypography, fulcrumTypography, typographyPresets, typographyPresetsById;
|
|
19622
19932
|
var init_typographyPresets = __esmMin((() => {
|
|
19623
19933
|
bodyReadablePolicy = {
|
|
19624
19934
|
recommendedCategories: ["sans-serif", "serif"],
|
|
@@ -19980,6 +20290,49 @@ var init_typographyPresets = __esmMin((() => {
|
|
|
19980
20290
|
},
|
|
19981
20291
|
scale: "balanced"
|
|
19982
20292
|
};
|
|
20293
|
+
fulcrumTypography = {
|
|
20294
|
+
body: {
|
|
20295
|
+
family: "IBM Plex Sans, system-ui, -apple-system, sans-serif",
|
|
20296
|
+
size: "lg",
|
|
20297
|
+
weight: "regular",
|
|
20298
|
+
lineHeight: "relaxed",
|
|
20299
|
+
letterSpacing: "normal"
|
|
20300
|
+
},
|
|
20301
|
+
headings: {
|
|
20302
|
+
default: {
|
|
20303
|
+
family: "Newsreader, Georgia, \"Times New Roman\", serif",
|
|
20304
|
+
weight: "medium",
|
|
20305
|
+
lineHeight: "normal",
|
|
20306
|
+
letterSpacing: "tight",
|
|
20307
|
+
colorToken: "primary",
|
|
20308
|
+
italic: null,
|
|
20309
|
+
case: null
|
|
20310
|
+
},
|
|
20311
|
+
h1: {
|
|
20312
|
+
size: "2xl",
|
|
20313
|
+
weight: "medium",
|
|
20314
|
+
lineHeight: "normal",
|
|
20315
|
+
letterSpacing: "tight",
|
|
20316
|
+
italic: null
|
|
20317
|
+
},
|
|
20318
|
+
h2: {
|
|
20319
|
+
size: "xl",
|
|
20320
|
+
weight: "medium",
|
|
20321
|
+
lineHeight: "normal",
|
|
20322
|
+
letterSpacing: "tight",
|
|
20323
|
+
italic: null
|
|
20324
|
+
},
|
|
20325
|
+
h3: {
|
|
20326
|
+
size: "md",
|
|
20327
|
+
weight: "semibold",
|
|
20328
|
+
lineHeight: "normal",
|
|
20329
|
+
letterSpacing: "normal",
|
|
20330
|
+
italic: null
|
|
20331
|
+
}
|
|
20332
|
+
},
|
|
20333
|
+
scale: "spacious",
|
|
20334
|
+
eyebrow: { family: "IBM Plex Mono, ui-monospace, \"SF Mono\", monospace" }
|
|
20335
|
+
};
|
|
19983
20336
|
typographyPresets = [
|
|
19984
20337
|
defineTypographyPreset({
|
|
19985
20338
|
id: "typography-preset:modern-sans",
|
|
@@ -20239,6 +20592,32 @@ var init_typographyPresets = __esmMin((() => {
|
|
|
20239
20592
|
}
|
|
20240
20593
|
}
|
|
20241
20594
|
}
|
|
20595
|
+
}),
|
|
20596
|
+
defineTypographyPreset({
|
|
20597
|
+
id: "typography-preset:fulcrum",
|
|
20598
|
+
name: "Fulcrum",
|
|
20599
|
+
description: "Newsreader serif headings over an IBM Plex Sans body, with an IBM Plex Mono eyebrow role for uppercase kickers and mono captions.",
|
|
20600
|
+
defaultFonts: {
|
|
20601
|
+
body: "IBM Plex Sans, system-ui, -apple-system, sans-serif",
|
|
20602
|
+
heading: "Newsreader, Georgia, \"Times New Roman\", serif"
|
|
20603
|
+
},
|
|
20604
|
+
recommendedFonts: {
|
|
20605
|
+
body: [
|
|
20606
|
+
"IBM Plex Sans",
|
|
20607
|
+
"Source Sans 3",
|
|
20608
|
+
"Inter"
|
|
20609
|
+
],
|
|
20610
|
+
heading: [
|
|
20611
|
+
"Newsreader",
|
|
20612
|
+
"Source Serif 4",
|
|
20613
|
+
"Lora"
|
|
20614
|
+
]
|
|
20615
|
+
},
|
|
20616
|
+
slotPolicies: {
|
|
20617
|
+
body: bodyReadablePolicy,
|
|
20618
|
+
heading: displayHeadingPolicy
|
|
20619
|
+
},
|
|
20620
|
+
typography: fulcrumTypography
|
|
20242
20621
|
})
|
|
20243
20622
|
];
|
|
20244
20623
|
typographyPresetsById = new Map(typographyPresets.map((preset) => [preset.id, preset]));
|
|
@@ -21576,9 +21955,10 @@ var init_registry$1 = __esmMin((() => {
|
|
|
21576
21955
|
}));
|
|
21577
21956
|
var init_generateEffectsCSS = __esmMin((() => {
|
|
21578
21957
|
init_registry$1();
|
|
21579
|
-
})), init_contrast = __esmMin((() => {}))
|
|
21958
|
+
})), init_contrast = __esmMin((() => {}));
|
|
21959
|
+
var init_generateDefaultButtonSystem = __esmMin((() => {
|
|
21580
21960
|
init_contrast();
|
|
21581
|
-
}));
|
|
21961
|
+
})), init_affordanceIcons = __esmMin((() => {})), AFFORDANCE_SUPPRESS_CLASS;
|
|
21582
21962
|
var init_generateButtonCss = __esmMin((() => {
|
|
21583
21963
|
init_types$14();
|
|
21584
21964
|
init_classNames();
|
|
@@ -21587,6 +21967,8 @@ var init_generateButtonCss = __esmMin((() => {
|
|
|
21587
21967
|
init_generateEffectsCSS();
|
|
21588
21968
|
init_constants$2();
|
|
21589
21969
|
init_generateDefaultButtonSystem();
|
|
21970
|
+
init_affordanceIcons();
|
|
21971
|
+
AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
21590
21972
|
buttonSizeNameSchema.options;
|
|
21591
21973
|
}));
|
|
21592
21974
|
var init_presets = __esmMin((() => {}));
|
|
@@ -21600,6 +21982,7 @@ var init_buttons = __esmMin((() => {
|
|
|
21600
21982
|
init_types$14();
|
|
21601
21983
|
init_classNames();
|
|
21602
21984
|
init_generateButtonCss();
|
|
21985
|
+
init_affordanceIcons();
|
|
21603
21986
|
init_generateDefaultButtonSystem();
|
|
21604
21987
|
init_constants$2();
|
|
21605
21988
|
init_presets();
|
|
@@ -21734,13 +22117,75 @@ var cardVariantRoleValues, boxlessCardVariantValue, legacyCardVariantRoleAliases
|
|
|
21734
22117
|
});
|
|
21735
22118
|
cardSystemSchema = z$1.object({ variants: z$1.array(cardVariantSchema).min(1).max(3) });
|
|
21736
22119
|
}));
|
|
21737
|
-
var init_constants$1 = __esmMin((() => {}))
|
|
22120
|
+
var init_constants$1 = __esmMin((() => {}));
|
|
22121
|
+
var init_generateDefaultCardSystem = __esmMin((() => {}));
|
|
22122
|
+
var init_foregroundRoles = __esmMin((() => {}));
|
|
22123
|
+
//#endregion
|
|
22124
|
+
//#region ../theme-core/src/surfaces/foregroundContract.ts
|
|
22125
|
+
function requireSurfaceColorValue(role, value) {
|
|
22126
|
+
const normalized = value.trim();
|
|
22127
|
+
if (normalized.length === 0) throw new RangeError(`Surface foreground ${role} must be a non-empty CSS color.`);
|
|
22128
|
+
return normalized;
|
|
22129
|
+
}
|
|
22130
|
+
function completeSurfaceForegrounds(input) {
|
|
22131
|
+
const text = requireSurfaceColorValue("text", input.text);
|
|
22132
|
+
return {
|
|
22133
|
+
text,
|
|
22134
|
+
heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
|
|
22135
|
+
link: input.link === void 0 ? text : requireSurfaceColorValue("link", input.link),
|
|
22136
|
+
supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
|
|
22137
|
+
};
|
|
22138
|
+
}
|
|
22139
|
+
function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FALLBACKS[role]) {
|
|
22140
|
+
const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
|
|
22141
|
+
const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
|
|
22142
|
+
if (role === "text") return `var(${roleVariable}, ${fallback})`;
|
|
22143
|
+
return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
|
|
22144
|
+
}
|
|
22145
|
+
function surfaceForegroundValueWithOpacity(role, opacityPercent) {
|
|
22146
|
+
if (!Number.isFinite(opacityPercent) || opacityPercent < 0 || opacityPercent > 100) throw new RangeError("Surface foreground opacity must be between 0 and 100.");
|
|
22147
|
+
return `color-mix(in srgb, ${surfaceForegroundValue(role)} ${opacityPercent}%, transparent)`;
|
|
22148
|
+
}
|
|
22149
|
+
function surfaceForegroundStyle(input) {
|
|
22150
|
+
const foregrounds = completeSurfaceForegrounds(input);
|
|
22151
|
+
return {
|
|
22152
|
+
color: foregrounds.text,
|
|
22153
|
+
[SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
|
|
22154
|
+
[SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
|
|
22155
|
+
[SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
|
|
22156
|
+
[SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
|
|
22157
|
+
};
|
|
22158
|
+
}
|
|
22159
|
+
var SURFACE_FOREGROUND_CSS_VARS, DEFAULT_SURFACE_TEXT_COLOR, DEFAULT_SURFACE_LINK_COLOR, DEFAULT_SURFACE_SUPPORTING_COLOR, DEFAULT_ROLE_FALLBACKS;
|
|
22160
|
+
var init_foregroundContract = __esmMin((() => {
|
|
22161
|
+
init_foregroundRoles();
|
|
22162
|
+
SURFACE_FOREGROUND_CSS_VARS = {
|
|
22163
|
+
text: "--rb-surface-text-color",
|
|
22164
|
+
heading: "--rb-surface-heading-color",
|
|
22165
|
+
link: "--rb-surface-link-color",
|
|
22166
|
+
supporting: "--rb-surface-supporting-color"
|
|
22167
|
+
};
|
|
22168
|
+
DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
|
|
22169
|
+
DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
|
|
22170
|
+
DEFAULT_SURFACE_SUPPORTING_COLOR = "rgb(var(--tb-mutedText, 100 116 139))";
|
|
22171
|
+
DEFAULT_ROLE_FALLBACKS = {
|
|
22172
|
+
text: DEFAULT_SURFACE_TEXT_COLOR,
|
|
22173
|
+
heading: DEFAULT_SURFACE_TEXT_COLOR,
|
|
22174
|
+
link: DEFAULT_SURFACE_LINK_COLOR,
|
|
22175
|
+
supporting: DEFAULT_SURFACE_SUPPORTING_COLOR
|
|
22176
|
+
};
|
|
22177
|
+
})), init_surfaces = __esmMin((() => {
|
|
22178
|
+
init_foregroundContract();
|
|
22179
|
+
init_foregroundRoles();
|
|
22180
|
+
})), init_generateCardCss = __esmMin((() => {
|
|
21738
22181
|
init_resolver$1();
|
|
21739
22182
|
init_constants$1();
|
|
21740
22183
|
init_generateDefaultCardSystem();
|
|
21741
|
-
|
|
22184
|
+
init_surfaces();
|
|
22185
|
+
}));
|
|
22186
|
+
var init_core$1 = __esmMin((() => {
|
|
22187
|
+
init_surfaces();
|
|
21742
22188
|
}));
|
|
21743
|
-
var init_core$1 = __esmMin((() => {}));
|
|
21744
22189
|
//#endregion
|
|
21745
22190
|
//#region ../theme-core/src/cards/index.ts
|
|
21746
22191
|
var init_cards = __esmMin((() => {
|
|
@@ -21975,16 +22420,22 @@ var init_types$9 = __esmMin((() => {
|
|
|
21975
22420
|
/**
|
|
21976
22421
|
* Gradient configuration types and schemas
|
|
21977
22422
|
*/
|
|
21978
|
-
var gradientStopSchema, gradientConfigSchema;
|
|
22423
|
+
var gradientStopSchema, radialGradientShapeSchema, gradientConfigSchema;
|
|
21979
22424
|
var init_types$8 = __esmMin((() => {
|
|
21980
22425
|
init_themeColorTokens();
|
|
21981
22426
|
gradientStopSchema = z$1.object({
|
|
21982
22427
|
color: themeColorTokenSchema,
|
|
21983
22428
|
position: z$1.number().min(0).max(100)
|
|
21984
22429
|
});
|
|
22430
|
+
radialGradientShapeSchema = z$1.enum(["circle", "ellipse"]);
|
|
21985
22431
|
gradientConfigSchema = z$1.object({
|
|
21986
|
-
type: z$1.enum([
|
|
22432
|
+
type: z$1.enum([
|
|
22433
|
+
"linear",
|
|
22434
|
+
"radial",
|
|
22435
|
+
"conic"
|
|
22436
|
+
]).default("linear"),
|
|
21987
22437
|
angle: z$1.number().min(0).max(360).optional(),
|
|
22438
|
+
shape: radialGradientShapeSchema.optional(),
|
|
21988
22439
|
position: z$1.string().optional(),
|
|
21989
22440
|
stops: z$1.array(gradientStopSchema).min(2)
|
|
21990
22441
|
});
|
|
@@ -22321,9 +22772,12 @@ function parseToken(source) {
|
|
|
22321
22772
|
if (parts.kind === "invalid") return { token: source };
|
|
22322
22773
|
return {
|
|
22323
22774
|
token: parts.token,
|
|
22324
|
-
|
|
22775
|
+
opacityPercent: parts.opacityPercent === null ? void 0 : parts.opacityPercent
|
|
22325
22776
|
};
|
|
22326
22777
|
}
|
|
22778
|
+
function surfaceRoleForTextToken(token) {
|
|
22779
|
+
return Object.prototype.hasOwnProperty.call(SURFACE_TEXT_ROLE_BY_TOKEN, token) ? SURFACE_TEXT_ROLE_BY_TOKEN[token] : null;
|
|
22780
|
+
}
|
|
22327
22781
|
/**
|
|
22328
22782
|
* Converts a theme color token to a CSS rgb value.
|
|
22329
22783
|
* This is the primary function for applying theme colors to CSS properties.
|
|
@@ -22337,11 +22791,11 @@ function parseToken(source) {
|
|
|
22337
22791
|
* rgbColorValue('raw:transparent') // => 'transparent'
|
|
22338
22792
|
*/
|
|
22339
22793
|
function rgbColorValue(token) {
|
|
22340
|
-
const { token: baseToken,
|
|
22794
|
+
const { token: baseToken, opacityPercent, raw } = parseToken(token);
|
|
22341
22795
|
if (raw) return raw;
|
|
22342
22796
|
const cssVar = `${COLOR_VAR_PREFIX}${baseToken}`;
|
|
22343
|
-
if (
|
|
22344
|
-
return `rgb(var(${cssVar}) / ${
|
|
22797
|
+
if (opacityPercent === void 0) return `rgb(var(${cssVar}))`;
|
|
22798
|
+
return `rgb(var(${cssVar}) / ${opacityPercent / 100})`;
|
|
22345
22799
|
}
|
|
22346
22800
|
/**
|
|
22347
22801
|
* Creates a backgroundColor style object from a theme token.
|
|
@@ -22359,6 +22813,9 @@ function backgroundColorStyle(token) {
|
|
|
22359
22813
|
* @returns CSSProperties with color
|
|
22360
22814
|
*/
|
|
22361
22815
|
function textColorStyle(token) {
|
|
22816
|
+
const parsed = parseToken(token);
|
|
22817
|
+
const surfaceRole = parsed.raw ? null : surfaceRoleForTextToken(parsed.token);
|
|
22818
|
+
if (surfaceRole) return { color: parsed.opacityPercent === void 0 ? surfaceForegroundValue(surfaceRole) : surfaceForegroundValueWithOpacity(surfaceRole, parsed.opacityPercent) };
|
|
22362
22819
|
return { color: rgbColorValue(token) };
|
|
22363
22820
|
}
|
|
22364
22821
|
/**
|
|
@@ -22394,10 +22851,16 @@ function mergeStyles(...styles) {
|
|
|
22394
22851
|
}
|
|
22395
22852
|
return Object.keys(merged).length ? merged : void 0;
|
|
22396
22853
|
}
|
|
22397
|
-
var COLOR_VAR_PREFIX;
|
|
22854
|
+
var COLOR_VAR_PREFIX, SURFACE_TEXT_ROLE_BY_TOKEN;
|
|
22398
22855
|
var init_colorStyles = __esmMin((() => {
|
|
22856
|
+
init_surfaces();
|
|
22399
22857
|
init_colorTokenParts();
|
|
22400
22858
|
COLOR_VAR_PREFIX = "--tb-";
|
|
22859
|
+
SURFACE_TEXT_ROLE_BY_TOKEN = {
|
|
22860
|
+
text: "text",
|
|
22861
|
+
heading: "heading",
|
|
22862
|
+
mutedText: "supporting"
|
|
22863
|
+
};
|
|
22401
22864
|
}));
|
|
22402
22865
|
//#endregion
|
|
22403
22866
|
//#region ../theme-core/src/utils/tokenOrColor.ts
|
|
@@ -22505,7 +22968,7 @@ var init_tokenOrColor = __esmMin((() => {
|
|
|
22505
22968
|
"white",
|
|
22506
22969
|
"yellow"
|
|
22507
22970
|
]);
|
|
22508
|
-
})), axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
|
|
22971
|
+
})), axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
|
|
22509
22972
|
var init_schema = __esmMin((() => {
|
|
22510
22973
|
init_media$2();
|
|
22511
22974
|
init_buttons();
|
|
@@ -22785,6 +23248,7 @@ var init_schema = __esmMin((() => {
|
|
|
22785
23248
|
"majorThird",
|
|
22786
23249
|
"perfectFourth"
|
|
22787
23250
|
]);
|
|
23251
|
+
eyebrowTypographyStyleSchema = z$1.object({ family: z$1.string().min(1) });
|
|
22788
23252
|
typographySchema = z$1.object({
|
|
22789
23253
|
body: bodyTypographyStyleSchema,
|
|
22790
23254
|
headings: z$1.object({
|
|
@@ -22797,7 +23261,8 @@ var init_schema = __esmMin((() => {
|
|
|
22797
23261
|
h6: headingTypographyOverridesSchema.optional()
|
|
22798
23262
|
}),
|
|
22799
23263
|
scale: typographyScaleSchema,
|
|
22800
|
-
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
23264
|
+
proseLinkStyle: proseLinkStyleSchema.optional(),
|
|
23265
|
+
eyebrow: eyebrowTypographyStyleSchema.optional()
|
|
22801
23266
|
});
|
|
22802
23267
|
spaceSchema = z$1.enum([
|
|
22803
23268
|
"comfortable",
|
|
@@ -22822,7 +23287,8 @@ var init_schema = __esmMin((() => {
|
|
|
22822
23287
|
"soft",
|
|
22823
23288
|
"hard"
|
|
22824
23289
|
]).nullable(),
|
|
22825
|
-
position: z$1.enum(["bottom", "bottom-right"]).default("bottom")
|
|
23290
|
+
position: z$1.enum(["bottom", "bottom-right"]).default("bottom"),
|
|
23291
|
+
colorToken: themeColorTokenSchema.optional()
|
|
22826
23292
|
});
|
|
22827
23293
|
border = z$1.object({
|
|
22828
23294
|
width: z$1.enum([
|
|
@@ -23063,6 +23529,7 @@ var init_schema = __esmMin((() => {
|
|
|
23063
23529
|
navWeight: navFontWeight.default("medium"),
|
|
23064
23530
|
navTypography: z$1.enum(["body", "heading"]).optional(),
|
|
23065
23531
|
navTextSize: navLinkStyleSchema.shape.textSize,
|
|
23532
|
+
navPlacement: z$1.enum(["end", "center"]).optional(),
|
|
23066
23533
|
container: headerContainerSchema,
|
|
23067
23534
|
border: headerBorderSchema,
|
|
23068
23535
|
shadow: componentShadowSchema.optional(),
|
|
@@ -23821,7 +24288,8 @@ var init_curatedSiteStyles = __esmMin((() => {
|
|
|
23821
24288
|
"site-style:bold-launch",
|
|
23822
24289
|
"site-style:south-west-twerk-school",
|
|
23823
24290
|
"site-style:kirtan-ornate",
|
|
23824
|
-
"site-style:original-joy"
|
|
24291
|
+
"site-style:original-joy",
|
|
24292
|
+
"site-style:fulcrum"
|
|
23825
24293
|
];
|
|
23826
24294
|
quietBudget = {
|
|
23827
24295
|
accentDensity: "low",
|
|
@@ -25033,6 +25501,104 @@ var init_curatedSiteStyles = __esmMin((() => {
|
|
|
25033
25501
|
buttonChoice("showtime-pill")
|
|
25034
25502
|
],
|
|
25035
25503
|
paletteRecommendations: [paletteRecommendation("warm-dark-ember")]
|
|
25504
|
+
}),
|
|
25505
|
+
defineCuratedSiteStyle({
|
|
25506
|
+
id: "site-style:fulcrum",
|
|
25507
|
+
name: "Fulcrum",
|
|
25508
|
+
headingDecoration: {
|
|
25509
|
+
family: "short-center-rule",
|
|
25510
|
+
colorToken: "accent"
|
|
25511
|
+
},
|
|
25512
|
+
description: "Spruce-ink and moss with an amber climax, Newsreader serif over IBM Plex Sans, hairline sage borders and flat buttons — a grounded, editorial physiotherapy skin.",
|
|
25513
|
+
generationBrief: "Use a calm, clinician-led voice: precise, reassuring and specific rather than clinical-cold. Lead with the assessment-treatment-rehab journey, mono uppercase eyebrows for practical labels (hours, registrations, appointment windows), Newsreader serif headings over IBM Plex Sans body, and a single amber call to action as the page climax. Keep proof concrete (registrations, same-week appointments, return-to-activity outcomes) and avoid spa or hard-sell wellness language or medical claims.",
|
|
25514
|
+
siteCreatorSelection: {
|
|
25515
|
+
kind: "site_creator_keyword_heuristic",
|
|
25516
|
+
priority: 28
|
|
25517
|
+
},
|
|
25518
|
+
selectionKeywordRules: [
|
|
25519
|
+
{
|
|
25520
|
+
kind: "substring",
|
|
25521
|
+
value: "physiotherap"
|
|
25522
|
+
},
|
|
25523
|
+
{
|
|
25524
|
+
kind: "word",
|
|
25525
|
+
value: "physio"
|
|
25526
|
+
},
|
|
25527
|
+
{
|
|
25528
|
+
kind: "phrase",
|
|
25529
|
+
value: "sports injury"
|
|
25530
|
+
},
|
|
25531
|
+
{
|
|
25532
|
+
kind: "phrase",
|
|
25533
|
+
value: "rehab clinic"
|
|
25534
|
+
},
|
|
25535
|
+
{
|
|
25536
|
+
kind: "substring",
|
|
25537
|
+
value: "musculoskeletal"
|
|
25538
|
+
},
|
|
25539
|
+
{
|
|
25540
|
+
kind: "phrase",
|
|
25541
|
+
value: "sports therapy"
|
|
25542
|
+
}
|
|
25543
|
+
],
|
|
25544
|
+
tokenRecipes: {
|
|
25545
|
+
palette: "brand-led",
|
|
25546
|
+
contrast: "standard",
|
|
25547
|
+
radius: "rounded",
|
|
25548
|
+
shadow: "subtle",
|
|
25549
|
+
typography: "serif-editorial",
|
|
25550
|
+
spacing: "airy",
|
|
25551
|
+
motion: "subtle"
|
|
25552
|
+
},
|
|
25553
|
+
compositionBudget: quietBudget,
|
|
25554
|
+
typographyPresetChoices: [
|
|
25555
|
+
typographyChoice("typography-preset:fulcrum"),
|
|
25556
|
+
typographyChoice("typography-preset:editorial-serif"),
|
|
25557
|
+
typographyChoice("typography-preset:modern-sans")
|
|
25558
|
+
],
|
|
25559
|
+
defaultTypographyPresetId: "typography-preset:fulcrum",
|
|
25560
|
+
themeOverrides: {
|
|
25561
|
+
shadow: { colorToken: "primary" },
|
|
25562
|
+
accordions: {
|
|
25563
|
+
background: null,
|
|
25564
|
+
spacing: "comfortable",
|
|
25565
|
+
corners: "square",
|
|
25566
|
+
border: null,
|
|
25567
|
+
shadow: null,
|
|
25568
|
+
icon: {
|
|
25569
|
+
style: "plus-minus",
|
|
25570
|
+
position: "right",
|
|
25571
|
+
size: "md",
|
|
25572
|
+
colorToken: "accent"
|
|
25573
|
+
},
|
|
25574
|
+
trigger: {
|
|
25575
|
+
textColorToken: "primary",
|
|
25576
|
+
fontWeight: "medium",
|
|
25577
|
+
fontFamily: "heading",
|
|
25578
|
+
fontScale: "md"
|
|
25579
|
+
},
|
|
25580
|
+
hover: { textColorToken: "secondary" },
|
|
25581
|
+
content: { textColorToken: "muted" }
|
|
25582
|
+
},
|
|
25583
|
+
testimonialQuote: serifDisplayQuote
|
|
25584
|
+
},
|
|
25585
|
+
recommendedHeaderLookIds: [
|
|
25586
|
+
"classic-centered-nav",
|
|
25587
|
+
"serif-line",
|
|
25588
|
+
"centered-calm",
|
|
25589
|
+
"clean-base"
|
|
25590
|
+
],
|
|
25591
|
+
recommendedFooterLookIds: ["footer-editorial-columns", "footer-muted-grounding"],
|
|
25592
|
+
buttonPersonalityChoices: [
|
|
25593
|
+
buttonChoice("flat-ink"),
|
|
25594
|
+
buttonChoice("confident-chip"),
|
|
25595
|
+
buttonChoice("editorial-link")
|
|
25596
|
+
],
|
|
25597
|
+
paletteRecommendations: [
|
|
25598
|
+
paletteRecommendation("brand-led-spruce"),
|
|
25599
|
+
paletteRecommendation("warm-neutral-forest"),
|
|
25600
|
+
paletteRecommendation("soft-natural-sage")
|
|
25601
|
+
]
|
|
25036
25602
|
})
|
|
25037
25603
|
];
|
|
25038
25604
|
curatedSiteStylesById = new Map(curatedSiteStyles.map((style) => [style.id, style]));
|
|
@@ -27301,7 +27867,7 @@ var init_themeColorResolution = __esmMin((() => {
|
|
|
27301
27867
|
init_tokenOrColor();
|
|
27302
27868
|
}));
|
|
27303
27869
|
//#endregion
|
|
27304
|
-
//#region ../blocks/src/system/transforms/registry/_utils/
|
|
27870
|
+
//#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
|
|
27305
27871
|
function readColorToken(input, key) {
|
|
27306
27872
|
const value = input[key];
|
|
27307
27873
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
@@ -27310,20 +27876,20 @@ function resolveOptionalForegroundColor(value, context) {
|
|
|
27310
27876
|
if (!value) return null;
|
|
27311
27877
|
return resolveBackgroundColorValue(value, context);
|
|
27312
27878
|
}
|
|
27313
|
-
function
|
|
27879
|
+
function resolveSurfaceForegroundStyles(value, context) {
|
|
27314
27880
|
if (!value || typeof value !== "object") return {};
|
|
27315
27881
|
const input = value;
|
|
27316
27882
|
const resolvedText = resolveOptionalForegroundColor(readColorToken(input, "textColor"), context);
|
|
27317
27883
|
if (!resolvedText) return {};
|
|
27318
|
-
return {
|
|
27319
|
-
|
|
27320
|
-
"
|
|
27321
|
-
|
|
27322
|
-
|
|
27323
|
-
|
|
27324
|
-
};
|
|
27884
|
+
return { ...surfaceForegroundStyle({
|
|
27885
|
+
text: resolvedText,
|
|
27886
|
+
heading: resolveOptionalForegroundColor(readColorToken(input, "headingColor"), context) ?? void 0,
|
|
27887
|
+
link: resolveOptionalForegroundColor(readColorToken(input, "linkColor"), context) ?? void 0,
|
|
27888
|
+
supporting: resolveOptionalForegroundColor(readColorToken(input, "supportingColor"), context) ?? void 0
|
|
27889
|
+
}) };
|
|
27325
27890
|
}
|
|
27326
|
-
var
|
|
27891
|
+
var init_surfaceForegroundStyles = __esmMin((() => {
|
|
27892
|
+
init_surfaces();
|
|
27327
27893
|
init_themeColorResolution();
|
|
27328
27894
|
}));
|
|
27329
27895
|
//#endregion
|
|
@@ -27355,7 +27921,7 @@ function isTileTreatment(value) {
|
|
|
27355
27921
|
function isEventListTreatment(value) {
|
|
27356
27922
|
return typeof value === "string" && eventListTreatmentSet.has(value);
|
|
27357
27923
|
}
|
|
27358
|
-
var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, cardVariantClassTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName,
|
|
27924
|
+
var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, cardVariantClassTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
|
|
27359
27925
|
var init_boxStyles = __esmMin((() => {
|
|
27360
27926
|
init_core();
|
|
27361
27927
|
init_spacing();
|
|
@@ -27363,8 +27929,7 @@ var init_boxStyles = __esmMin((() => {
|
|
|
27363
27929
|
init_colorStyles();
|
|
27364
27930
|
init_cards();
|
|
27365
27931
|
init_blockColorTokens();
|
|
27366
|
-
|
|
27367
|
-
init_sectionForegroundStyles();
|
|
27932
|
+
init_surfaceForegroundStyles();
|
|
27368
27933
|
spacingTransform = {
|
|
27369
27934
|
id: "boxStyles.spacing",
|
|
27370
27935
|
kind: "string",
|
|
@@ -27594,45 +28159,11 @@ var init_boxStyles = __esmMin((() => {
|
|
|
27594
28159
|
}, context);
|
|
27595
28160
|
}
|
|
27596
28161
|
};
|
|
27597
|
-
sectionTextColorStyleTransform = {
|
|
27598
|
-
id: "sectionStyles.resolveTextColorStyle",
|
|
27599
|
-
kind: "formatter",
|
|
27600
|
-
summary: "Resolve section text color token into a style object",
|
|
27601
|
-
run: (value, options, context) => {
|
|
27602
|
-
const fallbackToken = options?.fallbackToken;
|
|
27603
|
-
if (typeof value === "string" && value.trim()) {
|
|
27604
|
-
const colorValue = resolveBackgroundColorValue(value.trim(), context);
|
|
27605
|
-
return {
|
|
27606
|
-
color: colorValue,
|
|
27607
|
-
"--section-text-color": colorValue
|
|
27608
|
-
};
|
|
27609
|
-
}
|
|
27610
|
-
if (typeof fallbackToken === "string" && fallbackToken.trim()) {
|
|
27611
|
-
const colorValue = resolveBackgroundColorValue(fallbackToken.trim(), context);
|
|
27612
|
-
return {
|
|
27613
|
-
color: colorValue,
|
|
27614
|
-
"--section-text-color": colorValue
|
|
27615
|
-
};
|
|
27616
|
-
}
|
|
27617
|
-
return {};
|
|
27618
|
-
}
|
|
27619
|
-
};
|
|
27620
|
-
sectionHeadingColorStyleTransform = {
|
|
27621
|
-
id: "sectionStyles.resolveHeadingColorStyle",
|
|
27622
|
-
kind: "formatter",
|
|
27623
|
-
summary: "Resolve section heading color token into a style object",
|
|
27624
|
-
run: (value, options, context) => {
|
|
27625
|
-
const fallbackToken = options?.fallbackToken;
|
|
27626
|
-
if (typeof value === "string" && value.trim()) return { "--section-heading-color": resolveBackgroundColorValue(value.trim(), context) };
|
|
27627
|
-
if (typeof fallbackToken === "string" && fallbackToken.trim()) return { "--section-heading-color": resolveBackgroundColorValue(fallbackToken.trim(), context) };
|
|
27628
|
-
return {};
|
|
27629
|
-
}
|
|
27630
|
-
};
|
|
27631
28162
|
sectionColorsStyleTransform = {
|
|
27632
28163
|
id: "sectionStyles.resolveColorsStyle",
|
|
27633
28164
|
kind: "formatter",
|
|
27634
|
-
summary: "Resolve
|
|
27635
|
-
run: (value, _options, context) =>
|
|
28165
|
+
summary: "Resolve surface foreground colors into a style object",
|
|
28166
|
+
run: (value, _options, context) => resolveSurfaceForegroundStyles(value, context)
|
|
27636
28167
|
};
|
|
27637
28168
|
GAP_CLASS_MAP = {
|
|
27638
28169
|
none: "rb-gap-semantic-none",
|
|
@@ -27680,8 +28211,6 @@ var init_boxStyles = __esmMin((() => {
|
|
|
27680
28211
|
sectionClassNameTransform,
|
|
27681
28212
|
containerStylesResolveClassName,
|
|
27682
28213
|
containerStylesResolveBoxClassName,
|
|
27683
|
-
sectionTextColorStyleTransform,
|
|
27684
|
-
sectionHeadingColorStyleTransform,
|
|
27685
28214
|
sectionColorsStyleTransform,
|
|
27686
28215
|
semanticGapTransform,
|
|
27687
28216
|
semanticGapValueTransform
|
|
@@ -28517,7 +29046,29 @@ var init_ctaRow = __esmMin((() => {
|
|
|
28517
29046
|
fields: [createCtasRepeater({
|
|
28518
29047
|
label: "Calls to action",
|
|
28519
29048
|
itemLabel: "CTA",
|
|
28520
|
-
maxItems: 3
|
|
29049
|
+
maxItems: 3,
|
|
29050
|
+
button: { variants: [
|
|
29051
|
+
{
|
|
29052
|
+
value: "primary",
|
|
29053
|
+
label: "Primary"
|
|
29054
|
+
},
|
|
29055
|
+
{
|
|
29056
|
+
value: "secondary",
|
|
29057
|
+
label: "Secondary"
|
|
29058
|
+
},
|
|
29059
|
+
{
|
|
29060
|
+
value: "outline",
|
|
29061
|
+
label: "Outline"
|
|
29062
|
+
},
|
|
29063
|
+
{
|
|
29064
|
+
value: "link",
|
|
29065
|
+
label: "Link"
|
|
29066
|
+
},
|
|
29067
|
+
{
|
|
29068
|
+
value: "accent",
|
|
29069
|
+
label: "Accent"
|
|
29070
|
+
}
|
|
29071
|
+
] }
|
|
28521
29072
|
})],
|
|
28522
29073
|
layout: [ctaRow({
|
|
28523
29074
|
collectionPath: "content.ctas",
|
|
@@ -28820,6 +29371,55 @@ function buildHighlightLayout() {
|
|
|
28820
29371
|
function buildGridCardsLayout(className) {
|
|
28821
29372
|
return el("div", { className }, buildResponsiveGridCards());
|
|
28822
29373
|
}
|
|
29374
|
+
/**
|
|
29375
|
+
* Build a single "featured editorial" testimonial card.
|
|
29376
|
+
*
|
|
29377
|
+
* This card type deliberately renders NO avatar/headshot: an amber quote mark,
|
|
29378
|
+
* the quote body, then the author name and a context line. Colour + surface
|
|
29379
|
+
* treatment is driven entirely by `variantClass` (see testimonials.css):
|
|
29380
|
+
* - `rb-testimonials-fe-card--feature` → spruce-ink card (dark primary bg)
|
|
29381
|
+
* - `rb-testimonials-fe-card--plain` → white surface card
|
|
29382
|
+
*
|
|
29383
|
+
* Extra modifiers (`repeat`, `when`) are forwarded to the card node so the
|
|
29384
|
+
* caller can drive first-vs-rest branching.
|
|
29385
|
+
*/
|
|
29386
|
+
function buildFeaturedEditorialCard(variantClass, ...mods) {
|
|
29387
|
+
const quoteMark = text({
|
|
29388
|
+
as: "span",
|
|
29389
|
+
className: "rb-testimonials-fe-qmark",
|
|
29390
|
+
"aria-hidden": "true"
|
|
29391
|
+
}, props({ value: "“" }));
|
|
29392
|
+
const quote = richText({ className: "rb-testimonials-fe-quote rb-max-w-none" }, bind("testimonial.content.body"), when("testimonial.content.body"));
|
|
29393
|
+
const meta = el("div", { className: "rb-testimonials-fe-meta" }, [text({
|
|
29394
|
+
as: "strong",
|
|
29395
|
+
className: "rb-testimonials-fe-name"
|
|
29396
|
+
}, bind("testimonial.content.name", { fallback: "Anonymous" })), text({
|
|
29397
|
+
as: "span",
|
|
29398
|
+
className: "rb-testimonials-fe-context"
|
|
29399
|
+
}, when("testimonial.content.jobTitle"), bind("testimonial.content.jobTitle"))]);
|
|
29400
|
+
return el("div", { className: `rb-testimonials-fe-card ${variantClass}` }, [
|
|
29401
|
+
quoteMark,
|
|
29402
|
+
quote,
|
|
29403
|
+
meta
|
|
29404
|
+
], ...mods);
|
|
29405
|
+
}
|
|
29406
|
+
/**
|
|
29407
|
+
* Build the "featured editorial" layout: an asymmetric two-column arrangement
|
|
29408
|
+
* where the FIRST testimonial is a large featured (spruce-ink) card and the
|
|
29409
|
+
* remaining testimonials stack as white cards beside it.
|
|
29410
|
+
*
|
|
29411
|
+
* First-vs-rest branching is done without an offset primitive: the featured
|
|
29412
|
+
* card uses `repeat(..., { limit: 1 })` (entry 0 only), and the rest column
|
|
29413
|
+
* repeats over every entry but skips index 0 via `when("tIndex", { equals: 0,
|
|
29414
|
+
* not: true })`. The `$when` guard is re-evaluated per repeated item with the
|
|
29415
|
+
* index scope in context, so entry 0 produces no node in the rest column.
|
|
29416
|
+
*/
|
|
29417
|
+
function buildFeaturedEditorialLayout() {
|
|
29418
|
+
return el("div", { className: "rb-testimonials-fe-grid" }, [buildFeaturedEditorialCard("rb-testimonials-fe-card--feature", repeat("data.entries", "testimonial", { limit: 1 })), el("div", { className: "rb-testimonials-fe-col" }, [buildFeaturedEditorialCard("rb-testimonials-fe-card--plain", repeat("data.entries", "testimonial", { indexName: "tIndex" }), when("tIndex", {
|
|
29419
|
+
equals: 0,
|
|
29420
|
+
not: true
|
|
29421
|
+
}))])]);
|
|
29422
|
+
}
|
|
28823
29423
|
var grid$4, testimonialsCarouselFragment;
|
|
28824
29424
|
var init_testimonialsCarousel = __esmMin((() => {
|
|
28825
29425
|
init_types$5();
|
|
@@ -32644,7 +33244,7 @@ const defaultLayout = styledSection({
|
|
|
32644
33244
|
children: styledContainer({
|
|
32645
33245
|
baseClassName: "rb-relative rb-isolate",
|
|
32646
33246
|
children: stack({
|
|
32647
|
-
gap: "
|
|
33247
|
+
gap: "lg",
|
|
32648
33248
|
className: "rb-w-full rb-max-w-4xl rb-mx-auto"
|
|
32649
33249
|
}, [headingLayout, accordionLayout])
|
|
32650
33250
|
}),
|
|
@@ -32661,7 +33261,7 @@ const questionColumnsLayout = styledSection({
|
|
|
32661
33261
|
children: styledContainer({
|
|
32662
33262
|
baseClassName: "rb-relative rb-isolate",
|
|
32663
33263
|
children: stack({
|
|
32664
|
-
gap: "
|
|
33264
|
+
gap: "lg",
|
|
32665
33265
|
className: "rb-w-full"
|
|
32666
33266
|
}, [headingLayout, questionColumnsAccordionLayout])
|
|
32667
33267
|
}),
|
|
@@ -32826,7 +33426,26 @@ const formattingTransforms = [
|
|
|
32826
33426
|
arrayLengthTransform,
|
|
32827
33427
|
jsonArrayTransform,
|
|
32828
33428
|
csvTransform,
|
|
32829
|
-
marqueeLoopTransform
|
|
33429
|
+
marqueeLoopTransform,
|
|
33430
|
+
{
|
|
33431
|
+
id: "value.mapToken",
|
|
33432
|
+
kind: "formatter",
|
|
33433
|
+
summary: "Map a state/enum value to a theme token colour (rgb(var(--tb-<role>)))",
|
|
33434
|
+
schema: z$1.object({
|
|
33435
|
+
/**
|
|
33436
|
+
* Maps an input state/enum value (stringified) to a theme token ROLE name
|
|
33437
|
+
* (e.g. `secondary`, `accent`, `muted`, `border`). The role is wrapped to
|
|
33438
|
+
* `rgb(var(--tb-<role>))` so the result drops straight into a `style` binding.
|
|
33439
|
+
*/
|
|
33440
|
+
cases: z$1.record(z$1.string(), z$1.string()),
|
|
33441
|
+
/** Role used when the value matches no case. Omit to yield `undefined`. */
|
|
33442
|
+
fallback: z$1.string().optional()
|
|
33443
|
+
}),
|
|
33444
|
+
run: (value, options) => {
|
|
33445
|
+
const role = options.cases[String(value)] ?? options.fallback;
|
|
33446
|
+
return role ? `rgb(var(--tb-${role}))` : void 0;
|
|
33447
|
+
}
|
|
33448
|
+
}
|
|
32830
33449
|
];
|
|
32831
33450
|
//#endregion
|
|
32832
33451
|
//#region ../blocks/src/system/transforms/registry/ui.ts
|
|
@@ -33410,6 +34029,7 @@ function splitSiteChromePlacementClasses(className) {
|
|
|
33410
34029
|
init_colorConversion();
|
|
33411
34030
|
init_core();
|
|
33412
34031
|
init_colorStyles();
|
|
34032
|
+
init_surfaces();
|
|
33413
34033
|
const joinClasses$4 = (parts) => parts.filter((part) => typeof part === "string" && part.trim().length > 0).join(" ").replace(/\s+/g, " ").trim();
|
|
33414
34034
|
function resolveHeaderBrandDisplay(logo) {
|
|
33415
34035
|
const display = logo?.brandDisplay ?? "logo-plus-title";
|
|
@@ -33479,6 +34099,26 @@ const headerLogoTextVisibleTransform = {
|
|
|
33479
34099
|
return resolveHeaderBrandDisplay(asPartialObject(value)) !== "logo-only";
|
|
33480
34100
|
}
|
|
33481
34101
|
};
|
|
34102
|
+
/**
|
|
34103
|
+
* Selects which classic-layout nav row should render.
|
|
34104
|
+
*
|
|
34105
|
+
* - `'inline'` → classic variant with the historical logo-left / nav-right row
|
|
34106
|
+
* - `'centered'`→ classic variant with a centred (flex-1) nav and a right CTA
|
|
34107
|
+
* - `'other'` → not a classic variant (centered/floating/transparent handle it)
|
|
34108
|
+
*
|
|
34109
|
+
* Consumed by the site-header block's `$when` gates so the two classic rows are
|
|
34110
|
+
* mutually exclusive without introducing a new top-level header variant.
|
|
34111
|
+
*/
|
|
34112
|
+
const classicNavModeTransform = {
|
|
34113
|
+
id: "layout.classicNavMode",
|
|
34114
|
+
kind: "formatter",
|
|
34115
|
+
summary: "Resolve which classic-layout nav row to render",
|
|
34116
|
+
run: (value) => {
|
|
34117
|
+
const header = asPartialObject(value);
|
|
34118
|
+
if (header?.variant !== "classic") return "other";
|
|
34119
|
+
return header?.navPlacement === "center" ? "centered" : "inline";
|
|
34120
|
+
}
|
|
34121
|
+
};
|
|
33482
34122
|
const maxWidthClassTransform = {
|
|
33483
34123
|
id: "layout.maxWidthClass",
|
|
33484
34124
|
kind: "string",
|
|
@@ -33661,8 +34301,9 @@ const footerRootStyleTransform = {
|
|
|
33661
34301
|
styleParts.push(backgroundColorStyle(token));
|
|
33662
34302
|
}
|
|
33663
34303
|
}
|
|
33664
|
-
|
|
33665
|
-
|
|
34304
|
+
const foreground = visuals.textColorOverride ?? (visuals.textColorToken ? rgbColorValue(visuals.textColorToken) : null);
|
|
34305
|
+
if (!visuals.isTransparent && foreground) styleParts.push(surfaceForegroundStyle({ text: foreground }));
|
|
34306
|
+
else if (foreground) styleParts.push({ color: foreground });
|
|
33666
34307
|
styleParts.push(borderColorStyle("border"));
|
|
33667
34308
|
return mergeStyles(...styleParts);
|
|
33668
34309
|
}
|
|
@@ -33748,18 +34389,16 @@ const footerBottomBarStyleTransform = {
|
|
|
33748
34389
|
const styleParts = [];
|
|
33749
34390
|
const background = bottomBar?.background;
|
|
33750
34391
|
if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
|
|
33751
|
-
if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
|
|
33752
34392
|
const borderColorToken = bottomBar?.borderTop?.colorToken;
|
|
33753
34393
|
if (borderColorToken) styleParts.push(borderColorStyle(borderColorToken));
|
|
33754
34394
|
else styleParts.push(borderColorStyle("border"));
|
|
33755
34395
|
const borderWidth = bottomBar?.borderTop?.width;
|
|
33756
34396
|
if (borderWidth && borderWidth !== "none") styleParts.push({ borderTopWidth: borderWidth === "thin" ? "1px" : borderWidth === "medium" ? "2px" : "3px" });
|
|
33757
34397
|
else if (borderWidth === "none") styleParts.push({ borderTopWidth: "0px" });
|
|
33758
|
-
|
|
33759
|
-
|
|
33760
|
-
|
|
33761
|
-
|
|
33762
|
-
}
|
|
34398
|
+
const visuals = resolveBackgroundVisualStyles(extractBackgroundColorToken(background, "surface"), context.theme);
|
|
34399
|
+
const foreground = bottomBar?.textColor ? rgbColorValue(bottomBar.textColor) : visuals.textColorOverride ?? (visuals.textColorToken ? rgbColorValue(visuals.textColorToken) : null);
|
|
34400
|
+
if (background?.type === "color" && foreground) styleParts.push(surfaceForegroundStyle({ text: foreground }));
|
|
34401
|
+
else if (foreground && bottomBar?.textColor) styleParts.push({ color: foreground });
|
|
33763
34402
|
return mergeStyles(...styleParts);
|
|
33764
34403
|
}
|
|
33765
34404
|
};
|
|
@@ -33894,6 +34533,7 @@ const layoutTransforms = [
|
|
|
33894
34533
|
headerLogoClassTransform,
|
|
33895
34534
|
headerLogoMediaClassTransform,
|
|
33896
34535
|
headerLogoTextVisibleTransform,
|
|
34536
|
+
classicNavModeTransform,
|
|
33897
34537
|
footerRootClassTransform,
|
|
33898
34538
|
headerRootStyleTransform,
|
|
33899
34539
|
headerSectionBackgroundTransform,
|
|
@@ -34330,7 +34970,18 @@ const classicLayout = inline({
|
|
|
34330
34970
|
logoRow,
|
|
34331
34971
|
createNavRow(`rb-ml-auto ${desktopOnlyDisplay("flex")} rb-gap-6`),
|
|
34332
34972
|
headerCta
|
|
34333
|
-
],
|
|
34973
|
+
], whenTransformed$1("$root.theme.header", "layout.classicNavMode", "inline"));
|
|
34974
|
+
const classicCenteredNavLayout = inline({
|
|
34975
|
+
className: bindProp("$root.theme.header.maxWidth", {
|
|
34976
|
+
transforms: pipe(tx("layout.maxWidthClass", { base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6` })),
|
|
34977
|
+
fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6`
|
|
34978
|
+
}),
|
|
34979
|
+
align: "center"
|
|
34980
|
+
}, [
|
|
34981
|
+
logoRow,
|
|
34982
|
+
createNavRow(`rb-flex-1 rb-justify-center ${desktopOnlyDisplay("flex")} rb-gap-6`, "center"),
|
|
34983
|
+
headerCta
|
|
34984
|
+
], whenTransformed$1("$root.theme.header", "layout.classicNavMode", "centered"));
|
|
34334
34985
|
const centeredLayout = stack({
|
|
34335
34986
|
gap: "md",
|
|
34336
34987
|
align: "center",
|
|
@@ -34405,6 +35056,7 @@ const siteHeaderBlockDefinition = { manifest: createBlockManifest({
|
|
|
34405
35056
|
}, [
|
|
34406
35057
|
mobileHeaderBar,
|
|
34407
35058
|
classicLayout,
|
|
35059
|
+
classicCenteredNavLayout,
|
|
34408
35060
|
centeredLayout,
|
|
34409
35061
|
transparentLayout,
|
|
34410
35062
|
floatingLayout,
|
|
@@ -34452,6 +35104,7 @@ init_builder$1();
|
|
|
34452
35104
|
init_fragments();
|
|
34453
35105
|
init_defineBlock();
|
|
34454
35106
|
init_colorStyles();
|
|
35107
|
+
init_surfaces();
|
|
34455
35108
|
const footerTextLayout = () => materializeFragment({ fragment: footerBottomTextFragment }).layout;
|
|
34456
35109
|
const whenTransformed = (from, transformId, equals = true) => (node) => ({
|
|
34457
35110
|
...node,
|
|
@@ -34621,7 +35274,7 @@ const footerLayout = section$1({
|
|
|
34621
35274
|
style: { $bind: {
|
|
34622
35275
|
from: "$root.theme.footer",
|
|
34623
35276
|
transforms: [{ id: "layout.footerRootStyle" }],
|
|
34624
|
-
fallback: mergeStyles(backgroundColorStyle("surface"),
|
|
35277
|
+
fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
|
|
34625
35278
|
} }
|
|
34626
35279
|
}, [
|
|
34627
35280
|
simpleFooterLayout,
|
|
@@ -34683,7 +35336,7 @@ const backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full r
|
|
|
34683
35336
|
*/
|
|
34684
35337
|
const wrapVariant$2 = (variantLayout) => styledSection({
|
|
34685
35338
|
children: styledContainer({ children: stack({
|
|
34686
|
-
gap: "
|
|
35339
|
+
gap: "lg",
|
|
34687
35340
|
className: "rb-relative"
|
|
34688
35341
|
}, [...testimonialsHeadingFragment.layout, variantLayout]) }),
|
|
34689
35342
|
baseClass: "",
|
|
@@ -34709,6 +35362,27 @@ const splitGridLayout = styledSection({
|
|
|
34709
35362
|
spacing: "comfortable",
|
|
34710
35363
|
imageClassName: backgroundImageClassName
|
|
34711
35364
|
});
|
|
35365
|
+
const featuredEditorialHead = el("div", { className: "rb-testimonials-fe-head" }, [text({
|
|
35366
|
+
as: "h2",
|
|
35367
|
+
className: "rb-text-left",
|
|
35368
|
+
headingDecoration: "off"
|
|
35369
|
+
}, when("content.heading"), bind("content.heading")), el("div", { className: "rb-testimonials-fe-leadin" }, [text({
|
|
35370
|
+
as: "p",
|
|
35371
|
+
className: "rb-prose",
|
|
35372
|
+
style: textColorStyle("mutedText")
|
|
35373
|
+
}, when("content.subheading"), bind("content.subheading"))])]);
|
|
35374
|
+
const featuredEditorialLayout = styledSection({
|
|
35375
|
+
children: styledContainer({
|
|
35376
|
+
baseClassName: "rb-relative rb-isolate",
|
|
35377
|
+
children: stack({
|
|
35378
|
+
gap: "lg",
|
|
35379
|
+
className: "rb-relative"
|
|
35380
|
+
}, [featuredEditorialHead, buildFeaturedEditorialLayout()])
|
|
35381
|
+
}),
|
|
35382
|
+
baseClass: "",
|
|
35383
|
+
spacing: "comfortable",
|
|
35384
|
+
imageClassName: backgroundImageClassName
|
|
35385
|
+
});
|
|
34712
35386
|
const additionalFields = parseFieldDefinitions([
|
|
34713
35387
|
...testimonialsHeadingFragment.fields,
|
|
34714
35388
|
{
|
|
@@ -34796,6 +35470,7 @@ const testimonialsBlockDefinition = {
|
|
|
34796
35470
|
carousel: carouselLayout$1,
|
|
34797
35471
|
grid: gridLayout$1,
|
|
34798
35472
|
"split-grid": splitGridLayout,
|
|
35473
|
+
"featured-editorial": featuredEditorialLayout,
|
|
34799
35474
|
highlight: highlightLayout
|
|
34800
35475
|
},
|
|
34801
35476
|
defaultVariant: "carousel",
|
|
@@ -34815,6 +35490,11 @@ const testimonialsBlockDefinition = {
|
|
|
34815
35490
|
description: "Heading on the left with testimonial cards on the right",
|
|
34816
35491
|
icon: "PanelLeft"
|
|
34817
35492
|
},
|
|
35493
|
+
"featured-editorial": {
|
|
35494
|
+
label: "Featured editorial",
|
|
35495
|
+
description: "A large featured ink quote beside a column of stacked cards (no avatars)",
|
|
35496
|
+
icon: "Quote"
|
|
35497
|
+
},
|
|
34818
35498
|
highlight: {
|
|
34819
35499
|
label: "Highlight",
|
|
34820
35500
|
description: "A single, centered testimonial with no carousel",
|
|
@@ -35358,7 +36038,7 @@ function grid$2(props, children) {
|
|
|
35358
36038
|
const cardsLayout = styledSection({
|
|
35359
36039
|
children: styledContainer({
|
|
35360
36040
|
rootType: "stack",
|
|
35361
|
-
rootProps: { gap: "
|
|
36041
|
+
rootProps: { gap: "lg" },
|
|
35362
36042
|
children: [stack({
|
|
35363
36043
|
gap: "sm",
|
|
35364
36044
|
className: "rb-feature-cards-heading rb-mx-auto rb-max-w-3xl rb-text-center"
|
|
@@ -37310,8 +37990,11 @@ var init_filtering = __esmMin((() => {
|
|
|
37310
37990
|
}));
|
|
37311
37991
|
//#endregion
|
|
37312
37992
|
//#region ../blocks/src/system/blocks/events/shared/layout.ts
|
|
37313
|
-
function eventSectionHeaderLayoutNodes() {
|
|
37314
|
-
|
|
37993
|
+
function eventSectionHeaderLayoutNodes(options = {}) {
|
|
37994
|
+
const headingNode = text({ as: "h2" }, bind("content.heading"), when("content.heading", { authoringPresence: recoverEmptyHeadingWhenActive }));
|
|
37995
|
+
const descriptionNode = richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description", { authoringPresence: recoverEmptyDescriptionWhenActive }));
|
|
37996
|
+
if (options.splitClassName) return [el("div", { className: options.splitClassName }, [headingNode, descriptionNode])];
|
|
37997
|
+
return [headingNode, descriptionNode];
|
|
37315
37998
|
}
|
|
37316
37999
|
var recoverEmptyHeadingWhenActive, recoverEmptyDescriptionWhenActive;
|
|
37317
38000
|
var init_layout = __esmMin((() => {
|
|
@@ -37403,7 +38086,8 @@ var init_events$1 = __esmMin((() => {
|
|
|
37403
38086
|
"combined",
|
|
37404
38087
|
"calendar",
|
|
37405
38088
|
"list",
|
|
37406
|
-
"timetable"
|
|
38089
|
+
"timetable",
|
|
38090
|
+
"week-board"
|
|
37407
38091
|
];
|
|
37408
38092
|
eventCalendarDefaultViewValues = ["month", "week"];
|
|
37409
38093
|
eventCalendarListLayoutValues = [
|
|
@@ -40017,6 +40701,40 @@ function getEventAvailability(event) {
|
|
|
40017
40701
|
isFull: false
|
|
40018
40702
|
};
|
|
40019
40703
|
}
|
|
40704
|
+
/**
|
|
40705
|
+
* Derive the three-state availability status (available / filling / waitlist)
|
|
40706
|
+
* plus a short pill label. Builds on {@link getEventAvailability} so the
|
|
40707
|
+
* capacity math (availableSpots with a `capacity - registeredCount` fallback)
|
|
40708
|
+
* stays consistent with the binary helper used elsewhere.
|
|
40709
|
+
*/
|
|
40710
|
+
function getEventAvailabilityStatus(event, options) {
|
|
40711
|
+
const threshold = options?.fillingThreshold ?? 2;
|
|
40712
|
+
const { available, isFull } = getEventAvailability(event);
|
|
40713
|
+
if (available == null) return {
|
|
40714
|
+
status: "available",
|
|
40715
|
+
available: null,
|
|
40716
|
+
isFull: false,
|
|
40717
|
+
label: null
|
|
40718
|
+
};
|
|
40719
|
+
if (isFull) return {
|
|
40720
|
+
status: "waitlist",
|
|
40721
|
+
available: 0,
|
|
40722
|
+
isFull: true,
|
|
40723
|
+
label: event.waitlistEnabled ? "Waitlist" : "Full"
|
|
40724
|
+
};
|
|
40725
|
+
if (available <= threshold) return {
|
|
40726
|
+
status: "filling",
|
|
40727
|
+
available,
|
|
40728
|
+
isFull: false,
|
|
40729
|
+
label: `${available} left`
|
|
40730
|
+
};
|
|
40731
|
+
return {
|
|
40732
|
+
status: "available",
|
|
40733
|
+
available,
|
|
40734
|
+
isFull: false,
|
|
40735
|
+
label: `${available} places`
|
|
40736
|
+
};
|
|
40737
|
+
}
|
|
40020
40738
|
var init_eventCapacity = __esmMin((() => {}));
|
|
40021
40739
|
//#endregion
|
|
40022
40740
|
//#region ../blocks/src/system/runtime/nodes/events/shared/utils.ts
|
|
@@ -42662,7 +43380,7 @@ const eventCalendarLayout = [styledSection({
|
|
|
42662
43380
|
children: styledContainer({
|
|
42663
43381
|
rootType: "stack",
|
|
42664
43382
|
rootProps: { gap: "lg" },
|
|
42665
|
-
children: [...eventSectionHeaderLayoutNodes(), el("event-calendar", withApiBindings({
|
|
43383
|
+
children: [...eventSectionHeaderLayoutNodes({ splitClassName: "event-section-head event-section-head--split" }), el("event-calendar", withApiBindings({
|
|
42666
43384
|
events: { $bind: { from: "data.events" } },
|
|
42667
43385
|
stage: { $bind: {
|
|
42668
43386
|
from: "$root.previewStage",
|
|
@@ -42773,6 +43491,10 @@ const eventCalendarAdditionalFields = [
|
|
|
42773
43491
|
value: "timetable",
|
|
42774
43492
|
label: "Timetable"
|
|
42775
43493
|
},
|
|
43494
|
+
{
|
|
43495
|
+
value: "week-board",
|
|
43496
|
+
label: "Week board"
|
|
43497
|
+
},
|
|
42776
43498
|
{
|
|
42777
43499
|
value: "list",
|
|
42778
43500
|
label: "List"
|
|
@@ -42955,7 +43677,8 @@ const eventCalendarAdditionalFields = [
|
|
|
42955
43677
|
oneOf: [
|
|
42956
43678
|
"combined",
|
|
42957
43679
|
"calendar",
|
|
42958
|
-
"timetable"
|
|
43680
|
+
"timetable",
|
|
43681
|
+
"week-board"
|
|
42959
43682
|
]
|
|
42960
43683
|
}
|
|
42961
43684
|
}
|
|
@@ -43058,7 +43781,8 @@ const eventCalendarAdditionalFields = [
|
|
|
43058
43781
|
"combined",
|
|
43059
43782
|
"calendar",
|
|
43060
43783
|
"list",
|
|
43061
|
-
"timetable"
|
|
43784
|
+
"timetable",
|
|
43785
|
+
"week-board"
|
|
43062
43786
|
]
|
|
43063
43787
|
}
|
|
43064
43788
|
}
|
|
@@ -43093,7 +43817,8 @@ const eventCalendarAdditionalFields = [
|
|
|
43093
43817
|
"combined",
|
|
43094
43818
|
"calendar",
|
|
43095
43819
|
"list",
|
|
43096
|
-
"timetable"
|
|
43820
|
+
"timetable",
|
|
43821
|
+
"week-board"
|
|
43097
43822
|
]
|
|
43098
43823
|
}, {
|
|
43099
43824
|
field: "showFilters",
|
|
@@ -43116,7 +43841,8 @@ const eventCalendarAdditionalFields = [
|
|
|
43116
43841
|
"combined",
|
|
43117
43842
|
"calendar",
|
|
43118
43843
|
"list",
|
|
43119
|
-
"timetable"
|
|
43844
|
+
"timetable",
|
|
43845
|
+
"week-board"
|
|
43120
43846
|
]
|
|
43121
43847
|
}, {
|
|
43122
43848
|
field: "showFilters",
|
|
@@ -43139,7 +43865,8 @@ const eventCalendarAdditionalFields = [
|
|
|
43139
43865
|
"combined",
|
|
43140
43866
|
"calendar",
|
|
43141
43867
|
"list",
|
|
43142
|
-
"timetable"
|
|
43868
|
+
"timetable",
|
|
43869
|
+
"week-board"
|
|
43143
43870
|
]
|
|
43144
43871
|
}, {
|
|
43145
43872
|
field: "showFilters",
|
|
@@ -43161,7 +43888,8 @@ const eventCalendarAdditionalFields = [
|
|
|
43161
43888
|
oneOf: [
|
|
43162
43889
|
"combined",
|
|
43163
43890
|
"list",
|
|
43164
|
-
"timetable"
|
|
43891
|
+
"timetable",
|
|
43892
|
+
"week-board"
|
|
43165
43893
|
]
|
|
43166
43894
|
}, { allOf: [{
|
|
43167
43895
|
field: "variant",
|
|
@@ -43337,6 +44065,7 @@ const eventCalendarVariants = {
|
|
|
43337
44065
|
combined: eventCalendarLayout[0],
|
|
43338
44066
|
calendar: eventCalendarLayout[0],
|
|
43339
44067
|
timetable: eventCalendarLayout[0],
|
|
44068
|
+
"week-board": eventCalendarLayout[0],
|
|
43340
44069
|
list: eventCalendarLayout[0]
|
|
43341
44070
|
};
|
|
43342
44071
|
const eventCalendarContentShape = {
|
|
@@ -43350,6 +44079,7 @@ const eventCalendarContentShape = {
|
|
|
43350
44079
|
{ value: "combined" },
|
|
43351
44080
|
{ value: "calendar" },
|
|
43352
44081
|
{ value: "timetable" },
|
|
44082
|
+
{ value: "week-board" },
|
|
43353
44083
|
{ value: "list" }
|
|
43354
44084
|
]
|
|
43355
44085
|
},
|
|
@@ -43416,6 +44146,7 @@ const eventCalendarBlockDefinition = {
|
|
|
43416
44146
|
combined: { label: "Combined" },
|
|
43417
44147
|
calendar: { label: "Calendar" },
|
|
43418
44148
|
timetable: { label: "Timetable" },
|
|
44149
|
+
"week-board": { label: "Week board" },
|
|
43419
44150
|
list: { label: "List" }
|
|
43420
44151
|
}
|
|
43421
44152
|
}, eventCalendarContentShape),
|
|
@@ -49265,6 +49996,12 @@ const systemBlockDefinitions = [
|
|
|
49265
49996
|
family: "centered",
|
|
49266
49997
|
weight: "featured",
|
|
49267
49998
|
bias: "soft"
|
|
49999
|
+
}),
|
|
50000
|
+
layoutProfile({
|
|
50001
|
+
variantKey: "featured-editorial",
|
|
50002
|
+
family: "split",
|
|
50003
|
+
weight: "featured",
|
|
50004
|
+
bias: "soft"
|
|
49268
50005
|
})
|
|
49269
50006
|
]
|
|
49270
50007
|
})),
|
|
@@ -49397,6 +50134,11 @@ const systemBlockDefinitions = [
|
|
|
49397
50134
|
variantKey: "timetable",
|
|
49398
50135
|
family: "stack",
|
|
49399
50136
|
weight: "standard"
|
|
50137
|
+
}),
|
|
50138
|
+
layoutProfile({
|
|
50139
|
+
variantKey: "week-board",
|
|
50140
|
+
family: "stack",
|
|
50141
|
+
weight: "standard"
|
|
49400
50142
|
})
|
|
49401
50143
|
]
|
|
49402
50144
|
})),
|
|
@@ -49761,7 +50503,15 @@ function gradientToCss(config, tokens) {
|
|
|
49761
50503
|
const stops = config.stops.map((stop) => {
|
|
49762
50504
|
return `${tokens[stop.color] ?? "#000000"} ${stop.position}%`;
|
|
49763
50505
|
}).join(", ");
|
|
49764
|
-
|
|
50506
|
+
const type = config.type ?? "linear";
|
|
50507
|
+
if (type === "radial") {
|
|
50508
|
+
const position = config.position ?? "center";
|
|
50509
|
+
return `radial-gradient(${config.shape ?? "circle"} at ${position}, ${stops})`;
|
|
50510
|
+
}
|
|
50511
|
+
if (type === "conic") {
|
|
50512
|
+
const position = config.position ?? "center";
|
|
50513
|
+
return `conic-gradient(from ${config.angle ?? 0}deg at ${position}, ${stops})`;
|
|
50514
|
+
}
|
|
49765
50515
|
return `linear-gradient(${config.angle ?? 180}deg, ${stops})`;
|
|
49766
50516
|
}
|
|
49767
50517
|
//#endregion
|
|
@@ -49790,7 +50540,7 @@ function backgroundVideoMobileClassNames(input) {
|
|
|
49790
50540
|
//#region ../blocks/src/system/transforms/registry/background.ts
|
|
49791
50541
|
init_background$1();
|
|
49792
50542
|
init_themeColorResolution();
|
|
49793
|
-
|
|
50543
|
+
init_surfaceForegroundStyles();
|
|
49794
50544
|
init_media();
|
|
49795
50545
|
const isString$2 = (value) => typeof value === "string" && value.trim().length > 0;
|
|
49796
50546
|
const isNumber$2 = (value) => typeof value === "number" && !isNaN(value);
|
|
@@ -49847,8 +50597,8 @@ const backgroundTransforms = [
|
|
|
49847
50597
|
{
|
|
49848
50598
|
id: "background.resolveColorsStyle",
|
|
49849
50599
|
kind: "formatter",
|
|
49850
|
-
summary: "Resolve
|
|
49851
|
-
run: (value, _options, context) =>
|
|
50600
|
+
summary: "Resolve surface foreground colors from a background object into scoped CSS vars",
|
|
50601
|
+
run: (value, _options, context) => resolveSurfaceForegroundStyles(value, context)
|
|
49852
50602
|
},
|
|
49853
50603
|
{
|
|
49854
50604
|
id: "background.resolveAllowOverflow",
|
|
@@ -50345,21 +51095,53 @@ function Inline({ as: Comp = "div", gap = "md", align = "center", justify = "sta
|
|
|
50345
51095
|
//#endregion
|
|
50346
51096
|
//#region ../blocks/src/primitives/layout/Grid.tsx
|
|
50347
51097
|
init_clsx();
|
|
51098
|
+
/** Utility class for a numeric column COUNT at a given breakpoint. */
|
|
51099
|
+
const COL_COUNT_CLASS = {
|
|
51100
|
+
base: (n) => `rb-grid-cols-${n}`,
|
|
51101
|
+
sm: (n) => `rb-sm-grid-cols-${n}`,
|
|
51102
|
+
md: (n) => `rb-md-grid-cols-${n}`,
|
|
51103
|
+
lg: (n) => `rb-lg-grid-cols-${n}`,
|
|
51104
|
+
xl: (n) => `rb-xl-grid-cols-${n}`
|
|
51105
|
+
};
|
|
51106
|
+
/** Inline custom property read by the `.rb-grid-tracks` utility per breakpoint. */
|
|
51107
|
+
const TRACK_VAR = {
|
|
51108
|
+
base: "--rb-gtc-base",
|
|
51109
|
+
sm: "--rb-gtc-sm",
|
|
51110
|
+
md: "--rb-gtc-md",
|
|
51111
|
+
lg: "--rb-gtc-lg",
|
|
51112
|
+
xl: "--rb-gtc-xl"
|
|
51113
|
+
};
|
|
51114
|
+
const GRID_BREAKPOINTS = [
|
|
51115
|
+
"base",
|
|
51116
|
+
"sm",
|
|
51117
|
+
"md",
|
|
51118
|
+
"lg",
|
|
51119
|
+
"xl"
|
|
51120
|
+
];
|
|
50348
51121
|
function Grid({ as: Comp = "div", cols = {
|
|
50349
51122
|
base: 1,
|
|
50350
51123
|
md: 2
|
|
50351
|
-
}, gap = "md", className, children, "data-slot": dataSlot, ...rest }) {
|
|
50352
|
-
const colsObj = typeof cols === "number" ? { base: cols } : cols;
|
|
50353
|
-
const colClasses = [
|
|
50354
|
-
|
|
50355
|
-
|
|
50356
|
-
|
|
50357
|
-
|
|
50358
|
-
|
|
50359
|
-
|
|
51124
|
+
}, gap = "md", className, style, children, "data-slot": dataSlot, ...rest }) {
|
|
51125
|
+
const colsObj = typeof cols === "number" || typeof cols === "string" ? { base: cols } : cols;
|
|
51126
|
+
const colClasses = [];
|
|
51127
|
+
const trackVars = {};
|
|
51128
|
+
let hasTracks = false;
|
|
51129
|
+
for (const bp of GRID_BREAKPOINTS) {
|
|
51130
|
+
const value = colsObj[bp];
|
|
51131
|
+
if (value == null) continue;
|
|
51132
|
+
if (typeof value === "string") {
|
|
51133
|
+
trackVars[TRACK_VAR[bp]] = value;
|
|
51134
|
+
hasTracks = true;
|
|
51135
|
+
} else colClasses.push(COL_COUNT_CLASS[bp](value));
|
|
51136
|
+
}
|
|
51137
|
+
const mergedStyle = hasTracks ? {
|
|
51138
|
+
...trackVars,
|
|
51139
|
+
...style
|
|
51140
|
+
} : style;
|
|
50360
51141
|
return /* @__PURE__ */ jsx(Comp, {
|
|
50361
51142
|
...rest,
|
|
50362
|
-
|
|
51143
|
+
style: mergedStyle,
|
|
51144
|
+
className: clsx("rb-grid", hasTracks && "rb-grid-tracks", colClasses, {
|
|
50363
51145
|
"rb-gap-0": gap === "none",
|
|
50364
51146
|
"rb-gap-1": gap === "xs",
|
|
50365
51147
|
"rb-gap-2": gap === "sm",
|
|
@@ -50605,6 +51387,138 @@ function Text$2({ as: Comp = "span", children, className = "", path, maxLength:
|
|
|
50605
51387
|
});
|
|
50606
51388
|
}
|
|
50607
51389
|
//#endregion
|
|
51390
|
+
//#region ../blocks/src/system/icons/cta.ts
|
|
51391
|
+
init_svg();
|
|
51392
|
+
/**
|
|
51393
|
+
* Curated icon set for CTA/button icons.
|
|
51394
|
+
*
|
|
51395
|
+
* Guardrail: keep this list small and action-oriented. This is intentionally not the full Lucide set.
|
|
51396
|
+
* Extend by adding to CTA_ICON_NAMES and the mapping below (explicit imports only).
|
|
51397
|
+
*/
|
|
51398
|
+
const CTA_ICON_NAMES = [
|
|
51399
|
+
"ArrowRight",
|
|
51400
|
+
"ArrowLeft",
|
|
51401
|
+
"ChevronRight",
|
|
51402
|
+
"ChevronLeft",
|
|
51403
|
+
"ChevronUp",
|
|
51404
|
+
"ChevronDown",
|
|
51405
|
+
"ExternalLink",
|
|
51406
|
+
"Download",
|
|
51407
|
+
"Upload",
|
|
51408
|
+
"Mail",
|
|
51409
|
+
"Phone",
|
|
51410
|
+
"Play",
|
|
51411
|
+
"ShoppingCart",
|
|
51412
|
+
"Calendar",
|
|
51413
|
+
"MapPin",
|
|
51414
|
+
"Info",
|
|
51415
|
+
"Plus",
|
|
51416
|
+
"Minus",
|
|
51417
|
+
"Check",
|
|
51418
|
+
"X"
|
|
51419
|
+
];
|
|
51420
|
+
const CTA_ICON_COMPONENTS = {
|
|
51421
|
+
ArrowRight: ArrowRightIcon,
|
|
51422
|
+
ArrowLeft: ArrowLeftIcon,
|
|
51423
|
+
ChevronRight: ChevronRightIcon,
|
|
51424
|
+
ChevronLeft: ChevronLeftIcon,
|
|
51425
|
+
ChevronUp: ChevronUpIcon,
|
|
51426
|
+
ChevronDown: ChevronDownIcon,
|
|
51427
|
+
ExternalLink: ExternalLinkIcon,
|
|
51428
|
+
Download: DownloadIcon,
|
|
51429
|
+
Upload: UploadIcon,
|
|
51430
|
+
Mail: MailIcon,
|
|
51431
|
+
Phone: PhoneIcon,
|
|
51432
|
+
Play: PlayIcon,
|
|
51433
|
+
ShoppingCart: ShoppingCartIcon,
|
|
51434
|
+
Calendar: CalendarIcon$1,
|
|
51435
|
+
MapPin: MapPinIcon$1,
|
|
51436
|
+
Info: InfoIcon,
|
|
51437
|
+
Plus: PlusIcon,
|
|
51438
|
+
Minus: MinusIcon,
|
|
51439
|
+
Check: CheckIcon$1,
|
|
51440
|
+
X: XIcon
|
|
51441
|
+
};
|
|
51442
|
+
function isCtaIconName(value) {
|
|
51443
|
+
return typeof value === "string" && CTA_ICON_NAMES.includes(value);
|
|
51444
|
+
}
|
|
51445
|
+
function formatLucideName(name) {
|
|
51446
|
+
return name.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
|
|
51447
|
+
}
|
|
51448
|
+
const CTA_ICON_OPTIONS = CTA_ICON_NAMES.map((id) => ({
|
|
51449
|
+
id,
|
|
51450
|
+
label: formatLucideName(id)
|
|
51451
|
+
}));
|
|
51452
|
+
function getCtaIconComponent(name) {
|
|
51453
|
+
if (!isCtaIconName(name)) return null;
|
|
51454
|
+
return CTA_ICON_COMPONENTS[name] ?? null;
|
|
51455
|
+
}
|
|
51456
|
+
//#endregion
|
|
51457
|
+
//#region ../blocks/src/system/icons/registry.ts
|
|
51458
|
+
init_presets$1();
|
|
51459
|
+
function buildSearchText(parts) {
|
|
51460
|
+
return parts.map((part) => part.trim()).filter(Boolean).join(" ");
|
|
51461
|
+
}
|
|
51462
|
+
function semanticDefinitionToOption(definition, preset) {
|
|
51463
|
+
return {
|
|
51464
|
+
id: definition.id,
|
|
51465
|
+
label: definition.label,
|
|
51466
|
+
searchText: buildSearchText([
|
|
51467
|
+
definition.label,
|
|
51468
|
+
definition.id,
|
|
51469
|
+
...definition.tags,
|
|
51470
|
+
...definition.domains,
|
|
51471
|
+
...definition.tone
|
|
51472
|
+
]),
|
|
51473
|
+
preset
|
|
51474
|
+
};
|
|
51475
|
+
}
|
|
51476
|
+
CTA_ICON_OPTIONS.map((option) => ({
|
|
51477
|
+
id: option.id,
|
|
51478
|
+
label: option.label,
|
|
51479
|
+
searchText: buildSearchText([option.label, option.id]),
|
|
51480
|
+
preset: "cta"
|
|
51481
|
+
}));
|
|
51482
|
+
function semanticOptionsForPreset(preset) {
|
|
51483
|
+
return SEMANTIC_ICON_DEFINITIONS.filter((definition) => definition.presets.includes(preset)).map((definition) => semanticDefinitionToOption(definition, preset));
|
|
51484
|
+
}
|
|
51485
|
+
semanticOptionsForPreset("feature");
|
|
51486
|
+
function getIconComponent(name) {
|
|
51487
|
+
return getCtaIconComponent(name) ?? getSemanticIconComponent(name);
|
|
51488
|
+
}
|
|
51489
|
+
//#endregion
|
|
51490
|
+
//#region ../blocks/src/system/runtime/nodes/buttonAffordance.ts
|
|
51491
|
+
function normalize(value) {
|
|
51492
|
+
const trimmed = typeof value === "string" ? value.trim() : "";
|
|
51493
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
51494
|
+
}
|
|
51495
|
+
/**
|
|
51496
|
+
* Resolve the trailing affordance a button should render. Node overrides
|
|
51497
|
+
* personality; returns `null` when nothing is configured.
|
|
51498
|
+
*/
|
|
51499
|
+
function resolveButtonAffordance(input) {
|
|
51500
|
+
const nodeIcon = normalize(input.trailingIcon);
|
|
51501
|
+
if (nodeIcon) {
|
|
51502
|
+
const colorToken = normalize(input.trailingIconColorToken);
|
|
51503
|
+
return {
|
|
51504
|
+
iconId: nodeIcon,
|
|
51505
|
+
source: "node",
|
|
51506
|
+
...colorToken ? { colorToken } : {}
|
|
51507
|
+
};
|
|
51508
|
+
}
|
|
51509
|
+
const personality = input.personalityAffordance;
|
|
51510
|
+
const personalityIcon = normalize(personality?.iconId);
|
|
51511
|
+
if (personality && personalityIcon) {
|
|
51512
|
+
const colorToken = normalize(personality.colorToken);
|
|
51513
|
+
return {
|
|
51514
|
+
iconId: personalityIcon,
|
|
51515
|
+
source: "personality",
|
|
51516
|
+
...colorToken ? { colorToken } : {}
|
|
51517
|
+
};
|
|
51518
|
+
}
|
|
51519
|
+
return null;
|
|
51520
|
+
}
|
|
51521
|
+
//#endregion
|
|
50608
51522
|
//#region ../blocks/src/system/runtime/nodes/richText-coerce.ts
|
|
50609
51523
|
function coerceRichTextDoc(value) {
|
|
50610
51524
|
const raw = unwrapRichTextRoot(value);
|
|
@@ -50669,37 +51583,57 @@ const RichTextNode = ({ value, blockId: _blockId, blockKind: _blockKind, blockCo
|
|
|
50669
51583
|
...rest
|
|
50670
51584
|
});
|
|
50671
51585
|
};
|
|
50672
|
-
|
|
51586
|
+
/**
|
|
51587
|
+
* Render the resolved trailing affordance icon. Colour is applied via a theme
|
|
51588
|
+
* CSS var so it recolours with the palette; the icon stroke uses `currentColor`.
|
|
51589
|
+
*/
|
|
51590
|
+
function renderTrailingAffordanceIcon(affordance) {
|
|
51591
|
+
if (!affordance) return null;
|
|
51592
|
+
const Icon = getIconComponent(affordance.iconId);
|
|
51593
|
+
if (!Icon) return null;
|
|
51594
|
+
return /* @__PURE__ */ jsx(Icon, {
|
|
51595
|
+
"aria-hidden": true,
|
|
51596
|
+
className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block",
|
|
51597
|
+
style: affordance.colorToken ? { color: `rgb(var(--tb-${affordance.colorToken}))` } : void 0
|
|
51598
|
+
});
|
|
51599
|
+
}
|
|
51600
|
+
const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon, trailingIconColorToken, personalityAffordance, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, className, ...rest }) => {
|
|
50673
51601
|
const content = value ?? children;
|
|
50674
51602
|
if (!content) {
|
|
50675
51603
|
console.warn("[ButtonNode] No content to render - value and children are both empty");
|
|
50676
51604
|
return null;
|
|
50677
51605
|
}
|
|
51606
|
+
const affordanceIcon = renderTrailingAffordanceIcon(resolveButtonAffordance({
|
|
51607
|
+
trailingIcon,
|
|
51608
|
+
trailingIconColorToken,
|
|
51609
|
+
personalityAffordance
|
|
51610
|
+
}));
|
|
50678
51611
|
const resolvedHref = typeof href === "string" ? href.trim() : "";
|
|
50679
51612
|
if (linkRequired && resolvedHref.length === 0) {
|
|
50680
51613
|
if (process.env.NODE_ENV === "development") console.warn("[ButtonNode] Missing href for link-required button");
|
|
50681
51614
|
return null;
|
|
50682
51615
|
}
|
|
51616
|
+
const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
|
|
50683
51617
|
const resolvedVariantId = parseThemeButtonVariantId(variantId);
|
|
50684
51618
|
const combinedClassName = resolvedVariantId ? themeButtonClassName({
|
|
50685
51619
|
variant: resolvedVariantId,
|
|
50686
51620
|
size,
|
|
50687
|
-
extraClassName
|
|
50688
|
-
}) :
|
|
50689
|
-
if (resolvedHref) return /* @__PURE__ */
|
|
51621
|
+
extraClassName
|
|
51622
|
+
}) : extraClassName;
|
|
51623
|
+
if (resolvedHref) return /* @__PURE__ */ jsxs("a", {
|
|
50690
51624
|
href: resolvedHref,
|
|
50691
51625
|
target,
|
|
50692
51626
|
rel,
|
|
50693
51627
|
className: combinedClassName,
|
|
50694
51628
|
...rest,
|
|
50695
|
-
children: content
|
|
51629
|
+
children: [content, affordanceIcon]
|
|
50696
51630
|
});
|
|
50697
|
-
return /* @__PURE__ */
|
|
51631
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
50698
51632
|
type,
|
|
50699
51633
|
disabled,
|
|
50700
51634
|
className: combinedClassName,
|
|
50701
51635
|
...rest,
|
|
50702
|
-
children: content
|
|
51636
|
+
children: [content, affordanceIcon]
|
|
50703
51637
|
});
|
|
50704
51638
|
};
|
|
50705
51639
|
const LinkNode = ({ href, children, className, target, rel, linkRequired = false, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...rest }) => {
|
|
@@ -50724,106 +51658,6 @@ const LinkNode = ({ href, children, className, target, rel, linkRequired = false
|
|
|
50724
51658
|
});
|
|
50725
51659
|
};
|
|
50726
51660
|
//#endregion
|
|
50727
|
-
//#region ../blocks/src/system/icons/cta.ts
|
|
50728
|
-
init_svg();
|
|
50729
|
-
/**
|
|
50730
|
-
* Curated icon set for CTA/button icons.
|
|
50731
|
-
*
|
|
50732
|
-
* Guardrail: keep this list small and action-oriented. This is intentionally not the full Lucide set.
|
|
50733
|
-
* Extend by adding to CTA_ICON_NAMES and the mapping below (explicit imports only).
|
|
50734
|
-
*/
|
|
50735
|
-
const CTA_ICON_NAMES = [
|
|
50736
|
-
"ArrowRight",
|
|
50737
|
-
"ArrowLeft",
|
|
50738
|
-
"ChevronRight",
|
|
50739
|
-
"ChevronLeft",
|
|
50740
|
-
"ChevronUp",
|
|
50741
|
-
"ChevronDown",
|
|
50742
|
-
"ExternalLink",
|
|
50743
|
-
"Download",
|
|
50744
|
-
"Upload",
|
|
50745
|
-
"Mail",
|
|
50746
|
-
"Phone",
|
|
50747
|
-
"Play",
|
|
50748
|
-
"ShoppingCart",
|
|
50749
|
-
"Calendar",
|
|
50750
|
-
"MapPin",
|
|
50751
|
-
"Info",
|
|
50752
|
-
"Plus",
|
|
50753
|
-
"Minus",
|
|
50754
|
-
"Check",
|
|
50755
|
-
"X"
|
|
50756
|
-
];
|
|
50757
|
-
const CTA_ICON_COMPONENTS = {
|
|
50758
|
-
ArrowRight: ArrowRightIcon,
|
|
50759
|
-
ArrowLeft: ArrowLeftIcon,
|
|
50760
|
-
ChevronRight: ChevronRightIcon,
|
|
50761
|
-
ChevronLeft: ChevronLeftIcon,
|
|
50762
|
-
ChevronUp: ChevronUpIcon,
|
|
50763
|
-
ChevronDown: ChevronDownIcon,
|
|
50764
|
-
ExternalLink: ExternalLinkIcon,
|
|
50765
|
-
Download: DownloadIcon,
|
|
50766
|
-
Upload: UploadIcon,
|
|
50767
|
-
Mail: MailIcon,
|
|
50768
|
-
Phone: PhoneIcon,
|
|
50769
|
-
Play: PlayIcon,
|
|
50770
|
-
ShoppingCart: ShoppingCartIcon,
|
|
50771
|
-
Calendar: CalendarIcon$1,
|
|
50772
|
-
MapPin: MapPinIcon$1,
|
|
50773
|
-
Info: InfoIcon,
|
|
50774
|
-
Plus: PlusIcon,
|
|
50775
|
-
Minus: MinusIcon,
|
|
50776
|
-
Check: CheckIcon$1,
|
|
50777
|
-
X: XIcon
|
|
50778
|
-
};
|
|
50779
|
-
function isCtaIconName(value) {
|
|
50780
|
-
return typeof value === "string" && CTA_ICON_NAMES.includes(value);
|
|
50781
|
-
}
|
|
50782
|
-
function formatLucideName(name) {
|
|
50783
|
-
return name.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
|
|
50784
|
-
}
|
|
50785
|
-
const CTA_ICON_OPTIONS = CTA_ICON_NAMES.map((id) => ({
|
|
50786
|
-
id,
|
|
50787
|
-
label: formatLucideName(id)
|
|
50788
|
-
}));
|
|
50789
|
-
function getCtaIconComponent(name) {
|
|
50790
|
-
if (!isCtaIconName(name)) return null;
|
|
50791
|
-
return CTA_ICON_COMPONENTS[name] ?? null;
|
|
50792
|
-
}
|
|
50793
|
-
//#endregion
|
|
50794
|
-
//#region ../blocks/src/system/icons/registry.ts
|
|
50795
|
-
init_presets$1();
|
|
50796
|
-
function buildSearchText(parts) {
|
|
50797
|
-
return parts.map((part) => part.trim()).filter(Boolean).join(" ");
|
|
50798
|
-
}
|
|
50799
|
-
function semanticDefinitionToOption(definition, preset) {
|
|
50800
|
-
return {
|
|
50801
|
-
id: definition.id,
|
|
50802
|
-
label: definition.label,
|
|
50803
|
-
searchText: buildSearchText([
|
|
50804
|
-
definition.label,
|
|
50805
|
-
definition.id,
|
|
50806
|
-
...definition.tags,
|
|
50807
|
-
...definition.domains,
|
|
50808
|
-
...definition.tone
|
|
50809
|
-
]),
|
|
50810
|
-
preset
|
|
50811
|
-
};
|
|
50812
|
-
}
|
|
50813
|
-
CTA_ICON_OPTIONS.map((option) => ({
|
|
50814
|
-
id: option.id,
|
|
50815
|
-
label: option.label,
|
|
50816
|
-
searchText: buildSearchText([option.label, option.id]),
|
|
50817
|
-
preset: "cta"
|
|
50818
|
-
}));
|
|
50819
|
-
function semanticOptionsForPreset(preset) {
|
|
50820
|
-
return SEMANTIC_ICON_DEFINITIONS.filter((definition) => definition.presets.includes(preset)).map((definition) => semanticDefinitionToOption(definition, preset));
|
|
50821
|
-
}
|
|
50822
|
-
semanticOptionsForPreset("feature");
|
|
50823
|
-
function getIconComponent(name) {
|
|
50824
|
-
return getCtaIconComponent(name) ?? getSemanticIconComponent(name);
|
|
50825
|
-
}
|
|
50826
|
-
//#endregion
|
|
50827
51661
|
//#region ../blocks/src/system/runtime/nodes/icon.tsx
|
|
50828
51662
|
const IconNode = ({ value, title, className, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...rest }) => {
|
|
50829
51663
|
const parsedValue = parseBlockIconValue(value);
|
|
@@ -51545,6 +52379,78 @@ function SpinnerNode({ className, size = "md", color, strokeWidth = 3, srLabel,
|
|
|
51545
52379
|
var init_spinner = __esmMin((() => {
|
|
51546
52380
|
init_clsx();
|
|
51547
52381
|
}));
|
|
52382
|
+
//#endregion
|
|
52383
|
+
//#region ../blocks/src/system/runtime/nodes/svg.tsx
|
|
52384
|
+
init_spinner();
|
|
52385
|
+
/**
|
|
52386
|
+
* Turn paint props into a CSS style object. Colour values pass through as-is so
|
|
52387
|
+
* they may reference theme tokens via `var()`, which only resolves in a CSS
|
|
52388
|
+
* property context (not in a bare presentation attribute).
|
|
52389
|
+
*/
|
|
52390
|
+
function paintStyle(shape) {
|
|
52391
|
+
const style = {};
|
|
52392
|
+
if (shape.fill !== void 0) style.fill = shape.fill;
|
|
52393
|
+
if (shape.stroke !== void 0) style.stroke = shape.stroke;
|
|
52394
|
+
if (shape.strokeWidth !== void 0) style.strokeWidth = shape.strokeWidth;
|
|
52395
|
+
if (shape.fillOpacity !== void 0) style.fillOpacity = shape.fillOpacity;
|
|
52396
|
+
if (shape.strokeOpacity !== void 0) style.strokeOpacity = shape.strokeOpacity;
|
|
52397
|
+
if (shape.strokeLinecap !== void 0) style.strokeLinecap = shape.strokeLinecap;
|
|
52398
|
+
if (shape.strokeLinejoin !== void 0) style.strokeLinejoin = shape.strokeLinejoin;
|
|
52399
|
+
if (shape.strokeDasharray !== void 0) style.strokeDasharray = shape.strokeDasharray;
|
|
52400
|
+
return style;
|
|
52401
|
+
}
|
|
52402
|
+
function renderShape(shape, key) {
|
|
52403
|
+
const style = paintStyle(shape);
|
|
52404
|
+
switch (shape.kind) {
|
|
52405
|
+
case "path": return /* @__PURE__ */ jsx("path", {
|
|
52406
|
+
d: shape.d,
|
|
52407
|
+
style
|
|
52408
|
+
}, key);
|
|
52409
|
+
case "ellipse": return /* @__PURE__ */ jsx("ellipse", {
|
|
52410
|
+
cx: shape.cx,
|
|
52411
|
+
cy: shape.cy,
|
|
52412
|
+
rx: shape.rx,
|
|
52413
|
+
ry: shape.ry,
|
|
52414
|
+
style
|
|
52415
|
+
}, key);
|
|
52416
|
+
case "circle": return /* @__PURE__ */ jsx("circle", {
|
|
52417
|
+
cx: shape.cx,
|
|
52418
|
+
cy: shape.cy,
|
|
52419
|
+
r: shape.r,
|
|
52420
|
+
style
|
|
52421
|
+
}, key);
|
|
52422
|
+
case "rect": return /* @__PURE__ */ jsx("rect", {
|
|
52423
|
+
x: shape.x,
|
|
52424
|
+
y: shape.y,
|
|
52425
|
+
width: shape.width,
|
|
52426
|
+
height: shape.height,
|
|
52427
|
+
rx: shape.rx,
|
|
52428
|
+
ry: shape.ry,
|
|
52429
|
+
style
|
|
52430
|
+
}, key);
|
|
52431
|
+
case "line": return /* @__PURE__ */ jsx("line", {
|
|
52432
|
+
x1: shape.x1,
|
|
52433
|
+
y1: shape.y1,
|
|
52434
|
+
x2: shape.x2,
|
|
52435
|
+
y2: shape.y2,
|
|
52436
|
+
style
|
|
52437
|
+
}, key);
|
|
52438
|
+
default: return null;
|
|
52439
|
+
}
|
|
52440
|
+
}
|
|
52441
|
+
const SvgNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, viewBox, width, height, className, style, ariaHidden = true, shapes }) => {
|
|
52442
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
52443
|
+
viewBox,
|
|
52444
|
+
width,
|
|
52445
|
+
height,
|
|
52446
|
+
className,
|
|
52447
|
+
style,
|
|
52448
|
+
"aria-hidden": ariaHidden,
|
|
52449
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
52450
|
+
fill: "none",
|
|
52451
|
+
children: (Array.isArray(shapes) ? shapes : []).map((shape, index) => renderShape(shape, index))
|
|
52452
|
+
});
|
|
52453
|
+
};
|
|
51548
52454
|
function clearWorkflowFeedback(state) {
|
|
51549
52455
|
return {
|
|
51550
52456
|
...state,
|
|
@@ -54842,7 +55748,6 @@ var init_booking_form_interactive = __esmMin((() => {
|
|
|
54842
55748
|
}));
|
|
54843
55749
|
//#endregion
|
|
54844
55750
|
//#region ../blocks/src/system/runtime/nodes/booking-form.server.tsx
|
|
54845
|
-
init_spinner();
|
|
54846
55751
|
init_booking_form_interactive();
|
|
54847
55752
|
/**
|
|
54848
55753
|
* Server-safe placeholder for booking form.
|
|
@@ -57332,6 +58237,153 @@ var init_WeekAgendaView = __esmMin((() => {
|
|
|
57332
58237
|
};
|
|
57333
58238
|
}));
|
|
57334
58239
|
//#endregion
|
|
58240
|
+
//#region ../blocks/src/system/runtime/nodes/events/shared/WeekBoardView.tsx
|
|
58241
|
+
/**
|
|
58242
|
+
* Format an event's start–end as a compact range, merging the shared meridiem.
|
|
58243
|
+
* "6:00 PM" + "7:00 PM" -> "6:00 – 7:00 PM"; "9:30 AM" + "10:15 AM" -> "9:30 – 10:15 AM".
|
|
58244
|
+
*/
|
|
58245
|
+
function formatCompactTimeRange(event) {
|
|
58246
|
+
const timeZone = event.timeZone ?? null;
|
|
58247
|
+
const start = formatTime$3(event.startsAt, { timeZone });
|
|
58248
|
+
const end = formatTime$3(event.endsAt, { timeZone });
|
|
58249
|
+
const startMeridiem = start.slice(-2);
|
|
58250
|
+
const endMeridiem = end.slice(-2);
|
|
58251
|
+
if ((startMeridiem === "AM" || startMeridiem === "PM") && startMeridiem === endMeridiem) return `${start.slice(0, -3).trim()} – ${end}`;
|
|
58252
|
+
return `${start} – ${end}`;
|
|
58253
|
+
}
|
|
58254
|
+
var SHORT_DAY_NAMES, LEGEND_ITEMS, WeekBoardCard, WeekBoardView;
|
|
58255
|
+
var init_WeekBoardView = __esmMin((() => {
|
|
58256
|
+
init_clsx();
|
|
58257
|
+
init_buttons();
|
|
58258
|
+
init_eventCapacity();
|
|
58259
|
+
init_utils$3();
|
|
58260
|
+
SHORT_DAY_NAMES = [
|
|
58261
|
+
"Sun",
|
|
58262
|
+
"Mon",
|
|
58263
|
+
"Tue",
|
|
58264
|
+
"Wed",
|
|
58265
|
+
"Thu",
|
|
58266
|
+
"Fri",
|
|
58267
|
+
"Sat"
|
|
58268
|
+
];
|
|
58269
|
+
LEGEND_ITEMS = [
|
|
58270
|
+
{
|
|
58271
|
+
status: "available",
|
|
58272
|
+
label: "Places available"
|
|
58273
|
+
},
|
|
58274
|
+
{
|
|
58275
|
+
status: "filling",
|
|
58276
|
+
label: "Filling up"
|
|
58277
|
+
},
|
|
58278
|
+
{
|
|
58279
|
+
status: "waitlist",
|
|
58280
|
+
label: "Waitlist"
|
|
58281
|
+
}
|
|
58282
|
+
];
|
|
58283
|
+
WeekBoardCard = ({ event, showCapacity }) => {
|
|
58284
|
+
const linkProps = resolveEventLinkProps(event);
|
|
58285
|
+
const { status, label } = getEventAvailabilityStatus(event);
|
|
58286
|
+
const pill = showCapacity ? label : null;
|
|
58287
|
+
return /* @__PURE__ */ jsxs("a", {
|
|
58288
|
+
...linkProps,
|
|
58289
|
+
className: "event-week-board-card",
|
|
58290
|
+
"data-status": status,
|
|
58291
|
+
children: [
|
|
58292
|
+
/* @__PURE__ */ jsx("span", {
|
|
58293
|
+
className: "event-week-board-card-title",
|
|
58294
|
+
children: event.title
|
|
58295
|
+
}),
|
|
58296
|
+
/* @__PURE__ */ jsx("span", {
|
|
58297
|
+
className: "event-week-board-card-time",
|
|
58298
|
+
children: formatCompactTimeRange(event)
|
|
58299
|
+
}),
|
|
58300
|
+
pill ? /* @__PURE__ */ jsx("span", {
|
|
58301
|
+
className: "event-week-board-card-pill",
|
|
58302
|
+
"data-status": status,
|
|
58303
|
+
children: pill
|
|
58304
|
+
}) : null
|
|
58305
|
+
]
|
|
58306
|
+
});
|
|
58307
|
+
};
|
|
58308
|
+
WeekBoardView = ({ days, events, showCapacity, emptyMessage = "No classes scheduled this week", title = "The week ahead", footerNote = "New to a class? We'll check it's right for you first.", ctaLabel = "Reserve a place", ctaHref = null, buttonVariant = "outline" }) => {
|
|
58309
|
+
const eventsByDate = groupEventsByDate(events);
|
|
58310
|
+
const hasAnyEvents = days.some((date) => (eventsByDate.get(formatDateKey(date)) ?? []).length > 0);
|
|
58311
|
+
const ctaClassName = themeButtonClassName({
|
|
58312
|
+
variant: buttonVariant,
|
|
58313
|
+
size: "sm"
|
|
58314
|
+
});
|
|
58315
|
+
return /* @__PURE__ */ jsx("div", {
|
|
58316
|
+
className: "event-calendar event-calendar--week-board",
|
|
58317
|
+
"data-block": "event-calendar",
|
|
58318
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
58319
|
+
className: "event-week-board",
|
|
58320
|
+
style: { "--event-week-board-cols": String(days.length) },
|
|
58321
|
+
children: [
|
|
58322
|
+
/* @__PURE__ */ jsxs("div", {
|
|
58323
|
+
className: "event-week-board-top",
|
|
58324
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
58325
|
+
className: "event-week-board-title",
|
|
58326
|
+
children: title
|
|
58327
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
58328
|
+
className: "event-week-board-legend",
|
|
58329
|
+
"aria-hidden": "true",
|
|
58330
|
+
children: LEGEND_ITEMS.map((item) => /* @__PURE__ */ jsxs("span", {
|
|
58331
|
+
className: "event-week-board-legend-item",
|
|
58332
|
+
children: [/* @__PURE__ */ jsx("i", {
|
|
58333
|
+
className: "event-week-board-legend-dot",
|
|
58334
|
+
"data-status": item.status
|
|
58335
|
+
}), item.label]
|
|
58336
|
+
}, item.status))
|
|
58337
|
+
})]
|
|
58338
|
+
}),
|
|
58339
|
+
/* @__PURE__ */ jsx("div", {
|
|
58340
|
+
className: "event-week-board-grid",
|
|
58341
|
+
children: days.map((date) => {
|
|
58342
|
+
const dateKey = formatDateKey(date);
|
|
58343
|
+
const dayEvents = eventsByDate.get(dateKey) ?? [];
|
|
58344
|
+
const today = isToday(date);
|
|
58345
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
58346
|
+
className: clsx("event-week-board-day", dayEvents.length === 0 && "event-week-board-day--empty", today && "event-week-board-day--today"),
|
|
58347
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
58348
|
+
className: "event-week-board-day-head",
|
|
58349
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
58350
|
+
className: "event-week-board-day-abbr",
|
|
58351
|
+
children: SHORT_DAY_NAMES[date.getDay()]
|
|
58352
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
58353
|
+
className: "event-week-board-day-num",
|
|
58354
|
+
children: date.getDate()
|
|
58355
|
+
})]
|
|
58356
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
58357
|
+
className: "event-week-board-day-body",
|
|
58358
|
+
children: dayEvents.map((event) => /* @__PURE__ */ jsx(WeekBoardCard, {
|
|
58359
|
+
event,
|
|
58360
|
+
showCapacity
|
|
58361
|
+
}, event.occurrenceId || event.id))
|
|
58362
|
+
})]
|
|
58363
|
+
}, dateKey);
|
|
58364
|
+
})
|
|
58365
|
+
}),
|
|
58366
|
+
/* @__PURE__ */ jsxs("div", {
|
|
58367
|
+
className: "event-week-board-foot",
|
|
58368
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
58369
|
+
className: "event-week-board-foot-note",
|
|
58370
|
+
children: hasAnyEvents ? footerNote : emptyMessage
|
|
58371
|
+
}), ctaHref ? /* @__PURE__ */ jsx("a", {
|
|
58372
|
+
className: ctaClassName,
|
|
58373
|
+
href: ctaHref,
|
|
58374
|
+
children: ctaLabel
|
|
58375
|
+
}) : /* @__PURE__ */ jsx("button", {
|
|
58376
|
+
type: "button",
|
|
58377
|
+
className: ctaClassName,
|
|
58378
|
+
children: ctaLabel
|
|
58379
|
+
})]
|
|
58380
|
+
})
|
|
58381
|
+
]
|
|
58382
|
+
})
|
|
58383
|
+
});
|
|
58384
|
+
};
|
|
58385
|
+
}));
|
|
58386
|
+
//#endregion
|
|
57335
58387
|
//#region ../blocks/src/system/runtime/nodes/events/shared/timetableModel.ts
|
|
57336
58388
|
function buildTimetableModel(input) {
|
|
57337
58389
|
const generic = buildTimetableModel$1({
|
|
@@ -57426,6 +58478,7 @@ init_clsx();
|
|
|
57426
58478
|
init_EventListing_view();
|
|
57427
58479
|
init_EventCalendar_interactive();
|
|
57428
58480
|
init_WeekAgendaView();
|
|
58481
|
+
init_WeekBoardView();
|
|
57429
58482
|
init_utils$3();
|
|
57430
58483
|
init_timetableModel();
|
|
57431
58484
|
init_buttons();
|
|
@@ -57770,6 +58823,17 @@ function renderTimetableSsr(display) {
|
|
|
57770
58823
|
})]
|
|
57771
58824
|
});
|
|
57772
58825
|
}
|
|
58826
|
+
function renderWeekBoardSsr(display) {
|
|
58827
|
+
const days = getWeekCalendarDayTuple(/* @__PURE__ */ new Date(), display.startOfWeek);
|
|
58828
|
+
return /* @__PURE__ */ jsx(WeekBoardView, {
|
|
58829
|
+
days,
|
|
58830
|
+
events: [...display.events],
|
|
58831
|
+
showCapacity: display.showCapacity,
|
|
58832
|
+
emptyMessage: display.emptyMessage,
|
|
58833
|
+
ctaLabel: display.buttonText,
|
|
58834
|
+
buttonVariant: display.buttonVariant
|
|
58835
|
+
});
|
|
58836
|
+
}
|
|
57773
58837
|
function formatHourLabel$1(hour) {
|
|
57774
58838
|
if (hour === 0) return "12 AM";
|
|
57775
58839
|
if (hour === 12) return "12 PM";
|
|
@@ -57796,6 +58860,9 @@ const EventCalendarSSR = (props) => {
|
|
|
57796
58860
|
case "timetable":
|
|
57797
58861
|
content = renderTimetableSsr(display);
|
|
57798
58862
|
break;
|
|
58863
|
+
case "week-board":
|
|
58864
|
+
content = renderWeekBoardSsr(display);
|
|
58865
|
+
break;
|
|
57799
58866
|
case "calendar":
|
|
57800
58867
|
content = renderCalendarSsr(display);
|
|
57801
58868
|
break;
|
|
@@ -58390,6 +59457,7 @@ init_media_server();
|
|
|
58390
59457
|
const serverComponentRegistry = {
|
|
58391
59458
|
div: DivNode,
|
|
58392
59459
|
figure: FigureNode,
|
|
59460
|
+
svg: SvgNode,
|
|
58393
59461
|
section: SectionNode,
|
|
58394
59462
|
headerSection: header_section_server_default,
|
|
58395
59463
|
stack: StackNode,
|
|
@@ -59801,10 +60869,14 @@ init_node();
|
|
|
59801
60869
|
init_fragments();
|
|
59802
60870
|
init_defineBlock();
|
|
59803
60871
|
//#endregion
|
|
60872
|
+
//#region ../theme-core/src/styles/shadow.ts
|
|
60873
|
+
init_colorStyles();
|
|
60874
|
+
//#endregion
|
|
59804
60875
|
//#region ../theme-core/src/accordions/generateAccordionCss.ts
|
|
59805
60876
|
init_types$10();
|
|
59806
60877
|
init_constants$1();
|
|
59807
60878
|
init_colorStyles();
|
|
60879
|
+
init_surfaces();
|
|
59808
60880
|
//#endregion
|
|
59809
60881
|
//#region ../theme-core/src/inputs/generateInputCss.ts
|
|
59810
60882
|
init_types$9();
|
|
@@ -59849,10 +60921,10 @@ function svgDataUrl(svg) {
|
|
|
59849
60921
|
}
|
|
59850
60922
|
//#endregion
|
|
59851
60923
|
//#region ../theme-core/src/status/generateStatusCss.ts
|
|
59852
|
-
|
|
60924
|
+
init_surfaces();
|
|
59853
60925
|
//#endregion
|
|
59854
|
-
//#region ../theme-core/src/
|
|
59855
|
-
|
|
60926
|
+
//#region ../theme-core/src/typography/generateTypographyCss.ts
|
|
60927
|
+
init_surfaces();
|
|
59856
60928
|
//#endregion
|
|
59857
60929
|
//#region ../theme-core/src/blocks/vars/event-registration.ts
|
|
59858
60930
|
/**
|
|
@@ -60190,6 +61262,7 @@ const THEME_RADIUS_CSS_VARS = {
|
|
|
60190
61262
|
block: "--rb-block-radius",
|
|
60191
61263
|
button: "--rb-button-radius",
|
|
60192
61264
|
input: "--rb-input-radius",
|
|
61265
|
+
panel: "--rb-panel-radius",
|
|
60193
61266
|
legacyCard: "--radius-card",
|
|
60194
61267
|
legacyControl: "--radius-control"
|
|
60195
61268
|
};
|
|
@@ -60271,6 +61344,10 @@ ${`:where([data-theme-scope="${themeId}"]) :where([data-block="customer-portal"]
|
|
|
60271
61344
|
/* Modal (shared rb-modal classes) */
|
|
60272
61345
|
--rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.35);
|
|
60273
61346
|
--rb-modal-bg: var(--cp-card-bg);
|
|
61347
|
+
--rb-modal-text: var(--cp-text);
|
|
61348
|
+
--rb-modal-heading: var(--cp-text);
|
|
61349
|
+
--rb-modal-link: var(--cp-primary);
|
|
61350
|
+
--rb-modal-supporting: var(--cp-muted);
|
|
60274
61351
|
--rb-modal-border: var(--cp-card-border);
|
|
60275
61352
|
--rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
|
|
60276
61353
|
--rb-modal-radius: var(--cp-card-radius);
|
|
@@ -147339,7 +148416,7 @@ function buildDisplayFilterParams(display) {
|
|
|
147339
148416
|
filterVenueId: display.filterVenueId
|
|
147340
148417
|
});
|
|
147341
148418
|
}
|
|
147342
|
-
var EventCalendarClient, EventCalendarTimetableClient, EventCalendarGridClient, EventCalendarChrome;
|
|
148419
|
+
var EventCalendarClient, EventCalendarWeekBoardClient, EventCalendarTimetableClient, EventCalendarGridClient, EventCalendarChrome;
|
|
147343
148420
|
var init_EventCalendar_client = __esmMin((() => {
|
|
147344
148421
|
init_EventCalendar_interactive();
|
|
147345
148422
|
init_EventListing_client();
|
|
@@ -147352,6 +148429,7 @@ var init_EventCalendar_client = __esmMin((() => {
|
|
|
147352
148429
|
init_EventModalContext();
|
|
147353
148430
|
init_EventModals();
|
|
147354
148431
|
init_WeekAgendaView();
|
|
148432
|
+
init_WeekBoardView();
|
|
147355
148433
|
init_WeekTimetableView();
|
|
147356
148434
|
init_buttons();
|
|
147357
148435
|
init_listOptions();
|
|
@@ -147389,8 +148467,20 @@ var init_EventCalendar_client = __esmMin((() => {
|
|
|
147389
148467
|
});
|
|
147390
148468
|
if (display.displayMode === "list") return /* @__PURE__ */ jsx(EventListingController, { render: buildEventCalendarListingRender(render) });
|
|
147391
148469
|
if (display.displayMode === "timetable") return /* @__PURE__ */ jsx(EventCalendarTimetableClient, { render });
|
|
148470
|
+
if (display.displayMode === "week-board") return /* @__PURE__ */ jsx(EventCalendarWeekBoardClient, { display });
|
|
147392
148471
|
return /* @__PURE__ */ jsx(EventCalendarGridClient, { render });
|
|
147393
148472
|
};
|
|
148473
|
+
EventCalendarWeekBoardClient = ({ display }) => {
|
|
148474
|
+
const days = useMemo(() => getWeekCalendarDayTuple(/* @__PURE__ */ new Date(), display.startOfWeek), [display.startOfWeek]);
|
|
148475
|
+
return /* @__PURE__ */ jsx(WeekBoardView, {
|
|
148476
|
+
days,
|
|
148477
|
+
events: [...display.events],
|
|
148478
|
+
showCapacity: display.showCapacity,
|
|
148479
|
+
emptyMessage: display.emptyMessage,
|
|
148480
|
+
ctaLabel: display.buttonText,
|
|
148481
|
+
buttonVariant: display.buttonVariant
|
|
148482
|
+
});
|
|
148483
|
+
};
|
|
147394
148484
|
EventCalendarTimetableClient = ({ render }) => {
|
|
147395
148485
|
const { display, hydration } = render;
|
|
147396
148486
|
const { filtersNode, listFilters } = useEventCalendarFilterState(display);
|
|
@@ -151835,7 +152925,7 @@ var SimpleCache = class {
|
|
|
151835
152925
|
* 1. This constant
|
|
151836
152926
|
* 2. The "version" field in package.json
|
|
151837
152927
|
*/
|
|
151838
|
-
const SDK_VERSION = "0.104.
|
|
152928
|
+
const SDK_VERSION = "0.104.3";
|
|
151839
152929
|
//#endregion
|
|
151840
152930
|
//#region src/client/error.ts
|
|
151841
152931
|
/**
|