@riverbankcms/sdk 0.82.0 → 0.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/{PreviewEditorSidebar-LHGK6RIO.mjs → PreviewEditorSidebar-HML67UDA.mjs} +330 -11
- package/dist/{PreviewEditorUI-AXZG2SDC.mjs → PreviewEditorUI-I4BQUU6K.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-MCKMVDTK.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +200 -0
- package/dist/_dts/api/src/blocks.d.ts +36 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +46 -0
- package/dist/_dts/api/src/endpoints.d.ts +40 -0
- package/dist/_dts/api/src/index.d.ts +2 -2
- package/dist/_dts/api/src/sdk-event-pricing.d.ts +61 -0
- package/dist/_dts/api/src/sdk-event-schedule.d.ts +52 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +50 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +67 -33
- package/dist/_dts/api/src/shared-contracts.d.ts +13 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +22 -36
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +46 -1
- package/dist/_dts/block-form/src/backend/useBackendWatch.d.ts +6 -1
- package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +3 -2
- package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +7 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +11 -0
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +4 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +171 -0
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/hero.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -7
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +2534 -151
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -2016
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +36 -3
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
- package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
- package/dist/_dts/blocks/src/system/fields/aspectRatio.d.ts +4 -1
- package/dist/_dts/blocks/src/system/fields/imageShape.d.ts +30 -0
- package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +25 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +35 -161
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +33 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.d.ts +303 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +20 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +26 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/useInvalidBlockRecovery.d.ts +1 -1
- package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +2 -1
- package/dist/_dts/content-editor/src/primitives/PreviewTextEditor.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/types.d.ts +356 -0
- package/dist/_dts/content-model/src/index.d.ts +1 -0
- package/dist/_dts/content-model/src/templates/defaults.d.ts +7 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +100 -5
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +6 -1
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +27 -0
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +8 -0
- package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +37 -3
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +19 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +8 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/linkedEntryEditEvents.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeControls.d.ts +9 -8
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +10 -1
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +5 -1
- package/dist/_dts/sdk/src/bookings/index.d.ts +5 -4
- package/dist/_dts/sdk/src/bookings/types.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +9 -8
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -1
- package/dist/_dts/sdk/src/cli/helpers.d.ts +10 -5
- package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -2
- package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +40 -10
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +13 -7
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +26 -3
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +13 -0
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/overrides.d.ts +6 -1
- package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +15 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
- package/dist/_dts/theme-core/src/buttons/personalities/ornate-ritual.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/cards/types.d.ts +15 -15
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/inputs/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +33 -33
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/variants/warm-dark.d.ts +16 -0
- package/dist/_dts/theme-core/src/schema.d.ts +30 -25
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +141 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +110 -5
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -1
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
- package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +1 -0
- package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +6 -6
- package/dist/{chunk-2BUMISSH.mjs → chunk-3LXFQS7T.mjs} +1 -1
- package/dist/{chunk-G35HOQEN.mjs → chunk-5E33VO6J.mjs} +132 -46
- package/dist/{chunk-HKB6XVIP.mjs → chunk-6X2OVO3S.mjs} +2 -2
- package/dist/{chunk-6FWNF3DJ.mjs → chunk-HFMGVJCE.mjs} +158 -20
- package/dist/{chunk-FIREV57T.mjs → chunk-LBBPD2IW.mjs} +40 -0
- package/dist/{chunk-XQR6THQJ.mjs → chunk-MSHZO4SL.mjs} +3193 -1216
- package/dist/cli/index.mjs +2635 -575
- package/dist/cli/init-docs/content/getting-started.md +2 -0
- package/dist/cli/init-docs/content/workflow-templates.md +93 -2
- package/dist/client/{accordion-G34C45TW.mjs → accordion-ESY65T56.mjs} +2 -2
- package/dist/client/{bookingForm-BLBVKSAQ.mjs → bookingForm-JRFNZUHD.mjs} +5 -5
- package/dist/client/bookings.mjs +3539 -269
- package/dist/client/{carousel-7ZVTBRMD.mjs → carousel-CPR5VWIP.mjs} +3 -3
- package/dist/client/{cart-Q6S6LZUO.mjs → cart-ZUX5BA7O.mjs} +6 -6
- package/dist/client/{checkout-5QJLDE4I.mjs → checkout-RULGBADZ.mjs} +6 -6
- package/dist/client/{chunk-CHAB5ACD.mjs → chunk-52I7BGEK.mjs} +2 -2
- package/dist/client/{chunk-CSZGLBYR.mjs → chunk-5ZEAZ33K.mjs} +1 -1
- package/dist/client/{chunk-ZF4XEWDM.mjs → chunk-BT6AEIKN.mjs} +1 -1
- package/dist/client/{chunk-RJHTCTCZ.mjs → chunk-HXPWP5EN.mjs} +268 -15
- package/dist/client/{chunk-5PQH4Y75.mjs → chunk-JWEYB4V6.mjs} +2 -2
- package/dist/client/{chunk-EQKYMX4N.mjs → chunk-RDJFCPY3.mjs} +158 -51
- package/dist/client/{chunk-SBBSMFFG.mjs → chunk-SYIJ5JO2.mjs} +1 -1
- package/dist/client/{chunk-WJFHDTYF.mjs → chunk-URQCZD5W.mjs} +5 -5
- package/dist/client/{chunk-U2EW7RSR.mjs → chunk-Z5OBQ5I4.mjs} +1 -1
- package/dist/client/{chunk-S3MKFGOG.mjs → chunk-ZE5G642V.mjs} +1 -1
- package/dist/client/client.mjs +2391 -673
- package/dist/client/{courseRegistration-VUG2JJDB.mjs → courseRegistration-QTUDC35T.mjs} +5 -5
- package/dist/client/{eventCalendar-E7D2LD4N.mjs → eventCalendar-Q7NS4XLD.mjs} +7 -7
- package/dist/client/{eventCombined-FUZ2Z3CS.mjs → eventCombined-QAO7VUO5.mjs} +7 -7
- package/dist/client/{eventDetails-QRITJAOW.mjs → eventDetails-WTNNU6Q3.mjs} +7 -7
- package/dist/client/{eventListing-INMQMJZ5.mjs → eventListing-5TA2ELDT.mjs} +7 -7
- package/dist/client/{eventRegistration-TOOJD4WU.mjs → eventRegistration-M6USZGRF.mjs} +7 -7
- package/dist/client/{form-BOWN7ZNQ.mjs → form-DGVGXLMH.mjs} +2 -2
- package/dist/client/{headerSection-HFQNZOUU.mjs → headerSection-O2AGMPCU.mjs} +3 -3
- package/dist/client/hooks.mjs +1636 -385
- package/dist/client/{locationMap-VUZGC7Y5.mjs → locationMap-EJRNRIKJ.mjs} +2 -2
- package/dist/client/{newsletterForm-X2XQTPCB.mjs → newsletterForm-7NTC2DTR.mjs} +2 -2
- package/dist/client/{productDetail-TA7D2G2B.mjs → productDetail-HH4LP53D.mjs} +6 -6
- package/dist/client/{productList-AZOLOZKM.mjs → productList-YVHYM2AF.mjs} +6 -6
- package/dist/client/rendering/client.mjs +2303 -1068
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2587 -796
- package/dist/client/{shop-ZDLO7IIG.mjs → shop-UIFX7XRK.mjs} +6 -6
- package/dist/preview-next/before-render.mjs +40 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +40 -0
- package/dist/{sdk-runtime-CTWKNBDQ.mjs → sdk-runtime-ZENAOYMN.mjs} +6 -6
- package/dist/server/components.mjs +2028 -457
- package/dist/server/config-validation.mjs +1629 -377
- package/dist/server/config.mjs +1629 -377
- package/dist/server/data.mjs +1636 -385
- package/dist/server/index.mjs +42 -1
- package/dist/server/next.mjs +2215 -571
- package/dist/server/page-converter.mjs +2068 -884
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2040 -469
- package/dist/server/rendering.mjs +2119 -475
- package/dist/server/routing.mjs +1711 -419
- package/dist/server/server.mjs +1718 -394
- package/dist/server/theme-bridge.mjs +1180 -101
- package/dist/server/theme.mjs +92 -1
- package/dist/styles/index.css +292 -36
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-RNVRHFFR.mjs +0 -8
package/dist/cli/index.mjs
CHANGED
|
@@ -1279,7 +1279,7 @@ function createSdkSelectField(input) {
|
|
|
1279
1279
|
})
|
|
1280
1280
|
);
|
|
1281
1281
|
}
|
|
1282
|
-
var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum;
|
|
1282
|
+
var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, visibleWhenPredicateSchema, visibleWhenSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum;
|
|
1283
1283
|
var init_schema2 = __esm({
|
|
1284
1284
|
"../blocks/src/system/manifest/schema.ts"() {
|
|
1285
1285
|
init_src2();
|
|
@@ -1337,6 +1337,21 @@ var init_schema2 = __esm({
|
|
|
1337
1337
|
kind: z.literal("sdk")
|
|
1338
1338
|
})
|
|
1339
1339
|
]);
|
|
1340
|
+
visibleWhenPredicateSchema = z.object({
|
|
1341
|
+
field: z.string().min(1),
|
|
1342
|
+
equals: z.any().optional(),
|
|
1343
|
+
notEquals: z.any().optional(),
|
|
1344
|
+
oneOf: z.array(z.any()).optional(),
|
|
1345
|
+
notIn: z.array(z.any()).optional(),
|
|
1346
|
+
minItems: z.number().int().nonnegative().optional(),
|
|
1347
|
+
maxItems: z.number().int().nonnegative().optional()
|
|
1348
|
+
});
|
|
1349
|
+
visibleWhenSchema = z.union([
|
|
1350
|
+
visibleWhenPredicateSchema,
|
|
1351
|
+
z.object({
|
|
1352
|
+
allOf: z.array(visibleWhenPredicateSchema).min(1)
|
|
1353
|
+
})
|
|
1354
|
+
]);
|
|
1340
1355
|
uiSchema = z.object({
|
|
1341
1356
|
widget: z.string().optional(),
|
|
1342
1357
|
// Container/widget presets (used by Group/Repeater widgets themselves, not for widget selection)
|
|
@@ -1369,13 +1384,7 @@ var init_schema2 = __esm({
|
|
|
1369
1384
|
showValue: z.boolean().optional(),
|
|
1370
1385
|
pattern: z.string().optional(),
|
|
1371
1386
|
placeholder: z.string().optional(),
|
|
1372
|
-
visibleWhen:
|
|
1373
|
-
field: z.string().min(1),
|
|
1374
|
-
equals: z.any().optional(),
|
|
1375
|
-
notEquals: z.any().optional(),
|
|
1376
|
-
oneOf: z.array(z.any()).optional(),
|
|
1377
|
-
notIn: z.array(z.any()).optional()
|
|
1378
|
-
}).optional(),
|
|
1387
|
+
visibleWhen: visibleWhenSchema.optional(),
|
|
1379
1388
|
// Modal configuration for modal and group fields
|
|
1380
1389
|
modalConfig: z.object({
|
|
1381
1390
|
buttonLabel: z.string().optional(),
|
|
@@ -2106,6 +2115,7 @@ var init_types2 = __esm({
|
|
|
2106
2115
|
];
|
|
2107
2116
|
eyebrowTreatmentValues = [
|
|
2108
2117
|
"plain",
|
|
2118
|
+
"accent",
|
|
2109
2119
|
"pill",
|
|
2110
2120
|
"accent-pill",
|
|
2111
2121
|
"pill-bounce",
|
|
@@ -5735,6 +5745,101 @@ var init_joy_stamp = __esm({
|
|
|
5735
5745
|
}
|
|
5736
5746
|
});
|
|
5737
5747
|
|
|
5748
|
+
// ../theme-core/src/buttons/personalities/ornate-ritual.ts
|
|
5749
|
+
var ornateRitual;
|
|
5750
|
+
var init_ornate_ritual = __esm({
|
|
5751
|
+
"../theme-core/src/buttons/personalities/ornate-ritual.ts"() {
|
|
5752
|
+
init_types5();
|
|
5753
|
+
ornateRitual = defineButtonPersonality({
|
|
5754
|
+
id: "ornate-ritual",
|
|
5755
|
+
name: "Ornate Ritual",
|
|
5756
|
+
description: "Ceremonial framed buttons with jewel-toned fills and quiet color-change hover states.",
|
|
5757
|
+
tags: { tone: "classic", energy: "vibrant", motion: "subtle", era: "organic" },
|
|
5758
|
+
buttonSystem: {
|
|
5759
|
+
global: {
|
|
5760
|
+
cornerStyle: "rounded",
|
|
5761
|
+
shadow: "none",
|
|
5762
|
+
textTransform: "uppercase",
|
|
5763
|
+
fontWeight: 600,
|
|
5764
|
+
borderWidth: 1,
|
|
5765
|
+
hoverTransform: "none",
|
|
5766
|
+
hoverColor: "none",
|
|
5767
|
+
letterSpacing: "loose"
|
|
5768
|
+
},
|
|
5769
|
+
sizes: {
|
|
5770
|
+
sm: { padding: "0.5625rem 1.25rem", fontSize: "text-xs" },
|
|
5771
|
+
md: { padding: "0.75rem 1.75rem", fontSize: "text-xs" },
|
|
5772
|
+
lg: { padding: "0.875rem 2.25rem", fontSize: "text-sm" },
|
|
5773
|
+
xl: { padding: "1rem 2.75rem", fontSize: "text-base" }
|
|
5774
|
+
},
|
|
5775
|
+
variants: [
|
|
5776
|
+
{
|
|
5777
|
+
id: "primary",
|
|
5778
|
+
name: "Primary",
|
|
5779
|
+
enabled: true,
|
|
5780
|
+
priority: 1,
|
|
5781
|
+
background: { type: "solid", colorToken: "primary" },
|
|
5782
|
+
textColorToken: "primaryForeground",
|
|
5783
|
+
borderRadius: "rounded-md",
|
|
5784
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
5785
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
5786
|
+
effects: {
|
|
5787
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "primary-100" } }],
|
|
5788
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
5789
|
+
}
|
|
5790
|
+
},
|
|
5791
|
+
{
|
|
5792
|
+
id: "secondary",
|
|
5793
|
+
name: "Secondary",
|
|
5794
|
+
enabled: true,
|
|
5795
|
+
priority: 2,
|
|
5796
|
+
background: { type: "solid", colorToken: "secondary" },
|
|
5797
|
+
textColorToken: "primaryForeground",
|
|
5798
|
+
borderRadius: "rounded-md",
|
|
5799
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
5800
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
5801
|
+
effects: {
|
|
5802
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
5803
|
+
}
|
|
5804
|
+
},
|
|
5805
|
+
{
|
|
5806
|
+
id: "outline",
|
|
5807
|
+
name: "Outline",
|
|
5808
|
+
enabled: true,
|
|
5809
|
+
priority: 3,
|
|
5810
|
+
background: { type: "transparent" },
|
|
5811
|
+
textColorToken: "primary",
|
|
5812
|
+
borderRadius: "rounded-md",
|
|
5813
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
5814
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
5815
|
+
effects: {
|
|
5816
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "muted" } }]
|
|
5817
|
+
}
|
|
5818
|
+
},
|
|
5819
|
+
{
|
|
5820
|
+
id: "ghost",
|
|
5821
|
+
name: "Ghost",
|
|
5822
|
+
enabled: true,
|
|
5823
|
+
priority: 3,
|
|
5824
|
+
background: { type: "transparent" },
|
|
5825
|
+
textColorToken: "accent",
|
|
5826
|
+
borderRadius: "rounded-none",
|
|
5827
|
+
sizes: {
|
|
5828
|
+
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
5829
|
+
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
5830
|
+
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
5831
|
+
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
5832
|
+
},
|
|
5833
|
+
effects: {
|
|
5834
|
+
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
5835
|
+
}
|
|
5836
|
+
}
|
|
5837
|
+
]
|
|
5838
|
+
}
|
|
5839
|
+
});
|
|
5840
|
+
}
|
|
5841
|
+
});
|
|
5842
|
+
|
|
5738
5843
|
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
5739
5844
|
var pebble;
|
|
5740
5845
|
var init_pebble = __esm({
|
|
@@ -6029,6 +6134,7 @@ var init_personalities = __esm({
|
|
|
6029
6134
|
init_editorial_link();
|
|
6030
6135
|
init_ink_stamp();
|
|
6031
6136
|
init_joy_stamp();
|
|
6137
|
+
init_ornate_ritual();
|
|
6032
6138
|
init_pebble();
|
|
6033
6139
|
init_showtime_pill();
|
|
6034
6140
|
init_soft_pill();
|
|
@@ -6042,7 +6148,8 @@ var init_personalities = __esm({
|
|
|
6042
6148
|
inkStamp,
|
|
6043
6149
|
brushedWash,
|
|
6044
6150
|
showtimePill,
|
|
6045
|
-
joyStamp
|
|
6151
|
+
joyStamp,
|
|
6152
|
+
ornateRitual
|
|
6046
6153
|
];
|
|
6047
6154
|
personalitiesById = new Map(
|
|
6048
6155
|
buttonPersonalities.map((p) => [p.id, p])
|
|
@@ -6776,7 +6883,7 @@ function rgbColorValue(token) {
|
|
|
6776
6883
|
if (alpha === void 0) {
|
|
6777
6884
|
return `rgb(var(${cssVar}))`;
|
|
6778
6885
|
}
|
|
6779
|
-
return `
|
|
6886
|
+
return `rgb(var(${cssVar}) / ${alpha})`;
|
|
6780
6887
|
}
|
|
6781
6888
|
function backgroundColorStyle(token) {
|
|
6782
6889
|
return { backgroundColor: rgbColorValue(token) };
|
|
@@ -7920,7 +8027,7 @@ var init_warm_neutral = __esm({
|
|
|
7920
8027
|
});
|
|
7921
8028
|
|
|
7922
8029
|
// ../theme-core/src/palette/variants/warm-dark.ts
|
|
7923
|
-
var warmDarkEmber;
|
|
8030
|
+
var warmDarkEmber, warmDarkKirtanGold;
|
|
7924
8031
|
var init_warm_dark = __esm({
|
|
7925
8032
|
"../theme-core/src/palette/variants/warm-dark.ts"() {
|
|
7926
8033
|
init_types12();
|
|
@@ -7946,6 +8053,28 @@ var init_warm_dark = __esm({
|
|
|
7946
8053
|
{ name: "border", hex: "#894e31" }
|
|
7947
8054
|
]
|
|
7948
8055
|
});
|
|
8056
|
+
warmDarkKirtanGold = definePaletteVariant({
|
|
8057
|
+
id: "warm-dark-kirtan-gold",
|
|
8058
|
+
name: "Warm Dark \u2014 Kirtan Gold",
|
|
8059
|
+
description: "Deep plum ground with pale gold primary, rose accent, and soft devotional text.",
|
|
8060
|
+
tags: { tone: "bold", energy: "calm", era: "editorial" },
|
|
8061
|
+
mode: "dark",
|
|
8062
|
+
colors: [
|
|
8063
|
+
{ name: "primary", hex: "#ffcdb2" },
|
|
8064
|
+
{ name: "secondary", hex: "#b5838d" },
|
|
8065
|
+
{ name: "accent", hex: "#e5989b" },
|
|
8066
|
+
{ name: "success", hex: "#8fbf8f" },
|
|
8067
|
+
{ name: "warning", hex: "#f2b86b" },
|
|
8068
|
+
{ name: "destructive", hex: "#d96b6b" },
|
|
8069
|
+
{ name: "background", hex: "#403944" },
|
|
8070
|
+
{ name: "surface", hex: "#403944" },
|
|
8071
|
+
{ name: "surfaceAlt", hex: "#372f3b" },
|
|
8072
|
+
{ name: "muted", hex: "#4d4550" },
|
|
8073
|
+
{ name: "text", hex: "#e6d2d5" },
|
|
8074
|
+
{ name: "primaryForeground", hex: "#403944" },
|
|
8075
|
+
{ name: "border", hex: "#8d747a" }
|
|
8076
|
+
]
|
|
8077
|
+
});
|
|
7949
8078
|
}
|
|
7950
8079
|
});
|
|
7951
8080
|
|
|
@@ -7983,7 +8112,8 @@ var init_variants = __esm({
|
|
|
7983
8112
|
softNaturalWatercolor,
|
|
7984
8113
|
softNaturalLilac,
|
|
7985
8114
|
// Warm-dark family (dark mode)
|
|
7986
|
-
warmDarkEmber
|
|
8115
|
+
warmDarkEmber,
|
|
8116
|
+
warmDarkKirtanGold
|
|
7987
8117
|
];
|
|
7988
8118
|
paletteVariantsById = new Map(
|
|
7989
8119
|
paletteVariants.map((v) => [v.id, v])
|
|
@@ -9596,8 +9726,69 @@ var init_headerLooks = __esm({
|
|
|
9596
9726
|
function asFooterLookId(value) {
|
|
9597
9727
|
return value;
|
|
9598
9728
|
}
|
|
9729
|
+
function asFooterLayoutId(value) {
|
|
9730
|
+
return value;
|
|
9731
|
+
}
|
|
9732
|
+
function asFooterStyleId(value) {
|
|
9733
|
+
return value;
|
|
9734
|
+
}
|
|
9735
|
+
function identityQuietFooter(theme) {
|
|
9736
|
+
return {
|
|
9737
|
+
...theme.footer,
|
|
9738
|
+
variant: "simple",
|
|
9739
|
+
maxWidth: "container",
|
|
9740
|
+
background: {
|
|
9741
|
+
type: "color",
|
|
9742
|
+
color: "surface"
|
|
9743
|
+
},
|
|
9744
|
+
navStyle: "minimal",
|
|
9745
|
+
navWeight: "regular",
|
|
9746
|
+
navColor: "text",
|
|
9747
|
+
navLinkStyle: {
|
|
9748
|
+
typography: "body",
|
|
9749
|
+
fontWeight: "regular",
|
|
9750
|
+
textTransform: "none",
|
|
9751
|
+
italic: false,
|
|
9752
|
+
colorToken: "text",
|
|
9753
|
+
hoverColorToken: "primary",
|
|
9754
|
+
padding: "none",
|
|
9755
|
+
borderRadius: "none"
|
|
9756
|
+
},
|
|
9757
|
+
navLayout: {
|
|
9758
|
+
layout: "inline-wrap",
|
|
9759
|
+
align: "start",
|
|
9760
|
+
gapX: "default",
|
|
9761
|
+
gapY: "tight"
|
|
9762
|
+
},
|
|
9763
|
+
logo: {
|
|
9764
|
+
showLogo: true,
|
|
9765
|
+
showLogoText: true,
|
|
9766
|
+
placement: "left",
|
|
9767
|
+
size: "sm",
|
|
9768
|
+
align: "start"
|
|
9769
|
+
},
|
|
9770
|
+
bottomBar: {
|
|
9771
|
+
enabled: false,
|
|
9772
|
+
fullBleed: false,
|
|
9773
|
+
textAlign: "left",
|
|
9774
|
+
paddingX: "default",
|
|
9775
|
+
paddingY: "compact",
|
|
9776
|
+
borderTop: {
|
|
9777
|
+
width: "none"
|
|
9778
|
+
}
|
|
9779
|
+
}
|
|
9780
|
+
};
|
|
9781
|
+
}
|
|
9599
9782
|
function mutedGroundingFooter(theme) {
|
|
9600
|
-
return
|
|
9783
|
+
return {
|
|
9784
|
+
...identityQuietFooter(theme),
|
|
9785
|
+
background: theme.footer.background,
|
|
9786
|
+
navStyle: theme.footer.navStyle,
|
|
9787
|
+
navColor: theme.footer.navColor,
|
|
9788
|
+
navWeight: theme.footer.navWeight,
|
|
9789
|
+
navLinkStyle: theme.footer.navLinkStyle,
|
|
9790
|
+
bottomTextLinkStyle: theme.footer.bottomTextLinkStyle
|
|
9791
|
+
};
|
|
9601
9792
|
}
|
|
9602
9793
|
function brandTwoBandFooter(theme) {
|
|
9603
9794
|
return {
|
|
@@ -9702,6 +9893,53 @@ function centeredCalmFooter(theme) {
|
|
|
9702
9893
|
}
|
|
9703
9894
|
};
|
|
9704
9895
|
}
|
|
9896
|
+
function splitEditorialFooter(theme) {
|
|
9897
|
+
return {
|
|
9898
|
+
...theme.footer,
|
|
9899
|
+
variant: "split",
|
|
9900
|
+
maxWidth: "container",
|
|
9901
|
+
background: {
|
|
9902
|
+
type: "color",
|
|
9903
|
+
color: "surface"
|
|
9904
|
+
},
|
|
9905
|
+
navStyle: "minimal",
|
|
9906
|
+
navWeight: "regular",
|
|
9907
|
+
navColor: "text",
|
|
9908
|
+
navLinkStyle: {
|
|
9909
|
+
typography: "body",
|
|
9910
|
+
fontWeight: "regular",
|
|
9911
|
+
textTransform: "none",
|
|
9912
|
+
italic: false,
|
|
9913
|
+
colorToken: "text",
|
|
9914
|
+
hoverColorToken: "primary",
|
|
9915
|
+
padding: "none",
|
|
9916
|
+
borderRadius: "none"
|
|
9917
|
+
},
|
|
9918
|
+
navLayout: {
|
|
9919
|
+
layout: "inline-wrap",
|
|
9920
|
+
align: "start",
|
|
9921
|
+
gapX: "relaxed",
|
|
9922
|
+
gapY: "tight"
|
|
9923
|
+
},
|
|
9924
|
+
logo: {
|
|
9925
|
+
showLogo: true,
|
|
9926
|
+
showLogoText: true,
|
|
9927
|
+
placement: "right",
|
|
9928
|
+
size: "sm",
|
|
9929
|
+
align: "end"
|
|
9930
|
+
},
|
|
9931
|
+
bottomBar: {
|
|
9932
|
+
enabled: true,
|
|
9933
|
+
fullBleed: false,
|
|
9934
|
+
textAlign: "left",
|
|
9935
|
+
paddingX: "default",
|
|
9936
|
+
paddingY: "compact",
|
|
9937
|
+
borderTop: {
|
|
9938
|
+
width: "thin"
|
|
9939
|
+
}
|
|
9940
|
+
}
|
|
9941
|
+
};
|
|
9942
|
+
}
|
|
9705
9943
|
function editorialColumnsFooter(theme) {
|
|
9706
9944
|
return {
|
|
9707
9945
|
...theme.footer,
|
|
@@ -9746,31 +9984,108 @@ function editorialColumnsFooter(theme) {
|
|
|
9746
9984
|
function findFooterLook(id) {
|
|
9747
9985
|
return footerLooksById.get(id);
|
|
9748
9986
|
}
|
|
9749
|
-
var footerLookCatalog, footerLooksById;
|
|
9987
|
+
var footerLayoutCatalog, footerStyleCatalog, footerLookCatalog, footerLooksById;
|
|
9750
9988
|
var init_footerLooks = __esm({
|
|
9751
9989
|
"../theme-core/src/site-styles/footerLooks.ts"() {
|
|
9752
9990
|
init_customizableSurfaces();
|
|
9753
9991
|
init_types2();
|
|
9992
|
+
footerLayoutCatalog = defineExactCatalog()([
|
|
9993
|
+
{
|
|
9994
|
+
id: asFooterLayoutId("identity"),
|
|
9995
|
+
label: "Identity",
|
|
9996
|
+
description: "Logo, site text, address, and legal copy without relying on footer navigation."
|
|
9997
|
+
},
|
|
9998
|
+
{
|
|
9999
|
+
id: asFooterLayoutId("centered"),
|
|
10000
|
+
label: "Centered",
|
|
10001
|
+
description: "A calm centered stack for identity, short copy, and optional compact navigation.",
|
|
10002
|
+
maxRecommendedNavDensity: "sparse"
|
|
10003
|
+
},
|
|
10004
|
+
{
|
|
10005
|
+
id: asFooterLayoutId("split"),
|
|
10006
|
+
label: "Split",
|
|
10007
|
+
description: "Navigation and brand signoff separated into a wider split footer.",
|
|
10008
|
+
requiresFooterNav: true,
|
|
10009
|
+
maxRecommendedNavDensity: "balanced"
|
|
10010
|
+
},
|
|
10011
|
+
{
|
|
10012
|
+
id: asFooterLayoutId("columns"),
|
|
10013
|
+
label: "Columns",
|
|
10014
|
+
description: "Grouped footer navigation columns with a supporting bottom line.",
|
|
10015
|
+
requiresFooterNav: true,
|
|
10016
|
+
requiresFooterNavGroups: true
|
|
10017
|
+
}
|
|
10018
|
+
]);
|
|
10019
|
+
footerStyleCatalog = defineExactCatalog()([
|
|
10020
|
+
{
|
|
10021
|
+
id: asFooterStyleId("quiet"),
|
|
10022
|
+
label: "Quiet",
|
|
10023
|
+
description: "Lightweight, practical footer treatment."
|
|
10024
|
+
},
|
|
10025
|
+
{
|
|
10026
|
+
id: asFooterStyleId("calm"),
|
|
10027
|
+
label: "Calm",
|
|
10028
|
+
description: "Soft centered treatment with restrained dividers."
|
|
10029
|
+
},
|
|
10030
|
+
{
|
|
10031
|
+
id: asFooterStyleId("editorial"),
|
|
10032
|
+
label: "Editorial",
|
|
10033
|
+
description: "Text-forward treatment with fine-line structure."
|
|
10034
|
+
},
|
|
10035
|
+
{
|
|
10036
|
+
id: asFooterStyleId("brand-band"),
|
|
10037
|
+
label: "Brand band",
|
|
10038
|
+
description: "High-contrast brand treatment with a stronger bottom bar."
|
|
10039
|
+
}
|
|
10040
|
+
]);
|
|
10041
|
+
new Map(
|
|
10042
|
+
footerLayoutCatalog.map((layout) => [layout.id, layout])
|
|
10043
|
+
);
|
|
10044
|
+
new Map(
|
|
10045
|
+
footerStyleCatalog.map((style) => [style.id, style])
|
|
10046
|
+
);
|
|
9754
10047
|
footerLookCatalog = defineExactCatalog()([
|
|
10048
|
+
{
|
|
10049
|
+
id: asFooterLookId("footer-identity-quiet"),
|
|
10050
|
+
label: "Identity footer",
|
|
10051
|
+
layoutId: asFooterLayoutId("identity"),
|
|
10052
|
+
styleId: asFooterStyleId("quiet"),
|
|
10053
|
+
compile: identityQuietFooter
|
|
10054
|
+
},
|
|
9755
10055
|
{
|
|
9756
10056
|
id: asFooterLookId("footer-muted-grounding"),
|
|
9757
10057
|
label: "Muted grounding footer",
|
|
10058
|
+
layoutId: asFooterLayoutId("identity"),
|
|
10059
|
+
styleId: asFooterStyleId("quiet"),
|
|
10060
|
+
hiddenFromLayoutStyleControls: true,
|
|
9758
10061
|
compile: mutedGroundingFooter
|
|
9759
10062
|
},
|
|
9760
10063
|
{
|
|
9761
10064
|
id: asFooterLookId("footer-centered-calm"),
|
|
9762
10065
|
label: "Centered calm footer",
|
|
10066
|
+
layoutId: asFooterLayoutId("centered"),
|
|
10067
|
+
styleId: asFooterStyleId("calm"),
|
|
9763
10068
|
compile: centeredCalmFooter
|
|
9764
10069
|
},
|
|
10070
|
+
{
|
|
10071
|
+
id: asFooterLookId("footer-split-editorial"),
|
|
10072
|
+
label: "Split editorial footer",
|
|
10073
|
+
layoutId: asFooterLayoutId("split"),
|
|
10074
|
+
styleId: asFooterStyleId("editorial"),
|
|
10075
|
+
compile: splitEditorialFooter
|
|
10076
|
+
},
|
|
9765
10077
|
{
|
|
9766
10078
|
id: asFooterLookId("footer-editorial-columns"),
|
|
9767
10079
|
label: "Editorial columns footer",
|
|
10080
|
+
layoutId: asFooterLayoutId("columns"),
|
|
10081
|
+
styleId: asFooterStyleId("editorial"),
|
|
9768
10082
|
compile: editorialColumnsFooter
|
|
9769
10083
|
},
|
|
9770
10084
|
{
|
|
9771
10085
|
id: asFooterLookId("site-footer-brand-two-band"),
|
|
9772
10086
|
label: "Two-band brand footer",
|
|
9773
|
-
|
|
10087
|
+
layoutId: asFooterLayoutId("split"),
|
|
10088
|
+
styleId: asFooterStyleId("brand-band"),
|
|
9774
10089
|
allowedContentPresence: ["default-footer", "default-and-blocks"],
|
|
9775
10090
|
compile: brandTwoBandFooter
|
|
9776
10091
|
}
|
|
@@ -9861,7 +10176,7 @@ function defineTypographyPreset(preset2) {
|
|
|
9861
10176
|
function findTypographyPreset(id) {
|
|
9862
10177
|
return typographyPresetsById.get(id);
|
|
9863
10178
|
}
|
|
9864
|
-
var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
|
|
10179
|
+
var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, kirtanOrnateTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
|
|
9865
10180
|
var init_typographyPresets = __esm({
|
|
9866
10181
|
"../theme-core/src/site-styles/typographyPresets.ts"() {
|
|
9867
10182
|
bodyReadablePolicy = {
|
|
@@ -9993,6 +10308,30 @@ var init_typographyPresets = __esm({
|
|
|
9993
10308
|
},
|
|
9994
10309
|
scale: "spacious"
|
|
9995
10310
|
};
|
|
10311
|
+
kirtanOrnateTypography = {
|
|
10312
|
+
body: {
|
|
10313
|
+
family: "Jost, system-ui, sans-serif",
|
|
10314
|
+
size: "md",
|
|
10315
|
+
weight: "regular",
|
|
10316
|
+
lineHeight: "relaxed",
|
|
10317
|
+
letterSpacing: "normal"
|
|
10318
|
+
},
|
|
10319
|
+
headings: {
|
|
10320
|
+
default: {
|
|
10321
|
+
family: "Marcellus, Georgia, serif",
|
|
10322
|
+
weight: "regular",
|
|
10323
|
+
lineHeight: "normal",
|
|
10324
|
+
letterSpacing: "normal",
|
|
10325
|
+
colorToken: "primary",
|
|
10326
|
+
italic: null,
|
|
10327
|
+
case: null
|
|
10328
|
+
},
|
|
10329
|
+
h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
10330
|
+
h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
10331
|
+
h3: { size: "md", weight: "regular", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
|
|
10332
|
+
},
|
|
10333
|
+
scale: "spacious"
|
|
10334
|
+
};
|
|
9996
10335
|
boldDisplayTypography = {
|
|
9997
10336
|
body: {
|
|
9998
10337
|
family: "Manrope, system-ui, sans-serif",
|
|
@@ -10027,16 +10366,16 @@ var init_typographyPresets = __esm({
|
|
|
10027
10366
|
},
|
|
10028
10367
|
headings: {
|
|
10029
10368
|
default: {
|
|
10030
|
-
family: "
|
|
10031
|
-
weight: "
|
|
10369
|
+
family: "Lobster, cursive",
|
|
10370
|
+
weight: "regular",
|
|
10032
10371
|
lineHeight: "normal",
|
|
10033
|
-
letterSpacing: "
|
|
10372
|
+
letterSpacing: "normal",
|
|
10034
10373
|
italic: null,
|
|
10035
10374
|
case: null
|
|
10036
10375
|
},
|
|
10037
|
-
h1: { size: "2xl", weight: "
|
|
10038
|
-
h2: { size: "xl", weight: "
|
|
10039
|
-
h3: { size: "lg", weight: "
|
|
10376
|
+
h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
10377
|
+
h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
10378
|
+
h3: { size: "lg", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null }
|
|
10040
10379
|
},
|
|
10041
10380
|
scale: "balanced"
|
|
10042
10381
|
};
|
|
@@ -10101,6 +10440,32 @@ var init_typographyPresets = __esm({
|
|
|
10101
10440
|
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
10102
10441
|
typography: luxeContrastTypography
|
|
10103
10442
|
}),
|
|
10443
|
+
defineTypographyPreset({
|
|
10444
|
+
id: "typography-preset:kirtan-ornate",
|
|
10445
|
+
name: "Kirtan Ornate",
|
|
10446
|
+
description: "Marcellus devotional headings over a refined Jost body, matching dark ceremonial layouts.",
|
|
10447
|
+
defaultFonts: { body: "Jost, system-ui, sans-serif", heading: "Marcellus, Georgia, serif" },
|
|
10448
|
+
recommendedFonts: {
|
|
10449
|
+
body: ["Jost", "Manrope", "Inter"],
|
|
10450
|
+
heading: ["Marcellus", "Cormorant Garamond", "Playfair Display"]
|
|
10451
|
+
},
|
|
10452
|
+
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
10453
|
+
typography: kirtanOrnateTypography,
|
|
10454
|
+
heroTypography: {
|
|
10455
|
+
headlineSize: "6xl",
|
|
10456
|
+
headlineLineHeight: "normal",
|
|
10457
|
+
subheadlineSize: "xl",
|
|
10458
|
+
subheadlineLineHeight: "relaxed",
|
|
10459
|
+
microHeadlineSize: "5xl",
|
|
10460
|
+
microHeadlineLineHeight: "normal",
|
|
10461
|
+
microSubheadlineSize: "lg",
|
|
10462
|
+
microSubheadlineLineHeight: "relaxed",
|
|
10463
|
+
responsive: {
|
|
10464
|
+
tablet: { headlineSize: "5xl" },
|
|
10465
|
+
mobile: { headlineSize: "4xl", subheadlineSize: "lg" }
|
|
10466
|
+
}
|
|
10467
|
+
}
|
|
10468
|
+
}),
|
|
10104
10469
|
defineTypographyPreset({
|
|
10105
10470
|
id: "typography-preset:bold-display",
|
|
10106
10471
|
name: "Bold Display",
|
|
@@ -10130,11 +10495,11 @@ var init_typographyPresets = __esm({
|
|
|
10130
10495
|
defineTypographyPreset({
|
|
10131
10496
|
id: "typography-preset:original-joy",
|
|
10132
10497
|
name: "Original Joy",
|
|
10133
|
-
description: "
|
|
10134
|
-
defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "
|
|
10498
|
+
description: "Lobster display headings over a clean DM Sans body, expressive and warm.",
|
|
10499
|
+
defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Lobster, cursive" },
|
|
10135
10500
|
recommendedFonts: {
|
|
10136
10501
|
body: ["DM Sans", "Inter", "Manrope"],
|
|
10137
|
-
heading: ["Bricolage Grotesque", "Space Grotesk"
|
|
10502
|
+
heading: ["Lobster", "Bricolage Grotesque", "Space Grotesk"]
|
|
10138
10503
|
},
|
|
10139
10504
|
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
10140
10505
|
typography: originalJoyTypography,
|
|
@@ -10159,6 +10524,228 @@ var init_typographyPresets = __esm({
|
|
|
10159
10524
|
);
|
|
10160
10525
|
}
|
|
10161
10526
|
});
|
|
10527
|
+
function uniqueNonEmpty(values) {
|
|
10528
|
+
const uniqueValues = [...new Set(values)];
|
|
10529
|
+
const firstValue = uniqueValues[0];
|
|
10530
|
+
if (!firstValue) {
|
|
10531
|
+
throw new Error("Expected at least one Theme V2 design state option.");
|
|
10532
|
+
}
|
|
10533
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
10534
|
+
}
|
|
10535
|
+
var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema;
|
|
10536
|
+
var init_designState = __esm({
|
|
10537
|
+
"../theme-core/src/site-styles/designState.ts"() {
|
|
10538
|
+
init_sourceCatalogs();
|
|
10539
|
+
init_types2();
|
|
10540
|
+
init_schemaVersionedJson();
|
|
10541
|
+
init_rawStyleFields();
|
|
10542
|
+
init_rawStyleFields();
|
|
10543
|
+
themeV2DesignStateSchemaVersion = 1;
|
|
10544
|
+
designResolutionPolicySchema = z.enum(["generated", "user", "admin", "sdk"]);
|
|
10545
|
+
runtimeStyleFieldNameSchema = z.enum(themeV2RuntimeStyleFieldNames);
|
|
10546
|
+
nonEmptyRuntimeStyleFieldNamesSchema = z.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
10547
|
+
fields3[0],
|
|
10548
|
+
...fields3.slice(1)
|
|
10549
|
+
]);
|
|
10550
|
+
heroLegibilityStrategySchema = z.enum([
|
|
10551
|
+
"none",
|
|
10552
|
+
"scrim-gradient",
|
|
10553
|
+
"solid-panel"
|
|
10554
|
+
]);
|
|
10555
|
+
heroCompositionIntentSchema = z.enum([
|
|
10556
|
+
"center",
|
|
10557
|
+
"bottom-left"
|
|
10558
|
+
]);
|
|
10559
|
+
heroTypographyScaleIntentSchema = z.enum([
|
|
10560
|
+
"quiet",
|
|
10561
|
+
"editorial",
|
|
10562
|
+
"display",
|
|
10563
|
+
"poster"
|
|
10564
|
+
]);
|
|
10565
|
+
sectionHeightIntentSchema = z.enum([
|
|
10566
|
+
"default",
|
|
10567
|
+
"banner",
|
|
10568
|
+
"hero",
|
|
10569
|
+
"immersive"
|
|
10570
|
+
]);
|
|
10571
|
+
imageSurfaceTreatmentIntensitySchema = z.enum(["soft", "balanced", "strong"]);
|
|
10572
|
+
imageSurfaceMotionSchema = z.enum(["static", "fixed-frame"]);
|
|
10573
|
+
imageSurfaceTreatmentSchema = z.discriminatedUnion("kind", [
|
|
10574
|
+
z.object({ kind: z.literal("none") }).strict(),
|
|
10575
|
+
z.object({
|
|
10576
|
+
kind: z.literal("brand-scrim"),
|
|
10577
|
+
token: z.enum(["primary", "secondary", "accent"]),
|
|
10578
|
+
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
10579
|
+
}).strict(),
|
|
10580
|
+
z.object({
|
|
10581
|
+
kind: z.literal("brand-wash"),
|
|
10582
|
+
token: z.enum(["primary", "secondary", "accent"]),
|
|
10583
|
+
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
10584
|
+
}).strict(),
|
|
10585
|
+
z.object({
|
|
10586
|
+
kind: z.literal("neutral-scrim"),
|
|
10587
|
+
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
10588
|
+
}).strict(),
|
|
10589
|
+
z.object({
|
|
10590
|
+
kind: z.literal("neutral-wash"),
|
|
10591
|
+
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
10592
|
+
}).strict(),
|
|
10593
|
+
z.object({
|
|
10594
|
+
kind: z.literal("solid-panel"),
|
|
10595
|
+
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
10596
|
+
}).strict()
|
|
10597
|
+
]);
|
|
10598
|
+
testimonialCardTreatmentSchema = z.enum(["default", "accent-quote"]);
|
|
10599
|
+
tileTreatmentSchema = z.enum(tileTreatmentValues);
|
|
10600
|
+
eventListTreatmentSchema = z.enum(eventListTreatmentValues);
|
|
10601
|
+
eyebrowTreatmentSchema = z.enum(eyebrowTreatmentValues);
|
|
10602
|
+
userPanelTreatments = uniqueNonEmpty(
|
|
10603
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
10604
|
+
);
|
|
10605
|
+
userFlushTreatments = uniqueNonEmpty(
|
|
10606
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
10607
|
+
);
|
|
10608
|
+
userFlushBleeds = uniqueNonEmpty(
|
|
10609
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
10610
|
+
);
|
|
10611
|
+
contentFrameIntentSchema = z.discriminatedUnion("kind", [
|
|
10612
|
+
z.object({ kind: z.literal("plain") }).strict(),
|
|
10613
|
+
z.object({
|
|
10614
|
+
kind: z.literal("panel"),
|
|
10615
|
+
treatment: z.enum(userPanelTreatments)
|
|
10616
|
+
}).strict(),
|
|
10617
|
+
z.object({
|
|
10618
|
+
kind: z.literal("flush-panel"),
|
|
10619
|
+
treatment: z.enum(userFlushTreatments),
|
|
10620
|
+
bleed: z.enum(userFlushBleeds)
|
|
10621
|
+
}).strict()
|
|
10622
|
+
]);
|
|
10623
|
+
blockDesignPlanSchema = z.object({
|
|
10624
|
+
blockId: z.string().min(1).transform(asDesignBlockId),
|
|
10625
|
+
blockKind: z.string().min(1),
|
|
10626
|
+
purpose: z.string().min(1),
|
|
10627
|
+
sectionSurface: z.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
10628
|
+
contentFrame: contentFrameIntentSchema,
|
|
10629
|
+
itemSurface: z.enum(userDesignOptionCatalog.itemSurfaces),
|
|
10630
|
+
transitionAfter: z.enum(userDesignOptionCatalog.transitions),
|
|
10631
|
+
emphasis: z.enum(userDesignOptionCatalog.emphases),
|
|
10632
|
+
sectionHeight: sectionHeightIntentSchema.optional(),
|
|
10633
|
+
heroLegibility: heroLegibilityStrategySchema.optional(),
|
|
10634
|
+
heroComposition: heroCompositionIntentSchema.optional(),
|
|
10635
|
+
heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
|
|
10636
|
+
imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
|
|
10637
|
+
imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
|
|
10638
|
+
testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
|
|
10639
|
+
tileTreatment: tileTreatmentSchema.optional(),
|
|
10640
|
+
eventListTreatment: eventListTreatmentSchema.optional(),
|
|
10641
|
+
eyebrowTreatment: eyebrowTreatmentSchema.optional()
|
|
10642
|
+
}).strict();
|
|
10643
|
+
styleAuthoritySchema = z.discriminatedUnion("kind", [
|
|
10644
|
+
z.object({
|
|
10645
|
+
kind: z.literal("theme-v2"),
|
|
10646
|
+
source: designResolutionPolicySchema,
|
|
10647
|
+
siteStyleId: z.string().min(1).transform(asSiteStyleId),
|
|
10648
|
+
templateId: z.string().min(1).transform(asDesignSystemTemplateId),
|
|
10649
|
+
templateVersion: z.number().int().nonnegative(),
|
|
10650
|
+
resolverVersion: z.number().int().nonnegative()
|
|
10651
|
+
}).strict(),
|
|
10652
|
+
z.object({
|
|
10653
|
+
kind: z.literal("legacy-raw"),
|
|
10654
|
+
reason: z.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
10655
|
+
}).strict(),
|
|
10656
|
+
z.object({
|
|
10657
|
+
kind: z.literal("advanced-detached"),
|
|
10658
|
+
reason: z.literal("detached-custom-runtime-fields")
|
|
10659
|
+
}).strict()
|
|
10660
|
+
]);
|
|
10661
|
+
blockRuntimeStyleAuthoritySchema = z.object({
|
|
10662
|
+
unit: z.literal("block-runtime-fields"),
|
|
10663
|
+
blockId: z.string().min(1).transform(asDesignBlockId),
|
|
10664
|
+
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
10665
|
+
authority: styleAuthoritySchema
|
|
10666
|
+
}).strict();
|
|
10667
|
+
z.object({
|
|
10668
|
+
schemaVersion: z.literal(themeV2DesignStateSchemaVersion),
|
|
10669
|
+
siteStyleId: z.string().min(1).transform(asSiteStyleId),
|
|
10670
|
+
templateId: z.string().min(1).transform(asDesignSystemTemplateId),
|
|
10671
|
+
templateVersion: z.number().int().nonnegative(),
|
|
10672
|
+
resolverVersion: z.number().int().nonnegative(),
|
|
10673
|
+
rhythmPresetId: z.string().min(1),
|
|
10674
|
+
blocks: z.array(blockDesignPlanSchema),
|
|
10675
|
+
styleAuthorities: z.array(blockRuntimeStyleAuthoritySchema)
|
|
10676
|
+
}).strict();
|
|
10677
|
+
}
|
|
10678
|
+
});
|
|
10679
|
+
|
|
10680
|
+
// ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
10681
|
+
function defineDesignRuntimeRules(rules) {
|
|
10682
|
+
return rules;
|
|
10683
|
+
}
|
|
10684
|
+
function uniformSectionForeground(token) {
|
|
10685
|
+
return {
|
|
10686
|
+
textColor: token,
|
|
10687
|
+
headingColor: token,
|
|
10688
|
+
linkColor: token,
|
|
10689
|
+
supportingColor: token
|
|
10690
|
+
};
|
|
10691
|
+
}
|
|
10692
|
+
var defaultDesignRuntimeRules;
|
|
10693
|
+
var init_runtimeCompiler = __esm({
|
|
10694
|
+
"../theme-core/src/site-styles/runtimeCompiler.ts"() {
|
|
10695
|
+
init_schema3();
|
|
10696
|
+
init_modern_minimal();
|
|
10697
|
+
init_expandPalette();
|
|
10698
|
+
init_personalities();
|
|
10699
|
+
init_variants();
|
|
10700
|
+
init_designState();
|
|
10701
|
+
init_types2();
|
|
10702
|
+
init_accessibleSurfaces();
|
|
10703
|
+
defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
10704
|
+
sectionSurfaces: {
|
|
10705
|
+
base: {},
|
|
10706
|
+
"muted-band": {
|
|
10707
|
+
background: {
|
|
10708
|
+
type: "color",
|
|
10709
|
+
color: "muted"
|
|
10710
|
+
}
|
|
10711
|
+
},
|
|
10712
|
+
"accent-band": {
|
|
10713
|
+
background: {
|
|
10714
|
+
type: "color",
|
|
10715
|
+
color: "primary"
|
|
10716
|
+
}
|
|
10717
|
+
},
|
|
10718
|
+
"brand-depth-band": {
|
|
10719
|
+
background: {
|
|
10720
|
+
type: "color",
|
|
10721
|
+
color: "primary-800"
|
|
10722
|
+
}
|
|
10723
|
+
},
|
|
10724
|
+
"hero-image": {
|
|
10725
|
+
background: {
|
|
10726
|
+
type: "image",
|
|
10727
|
+
opacity: 1,
|
|
10728
|
+
position: "center center",
|
|
10729
|
+
...uniformSectionForeground("text")
|
|
10730
|
+
}
|
|
10731
|
+
}
|
|
10732
|
+
},
|
|
10733
|
+
heroLegibility: {
|
|
10734
|
+
"scrim-gradient": {
|
|
10735
|
+
type: "gradient",
|
|
10736
|
+
gradient: "linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(244,241,234,0.62) 90%)",
|
|
10737
|
+
opacity: 1
|
|
10738
|
+
},
|
|
10739
|
+
"solid-panel": {
|
|
10740
|
+
type: "color",
|
|
10741
|
+
color: "surface",
|
|
10742
|
+
opacity: 0.88
|
|
10743
|
+
}
|
|
10744
|
+
},
|
|
10745
|
+
transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
|
|
10746
|
+
});
|
|
10747
|
+
}
|
|
10748
|
+
});
|
|
10162
10749
|
|
|
10163
10750
|
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
10164
10751
|
function uniqueContentFrameKinds() {
|
|
@@ -10217,6 +10804,7 @@ function defineCuratedSiteStyle(input) {
|
|
|
10217
10804
|
// clean/minimal styles default to none.
|
|
10218
10805
|
headingDecoration: input.headingDecoration ?? noHeadingDecoration,
|
|
10219
10806
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
10807
|
+
...input.designRuntimeRules ? { designRuntimeRules: input.designRuntimeRules } : {},
|
|
10220
10808
|
...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
|
|
10221
10809
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
10222
10810
|
defaultHeaderSelection: input.defaultHeaderSelection ? {
|
|
@@ -10401,7 +10989,7 @@ function defaultTypographyPresetChoicesForRecipe(recipe) {
|
|
|
10401
10989
|
function getCuratedSiteStyle(id) {
|
|
10402
10990
|
return curatedSiteStylesById.get(id) ?? null;
|
|
10403
10991
|
}
|
|
10404
|
-
var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
|
|
10992
|
+
var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
|
|
10405
10993
|
var init_curatedSiteStyles = __esm({
|
|
10406
10994
|
"../theme-core/src/site-styles/curatedSiteStyles.ts"() {
|
|
10407
10995
|
init_personalities();
|
|
@@ -10415,6 +11003,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
10415
11003
|
init_sourceCatalogs();
|
|
10416
11004
|
init_types2();
|
|
10417
11005
|
init_typographyPresets();
|
|
11006
|
+
init_runtimeCompiler();
|
|
10418
11007
|
SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
|
|
10419
11008
|
SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
|
|
10420
11009
|
curatedSiteStyleIdValues = [
|
|
@@ -10432,6 +11021,7 @@ var init_curatedSiteStyles = __esm({
|
|
|
10432
11021
|
SOFT_EARTH_SITE_STYLE_ID_VALUE,
|
|
10433
11022
|
"site-style:bold-launch",
|
|
10434
11023
|
"site-style:south-west-twerk-school",
|
|
11024
|
+
"site-style:kirtan-ornate",
|
|
10435
11025
|
"site-style:original-joy"
|
|
10436
11026
|
];
|
|
10437
11027
|
quietBudget = {
|
|
@@ -10458,6 +11048,50 @@ var init_curatedSiteStyles = __esm({
|
|
|
10458
11048
|
mediaDensity: "high",
|
|
10459
11049
|
decorativeRepetition: "medium"
|
|
10460
11050
|
};
|
|
11051
|
+
kirtanOrnateDesignRuntimeRules = defineDesignRuntimeRules({
|
|
11052
|
+
...defaultDesignRuntimeRules,
|
|
11053
|
+
defaultEyebrowTreatment: "accent",
|
|
11054
|
+
sectionSurfaces: {
|
|
11055
|
+
...defaultDesignRuntimeRules.sectionSurfaces,
|
|
11056
|
+
"muted-band": {
|
|
11057
|
+
background: {
|
|
11058
|
+
type: "color",
|
|
11059
|
+
color: "muted"
|
|
11060
|
+
},
|
|
11061
|
+
foreground: {
|
|
11062
|
+
textColor: "text",
|
|
11063
|
+
headingColor: "primary",
|
|
11064
|
+
linkColor: "primary",
|
|
11065
|
+
supportingColor: "text"
|
|
11066
|
+
}
|
|
11067
|
+
},
|
|
11068
|
+
"brand-depth-band": {
|
|
11069
|
+
background: {
|
|
11070
|
+
type: "color",
|
|
11071
|
+
color: "primary-800"
|
|
11072
|
+
},
|
|
11073
|
+
foreground: {
|
|
11074
|
+
textColor: "text",
|
|
11075
|
+
headingColor: "primary",
|
|
11076
|
+
linkColor: "primary",
|
|
11077
|
+
supportingColor: "text"
|
|
11078
|
+
}
|
|
11079
|
+
},
|
|
11080
|
+
"hero-image": {
|
|
11081
|
+
background: {
|
|
11082
|
+
type: "image",
|
|
11083
|
+
opacity: 1,
|
|
11084
|
+
position: "center center"
|
|
11085
|
+
},
|
|
11086
|
+
foreground: {
|
|
11087
|
+
textColor: "text",
|
|
11088
|
+
headingColor: "primary",
|
|
11089
|
+
linkColor: "primary",
|
|
11090
|
+
supportingColor: "text"
|
|
11091
|
+
}
|
|
11092
|
+
}
|
|
11093
|
+
}
|
|
11094
|
+
});
|
|
10461
11095
|
expressiveUnderlineInputs = {
|
|
10462
11096
|
base: {
|
|
10463
11097
|
background: { type: "transparent" },
|
|
@@ -10495,6 +11129,43 @@ var init_curatedSiteStyles = __esm({
|
|
|
10495
11129
|
opacity: 0.6
|
|
10496
11130
|
}
|
|
10497
11131
|
};
|
|
11132
|
+
ornateDarkInputs = {
|
|
11133
|
+
base: {
|
|
11134
|
+
background: { type: "solid", colorToken: "surfaceAlt" },
|
|
11135
|
+
textColorToken: "text",
|
|
11136
|
+
border: {
|
|
11137
|
+
widthClass: "border",
|
|
11138
|
+
colorToken: "primary/45",
|
|
11139
|
+
style: "all"
|
|
11140
|
+
},
|
|
11141
|
+
corners: "square",
|
|
11142
|
+
shadow: null,
|
|
11143
|
+
spacing: "medium",
|
|
11144
|
+
fontSize: "base"
|
|
11145
|
+
},
|
|
11146
|
+
label: {
|
|
11147
|
+
textColorToken: "primary",
|
|
11148
|
+
fontWeight: "semibold",
|
|
11149
|
+
fontSize: "xs",
|
|
11150
|
+
textTransform: "uppercase",
|
|
11151
|
+
letterSpacing: "wider",
|
|
11152
|
+
opacity: 1
|
|
11153
|
+
},
|
|
11154
|
+
focus: {
|
|
11155
|
+
ringColorToken: "primary/18",
|
|
11156
|
+
ringWidth: "2",
|
|
11157
|
+
borderColorToken: "primary/70"
|
|
11158
|
+
},
|
|
11159
|
+
error: {
|
|
11160
|
+
borderColorToken: "destructive",
|
|
11161
|
+
textColorToken: "destructive"
|
|
11162
|
+
},
|
|
11163
|
+
disabled: {
|
|
11164
|
+
backgroundColorToken: "muted",
|
|
11165
|
+
textColorToken: "mutedText",
|
|
11166
|
+
opacity: 0.6
|
|
11167
|
+
}
|
|
11168
|
+
};
|
|
10498
11169
|
generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
10499
11170
|
curatedSiteStyles = [
|
|
10500
11171
|
defineCuratedSiteStyle({
|
|
@@ -11265,6 +11936,80 @@ var init_curatedSiteStyles = __esm({
|
|
|
11265
11936
|
paletteChoice("high-contrast-ink")
|
|
11266
11937
|
]
|
|
11267
11938
|
}),
|
|
11939
|
+
defineCuratedSiteStyle({
|
|
11940
|
+
id: "site-style:kirtan-ornate",
|
|
11941
|
+
name: "Kirtan Ornate",
|
|
11942
|
+
headingDecoration: { family: "short-center-rule", colorToken: "accent" },
|
|
11943
|
+
description: "Ceremonial, jewel-toned, and devotional: ornate frames, warm contrast, and composed rhythm for intimate music gatherings.",
|
|
11944
|
+
generationBrief: "Use a deep plum ground with pale gold as the main brand color, rose accent details, cream text, spacious split hero sections, devotional editorial headings, compact event lists, and framed conversion sections. The mood should feel soulful and ceremonial, not gothic or theatrical.",
|
|
11945
|
+
selectionKeywordRules: [
|
|
11946
|
+
{ kind: "word", value: "kirtan" },
|
|
11947
|
+
{ kind: "word", value: "chanting" },
|
|
11948
|
+
{ kind: "word", value: "ceremony" },
|
|
11949
|
+
{ kind: "word", value: "devotional" }
|
|
11950
|
+
],
|
|
11951
|
+
tokenRecipes: {
|
|
11952
|
+
palette: "brand-led",
|
|
11953
|
+
contrast: "strong",
|
|
11954
|
+
radius: "soft",
|
|
11955
|
+
shadow: "subtle",
|
|
11956
|
+
typography: "serif-editorial",
|
|
11957
|
+
spacing: "airy",
|
|
11958
|
+
motion: "subtle"
|
|
11959
|
+
},
|
|
11960
|
+
compositionBudget: expressiveBudget,
|
|
11961
|
+
typographyPresetChoices: [
|
|
11962
|
+
typographyChoice("typography-preset:kirtan-ornate"),
|
|
11963
|
+
typographyChoice("typography-preset:luxe-contrast"),
|
|
11964
|
+
typographyChoice("typography-preset:editorial-serif")
|
|
11965
|
+
],
|
|
11966
|
+
defaultTypographyPresetId: "typography-preset:kirtan-ornate",
|
|
11967
|
+
themeOverrides: {
|
|
11968
|
+
accordions: warmInsetAccordionSystem,
|
|
11969
|
+
cards: originalJoyCardSystem,
|
|
11970
|
+
testimonialQuote: serifDisplayQuote,
|
|
11971
|
+
bodyText: {
|
|
11972
|
+
intro: {
|
|
11973
|
+
paragraphSize: "editorial",
|
|
11974
|
+
headingSize: "editorial"
|
|
11975
|
+
}
|
|
11976
|
+
},
|
|
11977
|
+
inputs: ornateDarkInputs
|
|
11978
|
+
},
|
|
11979
|
+
designRuntimeRules: kirtanOrnateDesignRuntimeRules,
|
|
11980
|
+
recommendedAppearancePresetIds: [
|
|
11981
|
+
"hero-brand-scrim-fixed-frame",
|
|
11982
|
+
"media-text-quiet-story",
|
|
11983
|
+
"events-lined-panel",
|
|
11984
|
+
"schedule-details-brand-depth",
|
|
11985
|
+
"testimonials-statement-cards",
|
|
11986
|
+
"contact-form-panel"
|
|
11987
|
+
],
|
|
11988
|
+
defaultHeaderSelection: { layoutId: "floating", styleId: "minimal-surface" },
|
|
11989
|
+
recommendedHeaderLayoutChoices: [headerLayoutChoice("floating")],
|
|
11990
|
+
recommendedHeaderStyleChoicesByLayout: {
|
|
11991
|
+
floating: [
|
|
11992
|
+
headerStyleChoice("minimal-surface"),
|
|
11993
|
+
headerStyleChoice("split-glass"),
|
|
11994
|
+
headerStyleChoice("glass")
|
|
11995
|
+
]
|
|
11996
|
+
},
|
|
11997
|
+
recommendedHeaderLookIds: ["minimal-transparent"],
|
|
11998
|
+
recommendedFooterLookIds: [
|
|
11999
|
+
"site-footer-brand-two-band",
|
|
12000
|
+
"footer-muted-grounding"
|
|
12001
|
+
],
|
|
12002
|
+
buttonPersonalityChoices: [
|
|
12003
|
+
buttonChoice("ornate-ritual"),
|
|
12004
|
+
buttonChoice("joy-stamp"),
|
|
12005
|
+
buttonChoice("ink-stamp")
|
|
12006
|
+
],
|
|
12007
|
+
paletteVariantChoices: [
|
|
12008
|
+
paletteChoice("warm-dark-kirtan-gold"),
|
|
12009
|
+
paletteChoice("warm-dark-ember"),
|
|
12010
|
+
paletteChoice("brand-led-burgundy-gold")
|
|
12011
|
+
]
|
|
12012
|
+
}),
|
|
11268
12013
|
defineCuratedSiteStyle({
|
|
11269
12014
|
id: "site-style:original-joy",
|
|
11270
12015
|
name: "Original Joy",
|
|
@@ -11400,170 +12145,6 @@ var init_resolver2 = __esm({
|
|
|
11400
12145
|
init_types2();
|
|
11401
12146
|
}
|
|
11402
12147
|
});
|
|
11403
|
-
function uniqueNonEmpty(values) {
|
|
11404
|
-
const uniqueValues = [...new Set(values)];
|
|
11405
|
-
const firstValue = uniqueValues[0];
|
|
11406
|
-
if (!firstValue) {
|
|
11407
|
-
throw new Error("Expected at least one Theme V2 design state option.");
|
|
11408
|
-
}
|
|
11409
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
11410
|
-
}
|
|
11411
|
-
var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema;
|
|
11412
|
-
var init_designState = __esm({
|
|
11413
|
-
"../theme-core/src/site-styles/designState.ts"() {
|
|
11414
|
-
init_sourceCatalogs();
|
|
11415
|
-
init_types2();
|
|
11416
|
-
init_schemaVersionedJson();
|
|
11417
|
-
init_rawStyleFields();
|
|
11418
|
-
init_rawStyleFields();
|
|
11419
|
-
themeV2DesignStateSchemaVersion = 1;
|
|
11420
|
-
designResolutionPolicySchema = z.enum(["generated", "user", "admin", "sdk"]);
|
|
11421
|
-
runtimeStyleFieldNameSchema = z.enum(themeV2RuntimeStyleFieldNames);
|
|
11422
|
-
nonEmptyRuntimeStyleFieldNamesSchema = z.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
11423
|
-
fields3[0],
|
|
11424
|
-
...fields3.slice(1)
|
|
11425
|
-
]);
|
|
11426
|
-
heroLegibilityStrategySchema = z.enum([
|
|
11427
|
-
"none",
|
|
11428
|
-
"scrim-gradient",
|
|
11429
|
-
"solid-panel"
|
|
11430
|
-
]);
|
|
11431
|
-
heroCompositionIntentSchema = z.enum([
|
|
11432
|
-
"center",
|
|
11433
|
-
"bottom-left"
|
|
11434
|
-
]);
|
|
11435
|
-
heroTypographyScaleIntentSchema = z.enum([
|
|
11436
|
-
"quiet",
|
|
11437
|
-
"editorial",
|
|
11438
|
-
"display",
|
|
11439
|
-
"poster"
|
|
11440
|
-
]);
|
|
11441
|
-
sectionHeightIntentSchema = z.enum([
|
|
11442
|
-
"default",
|
|
11443
|
-
"banner",
|
|
11444
|
-
"hero",
|
|
11445
|
-
"immersive"
|
|
11446
|
-
]);
|
|
11447
|
-
imageSurfaceTreatmentIntensitySchema = z.enum(["soft", "balanced", "strong"]);
|
|
11448
|
-
imageSurfaceMotionSchema = z.enum(["static", "fixed-frame"]);
|
|
11449
|
-
imageSurfaceTreatmentSchema = z.discriminatedUnion("kind", [
|
|
11450
|
-
z.object({ kind: z.literal("none") }).strict(),
|
|
11451
|
-
z.object({
|
|
11452
|
-
kind: z.literal("brand-scrim"),
|
|
11453
|
-
token: z.enum(["primary", "secondary", "accent"]),
|
|
11454
|
-
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
11455
|
-
}).strict(),
|
|
11456
|
-
z.object({
|
|
11457
|
-
kind: z.literal("brand-wash"),
|
|
11458
|
-
token: z.enum(["primary", "secondary", "accent"]),
|
|
11459
|
-
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
11460
|
-
}).strict(),
|
|
11461
|
-
z.object({
|
|
11462
|
-
kind: z.literal("neutral-scrim"),
|
|
11463
|
-
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
11464
|
-
}).strict(),
|
|
11465
|
-
z.object({
|
|
11466
|
-
kind: z.literal("neutral-wash"),
|
|
11467
|
-
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
11468
|
-
}).strict(),
|
|
11469
|
-
z.object({
|
|
11470
|
-
kind: z.literal("solid-panel"),
|
|
11471
|
-
intensity: imageSurfaceTreatmentIntensitySchema.optional()
|
|
11472
|
-
}).strict()
|
|
11473
|
-
]);
|
|
11474
|
-
testimonialCardTreatmentSchema = z.enum(["default", "accent-quote"]);
|
|
11475
|
-
tileTreatmentSchema = z.enum(tileTreatmentValues);
|
|
11476
|
-
eventListTreatmentSchema = z.enum(eventListTreatmentValues);
|
|
11477
|
-
eyebrowTreatmentSchema = z.enum(eyebrowTreatmentValues);
|
|
11478
|
-
userPanelTreatments = uniqueNonEmpty(
|
|
11479
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
11480
|
-
);
|
|
11481
|
-
userFlushTreatments = uniqueNonEmpty(
|
|
11482
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
11483
|
-
);
|
|
11484
|
-
userFlushBleeds = uniqueNonEmpty(
|
|
11485
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
11486
|
-
);
|
|
11487
|
-
contentFrameIntentSchema = z.discriminatedUnion("kind", [
|
|
11488
|
-
z.object({ kind: z.literal("plain") }).strict(),
|
|
11489
|
-
z.object({
|
|
11490
|
-
kind: z.literal("panel"),
|
|
11491
|
-
treatment: z.enum(userPanelTreatments)
|
|
11492
|
-
}).strict(),
|
|
11493
|
-
z.object({
|
|
11494
|
-
kind: z.literal("flush-panel"),
|
|
11495
|
-
treatment: z.enum(userFlushTreatments),
|
|
11496
|
-
bleed: z.enum(userFlushBleeds)
|
|
11497
|
-
}).strict()
|
|
11498
|
-
]);
|
|
11499
|
-
blockDesignPlanSchema = z.object({
|
|
11500
|
-
blockId: z.string().min(1).transform(asDesignBlockId),
|
|
11501
|
-
blockKind: z.string().min(1),
|
|
11502
|
-
purpose: z.string().min(1),
|
|
11503
|
-
sectionSurface: z.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
11504
|
-
contentFrame: contentFrameIntentSchema,
|
|
11505
|
-
itemSurface: z.enum(userDesignOptionCatalog.itemSurfaces),
|
|
11506
|
-
transitionAfter: z.enum(userDesignOptionCatalog.transitions),
|
|
11507
|
-
emphasis: z.enum(userDesignOptionCatalog.emphases),
|
|
11508
|
-
sectionHeight: sectionHeightIntentSchema.optional(),
|
|
11509
|
-
heroLegibility: heroLegibilityStrategySchema.optional(),
|
|
11510
|
-
heroComposition: heroCompositionIntentSchema.optional(),
|
|
11511
|
-
heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
|
|
11512
|
-
imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
|
|
11513
|
-
imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
|
|
11514
|
-
testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
|
|
11515
|
-
tileTreatment: tileTreatmentSchema.optional(),
|
|
11516
|
-
eventListTreatment: eventListTreatmentSchema.optional(),
|
|
11517
|
-
eyebrowTreatment: eyebrowTreatmentSchema.optional()
|
|
11518
|
-
}).strict();
|
|
11519
|
-
styleAuthoritySchema = z.discriminatedUnion("kind", [
|
|
11520
|
-
z.object({
|
|
11521
|
-
kind: z.literal("theme-v2"),
|
|
11522
|
-
source: designResolutionPolicySchema,
|
|
11523
|
-
siteStyleId: z.string().min(1).transform(asSiteStyleId),
|
|
11524
|
-
templateId: z.string().min(1).transform(asDesignSystemTemplateId),
|
|
11525
|
-
templateVersion: z.number().int().nonnegative(),
|
|
11526
|
-
resolverVersion: z.number().int().nonnegative()
|
|
11527
|
-
}).strict(),
|
|
11528
|
-
z.object({
|
|
11529
|
-
kind: z.literal("legacy-raw"),
|
|
11530
|
-
reason: z.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
11531
|
-
}).strict(),
|
|
11532
|
-
z.object({
|
|
11533
|
-
kind: z.literal("advanced-detached"),
|
|
11534
|
-
reason: z.literal("detached-custom-runtime-fields")
|
|
11535
|
-
}).strict()
|
|
11536
|
-
]);
|
|
11537
|
-
blockRuntimeStyleAuthoritySchema = z.object({
|
|
11538
|
-
unit: z.literal("block-runtime-fields"),
|
|
11539
|
-
blockId: z.string().min(1).transform(asDesignBlockId),
|
|
11540
|
-
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
11541
|
-
authority: styleAuthoritySchema
|
|
11542
|
-
}).strict();
|
|
11543
|
-
z.object({
|
|
11544
|
-
schemaVersion: z.literal(themeV2DesignStateSchemaVersion),
|
|
11545
|
-
siteStyleId: z.string().min(1).transform(asSiteStyleId),
|
|
11546
|
-
templateId: z.string().min(1).transform(asDesignSystemTemplateId),
|
|
11547
|
-
templateVersion: z.number().int().nonnegative(),
|
|
11548
|
-
resolverVersion: z.number().int().nonnegative(),
|
|
11549
|
-
rhythmPresetId: z.string().min(1),
|
|
11550
|
-
blocks: z.array(blockDesignPlanSchema),
|
|
11551
|
-
styleAuthorities: z.array(blockRuntimeStyleAuthoritySchema)
|
|
11552
|
-
}).strict();
|
|
11553
|
-
}
|
|
11554
|
-
});
|
|
11555
|
-
var init_runtimeCompiler = __esm({
|
|
11556
|
-
"../theme-core/src/site-styles/runtimeCompiler.ts"() {
|
|
11557
|
-
init_schema3();
|
|
11558
|
-
init_modern_minimal();
|
|
11559
|
-
init_expandPalette();
|
|
11560
|
-
init_personalities();
|
|
11561
|
-
init_variants();
|
|
11562
|
-
init_designState();
|
|
11563
|
-
init_types2();
|
|
11564
|
-
init_accessibleSurfaces();
|
|
11565
|
-
}
|
|
11566
|
-
});
|
|
11567
12148
|
|
|
11568
12149
|
// ../theme-core/src/site-styles/siteStyleThemeCompiler.ts
|
|
11569
12150
|
var init_siteStyleThemeCompiler = __esm({
|
|
@@ -11745,6 +12326,7 @@ var init_generatedDesignPipeline = __esm({
|
|
|
11745
12326
|
init_designState();
|
|
11746
12327
|
init_generatedSchemas();
|
|
11747
12328
|
init_siteStyleBlockPolicies();
|
|
12329
|
+
init_curatedSiteStyles();
|
|
11748
12330
|
init_lookResolution();
|
|
11749
12331
|
init_headerOpeningSection();
|
|
11750
12332
|
init_resolver2();
|
|
@@ -11753,8 +12335,8 @@ var init_generatedDesignPipeline = __esm({
|
|
|
11753
12335
|
}
|
|
11754
12336
|
});
|
|
11755
12337
|
function validateBlockSequence(snapshots, ctx) {
|
|
11756
|
-
for (const
|
|
11757
|
-
ctx.addIssue(
|
|
12338
|
+
for (const issue4 of collectBlockSequenceIssues(snapshots)) {
|
|
12339
|
+
ctx.addIssue(issue4);
|
|
11758
12340
|
}
|
|
11759
12341
|
}
|
|
11760
12342
|
function collectBlockSequenceIssues(snapshots) {
|
|
@@ -13428,7 +14010,7 @@ function buildFooterNavAll(common) {
|
|
|
13428
14010
|
return stack(
|
|
13429
14011
|
{ className: common.className, gap: common.gap, align: "stretch" },
|
|
13430
14012
|
[item],
|
|
13431
|
-
|
|
14013
|
+
whenCollectionHasItems(collectionPath)
|
|
13432
14014
|
);
|
|
13433
14015
|
}
|
|
13434
14016
|
function buildFooterNavLinksOnly(common) {
|
|
@@ -13461,7 +14043,7 @@ function buildFooterNavLinksOnly(common) {
|
|
|
13461
14043
|
return stack(
|
|
13462
14044
|
{ className: common.className, gap: common.gap, align: "stretch" },
|
|
13463
14045
|
[item],
|
|
13464
|
-
|
|
14046
|
+
whenCollectionHasItems(collectionPath)
|
|
13465
14047
|
);
|
|
13466
14048
|
}
|
|
13467
14049
|
function buildFooterNavFlatten(common) {
|
|
@@ -13510,7 +14092,7 @@ function buildFooterNavFlatten(common) {
|
|
|
13510
14092
|
return stack(
|
|
13511
14093
|
{ className: common.className, gap: common.gap, align: "stretch" },
|
|
13512
14094
|
[item],
|
|
13513
|
-
|
|
14095
|
+
whenCollectionHasItems(collectionPath)
|
|
13514
14096
|
);
|
|
13515
14097
|
}
|
|
13516
14098
|
function footerNav(opts) {
|
|
@@ -13532,9 +14114,21 @@ function footerNav(opts) {
|
|
|
13532
14114
|
if (mode === "flatten") return buildFooterNavFlatten(common);
|
|
13533
14115
|
return buildFooterNavAll(common);
|
|
13534
14116
|
}
|
|
14117
|
+
var whenCollectionHasItems;
|
|
13535
14118
|
var init_footerNav = __esm({
|
|
13536
14119
|
"../blocks/src/system/node/fragments/footerNav.ts"() {
|
|
13537
14120
|
init_builder2();
|
|
14121
|
+
whenCollectionHasItems = (collectionPath) => (node) => ({
|
|
14122
|
+
...node,
|
|
14123
|
+
$when: {
|
|
14124
|
+
when: {
|
|
14125
|
+
from: collectionPath,
|
|
14126
|
+
transforms: [{ id: "array.length" }]
|
|
14127
|
+
},
|
|
14128
|
+
equals: 0,
|
|
14129
|
+
not: true
|
|
14130
|
+
}
|
|
14131
|
+
});
|
|
13538
14132
|
}
|
|
13539
14133
|
});
|
|
13540
14134
|
|
|
@@ -16427,8 +17021,23 @@ var init_heroLayoutControls = __esm({
|
|
|
16427
17021
|
heroLayoutControlsFragment = defineFragment({
|
|
16428
17022
|
id: "heroLayoutControls",
|
|
16429
17023
|
title: "Hero Layout",
|
|
16430
|
-
description: "
|
|
17024
|
+
description: "Title scale, alignment, and content width controls for hero layouts.",
|
|
16431
17025
|
fields: [
|
|
17026
|
+
{
|
|
17027
|
+
id: "titleSize",
|
|
17028
|
+
type: "select",
|
|
17029
|
+
label: "Title size",
|
|
17030
|
+
description: "Adjust the visual scale of the hero title.",
|
|
17031
|
+
required: false,
|
|
17032
|
+
ui: { intent: "display" },
|
|
17033
|
+
options: [
|
|
17034
|
+
{ value: "auto", label: "Auto" },
|
|
17035
|
+
{ value: "quiet", label: "Normal" },
|
|
17036
|
+
{ value: "editorial", label: "Large" },
|
|
17037
|
+
{ value: "display", label: "Huge" },
|
|
17038
|
+
{ value: "poster", label: "Poster" }
|
|
17039
|
+
]
|
|
17040
|
+
},
|
|
16432
17041
|
{
|
|
16433
17042
|
id: "contentAlignment",
|
|
16434
17043
|
type: "select",
|
|
@@ -17503,9 +18112,9 @@ function createZodCodec(schema) {
|
|
|
17503
18112
|
return decodeSuccess(parsed.data);
|
|
17504
18113
|
}
|
|
17505
18114
|
return decodeFailure(
|
|
17506
|
-
parsed.error.issues.map((
|
|
17507
|
-
path: zodIssuePath(
|
|
17508
|
-
message:
|
|
18115
|
+
parsed.error.issues.map((issue4) => ({
|
|
18116
|
+
path: zodIssuePath(issue4.path),
|
|
18117
|
+
message: issue4.message
|
|
17509
18118
|
}))
|
|
17510
18119
|
);
|
|
17511
18120
|
}
|
|
@@ -18303,6 +18912,131 @@ var init_event_registration_shared = __esm({
|
|
|
18303
18912
|
}
|
|
18304
18913
|
});
|
|
18305
18914
|
|
|
18915
|
+
// ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
|
|
18916
|
+
function resolveRuntimeEventPricing(event) {
|
|
18917
|
+
if (isPublicEventPricing(event.pricing)) {
|
|
18918
|
+
return event.pricing;
|
|
18919
|
+
}
|
|
18920
|
+
const legacy = event;
|
|
18921
|
+
const currency = readCurrency(legacy.currency);
|
|
18922
|
+
if (event.requiresRegistration === false) {
|
|
18923
|
+
return {
|
|
18924
|
+
kind: "drop_in",
|
|
18925
|
+
currency,
|
|
18926
|
+
display: { kind: "free", currency }
|
|
18927
|
+
};
|
|
18928
|
+
}
|
|
18929
|
+
if (legacy.pricingMode === "ticket_types") {
|
|
18930
|
+
const ticketTypes = Array.isArray(legacy.ticketTypes) ? legacy.ticketTypes.filter(isPublicEventTicketType) : [];
|
|
18931
|
+
return {
|
|
18932
|
+
kind: "ticket_types",
|
|
18933
|
+
currency,
|
|
18934
|
+
ticketTypes,
|
|
18935
|
+
display: readTicketTypePriceDisplay(legacy.priceDisplay, currency)
|
|
18936
|
+
};
|
|
18937
|
+
}
|
|
18938
|
+
const amount = typeof legacy.price === "number" ? legacy.price : 0;
|
|
18939
|
+
if (legacy.pricingType === "paid" && amount > 0) {
|
|
18940
|
+
return {
|
|
18941
|
+
kind: "single_paid",
|
|
18942
|
+
amount,
|
|
18943
|
+
currency,
|
|
18944
|
+
display: { kind: "exact", amount, currency }
|
|
18945
|
+
};
|
|
18946
|
+
}
|
|
18947
|
+
return {
|
|
18948
|
+
kind: "free_registration",
|
|
18949
|
+
currency,
|
|
18950
|
+
display: { kind: "free", currency }
|
|
18951
|
+
};
|
|
18952
|
+
}
|
|
18953
|
+
function readCurrency(value) {
|
|
18954
|
+
return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY;
|
|
18955
|
+
}
|
|
18956
|
+
function isRecord4(value) {
|
|
18957
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
18958
|
+
}
|
|
18959
|
+
function isPublicEventPricing(value) {
|
|
18960
|
+
if (!isRecord4(value) || typeof value.kind !== "string") return false;
|
|
18961
|
+
return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course";
|
|
18962
|
+
}
|
|
18963
|
+
function isPublicEventTicketType(value) {
|
|
18964
|
+
return isRecord4(value) && typeof value.id === "string";
|
|
18965
|
+
}
|
|
18966
|
+
function readTicketTypePriceDisplay(value, currency) {
|
|
18967
|
+
const display = readLegacyPriceDisplay(value, currency);
|
|
18968
|
+
return display.kind === "course" ? { kind: "unavailable", currency } : display;
|
|
18969
|
+
}
|
|
18970
|
+
function readLegacyPriceDisplay(value, currency) {
|
|
18971
|
+
if (!isRecord4(value) || typeof value.kind !== "string") {
|
|
18972
|
+
return { kind: "unavailable", currency };
|
|
18973
|
+
}
|
|
18974
|
+
const displayCurrency = readCurrency(value.currency);
|
|
18975
|
+
switch (value.kind) {
|
|
18976
|
+
case "free":
|
|
18977
|
+
return { kind: "free", currency: displayCurrency };
|
|
18978
|
+
case "exact":
|
|
18979
|
+
return readAmount(value.amount) !== null ? {
|
|
18980
|
+
kind: "exact",
|
|
18981
|
+
amount: readAmount(value.amount) ?? 0,
|
|
18982
|
+
currency: displayCurrency
|
|
18983
|
+
} : { kind: "unavailable", currency };
|
|
18984
|
+
case "from":
|
|
18985
|
+
return readAmount(value.amount) !== null ? {
|
|
18986
|
+
kind: "from",
|
|
18987
|
+
amount: readAmount(value.amount) ?? 0,
|
|
18988
|
+
currency: displayCurrency
|
|
18989
|
+
} : { kind: "unavailable", currency };
|
|
18990
|
+
case "mixed":
|
|
18991
|
+
return readAmount(value.paidFromAmount) !== null ? {
|
|
18992
|
+
kind: "mixed",
|
|
18993
|
+
paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
|
|
18994
|
+
currency: displayCurrency
|
|
18995
|
+
} : { kind: "unavailable", currency };
|
|
18996
|
+
case "unavailable":
|
|
18997
|
+
return { kind: "unavailable", currency: displayCurrency };
|
|
18998
|
+
case "course":
|
|
18999
|
+
return isRecord4(value.display) ? {
|
|
19000
|
+
kind: "course",
|
|
19001
|
+
display: readCoursePriceDisplay(value.display, displayCurrency)
|
|
19002
|
+
} : {
|
|
19003
|
+
kind: "course",
|
|
19004
|
+
display: { kind: "unavailable", currency: displayCurrency }
|
|
19005
|
+
};
|
|
19006
|
+
default:
|
|
19007
|
+
return { kind: "unavailable", currency };
|
|
19008
|
+
}
|
|
19009
|
+
}
|
|
19010
|
+
function readCoursePriceDisplay(value, currency) {
|
|
19011
|
+
switch (value.kind) {
|
|
19012
|
+
case "free":
|
|
19013
|
+
return { kind: "free", currency: readCurrency(value.currency) };
|
|
19014
|
+
case "exact":
|
|
19015
|
+
return readAmount(value.amount) !== null ? {
|
|
19016
|
+
kind: "exact",
|
|
19017
|
+
amount: readAmount(value.amount) ?? 0,
|
|
19018
|
+
currency: readCurrency(value.currency)
|
|
19019
|
+
} : { kind: "unavailable", currency };
|
|
19020
|
+
case "from":
|
|
19021
|
+
return readAmount(value.amount) !== null ? {
|
|
19022
|
+
kind: "from",
|
|
19023
|
+
amount: readAmount(value.amount) ?? 0,
|
|
19024
|
+
currency: readCurrency(value.currency)
|
|
19025
|
+
} : { kind: "unavailable", currency };
|
|
19026
|
+
default:
|
|
19027
|
+
return { kind: "unavailable", currency };
|
|
19028
|
+
}
|
|
19029
|
+
}
|
|
19030
|
+
function readAmount(value) {
|
|
19031
|
+
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
19032
|
+
}
|
|
19033
|
+
var DEFAULT_EVENT_CURRENCY;
|
|
19034
|
+
var init_pricing = __esm({
|
|
19035
|
+
"../blocks/src/system/runtime/nodes/events/shared/pricing.ts"() {
|
|
19036
|
+
DEFAULT_EVENT_CURRENCY = "USD";
|
|
19037
|
+
}
|
|
19038
|
+
});
|
|
19039
|
+
|
|
18306
19040
|
// ../blocks/src/system/constants/events.ts
|
|
18307
19041
|
function isEventCalendarDisplayMode(value) {
|
|
18308
19042
|
return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
|
|
@@ -18340,24 +19074,50 @@ var init_contract_schemas = __esm({
|
|
|
18340
19074
|
function buildEventRegistrationDisplay(source) {
|
|
18341
19075
|
return {
|
|
18342
19076
|
kind: "event-registration",
|
|
18343
|
-
state: "shell",
|
|
19077
|
+
state: "generic-shell",
|
|
18344
19078
|
className: source.className ?? null,
|
|
19079
|
+
titleText: "Event registration",
|
|
19080
|
+
bodyText: "Preparing dates, tickets, and booking details.",
|
|
19081
|
+
stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
|
|
18345
19082
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
18346
19083
|
};
|
|
18347
19084
|
}
|
|
18348
|
-
|
|
19085
|
+
function normalizeEventRegistrationEventInput(value) {
|
|
19086
|
+
if (!isRecord5(value)) {
|
|
19087
|
+
return value;
|
|
19088
|
+
}
|
|
19089
|
+
return {
|
|
19090
|
+
...value,
|
|
19091
|
+
pricing: resolveRuntimeEventPricing(value)
|
|
19092
|
+
};
|
|
19093
|
+
}
|
|
19094
|
+
function isRecord5(value) {
|
|
19095
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
19096
|
+
}
|
|
19097
|
+
var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, eventRegistrationGenericDateStepLabel, eventRegistrationGenericTicketsStepLabel, eventRegistrationGenericDetailsStepLabel, contentEntrySchema, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationBlockRuntime;
|
|
18349
19098
|
var init_event_registration_interactive = __esm({
|
|
18350
19099
|
"../blocks/src/system/runtime/nodes/event-registration.interactive.ts"() {
|
|
18351
19100
|
init_schemas2();
|
|
18352
19101
|
init_event_registration_shared();
|
|
19102
|
+
init_pricing();
|
|
18353
19103
|
init_islands();
|
|
18354
19104
|
init_runtime();
|
|
18355
19105
|
init_contract_schemas();
|
|
19106
|
+
EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
|
|
19107
|
+
[
|
|
19108
|
+
eventRegistrationGenericDateStepLabel,
|
|
19109
|
+
eventRegistrationGenericTicketsStepLabel,
|
|
19110
|
+
eventRegistrationGenericDetailsStepLabel
|
|
19111
|
+
] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
18356
19112
|
contentEntrySchema = z.object({
|
|
18357
19113
|
id: z.string(),
|
|
18358
19114
|
slug: z.string(),
|
|
18359
19115
|
contentTypeSlug: z.string()
|
|
18360
19116
|
});
|
|
19117
|
+
eventRegistrationPublicEventSchema = z.preprocess(
|
|
19118
|
+
normalizeEventRegistrationEventInput,
|
|
19119
|
+
publicEventSchema
|
|
19120
|
+
);
|
|
18361
19121
|
eventRegistrationSourceSchema = z.object({
|
|
18362
19122
|
siteId: z.string().optional(),
|
|
18363
19123
|
apiBaseUrl: z.string().optional(),
|
|
@@ -18365,7 +19125,7 @@ var init_event_registration_interactive = __esm({
|
|
|
18365
19125
|
previewToken: z.string().nullable().optional(),
|
|
18366
19126
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
18367
19127
|
contentEntry: contentEntrySchema.nullable().optional(),
|
|
18368
|
-
events: z.array(
|
|
19128
|
+
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
18369
19129
|
className: z.string().nullable().optional(),
|
|
18370
19130
|
buttonText: z.string().nullable().optional(),
|
|
18371
19131
|
maxTickets: z.string().nullable().optional(),
|
|
@@ -18380,14 +19140,21 @@ var init_event_registration_interactive = __esm({
|
|
|
18380
19140
|
});
|
|
18381
19141
|
eventRegistrationDisplaySchema = z.object({
|
|
18382
19142
|
kind: z.literal("event-registration"),
|
|
18383
|
-
state: z.literal("shell"),
|
|
19143
|
+
state: z.literal("generic-shell"),
|
|
18384
19144
|
className: z.string().nullable(),
|
|
19145
|
+
titleText: z.string(),
|
|
19146
|
+
bodyText: z.string(),
|
|
19147
|
+
stepLabels: z.tuple([
|
|
19148
|
+
z.literal(eventRegistrationGenericDateStepLabel),
|
|
19149
|
+
z.literal(eventRegistrationGenericTicketsStepLabel),
|
|
19150
|
+
z.literal(eventRegistrationGenericDetailsStepLabel)
|
|
19151
|
+
]),
|
|
18385
19152
|
summaryButtonText: z.string()
|
|
18386
19153
|
});
|
|
18387
19154
|
eventRegistrationHydrationSchema = z.object({
|
|
18388
19155
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
18389
19156
|
contentEntry: contentEntrySchema.nullable().optional(),
|
|
18390
|
-
events: z.array(
|
|
19157
|
+
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
18391
19158
|
maxTickets: z.string().optional(),
|
|
18392
19159
|
showVenue: z.boolean().optional(),
|
|
18393
19160
|
showCapacity: z.boolean().optional(),
|
|
@@ -18441,7 +19208,7 @@ var init_types16 = __esm({
|
|
|
18441
19208
|
});
|
|
18442
19209
|
|
|
18443
19210
|
// ../blocks/src/system/blocks/courses/shared/pricing.ts
|
|
18444
|
-
var
|
|
19211
|
+
var init_pricing2 = __esm({
|
|
18445
19212
|
"../blocks/src/system/blocks/courses/shared/pricing.ts"() {
|
|
18446
19213
|
}
|
|
18447
19214
|
});
|
|
@@ -18451,7 +19218,7 @@ var init_shared3 = __esm({
|
|
|
18451
19218
|
"../blocks/src/system/blocks/courses/shared/index.ts"() {
|
|
18452
19219
|
init_types16();
|
|
18453
19220
|
init_schemas();
|
|
18454
|
-
|
|
19221
|
+
init_pricing2();
|
|
18455
19222
|
}
|
|
18456
19223
|
});
|
|
18457
19224
|
function buildCourseRegistrationDisplay(source) {
|
|
@@ -23747,6 +24514,46 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
23747
24514
|
auth: "user",
|
|
23748
24515
|
responseKind: "json"
|
|
23749
24516
|
},
|
|
24517
|
+
listEntrySlotBlocks: {
|
|
24518
|
+
path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
|
|
24519
|
+
method: "GET",
|
|
24520
|
+
tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
|
|
24521
|
+
auth: "user",
|
|
24522
|
+
responseKind: "json",
|
|
24523
|
+
errors: ["resource:not_found"]
|
|
24524
|
+
},
|
|
24525
|
+
listEntryPageContentSlots: {
|
|
24526
|
+
path: "/sites/{siteId}/content/{type}/{entryId}/slots",
|
|
24527
|
+
method: "GET",
|
|
24528
|
+
tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slots", "blocks"],
|
|
24529
|
+
auth: "user",
|
|
24530
|
+
responseKind: "json",
|
|
24531
|
+
errors: ["resource:not_found"]
|
|
24532
|
+
},
|
|
24533
|
+
createEntrySlotBlock: {
|
|
24534
|
+
path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
|
|
24535
|
+
method: "POST",
|
|
24536
|
+
tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
|
|
24537
|
+
auth: "user",
|
|
24538
|
+
responseKind: "json",
|
|
24539
|
+
errors: ["validation:invalid_input", "resource:not_found"]
|
|
24540
|
+
},
|
|
24541
|
+
reorderEntrySlotBlocks: {
|
|
24542
|
+
path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/reorder",
|
|
24543
|
+
method: "POST",
|
|
24544
|
+
tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
|
|
24545
|
+
auth: "user",
|
|
24546
|
+
responseKind: "json",
|
|
24547
|
+
errors: ["validation:invalid_input", "resource:not_found"]
|
|
24548
|
+
},
|
|
24549
|
+
deleteEntrySlotBlock: {
|
|
24550
|
+
path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/{blockId}",
|
|
24551
|
+
method: "DELETE",
|
|
24552
|
+
tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
|
|
24553
|
+
auth: "user",
|
|
24554
|
+
responseKind: "json",
|
|
24555
|
+
errors: ["resource:not_found"]
|
|
24556
|
+
},
|
|
23750
24557
|
createBlock: {
|
|
23751
24558
|
path: "/sites/{siteId}/pages/{pageId}/blocks",
|
|
23752
24559
|
method: "POST",
|
|
@@ -27501,14 +28308,14 @@ function formatFieldPath(path25) {
|
|
|
27501
28308
|
function toZodIssuePath(path25) {
|
|
27502
28309
|
return [...path25];
|
|
27503
28310
|
}
|
|
27504
|
-
function fieldIssueToMessage(
|
|
27505
|
-
switch (
|
|
28311
|
+
function fieldIssueToMessage(issue4) {
|
|
28312
|
+
switch (issue4.kind) {
|
|
27506
28313
|
case "required":
|
|
27507
28314
|
return "This field is required";
|
|
27508
28315
|
case "wrongType":
|
|
27509
|
-
return `${
|
|
28316
|
+
return `${issue4.label} needs ${issue4.expected}`;
|
|
27510
28317
|
case "tooLong":
|
|
27511
|
-
return `Use ${
|
|
28318
|
+
return `Use ${issue4.maximum} characters or fewer`;
|
|
27512
28319
|
case "invalidEmail":
|
|
27513
28320
|
return "Enter a valid email address";
|
|
27514
28321
|
case "invalidPhone":
|
|
@@ -27524,29 +28331,29 @@ function fieldIssueToMessage(issue2) {
|
|
|
27524
28331
|
case "invalidDateTime":
|
|
27525
28332
|
return "Choose a valid date and time";
|
|
27526
28333
|
case "invalidNumber":
|
|
27527
|
-
return `${
|
|
28334
|
+
return `${issue4.label} needs a number`;
|
|
27528
28335
|
case "tooSmall":
|
|
27529
|
-
return `${
|
|
28336
|
+
return `${issue4.label} must be ${issue4.minimum} or more`;
|
|
27530
28337
|
case "tooLarge":
|
|
27531
|
-
return `${
|
|
28338
|
+
return `${issue4.label} must be ${issue4.maximum} or less`;
|
|
27532
28339
|
case "invalidSlug":
|
|
27533
|
-
return `${
|
|
28340
|
+
return `${issue4.label} can only use lowercase letters, numbers, and dashes`;
|
|
27534
28341
|
case "invalidOption":
|
|
27535
|
-
return `Choose one of the available options for ${
|
|
28342
|
+
return `Choose one of the available options for ${issue4.label}`;
|
|
27536
28343
|
case "tooFewItems":
|
|
27537
|
-
return `${
|
|
28344
|
+
return `${issue4.label} must have at least ${issue4.minimum} ${pluralize(issue4.itemLabel, issue4.minimum)}`;
|
|
27538
28345
|
case "tooManyItems":
|
|
27539
|
-
return `${
|
|
28346
|
+
return `${issue4.label} must have at most ${issue4.maximum} ${pluralize(issue4.itemLabel, issue4.maximum)}`;
|
|
27540
28347
|
case "invalidRichText":
|
|
27541
|
-
return `${
|
|
28348
|
+
return `${issue4.label} must be valid rich text`;
|
|
27542
28349
|
case "invalidMedia":
|
|
27543
|
-
return `${
|
|
28350
|
+
return `${issue4.label} must be a valid media item`;
|
|
27544
28351
|
case "invalidLink":
|
|
27545
|
-
return `${
|
|
28352
|
+
return `${issue4.label} must be a valid link`;
|
|
27546
28353
|
case "invalidReference":
|
|
27547
|
-
return `${
|
|
28354
|
+
return `${issue4.label} must reference a valid item`;
|
|
27548
28355
|
default:
|
|
27549
|
-
return assertNever2(
|
|
28356
|
+
return assertNever2(issue4);
|
|
27550
28357
|
}
|
|
27551
28358
|
}
|
|
27552
28359
|
function pluralize(label, count) {
|
|
@@ -28185,8 +28992,8 @@ function isValidTimeString(value) {
|
|
|
28185
28992
|
function isValidDateTimeInstantString(value) {
|
|
28186
28993
|
const match = DATETIME_PATTERN.exec(value);
|
|
28187
28994
|
if (!match?.groups) return false;
|
|
28188
|
-
const
|
|
28189
|
-
if (!
|
|
28995
|
+
const datePart2 = match.groups.date;
|
|
28996
|
+
if (!datePart2 || !isValidDateString(datePart2)) return false;
|
|
28190
28997
|
return !Number.isNaN(Date.parse(value));
|
|
28191
28998
|
}
|
|
28192
28999
|
function isValidCalendarDate(year, month, day) {
|
|
@@ -28333,6 +29140,33 @@ function declareNoBlockDesignCapability(reason) {
|
|
|
28333
29140
|
|
|
28334
29141
|
// ../blocks/src/system/blocks/hero.ts
|
|
28335
29142
|
init_boxStyles();
|
|
29143
|
+
|
|
29144
|
+
// ../blocks/src/system/fields/imageShape.ts
|
|
29145
|
+
var standardImageShapeOptions = [
|
|
29146
|
+
{ value: "default", label: "Default" },
|
|
29147
|
+
{ value: "square", label: "Square corners" },
|
|
29148
|
+
{ value: "rounded", label: "Rounded corners" },
|
|
29149
|
+
{ value: "circle", label: "Circle" },
|
|
29150
|
+
{ value: "arch", label: "Arch" }
|
|
29151
|
+
];
|
|
29152
|
+
function createImageShapeField(options = {}) {
|
|
29153
|
+
return {
|
|
29154
|
+
id: options.id ?? "imageShape",
|
|
29155
|
+
type: "select",
|
|
29156
|
+
label: options.label ?? "Image shape",
|
|
29157
|
+
...options.description ? { description: options.description } : {},
|
|
29158
|
+
required: false,
|
|
29159
|
+
defaultValue: options.defaultValue ?? "default",
|
|
29160
|
+
multiple: false,
|
|
29161
|
+
options: [...standardImageShapeOptions],
|
|
29162
|
+
ui: {
|
|
29163
|
+
intent: options.uiIntent ?? "display",
|
|
29164
|
+
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
29165
|
+
}
|
|
29166
|
+
};
|
|
29167
|
+
}
|
|
29168
|
+
|
|
29169
|
+
// ../blocks/src/system/blocks/hero.ts
|
|
28336
29170
|
init_fragments();
|
|
28337
29171
|
init_styledSection();
|
|
28338
29172
|
init_defineBlock();
|
|
@@ -28400,7 +29234,18 @@ function heroSplitImagePane() {
|
|
|
28400
29234
|
return stack(
|
|
28401
29235
|
{
|
|
28402
29236
|
gap: "none",
|
|
28403
|
-
className:
|
|
29237
|
+
className: {
|
|
29238
|
+
$bind: {
|
|
29239
|
+
from: "content.imageShape",
|
|
29240
|
+
transforms: [
|
|
29241
|
+
{
|
|
29242
|
+
id: "ui.imageShapeClassName",
|
|
29243
|
+
options: { baseClass: "rb-relative rb-overflow-hidden rb-rounded-3xl" }
|
|
29244
|
+
}
|
|
29245
|
+
],
|
|
29246
|
+
fallback: "rb-relative rb-overflow-hidden rb-rounded-3xl"
|
|
29247
|
+
}
|
|
29248
|
+
},
|
|
28404
29249
|
style: {
|
|
28405
29250
|
minHeight: "clamp(18rem, 36vw, 34rem)"
|
|
28406
29251
|
}
|
|
@@ -28518,6 +29363,12 @@ var heroConfig = {
|
|
|
28518
29363
|
label: "Content card",
|
|
28519
29364
|
renderInHeader: true,
|
|
28520
29365
|
intent: "style"
|
|
29366
|
+
}),
|
|
29367
|
+
createImageShapeField({
|
|
29368
|
+
id: "imageShape",
|
|
29369
|
+
label: "Image shape",
|
|
29370
|
+
defaultValue: "default",
|
|
29371
|
+
uiIntent: "display"
|
|
28521
29372
|
})
|
|
28522
29373
|
],
|
|
28523
29374
|
layout: classicLayout,
|
|
@@ -28532,6 +29383,15 @@ var heroConfig = {
|
|
|
28532
29383
|
description: "Hero section with headline, subtitle, and repeatable CTAs.",
|
|
28533
29384
|
tags: ["header", "banner", "landing", "introduction", "welcome", "splash", "headline"],
|
|
28534
29385
|
icon: "Sparkles",
|
|
29386
|
+
previewCustomize: {
|
|
29387
|
+
quickFieldPriority: [
|
|
29388
|
+
"titleSize",
|
|
29389
|
+
"contentAlignment",
|
|
29390
|
+
"contentMaxWidth",
|
|
29391
|
+
"verticalAlignment",
|
|
29392
|
+
"imageShape"
|
|
29393
|
+
]
|
|
29394
|
+
},
|
|
28535
29395
|
styleTokens: {
|
|
28536
29396
|
typography: "display",
|
|
28537
29397
|
spacing: "xl"
|
|
@@ -28551,7 +29411,8 @@ var standardAspectRatioOptions = [
|
|
|
28551
29411
|
{ value: "16/9", label: "16:9 (Landscape)" },
|
|
28552
29412
|
{ value: "4/3", label: "4:3 (Standard)" },
|
|
28553
29413
|
{ value: "1/1", label: "1:1 (Square)" },
|
|
28554
|
-
{ value: "3/4", label: "3:4 (Portrait)" }
|
|
29414
|
+
{ value: "3/4", label: "3:4 (Portrait)" },
|
|
29415
|
+
{ value: "9/16", label: "9:16 (Tall portrait)" }
|
|
28555
29416
|
];
|
|
28556
29417
|
function createAspectRatioField(options = {}) {
|
|
28557
29418
|
return {
|
|
@@ -29522,6 +30383,263 @@ var formBlockDefinition = {
|
|
|
29522
30383
|
runtime: formBlockRuntime
|
|
29523
30384
|
};
|
|
29524
30385
|
|
|
30386
|
+
// ../blocks/src/system/blocks/contact-newsletter.ts
|
|
30387
|
+
init_fragments();
|
|
30388
|
+
init_styledSection();
|
|
30389
|
+
init_builder2();
|
|
30390
|
+
init_defineBlock();
|
|
30391
|
+
init_api_bindings();
|
|
30392
|
+
var contactNewsletterLayout = styledSection({
|
|
30393
|
+
children: sectionContainer([
|
|
30394
|
+
el(
|
|
30395
|
+
"div",
|
|
30396
|
+
{ className: "contact-newsletter-grid" },
|
|
30397
|
+
[
|
|
30398
|
+
el(
|
|
30399
|
+
"div",
|
|
30400
|
+
{ className: "contact-newsletter-column contact-newsletter-contact" },
|
|
30401
|
+
[
|
|
30402
|
+
el(
|
|
30403
|
+
"div",
|
|
30404
|
+
{ className: "contact-newsletter-copy" },
|
|
30405
|
+
[
|
|
30406
|
+
text(
|
|
30407
|
+
{
|
|
30408
|
+
as: "h2",
|
|
30409
|
+
className: "form-copy-title"
|
|
30410
|
+
},
|
|
30411
|
+
when("contactTitle"),
|
|
30412
|
+
bind("contactTitle")
|
|
30413
|
+
),
|
|
30414
|
+
richText(
|
|
30415
|
+
{
|
|
30416
|
+
className: "form-copy-intro rb-prose rb-max-w-none"
|
|
30417
|
+
},
|
|
30418
|
+
when("contactIntro"),
|
|
30419
|
+
bind("contactIntro")
|
|
30420
|
+
)
|
|
30421
|
+
]
|
|
30422
|
+
),
|
|
30423
|
+
el(
|
|
30424
|
+
"form",
|
|
30425
|
+
withApiBindings({
|
|
30426
|
+
spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } },
|
|
30427
|
+
submitLabel: { $bind: { from: "contactSubmitLabel" } },
|
|
30428
|
+
successMessage: { $bind: { from: "contactSuccessMessage" } }
|
|
30429
|
+
}),
|
|
30430
|
+
[],
|
|
30431
|
+
bind("data.form")
|
|
30432
|
+
)
|
|
30433
|
+
]
|
|
30434
|
+
),
|
|
30435
|
+
el(
|
|
30436
|
+
"div",
|
|
30437
|
+
{ className: "contact-newsletter-column contact-newsletter-info contact-newsletter-newsletter" },
|
|
30438
|
+
[
|
|
30439
|
+
el(
|
|
30440
|
+
"div",
|
|
30441
|
+
{ className: "contact-newsletter-copy" },
|
|
30442
|
+
[
|
|
30443
|
+
text(
|
|
30444
|
+
{
|
|
30445
|
+
as: "h2",
|
|
30446
|
+
className: "newsletter-copy-title"
|
|
30447
|
+
},
|
|
30448
|
+
when("newsletterTitle"),
|
|
30449
|
+
bind("newsletterTitle")
|
|
30450
|
+
),
|
|
30451
|
+
richText(
|
|
30452
|
+
{
|
|
30453
|
+
className: "newsletter-copy-subtitle rb-prose rb-max-w-none"
|
|
30454
|
+
},
|
|
30455
|
+
when("newsletterSubtitle"),
|
|
30456
|
+
bind("newsletterSubtitle")
|
|
30457
|
+
)
|
|
30458
|
+
]
|
|
30459
|
+
),
|
|
30460
|
+
el(
|
|
30461
|
+
"newsletter-form",
|
|
30462
|
+
withApiBindings({
|
|
30463
|
+
listId: { $bind: { from: "listId" } },
|
|
30464
|
+
preset: { $bind: { from: "preset" } },
|
|
30465
|
+
includePhone: { $bind: { from: "includePhone" } },
|
|
30466
|
+
buttonLabel: { $bind: { from: "newsletterButtonLabel" } },
|
|
30467
|
+
successMessage: { $bind: { from: "newsletterSuccessMessage" } },
|
|
30468
|
+
privacyNote: { $bind: { from: "newsletterPrivacyNote" } },
|
|
30469
|
+
tags: { $bind: { from: "newsletterTags" } },
|
|
30470
|
+
spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } }
|
|
30471
|
+
}),
|
|
30472
|
+
[]
|
|
30473
|
+
)
|
|
30474
|
+
]
|
|
30475
|
+
)
|
|
30476
|
+
]
|
|
30477
|
+
)
|
|
30478
|
+
], {
|
|
30479
|
+
className: "contact-newsletter-container"
|
|
30480
|
+
}),
|
|
30481
|
+
baseClass: "",
|
|
30482
|
+
spacing: "medium",
|
|
30483
|
+
background: "surface"
|
|
30484
|
+
});
|
|
30485
|
+
var contactNewsletterManifest = createBlockManifest({
|
|
30486
|
+
id: "block.contact-newsletter",
|
|
30487
|
+
title: "Contact + Newsletter",
|
|
30488
|
+
titleSource: "contactTitle",
|
|
30489
|
+
description: "Two-column newsletter signup and contact form section.",
|
|
30490
|
+
category: "interactive",
|
|
30491
|
+
layout: contactNewsletterLayout,
|
|
30492
|
+
defaultVariant: "default",
|
|
30493
|
+
variants: {
|
|
30494
|
+
default: contactNewsletterLayout
|
|
30495
|
+
},
|
|
30496
|
+
variantOptions: {
|
|
30497
|
+
default: {
|
|
30498
|
+
label: "Two column",
|
|
30499
|
+
description: "Newsletter and contact form side by side.",
|
|
30500
|
+
icon: "Columns2"
|
|
30501
|
+
}
|
|
30502
|
+
},
|
|
30503
|
+
additionalFields: [
|
|
30504
|
+
{
|
|
30505
|
+
id: "newsletterTitle",
|
|
30506
|
+
type: "text",
|
|
30507
|
+
label: "Newsletter title",
|
|
30508
|
+
defaultValue: "Stay connected"
|
|
30509
|
+
},
|
|
30510
|
+
{
|
|
30511
|
+
id: "newsletterSubtitle",
|
|
30512
|
+
type: "richText",
|
|
30513
|
+
label: "Newsletter intro"
|
|
30514
|
+
},
|
|
30515
|
+
{
|
|
30516
|
+
id: "listId",
|
|
30517
|
+
type: "reference",
|
|
30518
|
+
label: "Newsletter list",
|
|
30519
|
+
description: "Select the list new subscribers should be added to.",
|
|
30520
|
+
required: true,
|
|
30521
|
+
referenceKind: "newsletterList",
|
|
30522
|
+
allowManualEntry: false,
|
|
30523
|
+
ui: { intent: "behavior" }
|
|
30524
|
+
},
|
|
30525
|
+
{
|
|
30526
|
+
id: "preset",
|
|
30527
|
+
type: "select",
|
|
30528
|
+
label: "Newsletter fields",
|
|
30529
|
+
defaultValue: "emailOnly",
|
|
30530
|
+
ui: { intent: "display" },
|
|
30531
|
+
options: [
|
|
30532
|
+
{ value: "emailOnly", label: "Email only" },
|
|
30533
|
+
{ value: "emailName", label: "Email + Name" },
|
|
30534
|
+
{ value: "emailFirstLast", label: "Email + First/Last Name" },
|
|
30535
|
+
{ value: "emailNameCompany", label: "Email + Name + Company (B2B)" }
|
|
30536
|
+
]
|
|
30537
|
+
},
|
|
30538
|
+
{
|
|
30539
|
+
id: "includePhone",
|
|
30540
|
+
type: "boolean",
|
|
30541
|
+
label: "Include phone field",
|
|
30542
|
+
defaultValue: false,
|
|
30543
|
+
ui: { intent: "display" }
|
|
30544
|
+
},
|
|
30545
|
+
{
|
|
30546
|
+
id: "newsletterButtonLabel",
|
|
30547
|
+
type: "text",
|
|
30548
|
+
label: "Newsletter button label",
|
|
30549
|
+
defaultValue: "Subscribe",
|
|
30550
|
+
ui: { intent: "display" }
|
|
30551
|
+
},
|
|
30552
|
+
{
|
|
30553
|
+
id: "newsletterSuccessMessage",
|
|
30554
|
+
type: "text",
|
|
30555
|
+
label: "Newsletter success message",
|
|
30556
|
+
defaultValue: "Thanks for subscribing!",
|
|
30557
|
+
ui: { intent: "behavior" }
|
|
30558
|
+
},
|
|
30559
|
+
{
|
|
30560
|
+
id: "newsletterPrivacyNote",
|
|
30561
|
+
type: "text",
|
|
30562
|
+
label: "Privacy note",
|
|
30563
|
+
ui: { intent: "display" }
|
|
30564
|
+
},
|
|
30565
|
+
{
|
|
30566
|
+
id: "newsletterTags",
|
|
30567
|
+
type: "text",
|
|
30568
|
+
label: "Newsletter tags",
|
|
30569
|
+
description: "Optional tags to apply on subscribe, separated by comma or semicolon.",
|
|
30570
|
+
ui: { intent: "behavior" }
|
|
30571
|
+
},
|
|
30572
|
+
{
|
|
30573
|
+
id: "contactTitle",
|
|
30574
|
+
type: "text",
|
|
30575
|
+
label: "Contact title",
|
|
30576
|
+
defaultValue: "Get in touch"
|
|
30577
|
+
},
|
|
30578
|
+
{
|
|
30579
|
+
id: "contactIntro",
|
|
30580
|
+
type: "richText",
|
|
30581
|
+
label: "Contact intro"
|
|
30582
|
+
},
|
|
30583
|
+
{
|
|
30584
|
+
id: "formSlug",
|
|
30585
|
+
type: "reference",
|
|
30586
|
+
label: "Contact form",
|
|
30587
|
+
description: "Pick a saved form to render.",
|
|
30588
|
+
required: true,
|
|
30589
|
+
referenceKind: "form",
|
|
30590
|
+
allowManualEntry: false,
|
|
30591
|
+
ui: { intent: "behavior" }
|
|
30592
|
+
},
|
|
30593
|
+
{
|
|
30594
|
+
id: "contactSubmitLabel",
|
|
30595
|
+
type: "text",
|
|
30596
|
+
label: "Contact button label",
|
|
30597
|
+
defaultValue: "Send message",
|
|
30598
|
+
ui: { intent: "display" }
|
|
30599
|
+
},
|
|
30600
|
+
{
|
|
30601
|
+
id: "contactSuccessMessage",
|
|
30602
|
+
type: "text",
|
|
30603
|
+
label: "Contact success message",
|
|
30604
|
+
defaultValue: "Thanks - we received your message.",
|
|
30605
|
+
ui: { intent: "behavior" }
|
|
30606
|
+
}
|
|
30607
|
+
],
|
|
30608
|
+
styleTokens: {
|
|
30609
|
+
background: "surface",
|
|
30610
|
+
typography: "body",
|
|
30611
|
+
spacing: "md"
|
|
30612
|
+
},
|
|
30613
|
+
behaviours: {
|
|
30614
|
+
supportsThemeSwitching: true,
|
|
30615
|
+
inlineEditing: true,
|
|
30616
|
+
animation: false,
|
|
30617
|
+
paletteHidden: false
|
|
30618
|
+
},
|
|
30619
|
+
tags: [
|
|
30620
|
+
"contact",
|
|
30621
|
+
"newsletter",
|
|
30622
|
+
"signup",
|
|
30623
|
+
"email",
|
|
30624
|
+
"form",
|
|
30625
|
+
"lead-capture"
|
|
30626
|
+
],
|
|
30627
|
+
icon: "MailPlus"
|
|
30628
|
+
});
|
|
30629
|
+
var contactNewsletterBlockDefinition = {
|
|
30630
|
+
manifest: contactNewsletterManifest,
|
|
30631
|
+
dataSchemas: { form: formDataSchema.optional() },
|
|
30632
|
+
dataLoaders: {
|
|
30633
|
+
form: {
|
|
30634
|
+
endpoint: "getPublicFormById",
|
|
30635
|
+
params: {
|
|
30636
|
+
formSlug: { $bind: { from: "formSlug" } }
|
|
30637
|
+
},
|
|
30638
|
+
mode: "server"
|
|
30639
|
+
}
|
|
30640
|
+
}
|
|
30641
|
+
};
|
|
30642
|
+
|
|
29525
30643
|
// ../blocks/src/system/blocks/faq.ts
|
|
29526
30644
|
init_fragments();
|
|
29527
30645
|
init_styledSection();
|
|
@@ -29762,6 +30880,7 @@ var joinClasses3 = (parts) => parts.filter(
|
|
|
29762
30880
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
29763
30881
|
var eyebrowTreatmentClassMap = {
|
|
29764
30882
|
plain: "",
|
|
30883
|
+
accent: "rb-eyebrow-treatment-accent",
|
|
29765
30884
|
pill: "rb-eyebrow-treatment-pill",
|
|
29766
30885
|
"accent-pill": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent",
|
|
29767
30886
|
"pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-pill-bounce",
|
|
@@ -29788,6 +30907,13 @@ var imageGalleryCornerClassMap = {
|
|
|
29788
30907
|
"2xl": "rb-rounded-2xl",
|
|
29789
30908
|
"3xl": "rb-rounded-3xl"
|
|
29790
30909
|
};
|
|
30910
|
+
var imageShapeClassMap = {
|
|
30911
|
+
default: "",
|
|
30912
|
+
square: "rb-media-shape-square",
|
|
30913
|
+
rounded: "rb-media-shape-rounded",
|
|
30914
|
+
circle: "rb-media-shape-circle",
|
|
30915
|
+
arch: "rb-media-shape-arch"
|
|
30916
|
+
};
|
|
29791
30917
|
var parseRatio = (raw) => {
|
|
29792
30918
|
if (typeof raw !== "string") return null;
|
|
29793
30919
|
const value = raw.trim();
|
|
@@ -29932,6 +31058,10 @@ function resolveHeroContentMaxWidth(content) {
|
|
|
29932
31058
|
return "default";
|
|
29933
31059
|
}
|
|
29934
31060
|
function resolveHeroTypographyScale(content) {
|
|
31061
|
+
const titleSize = readString(content, "titleSize");
|
|
31062
|
+
if (titleSize === "quiet" || titleSize === "editorial" || titleSize === "display" || titleSize === "poster") {
|
|
31063
|
+
return titleSize;
|
|
31064
|
+
}
|
|
29935
31065
|
const raw = readHeroLayoutString(
|
|
29936
31066
|
content,
|
|
29937
31067
|
"typographyScale",
|
|
@@ -30173,6 +31303,16 @@ var uiTransforms = [
|
|
|
30173
31303
|
heroGridClassFromVerticalAlignmentTransform,
|
|
30174
31304
|
imageFragmentClassTransform,
|
|
30175
31305
|
imageFragmentSizeTransform,
|
|
31306
|
+
{
|
|
31307
|
+
id: "ui.imageShapeClassName",
|
|
31308
|
+
kind: "string",
|
|
31309
|
+
summary: "Apply a constrained media shape class",
|
|
31310
|
+
run: (value, options) => {
|
|
31311
|
+
const baseClass = typeof options?.baseClass === "string" ? options.baseClass : "";
|
|
31312
|
+
const shape = typeof value === "string" ? value.trim() : "default";
|
|
31313
|
+
return joinClasses3([baseClass, imageShapeClassMap[shape] ?? ""]);
|
|
31314
|
+
}
|
|
31315
|
+
},
|
|
30176
31316
|
conditionalClassTransform,
|
|
30177
31317
|
twoColumnContainerClassTransform,
|
|
30178
31318
|
twoColumnFlexBasisTransform,
|
|
@@ -31514,6 +32654,21 @@ var siteHeaderManifest = createBlockManifest({
|
|
|
31514
32654
|
id: "block.site-header",
|
|
31515
32655
|
title: "Site Header",
|
|
31516
32656
|
category: "layout",
|
|
32657
|
+
additionalFields: [
|
|
32658
|
+
{
|
|
32659
|
+
id: "mode",
|
|
32660
|
+
type: "select",
|
|
32661
|
+
label: "Header display",
|
|
32662
|
+
required: false,
|
|
32663
|
+
multiple: false,
|
|
32664
|
+
defaultValue: "default",
|
|
32665
|
+
options: [
|
|
32666
|
+
{ value: "default", label: "Show header" },
|
|
32667
|
+
{ value: "hidden", label: "Hide header" }
|
|
32668
|
+
],
|
|
32669
|
+
ui: { intent: "display" }
|
|
32670
|
+
}
|
|
32671
|
+
],
|
|
31517
32672
|
// Skip section styles - this block uses theme-based styling
|
|
31518
32673
|
skipSectionStyles: true,
|
|
31519
32674
|
// Block manages its own wrapper - enables sticky positioning
|
|
@@ -32960,6 +34115,9 @@ var mediaTextManifest = createBlockManifest({
|
|
|
32960
34115
|
category: "layout",
|
|
32961
34116
|
includeContainerStyles: true,
|
|
32962
34117
|
titleSource: "title",
|
|
34118
|
+
previewCustomize: {
|
|
34119
|
+
quickFieldPriority: ["imagePosition", "ratio", "imageShape", "titleAlignment", "aspectRatio"]
|
|
34120
|
+
},
|
|
32963
34121
|
additionalFields: [
|
|
32964
34122
|
{
|
|
32965
34123
|
id: "images",
|
|
@@ -32998,7 +34156,7 @@ var mediaTextManifest = createBlockManifest({
|
|
|
32998
34156
|
{
|
|
32999
34157
|
id: "titleAlignment",
|
|
33000
34158
|
type: "select",
|
|
33001
|
-
label: "
|
|
34159
|
+
label: "Content alignment",
|
|
33002
34160
|
required: false,
|
|
33003
34161
|
defaultValue: "left",
|
|
33004
34162
|
multiple: false,
|
|
@@ -33056,7 +34214,18 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33056
34214
|
transition: "slide"
|
|
33057
34215
|
},
|
|
33058
34216
|
ui: { intent: "behavior" }
|
|
33059
|
-
})
|
|
34217
|
+
}).map((field) => ({
|
|
34218
|
+
...field,
|
|
34219
|
+
ui: {
|
|
34220
|
+
...field.ui ?? {},
|
|
34221
|
+
visibleWhen: field.id === "carouselAutoplayDelay" ? {
|
|
34222
|
+
allOf: [
|
|
34223
|
+
{ field: "images", minItems: 2 },
|
|
34224
|
+
{ field: "carouselAutoplay", equals: true }
|
|
34225
|
+
]
|
|
34226
|
+
} : { field: "images", minItems: 2 }
|
|
34227
|
+
}
|
|
34228
|
+
})),
|
|
33060
34229
|
createAspectRatioField({
|
|
33061
34230
|
id: "aspectRatio",
|
|
33062
34231
|
label: "Media aspect ratio",
|
|
@@ -33064,6 +34233,12 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33064
34233
|
defaultValue: "auto",
|
|
33065
34234
|
visibleWhen: { field: "images", notEquals: null }
|
|
33066
34235
|
}),
|
|
34236
|
+
createImageShapeField({
|
|
34237
|
+
id: "imageShape",
|
|
34238
|
+
label: "Media shape",
|
|
34239
|
+
defaultValue: "default",
|
|
34240
|
+
visibleWhen: { field: "images", notEquals: null }
|
|
34241
|
+
}),
|
|
33067
34242
|
{
|
|
33068
34243
|
id: "text",
|
|
33069
34244
|
type: "richText",
|
|
@@ -33097,6 +34272,30 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33097
34272
|
...options?.not ? { not: true } : {}
|
|
33098
34273
|
}
|
|
33099
34274
|
});
|
|
34275
|
+
const bodyClassNameFromAlignment = {
|
|
34276
|
+
$bind: {
|
|
34277
|
+
from: "content.titleAlignment",
|
|
34278
|
+
transforms: [
|
|
34279
|
+
{
|
|
34280
|
+
id: "ui.bodyClassFromAlignment",
|
|
34281
|
+
options: { base: "rb-prose rb-max-w-none" }
|
|
34282
|
+
}
|
|
34283
|
+
],
|
|
34284
|
+
fallback: "rb-prose rb-max-w-none"
|
|
34285
|
+
}
|
|
34286
|
+
};
|
|
34287
|
+
const titleClassNameFromAlignment = {
|
|
34288
|
+
$bind: {
|
|
34289
|
+
from: "content.titleAlignment",
|
|
34290
|
+
transforms: [
|
|
34291
|
+
{
|
|
34292
|
+
id: "ui.headingClassFromAlignment",
|
|
34293
|
+
options: { base: "" }
|
|
34294
|
+
}
|
|
34295
|
+
],
|
|
34296
|
+
fallback: ""
|
|
34297
|
+
}
|
|
34298
|
+
};
|
|
33100
34299
|
const defaultTextColumn = el("div", {}, [
|
|
33101
34300
|
styledCard(
|
|
33102
34301
|
[
|
|
@@ -33121,8 +34320,55 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33121
34320
|
bind("content.text")
|
|
33122
34321
|
)
|
|
33123
34322
|
]);
|
|
34323
|
+
const bioTextColumn = el(
|
|
34324
|
+
"div",
|
|
34325
|
+
{ className: "rb-flex rb-h-full rb-w-full rb-max-w-prose rb-flex-col rb-justify-center rb-gap-5" },
|
|
34326
|
+
[
|
|
34327
|
+
text(
|
|
34328
|
+
{
|
|
34329
|
+
as: "h2",
|
|
34330
|
+
className: titleClassNameFromAlignment
|
|
34331
|
+
},
|
|
34332
|
+
when("content.title"),
|
|
34333
|
+
bind("content.title")
|
|
34334
|
+
),
|
|
34335
|
+
styledCard(
|
|
34336
|
+
[
|
|
34337
|
+
richText(
|
|
34338
|
+
{
|
|
34339
|
+
className: bodyClassNameFromAlignment
|
|
34340
|
+
},
|
|
34341
|
+
bind("content.text")
|
|
34342
|
+
)
|
|
34343
|
+
],
|
|
34344
|
+
{
|
|
34345
|
+
stylesFrom: "content._textCardStyles",
|
|
34346
|
+
backgroundFrom: "content._textCardStyles.background"
|
|
34347
|
+
},
|
|
34348
|
+
when("content.wrapTextInCard")
|
|
34349
|
+
),
|
|
34350
|
+
richText(
|
|
34351
|
+
{
|
|
34352
|
+
className: bodyClassNameFromAlignment
|
|
34353
|
+
},
|
|
34354
|
+
when("content.wrapTextInCard", { not: true }),
|
|
34355
|
+
bind("content.text")
|
|
34356
|
+
)
|
|
34357
|
+
]
|
|
34358
|
+
);
|
|
33124
34359
|
const defaultImageCommonProps = {
|
|
33125
|
-
className:
|
|
34360
|
+
className: {
|
|
34361
|
+
$bind: {
|
|
34362
|
+
from: "content.imageShape",
|
|
34363
|
+
transforms: [
|
|
34364
|
+
{
|
|
34365
|
+
id: "ui.imageShapeClassName",
|
|
34366
|
+
options: { baseClass: "rb-w-full rb-h-auto rb-object-cover" }
|
|
34367
|
+
}
|
|
34368
|
+
],
|
|
34369
|
+
fallback: "rb-w-full rb-h-auto rb-object-cover"
|
|
34370
|
+
}
|
|
34371
|
+
},
|
|
33126
34372
|
style: {
|
|
33127
34373
|
aspectRatio: { $bind: { from: "content.aspectRatio" } }
|
|
33128
34374
|
}
|
|
@@ -33163,6 +34409,27 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33163
34409
|
],
|
|
33164
34410
|
whenImagesLength(0, { not: true })
|
|
33165
34411
|
);
|
|
34412
|
+
const bioImagesLayout = el(
|
|
34413
|
+
"div",
|
|
34414
|
+
{},
|
|
34415
|
+
[
|
|
34416
|
+
responsiveTwoColumn({
|
|
34417
|
+
image: el("div", {}, [
|
|
34418
|
+
el("div", {}, [defaultSingleImage], whenImagesLength(1)),
|
|
34419
|
+
el("div", {}, [defaultCarouselImages], whenImagesLength(1, { not: true }))
|
|
34420
|
+
]),
|
|
34421
|
+
text: bioTextColumn,
|
|
34422
|
+
ratioFrom: "content.ratio",
|
|
34423
|
+
imagePositionFrom: "content.imagePosition",
|
|
34424
|
+
containerClassName: "rb-flex rb-flex-col rb-md-flex-row rb-md-items-center",
|
|
34425
|
+
gapFrom: "content.gap",
|
|
34426
|
+
gapFallback: "comfortable",
|
|
34427
|
+
imageWrapperClassName: "rb-w-full rb-shrink-0",
|
|
34428
|
+
textWrapperClassName: "rb-w-full rb-min-w-0 rb-flex-1 rb-self-stretch"
|
|
34429
|
+
})
|
|
34430
|
+
],
|
|
34431
|
+
whenImagesLength(0, { not: true })
|
|
34432
|
+
);
|
|
33166
34433
|
const defaultTextOnlyLayout = el(
|
|
33167
34434
|
"div",
|
|
33168
34435
|
{},
|
|
@@ -33192,7 +34459,45 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33192
34459
|
],
|
|
33193
34460
|
whenImagesLength(0)
|
|
33194
34461
|
);
|
|
34462
|
+
const bioTextOnlyLayout = el(
|
|
34463
|
+
"div",
|
|
34464
|
+
{ className: "rb-flex rb-w-full rb-max-w-prose rb-flex-col rb-gap-5" },
|
|
34465
|
+
[
|
|
34466
|
+
text(
|
|
34467
|
+
{
|
|
34468
|
+
as: "h2",
|
|
34469
|
+
className: titleClassNameFromAlignment
|
|
34470
|
+
},
|
|
34471
|
+
when("content.title"),
|
|
34472
|
+
bind("content.title")
|
|
34473
|
+
),
|
|
34474
|
+
styledCard(
|
|
34475
|
+
[
|
|
34476
|
+
richText(
|
|
34477
|
+
{
|
|
34478
|
+
className: bodyClassNameFromAlignment
|
|
34479
|
+
},
|
|
34480
|
+
bind("content.text")
|
|
34481
|
+
)
|
|
34482
|
+
],
|
|
34483
|
+
{
|
|
34484
|
+
stylesFrom: "content._textCardStyles",
|
|
34485
|
+
backgroundFrom: "content._textCardStyles.background"
|
|
34486
|
+
},
|
|
34487
|
+
when("content.wrapTextInCard")
|
|
34488
|
+
),
|
|
34489
|
+
richText(
|
|
34490
|
+
{
|
|
34491
|
+
className: bodyClassNameFromAlignment
|
|
34492
|
+
},
|
|
34493
|
+
when("content.wrapTextInCard", { not: true }),
|
|
34494
|
+
bind("content.text")
|
|
34495
|
+
)
|
|
34496
|
+
],
|
|
34497
|
+
whenImagesLength(0)
|
|
34498
|
+
);
|
|
33195
34499
|
const defaultInner = el("div", {}, [defaultImagesLayout, defaultTextOnlyLayout]);
|
|
34500
|
+
const bioInner = el("div", {}, [bioImagesLayout, bioTextOnlyLayout]);
|
|
33196
34501
|
const defaultLayout2 = styledSection({
|
|
33197
34502
|
children: styledContainer({
|
|
33198
34503
|
rootType: "stack",
|
|
@@ -33201,18 +34506,7 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33201
34506
|
text(
|
|
33202
34507
|
{
|
|
33203
34508
|
as: "h2",
|
|
33204
|
-
className:
|
|
33205
|
-
$bind: {
|
|
33206
|
-
from: "content.titleAlignment",
|
|
33207
|
-
transforms: [
|
|
33208
|
-
{
|
|
33209
|
-
id: "ui.headingClassFromAlignment",
|
|
33210
|
-
options: { base: "" }
|
|
33211
|
-
}
|
|
33212
|
-
],
|
|
33213
|
-
fallback: ""
|
|
33214
|
-
}
|
|
33215
|
-
}
|
|
34509
|
+
className: titleClassNameFromAlignment
|
|
33216
34510
|
},
|
|
33217
34511
|
when("content.title"),
|
|
33218
34512
|
bind("content.title")
|
|
@@ -33224,14 +34518,28 @@ var mediaTextManifest = createBlockManifest({
|
|
|
33224
34518
|
baseClass: "",
|
|
33225
34519
|
spacing: "medium"
|
|
33226
34520
|
});
|
|
34521
|
+
const bioLayout = styledSection({
|
|
34522
|
+
children: styledContainer({
|
|
34523
|
+
rootType: "stack",
|
|
34524
|
+
rootProps: { gap: "lg" },
|
|
34525
|
+
children: [bioInner]
|
|
34526
|
+
}),
|
|
34527
|
+
baseClass: "",
|
|
34528
|
+
spacing: "medium"
|
|
34529
|
+
});
|
|
33227
34530
|
return {
|
|
33228
34531
|
layout: defaultLayout2,
|
|
33229
34532
|
variants: {
|
|
33230
|
-
default: defaultLayout2
|
|
34533
|
+
default: defaultLayout2,
|
|
34534
|
+
bio: bioLayout
|
|
33231
34535
|
},
|
|
33232
34536
|
defaultVariant: "default",
|
|
33233
34537
|
variantOptions: {
|
|
33234
|
-
default: { label: "Default" }
|
|
34538
|
+
default: { label: "Default" },
|
|
34539
|
+
bio: {
|
|
34540
|
+
label: "Bio",
|
|
34541
|
+
description: "Vertically centered title and copy beside media."
|
|
34542
|
+
}
|
|
33235
34543
|
}
|
|
33236
34544
|
};
|
|
33237
34545
|
})(),
|
|
@@ -35046,7 +36354,7 @@ function inferLegacyOfferingsPreviewGroupOrder(overrides) {
|
|
|
35046
36354
|
return keys.length >= 2 ? keys : [];
|
|
35047
36355
|
}
|
|
35048
36356
|
function normalizeOfferingsPreviewContentForWrite(value) {
|
|
35049
|
-
if (!
|
|
36357
|
+
if (!isRecord6(value)) return null;
|
|
35050
36358
|
const groupOrderValue = value.groupOrder;
|
|
35051
36359
|
if (Array.isArray(groupOrderValue)) {
|
|
35052
36360
|
const normalized = normalizeOfferingsPreviewGroupOrder(groupOrderValue);
|
|
@@ -35059,7 +36367,7 @@ function normalizeOfferingsPreviewContentForWrite(value) {
|
|
|
35059
36367
|
return { ...value, groupOrder: [] };
|
|
35060
36368
|
}
|
|
35061
36369
|
const legacyOrder = inferLegacyOfferingsPreviewGroupOrder(
|
|
35062
|
-
Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(
|
|
36370
|
+
Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(isRecord6) : []
|
|
35063
36371
|
);
|
|
35064
36372
|
return legacyOrder.length > 0 ? { ...value, groupOrder: legacyOrder } : value;
|
|
35065
36373
|
}
|
|
@@ -35073,7 +36381,7 @@ function uniqueOfferingsPreviewSourceKeys(values) {
|
|
|
35073
36381
|
}
|
|
35074
36382
|
return keys;
|
|
35075
36383
|
}
|
|
35076
|
-
function
|
|
36384
|
+
function isRecord6(value) {
|
|
35077
36385
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35078
36386
|
}
|
|
35079
36387
|
|
|
@@ -35440,7 +36748,7 @@ function isOfferingsPreviewItemLimit(value) {
|
|
|
35440
36748
|
return value === "1" || value === "2" || value === "3" || value === "4" || value === "5" || value === "6" || value === null;
|
|
35441
36749
|
}
|
|
35442
36750
|
function normalizeOfferingsPreviewGroupOverride(value) {
|
|
35443
|
-
if (!
|
|
36751
|
+
if (!isRecord7(value)) return [];
|
|
35444
36752
|
const override = {};
|
|
35445
36753
|
if (isOfferingsPreviewSourceKey(value.sourceKey) || value.sourceKey === null) {
|
|
35446
36754
|
override.sourceKey = value.sourceKey;
|
|
@@ -35472,12 +36780,12 @@ function isButtonVariant(value) {
|
|
|
35472
36780
|
return value === "primary" || value === "secondary" || value === "outline" || value === "link" || value === null;
|
|
35473
36781
|
}
|
|
35474
36782
|
function normalizeCardStylesContent(value) {
|
|
35475
|
-
return
|
|
36783
|
+
return isRecord7(value) || value === null ? value : void 0;
|
|
35476
36784
|
}
|
|
35477
36785
|
function normalizeSectionStylesContent(value) {
|
|
35478
|
-
return
|
|
36786
|
+
return isRecord7(value) || value === null ? value : void 0;
|
|
35479
36787
|
}
|
|
35480
|
-
function
|
|
36788
|
+
function isRecord7(value) {
|
|
35481
36789
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35482
36790
|
}
|
|
35483
36791
|
|
|
@@ -38386,11 +39694,13 @@ var heroImageSurfaceMotions = [
|
|
|
38386
39694
|
];
|
|
38387
39695
|
var standardEyebrowTreatments = [
|
|
38388
39696
|
"plain",
|
|
39697
|
+
"accent",
|
|
38389
39698
|
"pill",
|
|
38390
39699
|
"accent-pill"
|
|
38391
39700
|
];
|
|
38392
39701
|
var animatedEyebrowTreatments = [
|
|
38393
39702
|
"plain",
|
|
39703
|
+
"accent",
|
|
38394
39704
|
"pill",
|
|
38395
39705
|
"accent-pill",
|
|
38396
39706
|
"pill-bounce",
|
|
@@ -38691,6 +40001,17 @@ var systemBlockDefinitionsRaw = [
|
|
|
38691
40001
|
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
|
|
38692
40002
|
]
|
|
38693
40003
|
})),
|
|
40004
|
+
withDesignCapability("block.contact-newsletter", contactNewsletterBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
|
|
40005
|
+
flow: conversionFlow,
|
|
40006
|
+
layoutProfiles: [
|
|
40007
|
+
layoutProfile({
|
|
40008
|
+
variantKey: "default",
|
|
40009
|
+
family: "split",
|
|
40010
|
+
weight: "featured",
|
|
40011
|
+
bias: "soft"
|
|
40012
|
+
})
|
|
40013
|
+
]
|
|
40014
|
+
})),
|
|
38694
40015
|
withDesignCapability("block.faq", faqBlockDefinition, withEyebrowCapability(declareBlockDesignCapability({
|
|
38695
40016
|
sectionSurfaces: "supported",
|
|
38696
40017
|
contentFrames: ["plain", "panel"],
|
|
@@ -38782,6 +40103,12 @@ var systemBlockDefinitionsRaw = [
|
|
|
38782
40103
|
family: "media-text",
|
|
38783
40104
|
weight: "featured",
|
|
38784
40105
|
bias: "soft"
|
|
40106
|
+
}),
|
|
40107
|
+
layoutProfile({
|
|
40108
|
+
variantKey: "bio",
|
|
40109
|
+
family: "media-text",
|
|
40110
|
+
weight: "featured",
|
|
40111
|
+
bias: "soft"
|
|
38785
40112
|
})
|
|
38786
40113
|
]
|
|
38787
40114
|
})),
|
|
@@ -39617,6 +40944,7 @@ init_colorStyles();
|
|
|
39617
40944
|
// ../theme-core/src/inputs/generateInputCss.ts
|
|
39618
40945
|
init_types9();
|
|
39619
40946
|
init_constants();
|
|
40947
|
+
init_colorStyles();
|
|
39620
40948
|
|
|
39621
40949
|
// ../theme-core/src/header/generateHeaderCss.ts
|
|
39622
40950
|
init_resolver();
|
|
@@ -39653,6 +40981,11 @@ ${root} {
|
|
|
39653
40981
|
--er-event-card-bg: rgb(var(--tb-surface));
|
|
39654
40982
|
--er-event-card-border-width: var(--rb-border-width, 1px);
|
|
39655
40983
|
--er-event-card-hover-opacity: 1;
|
|
40984
|
+
--er-control-bg: rgb(var(--tb-background, var(--tb-surface)));
|
|
40985
|
+
--er-control-text: rgb(var(--tb-foreground, var(--tb-text)));
|
|
40986
|
+
--er-radius: var(--rb-block-radius);
|
|
40987
|
+
--er-surface-muted: rgba(var(--tb-muted, 241 245 249), 0.42);
|
|
40988
|
+
--er-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
|
|
39656
40989
|
|
|
39657
40990
|
/* Step indicator */
|
|
39658
40991
|
--er-step-active: rgb(var(--tb-primary));
|
|
@@ -41250,7 +42583,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
|
|
|
41250
42583
|
}
|
|
41251
42584
|
|
|
41252
42585
|
// ../api/src/utils/isRecord.ts
|
|
41253
|
-
function
|
|
42586
|
+
function isRecord8(value) {
|
|
41254
42587
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
41255
42588
|
}
|
|
41256
42589
|
var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
|
|
@@ -41388,11 +42721,11 @@ siteBannerSettingsSchema.superRefine((value, ctx) => {
|
|
|
41388
42721
|
return;
|
|
41389
42722
|
}
|
|
41390
42723
|
const analysis = analyzeSiteBannerBody(value.body);
|
|
41391
|
-
for (const
|
|
42724
|
+
for (const issue4 of analysis.issues) {
|
|
41392
42725
|
ctx.addIssue({
|
|
41393
42726
|
code: z.ZodIssueCode.custom,
|
|
41394
42727
|
path: ["body"],
|
|
41395
|
-
message: siteBannerBodyIssueMessage(
|
|
42728
|
+
message: siteBannerBodyIssueMessage(issue4)
|
|
41396
42729
|
});
|
|
41397
42730
|
}
|
|
41398
42731
|
});
|
|
@@ -41426,8 +42759,8 @@ function analyzeSiteBannerBody(body) {
|
|
|
41426
42759
|
issues
|
|
41427
42760
|
};
|
|
41428
42761
|
}
|
|
41429
|
-
function siteBannerBodyIssueMessage(
|
|
41430
|
-
switch (
|
|
42762
|
+
function siteBannerBodyIssueMessage(issue4) {
|
|
42763
|
+
switch (issue4) {
|
|
41431
42764
|
case "empty":
|
|
41432
42765
|
return "Banner message is required when the banner is enabled.";
|
|
41433
42766
|
case "too-many-paragraphs":
|
|
@@ -41523,7 +42856,7 @@ function sanitizeMarks(marks) {
|
|
|
41523
42856
|
if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
|
|
41524
42857
|
return [{ type: mark.type }];
|
|
41525
42858
|
}
|
|
41526
|
-
if (mark.type === "link" &&
|
|
42859
|
+
if (mark.type === "link" && isRecord8(mark.attrs) && typeof mark.attrs.href === "string") {
|
|
41527
42860
|
const attrs = { href: mark.attrs.href };
|
|
41528
42861
|
if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
|
|
41529
42862
|
attrs.target = mark.attrs.target;
|
|
@@ -41538,10 +42871,10 @@ function sanitizeMarks(marks) {
|
|
|
41538
42871
|
return sanitized.length > 0 ? sanitized : void 0;
|
|
41539
42872
|
}
|
|
41540
42873
|
function unwrapRichTextValue(value) {
|
|
41541
|
-
if (
|
|
42874
|
+
if (isRecord8(value) && isRecord8(value.doc)) {
|
|
41542
42875
|
return unwrapRichTextValue(value.doc);
|
|
41543
42876
|
}
|
|
41544
|
-
if (
|
|
42877
|
+
if (isRecord8(value) && value.type === "doc") {
|
|
41545
42878
|
return {
|
|
41546
42879
|
type: "doc",
|
|
41547
42880
|
content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
|
|
@@ -41550,7 +42883,7 @@ function unwrapRichTextValue(value) {
|
|
|
41550
42883
|
return EMPTY_SITE_BANNER_BODY;
|
|
41551
42884
|
}
|
|
41552
42885
|
function isTipTapNodeLike(value) {
|
|
41553
|
-
return
|
|
42886
|
+
return isRecord8(value) && typeof value.type === "string";
|
|
41554
42887
|
}
|
|
41555
42888
|
function coerceTipTapNode(value) {
|
|
41556
42889
|
return {
|
|
@@ -41558,9 +42891,9 @@ function coerceTipTapNode(value) {
|
|
|
41558
42891
|
...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
|
|
41559
42892
|
...typeof value.text === "string" ? { text: value.text } : {},
|
|
41560
42893
|
...Array.isArray(value.marks) ? {
|
|
41561
|
-
marks: value.marks.filter((mark) =>
|
|
42894
|
+
marks: value.marks.filter((mark) => isRecord8(mark) && typeof mark.type === "string").map((mark) => ({
|
|
41562
42895
|
type: mark.type,
|
|
41563
|
-
...
|
|
42896
|
+
...isRecord8(mark.attrs) ? { attrs: mark.attrs } : {}
|
|
41564
42897
|
}))
|
|
41565
42898
|
} : {}
|
|
41566
42899
|
};
|
|
@@ -41676,7 +43009,7 @@ function collectCartLinkStats(items, depth = 0) {
|
|
|
41676
43009
|
return result;
|
|
41677
43010
|
}
|
|
41678
43011
|
function isNavigationMenuValidationItem(value) {
|
|
41679
|
-
if (!
|
|
43012
|
+
if (!isRecord8(value)) return false;
|
|
41680
43013
|
return typeof value.label === "string";
|
|
41681
43014
|
}
|
|
41682
43015
|
|
|
@@ -41901,6 +43234,7 @@ var SYSTEM_BLOCK_KINDS = [
|
|
|
41901
43234
|
"block.site-footer",
|
|
41902
43235
|
// Form/booking blocks
|
|
41903
43236
|
"block.form",
|
|
43237
|
+
"block.contact-newsletter",
|
|
41904
43238
|
"block.appointment-booking",
|
|
41905
43239
|
"block.event-registration",
|
|
41906
43240
|
"block.event-details",
|
|
@@ -42109,7 +43443,7 @@ var fieldBindingSchema = z.object({
|
|
|
42109
43443
|
var metaBindingSchema = z.object({
|
|
42110
43444
|
source: z.literal("meta"),
|
|
42111
43445
|
path: z.enum(TEMPLATE_BINDING_META_PATHS, {
|
|
42112
|
-
error: (
|
|
43446
|
+
error: (issue4) => describeInvalidTemplateBindingMetaPath(String(issue4.input))
|
|
42113
43447
|
})
|
|
42114
43448
|
});
|
|
42115
43449
|
var literalBindingSchema = z.object({
|
|
@@ -42120,7 +43454,7 @@ var transformBindingSchema = z.object({
|
|
|
42120
43454
|
source: z.literal("transform"),
|
|
42121
43455
|
path: z.string().min(1, "Transform path is required"),
|
|
42122
43456
|
transform: z.enum(BINDING_TRANSFORM_VALUES, {
|
|
42123
|
-
error: (
|
|
43457
|
+
error: (issue4) => describeInvalidBindingTransform(String(issue4.input))
|
|
42124
43458
|
})
|
|
42125
43459
|
});
|
|
42126
43460
|
var baseBindingSchema = z.discriminatedUnion("source", [
|
|
@@ -42924,20 +44258,20 @@ var ManagementApiError = class extends Error {
|
|
|
42924
44258
|
function is404Error(error) {
|
|
42925
44259
|
return error instanceof ManagementApiError && error.statusCode === 404;
|
|
42926
44260
|
}
|
|
42927
|
-
function
|
|
44261
|
+
function isRecord9(value) {
|
|
42928
44262
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
42929
44263
|
}
|
|
42930
44264
|
function isFieldError(value) {
|
|
42931
|
-
return
|
|
44265
|
+
return isRecord9(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
|
|
42932
44266
|
}
|
|
42933
44267
|
function parseApiResponse(value) {
|
|
42934
|
-
if (!
|
|
44268
|
+
if (!isRecord9(value)) return null;
|
|
42935
44269
|
if (value.success === true) {
|
|
42936
44270
|
return { success: true, data: value.data };
|
|
42937
44271
|
}
|
|
42938
44272
|
if (value.success === false) {
|
|
42939
44273
|
const error = value.error;
|
|
42940
|
-
if (!
|
|
44274
|
+
if (!isRecord9(error) || typeof error.code !== "string" || typeof error.message !== "string") {
|
|
42941
44275
|
return { success: false, error: { code: "sdk:http-error", message: "Request failed", details: error } };
|
|
42942
44276
|
}
|
|
42943
44277
|
const fieldErrorsRaw = error.fieldErrors;
|
|
@@ -44174,8 +45508,8 @@ function mapEntryForOutput(entry) {
|
|
|
44174
45508
|
data: entry.data,
|
|
44175
45509
|
status: entry.status,
|
|
44176
45510
|
hasUnpublishedChanges: entry.hasUnpublishedChanges,
|
|
44177
|
-
|
|
44178
|
-
|
|
45511
|
+
manualOrder: entry.manualOrder,
|
|
45512
|
+
blocks: entry.blocks
|
|
44179
45513
|
};
|
|
44180
45514
|
if (entry.slug !== void 0) {
|
|
44181
45515
|
result.slug = entry.slug;
|
|
@@ -44466,7 +45800,7 @@ function createListCommand(config2) {
|
|
|
44466
45800
|
|
|
44467
45801
|
// src/cli/push-config.ts
|
|
44468
45802
|
var DEFAULT_CONFIG_PATH = "./riverbank.config.ts";
|
|
44469
|
-
function
|
|
45803
|
+
function isRecord10(value) {
|
|
44470
45804
|
return typeof value === "object" && value !== null;
|
|
44471
45805
|
}
|
|
44472
45806
|
function parseErrorDetails(value) {
|
|
@@ -44474,10 +45808,10 @@ function parseErrorDetails(value) {
|
|
|
44474
45808
|
if (typeof value === "string") {
|
|
44475
45809
|
return { message: value };
|
|
44476
45810
|
}
|
|
44477
|
-
if (!
|
|
45811
|
+
if (!isRecord10(value)) return {};
|
|
44478
45812
|
const message = typeof value.message === "string" ? value.message : void 0;
|
|
44479
45813
|
const fieldErrorsRaw = value.fieldErrors;
|
|
44480
|
-
const fieldErrors = Array.isArray(fieldErrorsRaw) ? fieldErrorsRaw.filter(
|
|
45814
|
+
const fieldErrors = Array.isArray(fieldErrorsRaw) ? fieldErrorsRaw.filter(isRecord10).map((d) => ({
|
|
44481
45815
|
field: typeof d.field === "string" ? d.field : "",
|
|
44482
45816
|
message: typeof d.message === "string" ? d.message : ""
|
|
44483
45817
|
})).filter((d) => d.field.length > 0 && d.message.length > 0) : void 0;
|
|
@@ -44489,12 +45823,12 @@ function formatFieldErrors(fieldErrors) {
|
|
|
44489
45823
|
}
|
|
44490
45824
|
function getDashboardErrorMessage(responseJson, fallback) {
|
|
44491
45825
|
if (!responseJson) return fallback;
|
|
44492
|
-
if (
|
|
45826
|
+
if (isRecord10(responseJson) && responseJson.success === false && "error" in responseJson) {
|
|
44493
45827
|
const parsed = parseErrorDetails(responseJson.error);
|
|
44494
45828
|
const msg = parsed.message ?? fallback;
|
|
44495
45829
|
return msg + formatFieldErrors(parsed.fieldErrors);
|
|
44496
45830
|
}
|
|
44497
|
-
if (
|
|
45831
|
+
if (isRecord10(responseJson) && "error" in responseJson) {
|
|
44498
45832
|
const parsed = parseErrorDetails(responseJson.error);
|
|
44499
45833
|
const msg = parsed.message ?? fallback;
|
|
44500
45834
|
return msg + formatFieldErrors(parsed.fieldErrors);
|
|
@@ -44613,9 +45947,9 @@ async function pushConfigAction(output, options) {
|
|
|
44613
45947
|
const parseResult = riverbankSiteConfigSchema.safeParse(rawConfig);
|
|
44614
45948
|
if (!parseResult.success) {
|
|
44615
45949
|
output.error("Invalid config", {
|
|
44616
|
-
issues: parseResult.error.issues.map((
|
|
44617
|
-
path:
|
|
44618
|
-
message:
|
|
45950
|
+
issues: parseResult.error.issues.map((issue4) => ({
|
|
45951
|
+
path: issue4.path.join("."),
|
|
45952
|
+
message: issue4.message
|
|
44619
45953
|
}))
|
|
44620
45954
|
});
|
|
44621
45955
|
}
|
|
@@ -44819,7 +46153,7 @@ function duplicateNavigationIdentityMessage(error) {
|
|
|
44819
46153
|
|
|
44820
46154
|
// src/cli/media/portable.ts
|
|
44821
46155
|
var ENV_SPECIFIC_MEDIA_KEYS = ["assetId", "storagePath", "storageBucket"];
|
|
44822
|
-
var
|
|
46156
|
+
var isRecord11 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44823
46157
|
var isMediaObject = (value) => value.type === "image" || value.type === "video";
|
|
44824
46158
|
function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
44825
46159
|
if (value === null || value === void 0) return;
|
|
@@ -44829,7 +46163,7 @@ function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
|
44829
46163
|
}
|
|
44830
46164
|
return;
|
|
44831
46165
|
}
|
|
44832
|
-
if (!
|
|
46166
|
+
if (!isRecord11(value)) return;
|
|
44833
46167
|
if (isMediaObject(value)) {
|
|
44834
46168
|
const hasCmsRef = typeof value.identifier === "string" || typeof value.assetId === "string" || typeof value.storagePath === "string" || typeof value.storageBucket === "string";
|
|
44835
46169
|
for (const key of ENV_SPECIFIC_MEDIA_KEYS) {
|
|
@@ -44840,7 +46174,7 @@ function stripEnvSpecificMediaFieldsInPlace(value) {
|
|
|
44840
46174
|
}
|
|
44841
46175
|
delete value.mimeType;
|
|
44842
46176
|
}
|
|
44843
|
-
if (value.type === "image" &&
|
|
46177
|
+
if (value.type === "image" && isRecord11(value.attrs)) {
|
|
44844
46178
|
const attrs = value.attrs;
|
|
44845
46179
|
const hasIdentifier = typeof attrs.identifier === "string" && attrs.identifier.trim().length > 0;
|
|
44846
46180
|
if (hasIdentifier) {
|
|
@@ -44905,7 +46239,8 @@ function pulledEntryToLocalEntry(entry) {
|
|
|
44905
46239
|
data: entry.data,
|
|
44906
46240
|
status: entry.status,
|
|
44907
46241
|
hasUnpublishedChanges: entry.hasUnpublishedChanges,
|
|
44908
|
-
...entry.slug !== void 0 ? { slug: entry.slug } : {}
|
|
46242
|
+
...entry.slug !== void 0 ? { slug: entry.slug } : {},
|
|
46243
|
+
...entry.blocks !== void 0 ? { blocks: entry.blocks } : {}
|
|
44909
46244
|
};
|
|
44910
46245
|
}
|
|
44911
46246
|
|
|
@@ -45011,11 +46346,11 @@ function entryFilePath(input) {
|
|
|
45011
46346
|
}
|
|
45012
46347
|
|
|
45013
46348
|
// src/cli/content/writer.ts
|
|
45014
|
-
function
|
|
46349
|
+
function isRecord12(value) {
|
|
45015
46350
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
45016
46351
|
}
|
|
45017
46352
|
function parseThemeMeta(value) {
|
|
45018
|
-
if (!
|
|
46353
|
+
if (!isRecord12(value) || typeof value.pulledAt !== "string" || !isRecord12(value.themes)) {
|
|
45019
46354
|
return null;
|
|
45020
46355
|
}
|
|
45021
46356
|
return { pulledAt: value.pulledAt, themes: value.themes };
|
|
@@ -45627,7 +46962,9 @@ async function readEntries(contentDir, contentType) {
|
|
|
45627
46962
|
const items = await fs5.readdir(entriesDir, { withFileTypes: true });
|
|
45628
46963
|
for (const item of items) {
|
|
45629
46964
|
if (item.isDirectory()) {
|
|
45630
|
-
const entries = await readEntriesFromDirectory(
|
|
46965
|
+
const entries = await readEntriesFromDirectory(
|
|
46966
|
+
path5.join(entriesDir, item.name)
|
|
46967
|
+
);
|
|
45631
46968
|
await applyManualOrderMetadata(contentDir, item.name, entries);
|
|
45632
46969
|
if (entries.length > 0) {
|
|
45633
46970
|
result.set(item.name, entries);
|
|
@@ -45644,7 +46981,9 @@ async function applyManualOrderMetadata(contentDir, contentType, entries) {
|
|
|
45644
46981
|
const meta = await readEntriesMeta(contentDir, contentType);
|
|
45645
46982
|
const order = meta?.manualOrder;
|
|
45646
46983
|
if (!order?.length) return;
|
|
45647
|
-
const orderByIdentifier = new Map(
|
|
46984
|
+
const orderByIdentifier = new Map(
|
|
46985
|
+
order.map((identifier, index) => [identifier, index])
|
|
46986
|
+
);
|
|
45648
46987
|
for (const entry of entries) {
|
|
45649
46988
|
const manualOrder = orderByIdentifier.get(entry.identifier);
|
|
45650
46989
|
if (manualOrder !== void 0) {
|
|
@@ -45689,7 +47028,9 @@ async function readSettings(contentDir) {
|
|
|
45689
47028
|
if (!parsed.success) {
|
|
45690
47029
|
throw new Error(
|
|
45691
47030
|
`${filePath}: invalid settings.json
|
|
45692
|
-
` + parsed.error.issues.map(
|
|
47031
|
+
` + parsed.error.issues.map(
|
|
47032
|
+
(issue4) => ` - ${issue4.path.join(".") || "(root)"}: ${issue4.message}`
|
|
47033
|
+
).join("\n")
|
|
45693
47034
|
);
|
|
45694
47035
|
}
|
|
45695
47036
|
return parsed.data;
|
|
@@ -45809,7 +47150,18 @@ async function readFooter(contentDir) {
|
|
|
45809
47150
|
return raw;
|
|
45810
47151
|
}
|
|
45811
47152
|
async function readAllContent(contentDir) {
|
|
45812
|
-
const [
|
|
47153
|
+
const [
|
|
47154
|
+
entries,
|
|
47155
|
+
pages,
|
|
47156
|
+
navigation,
|
|
47157
|
+
settings,
|
|
47158
|
+
forms,
|
|
47159
|
+
footer,
|
|
47160
|
+
venues,
|
|
47161
|
+
eventCategories,
|
|
47162
|
+
events,
|
|
47163
|
+
courses
|
|
47164
|
+
] = await Promise.all([
|
|
45813
47165
|
readEntries(contentDir),
|
|
45814
47166
|
readPages(contentDir),
|
|
45815
47167
|
readNavigation(contentDir),
|
|
@@ -45821,7 +47173,18 @@ async function readAllContent(contentDir) {
|
|
|
45821
47173
|
readEvents(contentDir),
|
|
45822
47174
|
readCourses(contentDir)
|
|
45823
47175
|
]);
|
|
45824
|
-
return {
|
|
47176
|
+
return {
|
|
47177
|
+
entries,
|
|
47178
|
+
pages,
|
|
47179
|
+
navigation,
|
|
47180
|
+
settings,
|
|
47181
|
+
forms,
|
|
47182
|
+
footer,
|
|
47183
|
+
venues,
|
|
47184
|
+
eventCategories,
|
|
47185
|
+
events,
|
|
47186
|
+
courses
|
|
47187
|
+
};
|
|
45825
47188
|
}
|
|
45826
47189
|
async function contentDirExists(contentDir) {
|
|
45827
47190
|
return fileExists(contentDir);
|
|
@@ -46401,9 +47764,9 @@ async function localMediaFileExists(filePath) {
|
|
|
46401
47764
|
}
|
|
46402
47765
|
|
|
46403
47766
|
// src/cli/media/identifiers.ts
|
|
46404
|
-
var
|
|
47767
|
+
var isRecord13 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46405
47768
|
var isMediaValue = (value) => {
|
|
46406
|
-
if (!
|
|
47769
|
+
if (!isRecord13(value)) return false;
|
|
46407
47770
|
const type = value.type;
|
|
46408
47771
|
if (type !== "image" && type !== "video" && type !== "audio" && type !== "document" && type !== "spreadsheet" && type !== "archive") return false;
|
|
46409
47772
|
return typeof value.identifier === "string" || typeof value.assetId === "string" || typeof value.storagePath === "string" || typeof value.src === "string";
|
|
@@ -46418,7 +47781,7 @@ var walkMediaValues = (value, location2, handler) => {
|
|
|
46418
47781
|
});
|
|
46419
47782
|
return;
|
|
46420
47783
|
}
|
|
46421
|
-
if (
|
|
47784
|
+
if (isRecord13(value)) {
|
|
46422
47785
|
Object.entries(value).forEach(([key, entry]) => {
|
|
46423
47786
|
walkMediaValues(entry, location2 ? `${location2}.${key}` : key, handler);
|
|
46424
47787
|
});
|
|
@@ -46428,6 +47791,15 @@ var walkLocalContentMedia = (content, handler) => {
|
|
|
46428
47791
|
for (const [contentType, entries] of content.entries ?? []) {
|
|
46429
47792
|
for (const entry of entries) {
|
|
46430
47793
|
walkMediaValues(entry.data, `entries.${contentType}.${entry.identifier}.data`, handler);
|
|
47794
|
+
for (const [slotKey, blocks] of Object.entries(entry.blocks ?? {})) {
|
|
47795
|
+
for (const block of blocks) {
|
|
47796
|
+
walkMediaValues(
|
|
47797
|
+
block.content,
|
|
47798
|
+
`entries.${contentType}.${entry.identifier}.blocks.${slotKey}.${block.identifier ?? "unidentified"}.content`,
|
|
47799
|
+
handler
|
|
47800
|
+
);
|
|
47801
|
+
}
|
|
47802
|
+
}
|
|
46431
47803
|
}
|
|
46432
47804
|
}
|
|
46433
47805
|
for (const page of content.pages ?? []) {
|
|
@@ -46468,6 +47840,15 @@ var walkPulledContentMedia = (content, handler) => {
|
|
|
46468
47840
|
for (const [contentType, entries] of Object.entries(content.entries)) {
|
|
46469
47841
|
for (const entry of entries) {
|
|
46470
47842
|
walkMediaValues(entry.data, `entries.${contentType}.${entry.identifier}.data`, handler);
|
|
47843
|
+
for (const [slotKey, blocks] of Object.entries(entry.blocks ?? {})) {
|
|
47844
|
+
for (const block of blocks) {
|
|
47845
|
+
walkMediaValues(
|
|
47846
|
+
block.content,
|
|
47847
|
+
`entries.${contentType}.${entry.identifier}.blocks.${slotKey}.${block.identifier ?? "unidentified"}.content`,
|
|
47848
|
+
handler
|
|
47849
|
+
);
|
|
47850
|
+
}
|
|
47851
|
+
}
|
|
46471
47852
|
}
|
|
46472
47853
|
}
|
|
46473
47854
|
for (const page of content.pages) {
|
|
@@ -46526,7 +47907,7 @@ var normalizeMediaValueToIdentifierOnly = (value, identifier, asset) => {
|
|
|
46526
47907
|
};
|
|
46527
47908
|
|
|
46528
47909
|
// src/cli/media/rich-text.ts
|
|
46529
|
-
var
|
|
47910
|
+
var isRecord14 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46530
47911
|
function collectRichTextImageAttrs(value, out = [], location2 = "") {
|
|
46531
47912
|
if (Array.isArray(value)) {
|
|
46532
47913
|
value.forEach(
|
|
@@ -46534,8 +47915,8 @@ function collectRichTextImageAttrs(value, out = [], location2 = "") {
|
|
|
46534
47915
|
);
|
|
46535
47916
|
return out;
|
|
46536
47917
|
}
|
|
46537
|
-
if (!
|
|
46538
|
-
if (value.type === "image" &&
|
|
47918
|
+
if (!isRecord14(value)) return out;
|
|
47919
|
+
if (value.type === "image" && isRecord14(value.attrs)) {
|
|
46539
47920
|
out.push({ attrs: value.attrs, location: location2 ? `${location2}.attrs` : "attrs" });
|
|
46540
47921
|
}
|
|
46541
47922
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -49166,7 +50547,7 @@ async function writeAllEntries(contentDir, entriesByType, pulledAt, entriesMeta,
|
|
|
49166
50547
|
}
|
|
49167
50548
|
const { dirPath, count } = await writeEntries(contentDir, {
|
|
49168
50549
|
contentType,
|
|
49169
|
-
entries,
|
|
50550
|
+
entries: entries.map(mapEntryForOutput),
|
|
49170
50551
|
meta: { pulledAt, entries: ctMeta },
|
|
49171
50552
|
pagination: { limit: entries.length, total: entries.length}
|
|
49172
50553
|
}, writerOptions);
|
|
@@ -49181,7 +50562,7 @@ async function fetchAllContentPaginated(client, contentTypes, output, baseConten
|
|
|
49181
50562
|
for (const contentType of contentTypes) {
|
|
49182
50563
|
output.info(`Fetching ${contentType} entries...`);
|
|
49183
50564
|
const result = await pullEntriesWithPagination(client, contentType, output);
|
|
49184
|
-
allEntries[contentType] = result.entries
|
|
50565
|
+
allEntries[contentType] = result.entries;
|
|
49185
50566
|
for (const [id, meta] of Object.entries(result.meta.entries || {})) {
|
|
49186
50567
|
allMeta[`${contentType}:${id}`] = meta;
|
|
49187
50568
|
}
|
|
@@ -50446,10 +51827,303 @@ function normalizeLocalContentShape(content) {
|
|
|
50446
51827
|
courses: Array.isArray(value.courses) ? value.courses : []
|
|
50447
51828
|
};
|
|
50448
51829
|
}
|
|
51830
|
+
|
|
51831
|
+
// ../api/src/sdk-event-pricing.ts
|
|
51832
|
+
var identifierRegex = /^[a-z0-9][a-z0-9-]*$/;
|
|
51833
|
+
var currencyRegex = /^[A-Z]{3}$/;
|
|
51834
|
+
var isoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T.+/;
|
|
51835
|
+
function issue2(path25, message) {
|
|
51836
|
+
return { path: path25, message };
|
|
51837
|
+
}
|
|
51838
|
+
function isRecord15(value) {
|
|
51839
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
51840
|
+
}
|
|
51841
|
+
function isCurrency(value) {
|
|
51842
|
+
return typeof value === "string" && currencyRegex.test(value);
|
|
51843
|
+
}
|
|
51844
|
+
function isWholeNumber(value) {
|
|
51845
|
+
return typeof value === "number" && Number.isInteger(value);
|
|
51846
|
+
}
|
|
51847
|
+
function isWholeMinuteIsoDateTime(value) {
|
|
51848
|
+
if (!isoDateTimeRegex.test(value)) return false;
|
|
51849
|
+
const epochMs = Date.parse(value);
|
|
51850
|
+
return Number.isFinite(epochMs) && epochMs % 6e4 === 0;
|
|
51851
|
+
}
|
|
51852
|
+
function validateTicketType(raw, index, currency) {
|
|
51853
|
+
const path25 = ["ticketTypes", String(index)];
|
|
51854
|
+
if (!isRecord15(raw)) return [issue2(path25, "Ticket type must be an object")];
|
|
51855
|
+
const issues = [];
|
|
51856
|
+
const identifier = raw.identifier;
|
|
51857
|
+
if (typeof identifier !== "string" || !identifierRegex.test(identifier)) {
|
|
51858
|
+
issues.push(
|
|
51859
|
+
issue2(
|
|
51860
|
+
[...path25, "identifier"],
|
|
51861
|
+
"Ticket identifier must use lowercase letters, numbers, and hyphens"
|
|
51862
|
+
)
|
|
51863
|
+
);
|
|
51864
|
+
}
|
|
51865
|
+
const name = raw.name;
|
|
51866
|
+
if (typeof name !== "string" || name.trim().length === 0) {
|
|
51867
|
+
issues.push(issue2([...path25, "name"], "Ticket name is required"));
|
|
51868
|
+
}
|
|
51869
|
+
const priceAmount = raw.priceAmount;
|
|
51870
|
+
if (!isWholeNumber(priceAmount) || priceAmount < 0) {
|
|
51871
|
+
issues.push(
|
|
51872
|
+
issue2(
|
|
51873
|
+
[...path25, "priceAmount"],
|
|
51874
|
+
"Ticket priceAmount must be a non-negative integer"
|
|
51875
|
+
)
|
|
51876
|
+
);
|
|
51877
|
+
}
|
|
51878
|
+
const priceCurrency = raw.priceCurrency;
|
|
51879
|
+
if (priceCurrency !== void 0 && priceCurrency !== null && priceCurrency !== currency) {
|
|
51880
|
+
issues.push(
|
|
51881
|
+
issue2(
|
|
51882
|
+
[...path25, "priceCurrency"],
|
|
51883
|
+
"Ticket priceCurrency must match pricing.priceCurrency"
|
|
51884
|
+
)
|
|
51885
|
+
);
|
|
51886
|
+
}
|
|
51887
|
+
const sortOrder = raw.sortOrder;
|
|
51888
|
+
if (sortOrder !== void 0 && (!isWholeNumber(sortOrder) || sortOrder < 0)) {
|
|
51889
|
+
issues.push(
|
|
51890
|
+
issue2(
|
|
51891
|
+
[...path25, "sortOrder"],
|
|
51892
|
+
"Ticket sortOrder must be a non-negative integer"
|
|
51893
|
+
)
|
|
51894
|
+
);
|
|
51895
|
+
}
|
|
51896
|
+
const capacityLimit2 = raw.capacityLimit;
|
|
51897
|
+
if (capacityLimit2 !== void 0 && capacityLimit2 !== null && (!isWholeNumber(capacityLimit2) || capacityLimit2 < 1)) {
|
|
51898
|
+
issues.push(
|
|
51899
|
+
issue2(
|
|
51900
|
+
[...path25, "capacityLimit"],
|
|
51901
|
+
"Ticket capacityLimit must be a positive integer"
|
|
51902
|
+
)
|
|
51903
|
+
);
|
|
51904
|
+
}
|
|
51905
|
+
const attendanceScope = raw.attendanceScope;
|
|
51906
|
+
if (attendanceScope !== void 0 && attendanceScope !== "in_person" && attendanceScope !== "online" && attendanceScope !== "both") {
|
|
51907
|
+
issues.push(
|
|
51908
|
+
issue2(
|
|
51909
|
+
[...path25, "attendanceScope"],
|
|
51910
|
+
"Ticket attendanceScope must be in_person, online, or both"
|
|
51911
|
+
)
|
|
51912
|
+
);
|
|
51913
|
+
}
|
|
51914
|
+
const saleStartsAt = raw.saleStartsAt;
|
|
51915
|
+
if (saleStartsAt !== void 0 && saleStartsAt !== null && (typeof saleStartsAt !== "string" || !isWholeMinuteIsoDateTime(saleStartsAt))) {
|
|
51916
|
+
issues.push(
|
|
51917
|
+
issue2(
|
|
51918
|
+
[...path25, "saleStartsAt"],
|
|
51919
|
+
"Ticket saleStartsAt must be an ISO datetime aligned to a whole minute"
|
|
51920
|
+
)
|
|
51921
|
+
);
|
|
51922
|
+
}
|
|
51923
|
+
const saleEndsAt = raw.saleEndsAt;
|
|
51924
|
+
if (saleEndsAt !== void 0 && saleEndsAt !== null && (typeof saleEndsAt !== "string" || !isWholeMinuteIsoDateTime(saleEndsAt))) {
|
|
51925
|
+
issues.push(
|
|
51926
|
+
issue2(
|
|
51927
|
+
[...path25, "saleEndsAt"],
|
|
51928
|
+
"Ticket saleEndsAt must be an ISO datetime aligned to a whole minute"
|
|
51929
|
+
)
|
|
51930
|
+
);
|
|
51931
|
+
}
|
|
51932
|
+
if (typeof saleStartsAt === "string" && typeof saleEndsAt === "string" && Date.parse(saleEndsAt) <= Date.parse(saleStartsAt)) {
|
|
51933
|
+
issues.push(
|
|
51934
|
+
issue2(
|
|
51935
|
+
[...path25, "saleEndsAt"],
|
|
51936
|
+
"Ticket saleEndsAt must be after saleStartsAt"
|
|
51937
|
+
)
|
|
51938
|
+
);
|
|
51939
|
+
}
|
|
51940
|
+
const cmsTicketTypeId = raw.cmsTicketTypeId;
|
|
51941
|
+
if (cmsTicketTypeId !== void 0 && cmsTicketTypeId !== null && (typeof cmsTicketTypeId !== "string" || cmsTicketTypeId.length === 0)) {
|
|
51942
|
+
issues.push(
|
|
51943
|
+
issue2(
|
|
51944
|
+
[...path25, "cmsTicketTypeId"],
|
|
51945
|
+
"Ticket cmsTicketTypeId must be a non-empty string"
|
|
51946
|
+
)
|
|
51947
|
+
);
|
|
51948
|
+
}
|
|
51949
|
+
if (issues.length > 0) return issues;
|
|
51950
|
+
return {
|
|
51951
|
+
identifier,
|
|
51952
|
+
...cmsTicketTypeId ? { cmsTicketTypeId } : {},
|
|
51953
|
+
name,
|
|
51954
|
+
description: typeof raw.description === "string" ? raw.description : null,
|
|
51955
|
+
priceAmount,
|
|
51956
|
+
isActive: typeof raw.isActive === "boolean" ? raw.isActive : true,
|
|
51957
|
+
sortOrder: isWholeNumber(sortOrder) ? sortOrder : index,
|
|
51958
|
+
capacityLimit: isWholeNumber(capacityLimit2) ? capacityLimit2 : null,
|
|
51959
|
+
attendanceScope: attendanceScope === "in_person" || attendanceScope === "online" || attendanceScope === "both" ? attendanceScope : "both",
|
|
51960
|
+
saleStartsAt: typeof saleStartsAt === "string" ? saleStartsAt : null,
|
|
51961
|
+
saleEndsAt: typeof saleEndsAt === "string" ? saleEndsAt : null
|
|
51962
|
+
};
|
|
51963
|
+
}
|
|
51964
|
+
function validateTicketTypes(rawTicketTypes, currency) {
|
|
51965
|
+
if (!Array.isArray(rawTicketTypes) || rawTicketTypes.length === 0) {
|
|
51966
|
+
return [
|
|
51967
|
+
issue2(
|
|
51968
|
+
["ticketTypes"],
|
|
51969
|
+
"Ticket-type pricing requires at least one ticket type"
|
|
51970
|
+
)
|
|
51971
|
+
];
|
|
51972
|
+
}
|
|
51973
|
+
const issues = [];
|
|
51974
|
+
const ticketTypes = [];
|
|
51975
|
+
const seenIdentifiers = /* @__PURE__ */ new Set();
|
|
51976
|
+
rawTicketTypes.forEach((rawTicketType, index) => {
|
|
51977
|
+
const rawIdentifier = isRecord15(rawTicketType) ? rawTicketType.identifier : void 0;
|
|
51978
|
+
const hasValidIdentifier = typeof rawIdentifier === "string" && identifierRegex.test(rawIdentifier);
|
|
51979
|
+
const isDuplicateIdentifier = hasValidIdentifier && seenIdentifiers.has(rawIdentifier);
|
|
51980
|
+
if (isDuplicateIdentifier) {
|
|
51981
|
+
issues.push(
|
|
51982
|
+
issue2(
|
|
51983
|
+
["ticketTypes", String(index), "identifier"],
|
|
51984
|
+
`Duplicate ticket identifier "${rawIdentifier}"`
|
|
51985
|
+
)
|
|
51986
|
+
);
|
|
51987
|
+
} else if (hasValidIdentifier) {
|
|
51988
|
+
seenIdentifiers.add(rawIdentifier);
|
|
51989
|
+
}
|
|
51990
|
+
const parsed = validateTicketType(rawTicketType, index, currency);
|
|
51991
|
+
if (Array.isArray(parsed)) {
|
|
51992
|
+
issues.push(...parsed);
|
|
51993
|
+
return;
|
|
51994
|
+
}
|
|
51995
|
+
if (isDuplicateIdentifier) {
|
|
51996
|
+
return;
|
|
51997
|
+
}
|
|
51998
|
+
ticketTypes.push(parsed);
|
|
51999
|
+
});
|
|
52000
|
+
if (issues.length > 0) return issues;
|
|
52001
|
+
return sortSdkEventTicketTypes(ticketTypes);
|
|
52002
|
+
}
|
|
52003
|
+
function isPricingIssueArray(value) {
|
|
52004
|
+
const first = value[0];
|
|
52005
|
+
return first !== void 0 && "message" in first;
|
|
52006
|
+
}
|
|
52007
|
+
function sortSdkEventTicketTypes(ticketTypes) {
|
|
52008
|
+
return [...ticketTypes].sort((left, right) => {
|
|
52009
|
+
const leftOrder = left.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
52010
|
+
const rightOrder = right.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
52011
|
+
if (leftOrder !== rightOrder) return leftOrder - rightOrder;
|
|
52012
|
+
const identifierCompare = left.identifier.localeCompare(right.identifier);
|
|
52013
|
+
if (identifierCompare !== 0) return identifierCompare;
|
|
52014
|
+
return left.name.localeCompare(right.name);
|
|
52015
|
+
});
|
|
52016
|
+
}
|
|
52017
|
+
function classifySdkEventPricing(rawInput) {
|
|
52018
|
+
if (rawInput === void 0 || rawInput === null) {
|
|
52019
|
+
return { ok: true, pricing: { kind: "free" } };
|
|
52020
|
+
}
|
|
52021
|
+
if (!isRecord15(rawInput)) {
|
|
52022
|
+
return { ok: false, issues: [issue2([], "Pricing must be an object")] };
|
|
52023
|
+
}
|
|
52024
|
+
const record = rawInput;
|
|
52025
|
+
const kind = typeof record.kind === "string" ? record.kind : record.pricingMode === "ticket_types" ? "ticket_types" : record.pricingMode === "fixed_price" ? "fixed_price" : record.pricingMode === "free" ? "free" : record.requiresPayment || typeof record.priceAmount === "number" && record.priceAmount > 0 ? "fixed_price" : "free";
|
|
52026
|
+
const acceptsPasses = typeof record.acceptsPasses === "boolean" ? record.acceptsPasses : void 0;
|
|
52027
|
+
const acceptsMemberships = typeof record.acceptsMemberships === "boolean" ? record.acceptsMemberships : void 0;
|
|
52028
|
+
const priceDisplay = typeof record.priceDisplay === "string" ? record.priceDisplay : null;
|
|
52029
|
+
switch (kind) {
|
|
52030
|
+
case "free":
|
|
52031
|
+
return {
|
|
52032
|
+
ok: true,
|
|
52033
|
+
pricing: {
|
|
52034
|
+
kind: "free",
|
|
52035
|
+
priceDisplay,
|
|
52036
|
+
...acceptsPasses !== void 0 ? { acceptsPasses } : {},
|
|
52037
|
+
...acceptsMemberships !== void 0 ? { acceptsMemberships } : {}
|
|
52038
|
+
}
|
|
52039
|
+
};
|
|
52040
|
+
case "fixed_price": {
|
|
52041
|
+
const issues = [];
|
|
52042
|
+
const priceAmount = record.priceAmount;
|
|
52043
|
+
if (!isWholeNumber(priceAmount) || priceAmount < 0) {
|
|
52044
|
+
issues.push(
|
|
52045
|
+
issue2(
|
|
52046
|
+
["priceAmount"],
|
|
52047
|
+
"Fixed-price events require a non-negative integer priceAmount"
|
|
52048
|
+
)
|
|
52049
|
+
);
|
|
52050
|
+
}
|
|
52051
|
+
const rawPriceCurrency = record.priceCurrency;
|
|
52052
|
+
const priceCurrency = rawPriceCurrency === void 0 || rawPriceCurrency === null ? "USD" : isCurrency(rawPriceCurrency) ? rawPriceCurrency : null;
|
|
52053
|
+
if (rawPriceCurrency !== void 0 && rawPriceCurrency !== null && !isCurrency(rawPriceCurrency)) {
|
|
52054
|
+
issues.push(
|
|
52055
|
+
issue2(
|
|
52056
|
+
["priceCurrency"],
|
|
52057
|
+
"priceCurrency must be a 3-letter uppercase currency code"
|
|
52058
|
+
)
|
|
52059
|
+
);
|
|
52060
|
+
}
|
|
52061
|
+
if (issues.length > 0) return { ok: false, issues };
|
|
52062
|
+
if (!isWholeNumber(priceAmount) || priceCurrency === null) {
|
|
52063
|
+
return {
|
|
52064
|
+
ok: false,
|
|
52065
|
+
issues: [issue2(["priceAmount"], "Invalid fixed-price event pricing")]
|
|
52066
|
+
};
|
|
52067
|
+
}
|
|
52068
|
+
return {
|
|
52069
|
+
ok: true,
|
|
52070
|
+
pricing: {
|
|
52071
|
+
kind: "fixed_price",
|
|
52072
|
+
priceAmount,
|
|
52073
|
+
priceCurrency,
|
|
52074
|
+
priceDisplay,
|
|
52075
|
+
...acceptsPasses !== void 0 ? { acceptsPasses } : {},
|
|
52076
|
+
...acceptsMemberships !== void 0 ? { acceptsMemberships } : {}
|
|
52077
|
+
}
|
|
52078
|
+
};
|
|
52079
|
+
}
|
|
52080
|
+
case "ticket_types": {
|
|
52081
|
+
const priceCurrency = record.priceCurrency;
|
|
52082
|
+
if (!isCurrency(priceCurrency)) {
|
|
52083
|
+
return {
|
|
52084
|
+
ok: false,
|
|
52085
|
+
issues: [
|
|
52086
|
+
issue2(
|
|
52087
|
+
["priceCurrency"],
|
|
52088
|
+
"Ticket-type pricing requires a 3-letter uppercase priceCurrency"
|
|
52089
|
+
)
|
|
52090
|
+
]
|
|
52091
|
+
};
|
|
52092
|
+
}
|
|
52093
|
+
const ticketTypes = record.ticketTypes === void 0 || record.ticketTypes === null ? [] : validateTicketTypes(record.ticketTypes, priceCurrency);
|
|
52094
|
+
if (isPricingIssueArray(ticketTypes)) {
|
|
52095
|
+
return { ok: false, issues: ticketTypes };
|
|
52096
|
+
}
|
|
52097
|
+
return {
|
|
52098
|
+
ok: true,
|
|
52099
|
+
pricing: {
|
|
52100
|
+
kind: "ticket_types",
|
|
52101
|
+
priceCurrency,
|
|
52102
|
+
priceDisplay,
|
|
52103
|
+
...acceptsPasses !== void 0 ? { acceptsPasses } : {},
|
|
52104
|
+
...acceptsMemberships !== void 0 ? { acceptsMemberships } : {},
|
|
52105
|
+
ticketTypes
|
|
52106
|
+
}
|
|
52107
|
+
};
|
|
52108
|
+
}
|
|
52109
|
+
default:
|
|
52110
|
+
return {
|
|
52111
|
+
ok: false,
|
|
52112
|
+
issues: [
|
|
52113
|
+
issue2(
|
|
52114
|
+
["kind"],
|
|
52115
|
+
"Pricing kind must be free, fixed_price, or ticket_types"
|
|
52116
|
+
)
|
|
52117
|
+
]
|
|
52118
|
+
};
|
|
52119
|
+
}
|
|
52120
|
+
}
|
|
52121
|
+
|
|
52122
|
+
// src/cli/commands/push/pushAllExtras.ts
|
|
50449
52123
|
function nullishToNull(value) {
|
|
50450
52124
|
return value == null ? null : value;
|
|
50451
52125
|
}
|
|
50452
|
-
function
|
|
52126
|
+
function isRecord16(value) {
|
|
50453
52127
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
50454
52128
|
}
|
|
50455
52129
|
function stringValue(value, fallback) {
|
|
@@ -50459,8 +52133,13 @@ function stringValue(value, fallback) {
|
|
|
50459
52133
|
}
|
|
50460
52134
|
return fallback;
|
|
50461
52135
|
}
|
|
52136
|
+
function normalizeEventPricingForCompare(pricing) {
|
|
52137
|
+
const result = classifySdkEventPricing(pricing);
|
|
52138
|
+
if (result.ok) return result.pricing;
|
|
52139
|
+
return { kind: "free" };
|
|
52140
|
+
}
|
|
50462
52141
|
function normalizeVenueAddress(value) {
|
|
50463
|
-
const obj =
|
|
52142
|
+
const obj = isRecord16(value) ? value : {};
|
|
50464
52143
|
return {
|
|
50465
52144
|
line1: nullishToNull(typeof obj.line1 === "string" ? obj.line1 : void 0),
|
|
50466
52145
|
line2: nullishToNull(typeof obj.line2 === "string" ? obj.line2 : void 0),
|
|
@@ -50477,7 +52156,7 @@ function normalizeVenueAddress(value) {
|
|
|
50477
52156
|
};
|
|
50478
52157
|
}
|
|
50479
52158
|
function normalizeVenueLocation(value) {
|
|
50480
|
-
if (!
|
|
52159
|
+
if (!isRecord16(value)) return null;
|
|
50481
52160
|
const obj = value;
|
|
50482
52161
|
const lat = typeof obj.lat === "number" ? obj.lat : null;
|
|
50483
52162
|
const lng = typeof obj.lng === "number" ? obj.lng : null;
|
|
@@ -50485,32 +52164,41 @@ function normalizeVenueLocation(value) {
|
|
|
50485
52164
|
return { lat, lng };
|
|
50486
52165
|
}
|
|
50487
52166
|
function normalizeVenueForCompare(venue) {
|
|
50488
|
-
const obj =
|
|
52167
|
+
const obj = isRecord16(venue) ? venue : {};
|
|
50489
52168
|
return {
|
|
50490
52169
|
slug: String(obj.slug),
|
|
50491
52170
|
title: String(obj.title),
|
|
50492
|
-
description: nullishToNull(
|
|
50493
|
-
|
|
50494
|
-
|
|
52171
|
+
description: nullishToNull(
|
|
52172
|
+
typeof obj.description === "string" ? obj.description : void 0
|
|
52173
|
+
),
|
|
52174
|
+
timezone: nullishToNull(
|
|
52175
|
+
typeof obj.timezone === "string" ? obj.timezone : void 0
|
|
52176
|
+
),
|
|
52177
|
+
capacity: nullishToNull(
|
|
52178
|
+
typeof obj.capacity === "number" ? obj.capacity : void 0
|
|
52179
|
+
),
|
|
50495
52180
|
address: normalizeVenueAddress(obj.address),
|
|
50496
52181
|
location: normalizeVenueLocation(obj.location),
|
|
50497
|
-
mapEmbed: nullishToNull(
|
|
52182
|
+
mapEmbed: nullishToNull(
|
|
52183
|
+
typeof obj.mapEmbed === "string" ? obj.mapEmbed : void 0
|
|
52184
|
+
)
|
|
50498
52185
|
};
|
|
50499
52186
|
}
|
|
50500
52187
|
function normalizeEventCategoryForCompare(category) {
|
|
50501
|
-
const obj =
|
|
52188
|
+
const obj = isRecord16(category) ? category : {};
|
|
50502
52189
|
return {
|
|
50503
52190
|
identifier: String(obj.identifier),
|
|
50504
52191
|
name: String(obj.name),
|
|
50505
|
-
description: nullishToNull(
|
|
52192
|
+
description: nullishToNull(
|
|
52193
|
+
typeof obj.description === "string" ? obj.description : void 0
|
|
52194
|
+
),
|
|
50506
52195
|
color: nullishToNull(typeof obj.color === "string" ? obj.color : void 0),
|
|
50507
52196
|
sortOrder: typeof obj.sortOrder === "number" ? obj.sortOrder : 0
|
|
50508
52197
|
};
|
|
50509
52198
|
}
|
|
50510
52199
|
function normalizeRemoteEventForCompare(event) {
|
|
50511
|
-
const obj =
|
|
50512
|
-
const schedule =
|
|
50513
|
-
const pricing = isRecord13(obj.pricing) ? obj.pricing : {};
|
|
52200
|
+
const obj = isRecord16(event) ? event : {};
|
|
52201
|
+
const schedule = isRecord16(obj.schedule) ? obj.schedule : {};
|
|
50514
52202
|
return {
|
|
50515
52203
|
identifier: String(obj.identifier),
|
|
50516
52204
|
title: String(obj.title),
|
|
@@ -50521,36 +52209,31 @@ function normalizeRemoteEventForCompare(event) {
|
|
|
50521
52209
|
recurrenceRule: nullishToNull(
|
|
50522
52210
|
schedule.recurrenceRule
|
|
50523
52211
|
),
|
|
50524
|
-
startDate: nullishToNull(
|
|
50525
|
-
schedule.startDate
|
|
50526
|
-
),
|
|
52212
|
+
startDate: nullishToNull(schedule.startDate),
|
|
50527
52213
|
defaultStartTime: stringValue(schedule.defaultStartTime, "09:00:00"),
|
|
50528
52214
|
durationMinutes: typeof schedule.durationMinutes === "number" ? schedule.durationMinutes : 60
|
|
50529
52215
|
},
|
|
50530
|
-
capacity: nullishToNull(
|
|
50531
|
-
|
|
50532
|
-
|
|
50533
|
-
|
|
50534
|
-
|
|
50535
|
-
|
|
50536
|
-
|
|
50537
|
-
|
|
50538
|
-
|
|
50539
|
-
|
|
50540
|
-
|
|
50541
|
-
|
|
50542
|
-
|
|
50543
|
-
|
|
50544
|
-
|
|
50545
|
-
|
|
50546
|
-
content: isRecord13(obj.content) ? obj.content : {},
|
|
50547
|
-
settings: isRecord13(obj.settings) ? obj.settings : {},
|
|
50548
|
-
presentation: isRecord13(obj.presentation) ? obj.presentation : null,
|
|
52216
|
+
capacity: nullishToNull(
|
|
52217
|
+
typeof obj.capacity === "number" ? obj.capacity : void 0
|
|
52218
|
+
),
|
|
52219
|
+
pricing: normalizeEventPricingForCompare(obj.pricing),
|
|
52220
|
+
venueRef: nullishToNull(
|
|
52221
|
+
typeof obj.venueRef === "string" ? obj.venueRef : void 0
|
|
52222
|
+
),
|
|
52223
|
+
categoryRef: nullishToNull(
|
|
52224
|
+
typeof obj.categoryRef === "string" ? obj.categoryRef : void 0
|
|
52225
|
+
),
|
|
52226
|
+
formRef: nullishToNull(
|
|
52227
|
+
typeof obj.formRef === "string" ? obj.formRef : void 0
|
|
52228
|
+
),
|
|
52229
|
+
content: isRecord16(obj.content) ? obj.content : {},
|
|
52230
|
+
settings: isRecord16(obj.settings) ? obj.settings : {},
|
|
52231
|
+
presentation: isRecord16(obj.presentation) ? obj.presentation : null,
|
|
50549
52232
|
tags: Array.isArray(obj.tags) ? obj.tags : []
|
|
50550
52233
|
};
|
|
50551
52234
|
}
|
|
50552
52235
|
function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
50553
|
-
const local =
|
|
52236
|
+
const local = isRecord16(localEvent) ? localEvent : {};
|
|
50554
52237
|
const base = remoteEvent ? normalizeRemoteEventForCompare(remoteEvent) : normalizeRemoteEventForCompare({
|
|
50555
52238
|
identifier: local.identifier,
|
|
50556
52239
|
title: local.title,
|
|
@@ -50568,8 +52251,7 @@ function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
|
50568
52251
|
presentation: local.presentation ?? null,
|
|
50569
52252
|
tags: local.tags ?? []
|
|
50570
52253
|
});
|
|
50571
|
-
const schedule =
|
|
50572
|
-
const pricing = isRecord13(local.pricing) ? local.pricing : {};
|
|
52254
|
+
const schedule = isRecord16(local.schedule) ? local.schedule : {};
|
|
50573
52255
|
return {
|
|
50574
52256
|
...base,
|
|
50575
52257
|
identifier: stringValue(local.identifier, base.identifier),
|
|
@@ -50580,24 +52262,28 @@ function normalizeLocalEventAgainstRemoteForCompare(localEvent, remoteEvent) {
|
|
|
50580
52262
|
schedule: {
|
|
50581
52263
|
recurrenceRule: schedule.recurrenceRule === void 0 ? base.schedule.recurrenceRule : nullishToNull(schedule.recurrenceRule),
|
|
50582
52264
|
startDate: schedule.startDate === void 0 ? base.schedule.startDate : nullishToNull(schedule.startDate),
|
|
50583
|
-
defaultStartTime: schedule.defaultStartTime === void 0 ? base.schedule.defaultStartTime : stringValue(
|
|
52265
|
+
defaultStartTime: schedule.defaultStartTime === void 0 ? base.schedule.defaultStartTime : stringValue(
|
|
52266
|
+
schedule.defaultStartTime,
|
|
52267
|
+
base.schedule.defaultStartTime
|
|
52268
|
+
),
|
|
50584
52269
|
durationMinutes: schedule.durationMinutes === void 0 ? base.schedule.durationMinutes : typeof schedule.durationMinutes === "number" ? schedule.durationMinutes : base.schedule.durationMinutes
|
|
50585
52270
|
},
|
|
50586
|
-
capacity: local.capacity === void 0 ? base.capacity : nullishToNull(
|
|
50587
|
-
|
|
50588
|
-
|
|
50589
|
-
|
|
50590
|
-
|
|
50591
|
-
|
|
50592
|
-
|
|
50593
|
-
|
|
50594
|
-
|
|
50595
|
-
|
|
50596
|
-
|
|
50597
|
-
|
|
50598
|
-
|
|
50599
|
-
|
|
50600
|
-
|
|
52271
|
+
capacity: local.capacity === void 0 ? base.capacity : nullishToNull(
|
|
52272
|
+
typeof local.capacity === "number" ? local.capacity : void 0
|
|
52273
|
+
),
|
|
52274
|
+
pricing: local.pricing === void 0 ? base.pricing : normalizeEventPricingForCompare(local.pricing),
|
|
52275
|
+
venueRef: local.venueRef === void 0 ? base.venueRef : nullishToNull(
|
|
52276
|
+
typeof local.venueRef === "string" ? local.venueRef : void 0
|
|
52277
|
+
),
|
|
52278
|
+
categoryRef: local.categoryRef === void 0 ? base.categoryRef : nullishToNull(
|
|
52279
|
+
typeof local.categoryRef === "string" ? local.categoryRef : void 0
|
|
52280
|
+
),
|
|
52281
|
+
formRef: local.formRef === void 0 ? base.formRef : nullishToNull(
|
|
52282
|
+
typeof local.formRef === "string" ? local.formRef : void 0
|
|
52283
|
+
),
|
|
52284
|
+
content: local.content === void 0 ? base.content : isRecord16(local.content) ? local.content : {},
|
|
52285
|
+
settings: local.settings === void 0 ? base.settings : isRecord16(local.settings) ? local.settings : {},
|
|
52286
|
+
presentation: local.presentation === void 0 ? base.presentation : isRecord16(local.presentation) ? local.presentation : null,
|
|
50601
52287
|
tags: local.tags === void 0 ? base.tags : Array.isArray(local.tags) ? local.tags : []
|
|
50602
52288
|
};
|
|
50603
52289
|
}
|
|
@@ -50609,7 +52295,7 @@ function toIsoStringOrOriginal(value) {
|
|
|
50609
52295
|
function normalizeCourseSessions(value) {
|
|
50610
52296
|
if (!Array.isArray(value)) return [];
|
|
50611
52297
|
return value.map((session) => {
|
|
50612
|
-
const obj =
|
|
52298
|
+
const obj = isRecord16(session) ? session : {};
|
|
50613
52299
|
return {
|
|
50614
52300
|
startsAt: toIsoStringOrOriginal(obj.startsAt),
|
|
50615
52301
|
endsAt: toIsoStringOrOriginal(obj.endsAt)
|
|
@@ -50621,41 +52307,53 @@ function normalizeCourseSessions(value) {
|
|
|
50621
52307
|
}
|
|
50622
52308
|
function normalizeCourseProgram(value) {
|
|
50623
52309
|
if (value == null) return null;
|
|
50624
|
-
if (!
|
|
52310
|
+
if (!isRecord16(value)) {
|
|
50625
52311
|
return { identifier: null, data: {} };
|
|
50626
52312
|
}
|
|
50627
52313
|
return {
|
|
50628
52314
|
identifier: nullishToNull(
|
|
50629
52315
|
typeof value.identifier === "string" ? value.identifier : void 0
|
|
50630
52316
|
),
|
|
50631
|
-
data:
|
|
52317
|
+
data: isRecord16(value.data) ? value.data : {}
|
|
50632
52318
|
};
|
|
50633
52319
|
}
|
|
50634
52320
|
function normalizeRemoteCourseForCompare(course) {
|
|
50635
|
-
const obj =
|
|
52321
|
+
const obj = isRecord16(course) ? course : {};
|
|
50636
52322
|
return {
|
|
50637
52323
|
identifier: String(obj.identifier),
|
|
50638
52324
|
title: String(obj.title),
|
|
50639
52325
|
slug: String(obj.slug),
|
|
50640
52326
|
status: obj.status === "active" || obj.status === "cancelled" || obj.status === "completed" ? obj.status : "draft",
|
|
50641
52327
|
visibility: obj.visibility === "public" || obj.visibility === "private" || obj.visibility === "unlisted" ? obj.visibility : "public",
|
|
50642
|
-
venueRef: nullishToNull(
|
|
50643
|
-
|
|
50644
|
-
|
|
50645
|
-
|
|
52328
|
+
venueRef: nullishToNull(
|
|
52329
|
+
typeof obj.venueRef === "string" ? obj.venueRef : void 0
|
|
52330
|
+
),
|
|
52331
|
+
categoryRef: nullishToNull(
|
|
52332
|
+
typeof obj.categoryRef === "string" ? obj.categoryRef : void 0
|
|
52333
|
+
),
|
|
52334
|
+
formRef: nullishToNull(
|
|
52335
|
+
typeof obj.formRef === "string" ? obj.formRef : void 0
|
|
52336
|
+
),
|
|
52337
|
+
capacity: nullishToNull(
|
|
52338
|
+
typeof obj.capacity === "number" ? obj.capacity : void 0
|
|
52339
|
+
),
|
|
50646
52340
|
enrollmentCapacity: nullishToNull(
|
|
50647
52341
|
typeof obj.enrollmentCapacity === "number" ? obj.enrollmentCapacity : void 0
|
|
50648
52342
|
),
|
|
50649
52343
|
acceptsMemberships: Boolean(obj.acceptsMemberships ?? false),
|
|
50650
|
-
priceCents: nullishToNull(
|
|
52344
|
+
priceCents: nullishToNull(
|
|
52345
|
+
typeof obj.priceCents === "number" ? obj.priceCents : void 0
|
|
52346
|
+
),
|
|
50651
52347
|
currency: typeof obj.currency === "string" && obj.currency.trim().length > 0 ? obj.currency.toUpperCase() : "GBP",
|
|
50652
52348
|
sessions: normalizeCourseSessions(obj.sessions),
|
|
50653
|
-
programRef: nullishToNull(
|
|
52349
|
+
programRef: nullishToNull(
|
|
52350
|
+
typeof obj.programRef === "string" ? obj.programRef : void 0
|
|
52351
|
+
),
|
|
50654
52352
|
program: normalizeCourseProgram(obj.program)
|
|
50655
52353
|
};
|
|
50656
52354
|
}
|
|
50657
52355
|
function normalizeLocalCourseAgainstRemoteForCompare(localCourse, remoteCourse) {
|
|
50658
|
-
const local =
|
|
52356
|
+
const local = isRecord16(localCourse) ? localCourse : {};
|
|
50659
52357
|
const base = remoteCourse ? normalizeRemoteCourseForCompare(remoteCourse) : normalizeRemoteCourseForCompare({
|
|
50660
52358
|
identifier: local.identifier,
|
|
50661
52359
|
title: local.title,
|
|
@@ -50676,11 +52374,11 @@ function normalizeLocalCourseAgainstRemoteForCompare(localCourse, remoteCourse)
|
|
|
50676
52374
|
});
|
|
50677
52375
|
const status = local.status === void 0 ? base.status : local.status === "active" || local.status === "cancelled" || local.status === "completed" ? local.status : "draft";
|
|
50678
52376
|
const visibility = local.visibility === void 0 ? base.visibility : local.visibility === "public" || local.visibility === "private" || local.visibility === "unlisted" ? local.visibility : "public";
|
|
50679
|
-
const program2 = local.program === void 0 ? base.program : local.program === null ? null :
|
|
52377
|
+
const program2 = local.program === void 0 ? base.program : local.program === null ? null : isRecord16(local.program) ? {
|
|
50680
52378
|
identifier: local.program.identifier === void 0 ? base.program?.identifier ?? null : nullishToNull(
|
|
50681
52379
|
typeof local.program.identifier === "string" ? local.program.identifier : void 0
|
|
50682
52380
|
),
|
|
50683
|
-
data:
|
|
52381
|
+
data: isRecord16(local.program.data) ? local.program.data : base.program?.data ?? {}
|
|
50684
52382
|
} : base.program;
|
|
50685
52383
|
return {
|
|
50686
52384
|
...base,
|
|
@@ -50689,18 +52387,30 @@ function normalizeLocalCourseAgainstRemoteForCompare(localCourse, remoteCourse)
|
|
|
50689
52387
|
slug: stringValue(local.slug, base.slug),
|
|
50690
52388
|
status,
|
|
50691
52389
|
visibility,
|
|
50692
|
-
venueRef: local.venueRef === void 0 ? base.venueRef : nullishToNull(
|
|
50693
|
-
|
|
50694
|
-
|
|
50695
|
-
|
|
52390
|
+
venueRef: local.venueRef === void 0 ? base.venueRef : nullishToNull(
|
|
52391
|
+
typeof local.venueRef === "string" ? local.venueRef : void 0
|
|
52392
|
+
),
|
|
52393
|
+
categoryRef: local.categoryRef === void 0 ? base.categoryRef : nullishToNull(
|
|
52394
|
+
typeof local.categoryRef === "string" ? local.categoryRef : void 0
|
|
52395
|
+
),
|
|
52396
|
+
formRef: local.formRef === void 0 ? base.formRef : nullishToNull(
|
|
52397
|
+
typeof local.formRef === "string" ? local.formRef : void 0
|
|
52398
|
+
),
|
|
52399
|
+
capacity: local.capacity === void 0 ? base.capacity : nullishToNull(
|
|
52400
|
+
typeof local.capacity === "number" ? local.capacity : void 0
|
|
52401
|
+
),
|
|
50696
52402
|
enrollmentCapacity: local.enrollmentCapacity === void 0 ? base.enrollmentCapacity : nullishToNull(
|
|
50697
52403
|
typeof local.enrollmentCapacity === "number" ? local.enrollmentCapacity : void 0
|
|
50698
52404
|
),
|
|
50699
52405
|
acceptsMemberships: local.acceptsMemberships === void 0 ? base.acceptsMemberships : Boolean(local.acceptsMemberships),
|
|
50700
|
-
priceCents: local.priceCents === void 0 ? base.priceCents : nullishToNull(
|
|
52406
|
+
priceCents: local.priceCents === void 0 ? base.priceCents : nullishToNull(
|
|
52407
|
+
typeof local.priceCents === "number" ? local.priceCents : void 0
|
|
52408
|
+
),
|
|
50701
52409
|
currency: local.currency === void 0 ? base.currency : typeof local.currency === "string" && local.currency.trim().length > 0 ? local.currency.toUpperCase() : base.currency,
|
|
50702
52410
|
sessions: local.sessions === void 0 ? base.sessions : normalizeCourseSessions(local.sessions),
|
|
50703
|
-
programRef: local.programRef === void 0 ? base.programRef : nullishToNull(
|
|
52411
|
+
programRef: local.programRef === void 0 ? base.programRef : nullishToNull(
|
|
52412
|
+
typeof local.programRef === "string" ? local.programRef : void 0
|
|
52413
|
+
),
|
|
50704
52414
|
program: program2
|
|
50705
52415
|
};
|
|
50706
52416
|
}
|
|
@@ -50717,26 +52427,15 @@ function detectOrphans(changes, localIds, remoteMap) {
|
|
|
50717
52427
|
}
|
|
50718
52428
|
function calculatePushAllExtraChanges(local, remote, options) {
|
|
50719
52429
|
const deleteOrphaned = options?.deleteOrphaned ?? false;
|
|
50720
|
-
const remoteVenues = new Map(
|
|
50721
|
-
(remote.venues ?? []).map((v) => [v.slug, v])
|
|
50722
|
-
);
|
|
52430
|
+
const remoteVenues = new Map((remote.venues ?? []).map((v) => [v.slug, v]));
|
|
50723
52431
|
const remoteCategories = new Map(
|
|
50724
|
-
(remote.eventCategories ?? []).map((c) => [
|
|
50725
|
-
c.identifier,
|
|
50726
|
-
c
|
|
50727
|
-
])
|
|
52432
|
+
(remote.eventCategories ?? []).map((c) => [c.identifier, c])
|
|
50728
52433
|
);
|
|
50729
52434
|
const remoteEvents = new Map(
|
|
50730
|
-
(remote.events ?? []).map((e) => [
|
|
50731
|
-
e.identifier,
|
|
50732
|
-
e
|
|
50733
|
-
])
|
|
52435
|
+
(remote.events ?? []).map((e) => [e.identifier, e])
|
|
50734
52436
|
);
|
|
50735
52437
|
const remoteCourses = new Map(
|
|
50736
|
-
(remote.courses ?? []).map((course) => [
|
|
50737
|
-
course.identifier,
|
|
50738
|
-
course
|
|
50739
|
-
])
|
|
52438
|
+
(remote.courses ?? []).map((course) => [course.identifier, course])
|
|
50740
52439
|
);
|
|
50741
52440
|
const venues = {
|
|
50742
52441
|
toPush: /* @__PURE__ */ new Set(),
|
|
@@ -50801,7 +52500,10 @@ function calculatePushAllExtraChanges(local, remote, options) {
|
|
|
50801
52500
|
events.toPush.add(identifier);
|
|
50802
52501
|
continue;
|
|
50803
52502
|
}
|
|
50804
|
-
const localNorm = normalizeLocalEventAgainstRemoteForCompare(
|
|
52503
|
+
const localNorm = normalizeLocalEventAgainstRemoteForCompare(
|
|
52504
|
+
event,
|
|
52505
|
+
remoteEvent
|
|
52506
|
+
);
|
|
50805
52507
|
const remoteNorm = normalizeRemoteEventForCompare(remoteEvent);
|
|
50806
52508
|
if (!equal(localNorm, remoteNorm)) {
|
|
50807
52509
|
events.update++;
|
|
@@ -50825,7 +52527,10 @@ function calculatePushAllExtraChanges(local, remote, options) {
|
|
|
50825
52527
|
courses.toPush.add(identifier);
|
|
50826
52528
|
continue;
|
|
50827
52529
|
}
|
|
50828
|
-
const localNorm = normalizeLocalCourseAgainstRemoteForCompare(
|
|
52530
|
+
const localNorm = normalizeLocalCourseAgainstRemoteForCompare(
|
|
52531
|
+
course,
|
|
52532
|
+
remoteCourse
|
|
52533
|
+
);
|
|
50829
52534
|
const remoteNorm = normalizeRemoteCourseForCompare(remoteCourse);
|
|
50830
52535
|
if (!equal(localNorm, remoteNorm)) {
|
|
50831
52536
|
courses.update++;
|
|
@@ -50835,10 +52540,26 @@ function calculatePushAllExtraChanges(local, remote, options) {
|
|
|
50835
52540
|
}
|
|
50836
52541
|
}
|
|
50837
52542
|
if (deleteOrphaned) {
|
|
50838
|
-
detectOrphans(
|
|
50839
|
-
|
|
50840
|
-
|
|
50841
|
-
|
|
52543
|
+
detectOrphans(
|
|
52544
|
+
venues,
|
|
52545
|
+
local.venues.map((v) => String(v.slug)),
|
|
52546
|
+
remoteVenues
|
|
52547
|
+
);
|
|
52548
|
+
detectOrphans(
|
|
52549
|
+
eventCategories,
|
|
52550
|
+
local.eventCategories.map((c) => String(c.identifier)),
|
|
52551
|
+
remoteCategories
|
|
52552
|
+
);
|
|
52553
|
+
detectOrphans(
|
|
52554
|
+
events,
|
|
52555
|
+
local.events.map((e) => String(e.identifier)),
|
|
52556
|
+
remoteEvents
|
|
52557
|
+
);
|
|
52558
|
+
detectOrphans(
|
|
52559
|
+
courses,
|
|
52560
|
+
local.courses.map((course) => String(course.identifier)),
|
|
52561
|
+
remoteCourses
|
|
52562
|
+
);
|
|
50842
52563
|
}
|
|
50843
52564
|
return {
|
|
50844
52565
|
venues,
|
|
@@ -51264,6 +52985,12 @@ var appointmentResourceRefSchema = resourceRefSchema("appointment-resource");
|
|
|
51264
52985
|
var appointmentAvailabilityRefSchema = resourceRefSchema("availability");
|
|
51265
52986
|
var unknownRecordSchema = z.record(z.string(), z.unknown());
|
|
51266
52987
|
var stringArraySchema = z.array(z.string()).readonly();
|
|
52988
|
+
var entrySlotBlockSchema = z.object({
|
|
52989
|
+
identifier: z.string().nullable().optional(),
|
|
52990
|
+
kind: z.string().min(1),
|
|
52991
|
+
content: unknownRecordSchema
|
|
52992
|
+
}).strict();
|
|
52993
|
+
var entrySlotBlocksSchema = z.record(z.string(), z.array(entrySlotBlockSchema));
|
|
51267
52994
|
var positiveIntegerSchema = z.number().int().positive();
|
|
51268
52995
|
var nonNegativeIntegerSchema = z.number().int().nonnegative();
|
|
51269
52996
|
var recipeIdentifierSchema = z.string().regex(
|
|
@@ -51642,6 +53369,7 @@ var upsertContentEntryCommandSchema = z.object({
|
|
|
51642
53369
|
title: z.string().min(1).optional(),
|
|
51643
53370
|
manualOrder: z.number().int().min(0).optional(),
|
|
51644
53371
|
data: unknownRecordSchema.optional(),
|
|
53372
|
+
blocks: entrySlotBlocksSchema.optional(),
|
|
51645
53373
|
linkedSubjectRef: contentEntryRefSchema.optional(),
|
|
51646
53374
|
mediaRefs: z.array(mediaRefSchema).readonly().optional()
|
|
51647
53375
|
}).strict()
|
|
@@ -52885,7 +54613,7 @@ function getSiteCommandLifecycleIntent(command) {
|
|
|
52885
54613
|
init_src();
|
|
52886
54614
|
|
|
52887
54615
|
// ../site-commands/src/guards.ts
|
|
52888
|
-
function
|
|
54616
|
+
function isRecord17(value) {
|
|
52889
54617
|
return typeof value === "object" && value !== null;
|
|
52890
54618
|
}
|
|
52891
54619
|
|
|
@@ -53150,7 +54878,7 @@ function collectVenueRefsFromIntervals(intervals, path25) {
|
|
|
53150
54878
|
}
|
|
53151
54879
|
function collectNavigationRefs(items, path25) {
|
|
53152
54880
|
return items.flatMap((item, index) => {
|
|
53153
|
-
if (!
|
|
54881
|
+
if (!isRecord17(item)) return [];
|
|
53154
54882
|
const itemPath = `${path25}[${index}]`;
|
|
53155
54883
|
const refs = [];
|
|
53156
54884
|
if (typeof item.pageRef === "string") {
|
|
@@ -53167,7 +54895,7 @@ function collectNavigationRefs(items, path25) {
|
|
|
53167
54895
|
}
|
|
53168
54896
|
function collectBlockRefs(blocks, path25) {
|
|
53169
54897
|
return blocks.flatMap((block, index) => {
|
|
53170
|
-
if (!
|
|
54898
|
+
if (!isRecord17(block)) return [];
|
|
53171
54899
|
const blockPath = `${path25}[${index}]`;
|
|
53172
54900
|
return [
|
|
53173
54901
|
...collectNestedRefs(block.props, `${blockPath}.props`),
|
|
@@ -53183,7 +54911,7 @@ function collectNestedRefs(value, path25) {
|
|
|
53183
54911
|
if (Array.isArray(value)) {
|
|
53184
54912
|
return value.flatMap((item, index) => collectNestedRefs(item, `${path25}[${index}]`));
|
|
53185
54913
|
}
|
|
53186
|
-
if (!
|
|
54914
|
+
if (!isRecord17(value)) return [];
|
|
53187
54915
|
return Object.entries(value).flatMap(([key, child]) => collectNestedRefs(child, `${path25}.${key}`));
|
|
53188
54916
|
}
|
|
53189
54917
|
|
|
@@ -53267,7 +54995,7 @@ function parseCommandBatch(input) {
|
|
|
53267
54995
|
if (unknownTypeErrors.length > 0) return err(unknownTypeErrors);
|
|
53268
54996
|
const parsed = siteCommandBatchSchema.safeParse(input);
|
|
53269
54997
|
if (!parsed.success) {
|
|
53270
|
-
return err(parsed.error.issues.map((
|
|
54998
|
+
return err(parsed.error.issues.map((issue4) => invalidPayloadError(input, issue4)));
|
|
53271
54999
|
}
|
|
53272
55000
|
return ok(parsed.data);
|
|
53273
55001
|
}
|
|
@@ -53439,9 +55167,9 @@ function deriveIdempotencyKey(input) {
|
|
|
53439
55167
|
].join("|"));
|
|
53440
55168
|
}
|
|
53441
55169
|
function findUnknownCommandTypes(input) {
|
|
53442
|
-
if (!
|
|
55170
|
+
if (!isRecord17(input) || !Array.isArray(input.commands)) return [];
|
|
53443
55171
|
return input.commands.flatMap((command, commandIndex) => {
|
|
53444
|
-
if (!
|
|
55172
|
+
if (!isRecord17(command) || typeof command.type !== "string") return [];
|
|
53445
55173
|
if (commandTypeSet.has(command.type)) return [];
|
|
53446
55174
|
return [{
|
|
53447
55175
|
code: "unknown_command_type",
|
|
@@ -53451,25 +55179,25 @@ function findUnknownCommandTypes(input) {
|
|
|
53451
55179
|
}];
|
|
53452
55180
|
});
|
|
53453
55181
|
}
|
|
53454
|
-
function invalidPayloadError(input,
|
|
53455
|
-
const commandIndex = commandIndexForIssuePath(
|
|
55182
|
+
function invalidPayloadError(input, issue4) {
|
|
55183
|
+
const commandIndex = commandIndexForIssuePath(issue4.path);
|
|
53456
55184
|
const commandType = commandTypeForIssue(input, commandIndex);
|
|
53457
|
-
const field = formatIssuePath(
|
|
55185
|
+
const field = formatIssuePath(issue4.path);
|
|
53458
55186
|
return {
|
|
53459
55187
|
code: "invalid_command_payload",
|
|
53460
55188
|
commandIndex,
|
|
53461
55189
|
commandType,
|
|
53462
55190
|
field,
|
|
53463
|
-
message: `${field}: ${
|
|
55191
|
+
message: `${field}: ${issue4.message}`
|
|
53464
55192
|
};
|
|
53465
55193
|
}
|
|
53466
55194
|
function commandIndexForIssuePath(path25) {
|
|
53467
55195
|
return path25[0] === "commands" && typeof path25[1] === "number" ? path25[1] : -1;
|
|
53468
55196
|
}
|
|
53469
55197
|
function commandTypeForIssue(input, commandIndex) {
|
|
53470
|
-
if (!
|
|
55198
|
+
if (!isRecord17(input) || !isUnknownArray3(input.commands)) return null;
|
|
53471
55199
|
const command = input.commands[commandIndex];
|
|
53472
|
-
return
|
|
55200
|
+
return isRecord17(command) && typeof command.type === "string" ? command.type : null;
|
|
53473
55201
|
}
|
|
53474
55202
|
function isUnknownArray3(value) {
|
|
53475
55203
|
return Array.isArray(value);
|
|
@@ -54136,6 +55864,186 @@ function reportSubjectForCommandRef(subjectsByCommandRef, commandRef) {
|
|
|
54136
55864
|
|
|
54137
55865
|
// src/cli/site-commands/datedOfferingCommands.ts
|
|
54138
55866
|
init_src();
|
|
55867
|
+
|
|
55868
|
+
// ../api/src/sdk-event-schedule.ts
|
|
55869
|
+
var timeRegex = /^([01]\d|2[0-3]):([0-5]\d)(:([0-5]\d))?$/;
|
|
55870
|
+
var explicitOffsetDateTimeRegex = /^(\d{4})-(\d{2})-(\d{2})T([01]\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?(\.\d{1,3})?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$/;
|
|
55871
|
+
var localDateTimeRegex = /^(\d{4})-(\d{2})-(\d{2})T([01]\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?(\.\d{1,3})?$/;
|
|
55872
|
+
function issue3(path25, message) {
|
|
55873
|
+
return { path: path25, message };
|
|
55874
|
+
}
|
|
55875
|
+
function isValidDateParts(year, month, day) {
|
|
55876
|
+
const date = new Date(Date.UTC(year, month - 1, day));
|
|
55877
|
+
return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
|
|
55878
|
+
}
|
|
55879
|
+
function isZeroFraction(fraction) {
|
|
55880
|
+
return fraction === void 0 || /^\.0+$/.test(fraction);
|
|
55881
|
+
}
|
|
55882
|
+
function datePart(year, month, day) {
|
|
55883
|
+
return `${year}-${month}-${day}`;
|
|
55884
|
+
}
|
|
55885
|
+
function timePart(hours, minutes, seconds = "00") {
|
|
55886
|
+
return `${hours}:${minutes}:${seconds}`;
|
|
55887
|
+
}
|
|
55888
|
+
function parseSdkEventDateTime(value) {
|
|
55889
|
+
const explicitMatch = explicitOffsetDateTimeRegex.exec(value);
|
|
55890
|
+
if (explicitMatch) {
|
|
55891
|
+
const [, yearRaw2, monthRaw2, dayRaw2, hours2, minutes2, seconds2 = "00", fraction2] = explicitMatch;
|
|
55892
|
+
if (!yearRaw2 || !monthRaw2 || !dayRaw2 || !hours2 || !minutes2) return null;
|
|
55893
|
+
const year2 = Number(yearRaw2);
|
|
55894
|
+
const month2 = Number(monthRaw2);
|
|
55895
|
+
const day2 = Number(dayRaw2);
|
|
55896
|
+
if (!isValidDateParts(year2, month2, day2) || !isZeroFraction(fraction2)) return null;
|
|
55897
|
+
const epochMs2 = Date.parse(value);
|
|
55898
|
+
if (!Number.isFinite(epochMs2)) return null;
|
|
55899
|
+
return {
|
|
55900
|
+
epochMs: epochMs2,
|
|
55901
|
+
date: datePart(yearRaw2, monthRaw2, dayRaw2),
|
|
55902
|
+
time: timePart(hours2, minutes2, seconds2),
|
|
55903
|
+
iso: new Date(epochMs2).toISOString()
|
|
55904
|
+
};
|
|
55905
|
+
}
|
|
55906
|
+
const localMatch = localDateTimeRegex.exec(value);
|
|
55907
|
+
if (!localMatch) return null;
|
|
55908
|
+
const [, yearRaw, monthRaw, dayRaw, hours, minutes, seconds = "00", fraction] = localMatch;
|
|
55909
|
+
if (!yearRaw || !monthRaw || !dayRaw || !hours || !minutes) return null;
|
|
55910
|
+
const year = Number(yearRaw);
|
|
55911
|
+
const month = Number(monthRaw);
|
|
55912
|
+
const day = Number(dayRaw);
|
|
55913
|
+
if (!isValidDateParts(year, month, day) || !isZeroFraction(fraction)) return null;
|
|
55914
|
+
const epochMs = Date.UTC(year, month - 1, day, Number(hours), Number(minutes), Number(seconds));
|
|
55915
|
+
return {
|
|
55916
|
+
epochMs,
|
|
55917
|
+
date: datePart(yearRaw, monthRaw, dayRaw),
|
|
55918
|
+
time: timePart(hours, minutes, seconds),
|
|
55919
|
+
iso: new Date(epochMs).toISOString()
|
|
55920
|
+
};
|
|
55921
|
+
}
|
|
55922
|
+
function durationMinutesBetween(startsAt, endsAt) {
|
|
55923
|
+
if (endsAt.epochMs <= startsAt.epochMs) return null;
|
|
55924
|
+
const durationMs = endsAt.epochMs - startsAt.epochMs;
|
|
55925
|
+
if (durationMs % 6e4 !== 0) return null;
|
|
55926
|
+
return durationMs / 6e4;
|
|
55927
|
+
}
|
|
55928
|
+
function exceedsMaxDuration(durationMinutes, options) {
|
|
55929
|
+
return options.maxDurationMinutes !== void 0 && durationMinutes > options.maxDurationMinutes;
|
|
55930
|
+
}
|
|
55931
|
+
function maxDurationMessage(options) {
|
|
55932
|
+
return options.maxDurationDays === void 0 ? "Duration is above the allowed maximum" : `Duration must be ${options.maxDurationDays} days or less`;
|
|
55933
|
+
}
|
|
55934
|
+
function classifyCanonicalSchedule(input, options) {
|
|
55935
|
+
const issues = [];
|
|
55936
|
+
if (options.requireCanonicalFields && input.recurrenceRule === void 0) {
|
|
55937
|
+
issues.push(issue3(["recurrenceRule"], "recurrenceRule is required"));
|
|
55938
|
+
}
|
|
55939
|
+
if (input.defaultStartTime !== void 0 && input.defaultStartTime !== null && !timeRegex.test(input.defaultStartTime)) {
|
|
55940
|
+
issues.push(issue3(["defaultStartTime"], "Invalid time format (HH:MM or HH:MM:SS)"));
|
|
55941
|
+
}
|
|
55942
|
+
if (options.requireCanonicalFields && !input.defaultStartTime) {
|
|
55943
|
+
issues.push(issue3(["defaultStartTime"], "defaultStartTime is required"));
|
|
55944
|
+
}
|
|
55945
|
+
if (options.requireCanonicalFields && input.durationMinutes === void 0) {
|
|
55946
|
+
issues.push(issue3(["durationMinutes"], "durationMinutes is required"));
|
|
55947
|
+
}
|
|
55948
|
+
if (input.durationMinutes !== void 0 && input.durationMinutes !== null) {
|
|
55949
|
+
if (input.durationMinutes < 1) {
|
|
55950
|
+
issues.push(issue3(["durationMinutes"], "durationMinutes must be at least 1"));
|
|
55951
|
+
} else if (exceedsMaxDuration(input.durationMinutes, options)) {
|
|
55952
|
+
issues.push(issue3(["durationMinutes"], maxDurationMessage(options)));
|
|
55953
|
+
}
|
|
55954
|
+
}
|
|
55955
|
+
if (issues.length > 0) return { ok: false, issues };
|
|
55956
|
+
return {
|
|
55957
|
+
ok: true,
|
|
55958
|
+
kind: "canonical",
|
|
55959
|
+
canonical: {
|
|
55960
|
+
recurrenceRule: input.recurrenceRule ?? null,
|
|
55961
|
+
startDate: input.startDate,
|
|
55962
|
+
defaultStartTime: input.defaultStartTime ?? "09:00:00",
|
|
55963
|
+
durationMinutes: input.durationMinutes ?? 60
|
|
55964
|
+
}
|
|
55965
|
+
};
|
|
55966
|
+
}
|
|
55967
|
+
function classifySdkEventSchedule(input, options = {}) {
|
|
55968
|
+
const issues = [];
|
|
55969
|
+
const hasStartsAt = input.startsAt !== void 0 && input.startsAt !== null;
|
|
55970
|
+
const hasEndsAt = input.endsAt !== void 0 && input.endsAt !== null;
|
|
55971
|
+
const hasDateTimeDuration = hasStartsAt && input.durationMinutes !== void 0 && input.durationMinutes !== null;
|
|
55972
|
+
const hasCanonicalStart = input.startDate !== void 0 || input.defaultStartTime !== void 0;
|
|
55973
|
+
if (!hasStartsAt && !hasEndsAt) {
|
|
55974
|
+
return classifyCanonicalSchedule(input, options);
|
|
55975
|
+
}
|
|
55976
|
+
if (hasStartsAt && hasCanonicalStart) {
|
|
55977
|
+
issues.push(issue3(["startsAt"], "Use either startsAt or startDate/defaultStartTime, not both"));
|
|
55978
|
+
}
|
|
55979
|
+
if (input.recurrenceRule) {
|
|
55980
|
+
issues.push(issue3(["recurrenceRule"], "startsAt schedules are only supported for one-off events"));
|
|
55981
|
+
}
|
|
55982
|
+
if (!hasStartsAt) {
|
|
55983
|
+
issues.push(issue3(["startsAt"], "startsAt is required when endsAt is provided"));
|
|
55984
|
+
}
|
|
55985
|
+
if (!hasEndsAt && !hasDateTimeDuration) {
|
|
55986
|
+
issues.push(issue3(["endsAt"], "Provide either endsAt or durationMinutes with startsAt"));
|
|
55987
|
+
}
|
|
55988
|
+
if (hasEndsAt && hasDateTimeDuration) {
|
|
55989
|
+
issues.push(issue3(["endsAt"], "Use either endsAt or durationMinutes with startsAt, not both"));
|
|
55990
|
+
}
|
|
55991
|
+
const startsAt = typeof input.startsAt === "string" ? parseSdkEventDateTime(input.startsAt) : null;
|
|
55992
|
+
const endsAt = typeof input.endsAt === "string" ? parseSdkEventDateTime(input.endsAt) : null;
|
|
55993
|
+
if (hasStartsAt && !startsAt) {
|
|
55994
|
+
issues.push(issue3(["startsAt"], "Invalid datetime format. Use ISO datetime format, e.g. 2026-06-01T10:00:00Z"));
|
|
55995
|
+
}
|
|
55996
|
+
if (hasEndsAt && !endsAt) {
|
|
55997
|
+
issues.push(issue3(["endsAt"], "Invalid datetime format. Use ISO datetime format, e.g. 2026-06-07T10:00:00Z"));
|
|
55998
|
+
}
|
|
55999
|
+
if (startsAt && endsAt) {
|
|
56000
|
+
const durationMinutes = durationMinutesBetween(startsAt, endsAt);
|
|
56001
|
+
if (durationMinutes === null) {
|
|
56002
|
+
issues.push(issue3(["endsAt"], "endsAt must be after startsAt and align to a whole minute"));
|
|
56003
|
+
} else if (exceedsMaxDuration(durationMinutes, options)) {
|
|
56004
|
+
issues.push(issue3(["endsAt"], maxDurationMessage(options)));
|
|
56005
|
+
}
|
|
56006
|
+
if (issues.length === 0 && durationMinutes !== null) {
|
|
56007
|
+
return {
|
|
56008
|
+
ok: true,
|
|
56009
|
+
kind: "start-end",
|
|
56010
|
+
canonical: {
|
|
56011
|
+
recurrenceRule: null,
|
|
56012
|
+
startDate: startsAt.date,
|
|
56013
|
+
defaultStartTime: startsAt.time,
|
|
56014
|
+
durationMinutes
|
|
56015
|
+
},
|
|
56016
|
+
startsAtIso: startsAt.iso,
|
|
56017
|
+
endsAtIso: endsAt.iso
|
|
56018
|
+
};
|
|
56019
|
+
}
|
|
56020
|
+
}
|
|
56021
|
+
if (startsAt && hasDateTimeDuration && input.durationMinutes !== void 0 && input.durationMinutes !== null) {
|
|
56022
|
+
if (input.durationMinutes < 1) {
|
|
56023
|
+
issues.push(issue3(["durationMinutes"], "durationMinutes must be at least 1"));
|
|
56024
|
+
} else if (exceedsMaxDuration(input.durationMinutes, options)) {
|
|
56025
|
+
issues.push(issue3(["durationMinutes"], maxDurationMessage(options)));
|
|
56026
|
+
}
|
|
56027
|
+
if (issues.length === 0) {
|
|
56028
|
+
const endsAtMs = startsAt.epochMs + input.durationMinutes * 6e4;
|
|
56029
|
+
return {
|
|
56030
|
+
ok: true,
|
|
56031
|
+
kind: "start-duration",
|
|
56032
|
+
canonical: {
|
|
56033
|
+
recurrenceRule: null,
|
|
56034
|
+
startDate: startsAt.date,
|
|
56035
|
+
defaultStartTime: startsAt.time,
|
|
56036
|
+
durationMinutes: input.durationMinutes
|
|
56037
|
+
},
|
|
56038
|
+
startsAtIso: startsAt.iso,
|
|
56039
|
+
endsAtIso: new Date(endsAtMs).toISOString()
|
|
56040
|
+
};
|
|
56041
|
+
}
|
|
56042
|
+
}
|
|
56043
|
+
return { ok: false, issues };
|
|
56044
|
+
}
|
|
56045
|
+
|
|
56046
|
+
// src/cli/site-commands/datedOfferingCommands.ts
|
|
54139
56047
|
var datedOfferingSiteCommandTypes = [
|
|
54140
56048
|
"upsertVenue",
|
|
54141
56049
|
"deleteVenue",
|
|
@@ -54151,72 +56059,105 @@ function compileDatedOfferingPushCommands(input) {
|
|
|
54151
56059
|
for (const venue of input.venues?.items ?? []) {
|
|
54152
56060
|
const command = venueCommand(venue.item);
|
|
54153
56061
|
if (!command.ok) return command;
|
|
54154
|
-
commandBindings.push(
|
|
54155
|
-
|
|
54156
|
-
|
|
54157
|
-
|
|
54158
|
-
|
|
54159
|
-
|
|
54160
|
-
|
|
56062
|
+
commandBindings.push(
|
|
56063
|
+
commandBinding(command.value, {
|
|
56064
|
+
scopeCommand: "venues",
|
|
56065
|
+
scopeName: "venues",
|
|
56066
|
+
itemLabelSingular: "venue",
|
|
56067
|
+
identifier: venue.item.slug,
|
|
56068
|
+
counter: venue.exists ? "updated" : "created"
|
|
56069
|
+
})
|
|
56070
|
+
);
|
|
54161
56071
|
}
|
|
54162
56072
|
for (const category of input.eventCategories?.items ?? []) {
|
|
54163
|
-
commandBindings.push(
|
|
54164
|
-
|
|
54165
|
-
|
|
54166
|
-
|
|
54167
|
-
|
|
54168
|
-
|
|
54169
|
-
|
|
56073
|
+
commandBindings.push(
|
|
56074
|
+
commandBinding(eventCategoryCommand(category.item), {
|
|
56075
|
+
scopeCommand: "event-categories",
|
|
56076
|
+
scopeName: "event categories",
|
|
56077
|
+
itemLabelSingular: "event category",
|
|
56078
|
+
identifier: category.item.identifier,
|
|
56079
|
+
counter: category.exists ? "updated" : "created"
|
|
56080
|
+
})
|
|
56081
|
+
);
|
|
54170
56082
|
}
|
|
54171
56083
|
for (const event of input.events?.items ?? []) {
|
|
54172
56084
|
const command = eventSeriesCommand(event.item);
|
|
54173
56085
|
if (!command.ok) return command;
|
|
54174
|
-
commandBindings.push(
|
|
54175
|
-
|
|
54176
|
-
|
|
54177
|
-
|
|
54178
|
-
|
|
54179
|
-
|
|
54180
|
-
|
|
56086
|
+
commandBindings.push(
|
|
56087
|
+
commandBinding(command.value, {
|
|
56088
|
+
scopeCommand: "events",
|
|
56089
|
+
scopeName: "events",
|
|
56090
|
+
itemLabelSingular: "event",
|
|
56091
|
+
identifier: event.item.identifier,
|
|
56092
|
+
counter: event.exists ? "updated" : "created"
|
|
56093
|
+
})
|
|
56094
|
+
);
|
|
54181
56095
|
}
|
|
54182
56096
|
for (const course of input.courses?.items ?? []) {
|
|
54183
56097
|
const command = courseCommand(course.item);
|
|
54184
56098
|
if (!command.ok) return command;
|
|
54185
|
-
commandBindings.push(
|
|
54186
|
-
|
|
54187
|
-
|
|
54188
|
-
|
|
54189
|
-
|
|
54190
|
-
|
|
54191
|
-
|
|
56099
|
+
commandBindings.push(
|
|
56100
|
+
commandBinding(command.value, {
|
|
56101
|
+
scopeCommand: "courses",
|
|
56102
|
+
scopeName: "courses",
|
|
56103
|
+
itemLabelSingular: "course",
|
|
56104
|
+
identifier: course.item.identifier,
|
|
56105
|
+
counter: course.exists ? "updated" : "created"
|
|
56106
|
+
})
|
|
56107
|
+
);
|
|
54192
56108
|
}
|
|
54193
56109
|
for (const identifier of input.delete?.events ?? []) {
|
|
54194
|
-
commandBindings.push(
|
|
54195
|
-
|
|
54196
|
-
|
|
54197
|
-
|
|
54198
|
-
|
|
56110
|
+
commandBindings.push(
|
|
56111
|
+
commandBinding(
|
|
56112
|
+
{
|
|
56113
|
+
type: "deleteEventSeries",
|
|
56114
|
+
ref: createCommandRef("delete-event", [identifier]),
|
|
56115
|
+
input: { identifier }
|
|
56116
|
+
},
|
|
56117
|
+
deleteSubject("events", "events", "event", identifier)
|
|
56118
|
+
)
|
|
56119
|
+
);
|
|
54199
56120
|
}
|
|
54200
56121
|
for (const identifier of input.delete?.courses ?? []) {
|
|
54201
|
-
commandBindings.push(
|
|
54202
|
-
|
|
54203
|
-
|
|
54204
|
-
|
|
54205
|
-
|
|
56122
|
+
commandBindings.push(
|
|
56123
|
+
commandBinding(
|
|
56124
|
+
{
|
|
56125
|
+
type: "deleteCourse",
|
|
56126
|
+
ref: createCommandRef("delete-course", [identifier]),
|
|
56127
|
+
input: { identifier }
|
|
56128
|
+
},
|
|
56129
|
+
deleteSubject("courses", "courses", "course", identifier)
|
|
56130
|
+
)
|
|
56131
|
+
);
|
|
54206
56132
|
}
|
|
54207
56133
|
for (const slug of input.delete?.venues ?? []) {
|
|
54208
|
-
commandBindings.push(
|
|
54209
|
-
|
|
54210
|
-
|
|
54211
|
-
|
|
54212
|
-
|
|
56134
|
+
commandBindings.push(
|
|
56135
|
+
commandBinding(
|
|
56136
|
+
{
|
|
56137
|
+
type: "deleteVenue",
|
|
56138
|
+
ref: createCommandRef("delete-venue", [slug]),
|
|
56139
|
+
input: { slug }
|
|
56140
|
+
},
|
|
56141
|
+
deleteSubject("venues", "venues", "venue", slug)
|
|
56142
|
+
)
|
|
56143
|
+
);
|
|
54213
56144
|
}
|
|
54214
56145
|
for (const identifier of input.delete?.eventCategories ?? []) {
|
|
54215
|
-
commandBindings.push(
|
|
54216
|
-
|
|
54217
|
-
|
|
54218
|
-
|
|
54219
|
-
|
|
56146
|
+
commandBindings.push(
|
|
56147
|
+
commandBinding(
|
|
56148
|
+
{
|
|
56149
|
+
type: "deleteEventCategory",
|
|
56150
|
+
ref: createCommandRef("delete-event-category", [identifier]),
|
|
56151
|
+
input: { identifier }
|
|
56152
|
+
},
|
|
56153
|
+
deleteSubject(
|
|
56154
|
+
"event-categories",
|
|
56155
|
+
"event categories",
|
|
56156
|
+
"event category",
|
|
56157
|
+
identifier
|
|
56158
|
+
)
|
|
56159
|
+
)
|
|
56160
|
+
);
|
|
54220
56161
|
}
|
|
54221
56162
|
const planned = planCliCommandBatchForBindings({
|
|
54222
56163
|
...input,
|
|
@@ -54281,10 +56222,16 @@ function deleteSubject(scopeCommand, scopeName, itemLabelSingular, identifier) {
|
|
|
54281
56222
|
}
|
|
54282
56223
|
function venueCommand(venue) {
|
|
54283
56224
|
if (!venue.timezone) {
|
|
54284
|
-
return unsupported(
|
|
56225
|
+
return unsupported(
|
|
56226
|
+
venue.slug,
|
|
56227
|
+
`Venue ${venue.slug} is missing timezone; command-backed venue pushes require an IANA timezone.`
|
|
56228
|
+
);
|
|
54285
56229
|
}
|
|
54286
56230
|
if (venue.location && (typeof venue.location.lat !== "number" || typeof venue.location.lng !== "number")) {
|
|
54287
|
-
return unsupported(
|
|
56231
|
+
return unsupported(
|
|
56232
|
+
venue.slug,
|
|
56233
|
+
`Venue ${venue.slug} has an incomplete location; command-backed venue pushes require both lat and lng.`
|
|
56234
|
+
);
|
|
54288
56235
|
}
|
|
54289
56236
|
const location2 = venue.location && typeof venue.location.lat === "number" && typeof venue.location.lng === "number" ? {
|
|
54290
56237
|
latitude: venue.location.lat,
|
|
@@ -54327,10 +56274,16 @@ function eventCategoryCommand(category) {
|
|
|
54327
56274
|
}
|
|
54328
56275
|
function eventSeriesCommand(event) {
|
|
54329
56276
|
if (event.identifier !== event.slug) {
|
|
54330
|
-
return unsupported(
|
|
56277
|
+
return unsupported(
|
|
56278
|
+
event.identifier,
|
|
56279
|
+
`Event identifier "${event.identifier}" must match slug "${event.slug}".`
|
|
56280
|
+
);
|
|
54331
56281
|
}
|
|
54332
56282
|
if (event.schedule?.recurrenceRule) {
|
|
54333
|
-
return unsupported(
|
|
56283
|
+
return unsupported(
|
|
56284
|
+
event.identifier,
|
|
56285
|
+
`Event ${event.identifier} uses recurrenceRule; command-backed SDK pushes currently support one-off events only.`
|
|
56286
|
+
);
|
|
54334
56287
|
}
|
|
54335
56288
|
const occurrence = eventOccurrence(event);
|
|
54336
56289
|
if (!occurrence.ok) return occurrence;
|
|
@@ -54354,8 +56307,8 @@ function eventSeriesCommand(event) {
|
|
|
54354
56307
|
capacity: capacity(event.capacity),
|
|
54355
56308
|
pricing: pricing.value,
|
|
54356
56309
|
priceDisplay: event.pricing?.priceDisplay ?? void 0,
|
|
54357
|
-
acceptsPasses: event.pricing?.acceptsPasses,
|
|
54358
|
-
acceptsMemberships: event.pricing?.acceptsMemberships,
|
|
56310
|
+
acceptsPasses: event.pricing?.acceptsPasses ?? void 0,
|
|
56311
|
+
acceptsMemberships: event.pricing?.acceptsMemberships ?? void 0,
|
|
54359
56312
|
occurrences: [occurrence.value],
|
|
54360
56313
|
content: event.content ? {
|
|
54361
56314
|
summary: event.content.summary ?? void 0,
|
|
@@ -54370,7 +56323,10 @@ function eventSeriesCommand(event) {
|
|
|
54370
56323
|
}
|
|
54371
56324
|
function courseCommand(course) {
|
|
54372
56325
|
if (course.identifier !== course.slug) {
|
|
54373
|
-
return unsupported(
|
|
56326
|
+
return unsupported(
|
|
56327
|
+
course.identifier,
|
|
56328
|
+
`Course identifier "${course.identifier}" must match slug "${course.slug}".`
|
|
56329
|
+
);
|
|
54374
56330
|
}
|
|
54375
56331
|
const pricing = coursePricing(course);
|
|
54376
56332
|
if (!pricing.ok) return pricing;
|
|
@@ -54402,39 +56358,74 @@ function courseCommand(course) {
|
|
|
54402
56358
|
});
|
|
54403
56359
|
}
|
|
54404
56360
|
function eventOccurrence(event) {
|
|
56361
|
+
const scheduleClassification = classifySdkEventSchedule(event.schedule ?? {});
|
|
56362
|
+
if (!scheduleClassification.ok) {
|
|
56363
|
+
return unsupported(
|
|
56364
|
+
event.identifier,
|
|
56365
|
+
`Event ${event.identifier} has an invalid schedule: ${scheduleClassification.issues.map((validationIssue) => validationIssue.message).join("; ")}`
|
|
56366
|
+
);
|
|
56367
|
+
}
|
|
56368
|
+
if (scheduleClassification.kind === "start-end" || scheduleClassification.kind === "start-duration") {
|
|
56369
|
+
return ok({
|
|
56370
|
+
startAt: scheduleClassification.startsAtIso,
|
|
56371
|
+
endAt: scheduleClassification.endsAtIso
|
|
56372
|
+
});
|
|
56373
|
+
}
|
|
54405
56374
|
const startDate = event.schedule?.startDate;
|
|
54406
56375
|
if (!startDate) {
|
|
54407
|
-
return unsupported(
|
|
56376
|
+
return unsupported(
|
|
56377
|
+
event.identifier,
|
|
56378
|
+
`Event ${event.identifier} is missing schedule.startDate; command-backed event pushes require a concrete occurrence.`
|
|
56379
|
+
);
|
|
54408
56380
|
}
|
|
54409
56381
|
const startTime = event.schedule?.defaultStartTime ?? "09:00:00";
|
|
54410
56382
|
const durationMinutes = event.schedule?.durationMinutes ?? 60;
|
|
54411
56383
|
const startAt = toUtcIso(startDate, startTime);
|
|
54412
|
-
const endAt = new Date(
|
|
56384
|
+
const endAt = new Date(
|
|
56385
|
+
Date.parse(startAt) + durationMinutes * 6e4
|
|
56386
|
+
).toISOString();
|
|
54413
56387
|
return ok({
|
|
54414
56388
|
startAt,
|
|
54415
56389
|
endAt
|
|
54416
56390
|
});
|
|
54417
56391
|
}
|
|
54418
56392
|
function eventPricing(event) {
|
|
54419
|
-
const pricing = event.pricing;
|
|
54420
|
-
if (!pricing
|
|
54421
|
-
|
|
54422
|
-
|
|
54423
|
-
|
|
56393
|
+
const pricing = classifySdkEventPricing(event.pricing);
|
|
56394
|
+
if (!pricing.ok) {
|
|
56395
|
+
return unsupported(
|
|
56396
|
+
event.identifier,
|
|
56397
|
+
`Event ${event.identifier} has invalid pricing: ${pricing.issues[0]?.message ?? "invalid pricing"}.`
|
|
56398
|
+
);
|
|
56399
|
+
}
|
|
56400
|
+
switch (pricing.pricing.kind) {
|
|
56401
|
+
case "free":
|
|
56402
|
+
return ok({ kind: "free" });
|
|
56403
|
+
case "fixed_price":
|
|
56404
|
+
return ok({
|
|
56405
|
+
kind: "fixed_price",
|
|
56406
|
+
price: {
|
|
56407
|
+
amountCents: pricing.pricing.priceAmount,
|
|
56408
|
+
currency: pricing.pricing.priceCurrency
|
|
56409
|
+
}
|
|
56410
|
+
});
|
|
56411
|
+
case "ticket_types":
|
|
56412
|
+
return unsupported(
|
|
56413
|
+
event.identifier,
|
|
56414
|
+
`Event ${event.identifier} uses ticket-type pricing; command-backed event pushes do not support ticket types yet.`
|
|
56415
|
+
);
|
|
56416
|
+
default:
|
|
56417
|
+
return assertNever(pricing.pricing);
|
|
54424
56418
|
}
|
|
54425
|
-
return ok({
|
|
54426
|
-
kind: "fixed_price",
|
|
54427
|
-
price: {
|
|
54428
|
-
amountCents: amount,
|
|
54429
|
-
currency: pricing.priceCurrency
|
|
54430
|
-
}
|
|
54431
|
-
});
|
|
54432
56419
|
}
|
|
54433
56420
|
function coursePricing(course) {
|
|
54434
56421
|
const amount = course.priceCents;
|
|
54435
|
-
if (amount === void 0 || amount === null || amount === 0)
|
|
56422
|
+
if (amount === void 0 || amount === null || amount === 0)
|
|
56423
|
+
return ok({ kind: "free" });
|
|
54436
56424
|
if (amount < 0) {
|
|
54437
|
-
return unsupported(
|
|
56425
|
+
return unsupported(
|
|
56426
|
+
course.identifier,
|
|
56427
|
+
`Course ${course.identifier} has invalid priceCents.`
|
|
56428
|
+
);
|
|
54438
56429
|
}
|
|
54439
56430
|
return ok({
|
|
54440
56431
|
kind: "fixed_price",
|
|
@@ -54468,7 +56459,8 @@ function venueUpsertInput(command) {
|
|
|
54468
56459
|
}
|
|
54469
56460
|
function eventSeriesUpsertInput(command) {
|
|
54470
56461
|
const occurrence = command.input.occurrences[0];
|
|
54471
|
-
if (!occurrence)
|
|
56462
|
+
if (!occurrence)
|
|
56463
|
+
throw new Error(`Event command ${command.ref} has no occurrence.`);
|
|
54472
56464
|
return {
|
|
54473
56465
|
identifier: command.input.slug,
|
|
54474
56466
|
title: command.input.title,
|
|
@@ -54491,8 +56483,8 @@ function eventContentInput(content) {
|
|
|
54491
56483
|
if (!content) return void 0;
|
|
54492
56484
|
return {
|
|
54493
56485
|
...content.summary ? { summary: content.summary } : {},
|
|
54494
|
-
...typeof content.body === "string" ||
|
|
54495
|
-
...typeof content.image === "string" ||
|
|
56486
|
+
...typeof content.body === "string" || isRecord18(content.body) ? { body: content.body } : {},
|
|
56487
|
+
...typeof content.image === "string" || isRecord18(content.image) ? { image: content.image } : {}
|
|
54496
56488
|
};
|
|
54497
56489
|
}
|
|
54498
56490
|
function courseUpsertInput(command) {
|
|
@@ -54524,34 +56516,29 @@ function eventPricingInput(input) {
|
|
|
54524
56516
|
switch (input.pricing.kind) {
|
|
54525
56517
|
case "free":
|
|
54526
56518
|
return {
|
|
54527
|
-
|
|
54528
|
-
priceAmount: null,
|
|
54529
|
-
priceCurrency: null,
|
|
56519
|
+
kind: "free",
|
|
54530
56520
|
priceDisplay: input.priceDisplay ?? null,
|
|
54531
56521
|
acceptsPasses: input.acceptsPasses ?? false,
|
|
54532
56522
|
acceptsMemberships: input.acceptsMemberships ?? false
|
|
54533
56523
|
};
|
|
54534
56524
|
case "fixed_price":
|
|
54535
56525
|
return {
|
|
54536
|
-
|
|
56526
|
+
kind: "fixed_price",
|
|
54537
56527
|
priceAmount: input.pricing.price.amountCents,
|
|
54538
|
-
priceCurrency: input.pricing.price.currency ??
|
|
56528
|
+
priceCurrency: input.pricing.price.currency ?? "USD",
|
|
54539
56529
|
priceDisplay: input.priceDisplay ?? null,
|
|
54540
56530
|
acceptsPasses: input.acceptsPasses ?? false,
|
|
54541
56531
|
acceptsMemberships: input.acceptsMemberships ?? false
|
|
54542
56532
|
};
|
|
54543
56533
|
case "ticket_types":
|
|
54544
|
-
|
|
54545
|
-
|
|
54546
|
-
|
|
54547
|
-
priceCurrency: input.pricing.currency ?? null,
|
|
54548
|
-
priceDisplay: input.priceDisplay ?? null,
|
|
54549
|
-
acceptsPasses: input.acceptsPasses ?? false,
|
|
54550
|
-
acceptsMemberships: input.acceptsMemberships ?? false
|
|
54551
|
-
};
|
|
56534
|
+
throw new Error(
|
|
56535
|
+
"Unsupported ticket-type event command reached SDK mapper."
|
|
56536
|
+
);
|
|
54552
56537
|
case "manual_payment":
|
|
54553
56538
|
case "external":
|
|
54554
|
-
throw new Error(
|
|
56539
|
+
throw new Error(
|
|
56540
|
+
`Unsupported event pricing mode reached SDK mapper: ${input.pricing.kind}`
|
|
56541
|
+
);
|
|
54555
56542
|
default:
|
|
54556
56543
|
return assertNever(input.pricing);
|
|
54557
56544
|
}
|
|
@@ -54567,7 +56554,9 @@ function coursePricingInput(pricing) {
|
|
|
54567
56554
|
};
|
|
54568
56555
|
case "manual_payment":
|
|
54569
56556
|
case "external":
|
|
54570
|
-
throw new Error(
|
|
56557
|
+
throw new Error(
|
|
56558
|
+
`Unsupported course pricing mode reached SDK mapper: ${pricing.kind}`
|
|
56559
|
+
);
|
|
54571
56560
|
default:
|
|
54572
56561
|
return assertNever(pricing);
|
|
54573
56562
|
}
|
|
@@ -54657,14 +56646,16 @@ function scheduleFromOccurrence(occurrence) {
|
|
|
54657
56646
|
recurrenceRule: null,
|
|
54658
56647
|
startDate: occurrence.startAt.slice(0, 10),
|
|
54659
56648
|
defaultStartTime: occurrence.startAt.slice(11, 19),
|
|
54660
|
-
durationMinutes: Math.round(
|
|
56649
|
+
durationMinutes: Math.round(
|
|
56650
|
+
(Date.parse(occurrence.endAt) - Date.parse(occurrence.startAt)) / 6e4
|
|
56651
|
+
)
|
|
54661
56652
|
};
|
|
54662
56653
|
}
|
|
54663
56654
|
function toUtcIso(date, time) {
|
|
54664
56655
|
const normalizedTime = time.length === 5 ? `${time}:00` : time;
|
|
54665
56656
|
return (/* @__PURE__ */ new Date(`${date}T${normalizedTime}Z`)).toISOString();
|
|
54666
56657
|
}
|
|
54667
|
-
function
|
|
56658
|
+
function isRecord18(value) {
|
|
54668
56659
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
54669
56660
|
}
|
|
54670
56661
|
function unsupported(identifier, message) {
|
|
@@ -54777,7 +56768,8 @@ async function executeEntryCommandPlan(input) {
|
|
|
54777
56768
|
contentType: command.input.contentTypeKey,
|
|
54778
56769
|
data: command.input.data ?? {},
|
|
54779
56770
|
slug: command.input.slug,
|
|
54780
|
-
manualOrder: command.input.manualOrder
|
|
56771
|
+
manualOrder: command.input.manualOrder,
|
|
56772
|
+
blocks: command.input.blocks
|
|
54781
56773
|
});
|
|
54782
56774
|
return;
|
|
54783
56775
|
}
|
|
@@ -54902,7 +56894,8 @@ function entryCommandsForDiff(input) {
|
|
|
54902
56894
|
...localEntry.slug ? { slug: localEntry.slug } : {},
|
|
54903
56895
|
...typeof localEntry.manualOrder === "number" ? { manualOrder: localEntry.manualOrder } : {},
|
|
54904
56896
|
...optionalTitle(localEntry.data),
|
|
54905
|
-
data: localEntry.data
|
|
56897
|
+
data: localEntry.data,
|
|
56898
|
+
...localEntry.blocks ? { blocks: localEntry.blocks } : {}
|
|
54906
56899
|
}
|
|
54907
56900
|
};
|
|
54908
56901
|
commandBindings.push({
|
|
@@ -55504,15 +57497,15 @@ function validateBlockContent(data, manifest, customFields) {
|
|
|
55504
57497
|
validator.parse(data);
|
|
55505
57498
|
} catch (error) {
|
|
55506
57499
|
if (error instanceof ZodError) {
|
|
55507
|
-
for (const
|
|
55508
|
-
const fieldPath =
|
|
55509
|
-
if (
|
|
57500
|
+
for (const issue4 of error.issues) {
|
|
57501
|
+
const fieldPath = issue4.path.join(".");
|
|
57502
|
+
if (issue4.code === "invalid_type" && issue4.received === "undefined") {
|
|
55510
57503
|
continue;
|
|
55511
57504
|
}
|
|
55512
57505
|
warnings.push({
|
|
55513
57506
|
type: "invalid_content",
|
|
55514
57507
|
field: fieldPath || "(root)",
|
|
55515
|
-
message: `Invalid content${fieldPath ? ` in "${fieldPath}"` : ""}: ${
|
|
57508
|
+
message: `Invalid content${fieldPath ? ` in "${fieldPath}"` : ""}: ${issue4.message}`
|
|
55516
57509
|
});
|
|
55517
57510
|
}
|
|
55518
57511
|
}
|
|
@@ -56948,7 +58941,7 @@ async function handleThemePushForAllScope(params) {
|
|
|
56948
58941
|
}
|
|
56949
58942
|
const validation = themeSchema2.safeParse(localTheme.theme);
|
|
56950
58943
|
if (!validation.success) {
|
|
56951
|
-
const errors = validation.error.issues.map((
|
|
58944
|
+
const errors = validation.error.issues.map((issue4) => ` - ${issue4.path.join(".")}: ${issue4.message}`).join("\n");
|
|
56952
58945
|
output.warn(
|
|
56953
58946
|
`Skipping theme push - invalid theme at content/themes/${themeName}.json:
|
|
56954
58947
|
${errors}`
|
|
@@ -57557,9 +59550,14 @@ function entriesEqual(left, right) {
|
|
|
57557
59550
|
function contentFields(entry) {
|
|
57558
59551
|
const data = structuredClone(entry.data);
|
|
57559
59552
|
stripEnvSpecificMediaFieldsInPlace(data);
|
|
59553
|
+
const blocks = entry.blocks ? structuredClone(entry.blocks) : void 0;
|
|
59554
|
+
if (blocks) {
|
|
59555
|
+
stripEnvSpecificMediaFieldsInPlace(blocks);
|
|
59556
|
+
}
|
|
57560
59557
|
return {
|
|
57561
59558
|
identifier: entry.identifier,
|
|
57562
59559
|
data: sortRecord(data),
|
|
59560
|
+
...blocks ? { blocks: sortRecord(blocks) } : {},
|
|
57563
59561
|
...entry.slug !== void 0 ? { slug: entry.slug } : {}
|
|
57564
59562
|
};
|
|
57565
59563
|
}
|
|
@@ -58429,7 +60427,7 @@ ${available.map((t) => ` - ${t.name} (content/themes/${t.name}.json)`).join("\n
|
|
|
58429
60427
|
}
|
|
58430
60428
|
const validation = themeSchema.safeParse(localTheme.theme);
|
|
58431
60429
|
if (!validation.success) {
|
|
58432
|
-
const errors = validation.error.issues.map((
|
|
60430
|
+
const errors = validation.error.issues.map((issue4) => ` - ${issue4.path.join(".")}: ${issue4.message}`).join("\n");
|
|
58433
60431
|
output.error(
|
|
58434
60432
|
`Invalid theme file at content/themes/${themeName}.json:
|
|
58435
60433
|
${errors}`
|
|
@@ -59588,7 +61586,8 @@ async function applyOneOffEntryCommand(command, client) {
|
|
|
59588
61586
|
identifier: entryIdentifierForCommand(command),
|
|
59589
61587
|
contentType: command.input.contentTypeKey,
|
|
59590
61588
|
data: command.input.data ?? {},
|
|
59591
|
-
slug: command.input.slug
|
|
61589
|
+
slug: command.input.slug,
|
|
61590
|
+
blocks: command.input.blocks
|
|
59592
61591
|
});
|
|
59593
61592
|
case "publishContentEntry":
|
|
59594
61593
|
await client.entries.publish(
|
|
@@ -60721,7 +62720,7 @@ var THEME_FIELD_CATEGORY_MAP = {
|
|
|
60721
62720
|
};
|
|
60722
62721
|
|
|
60723
62722
|
// src/cli/init-docs/zod-to-markdown.ts
|
|
60724
|
-
function
|
|
62723
|
+
function isRecord19(value) {
|
|
60725
62724
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
60726
62725
|
}
|
|
60727
62726
|
function isZodTypeAny(value) {
|
|
@@ -60849,7 +62848,7 @@ function extractLiteralValue(schema) {
|
|
|
60849
62848
|
const typeName = getTypeName(schema);
|
|
60850
62849
|
if (typeName !== ZodTypeName.ZodLiteral) return void 0;
|
|
60851
62850
|
const def = schema._def;
|
|
60852
|
-
if (!
|
|
62851
|
+
if (!isRecord19(def)) return void 0;
|
|
60853
62852
|
return String(def.value);
|
|
60854
62853
|
}
|
|
60855
62854
|
function extractSchemaInfo(schema, skipFields = []) {
|
|
@@ -60919,7 +62918,7 @@ function extractFieldInfo(name, schema) {
|
|
|
60919
62918
|
}
|
|
60920
62919
|
if (typeName === ZodTypeName.ZodRecord) {
|
|
60921
62920
|
const def = inner._def;
|
|
60922
|
-
const valueSchema =
|
|
62921
|
+
const valueSchema = isRecord19(def) ? def.valueType : void 0;
|
|
60923
62922
|
if (!isZodTypeAny(valueSchema)) {
|
|
60924
62923
|
info.recordValueType = "unknown";
|
|
60925
62924
|
return info;
|
|
@@ -60934,7 +62933,7 @@ function extractFieldInfo(name, schema) {
|
|
|
60934
62933
|
}
|
|
60935
62934
|
} else if (getTypeName(valueInner) === ZodTypeName.ZodRecord) {
|
|
60936
62935
|
const nestedDef = valueInner._def;
|
|
60937
|
-
const nestedValueSchema =
|
|
62936
|
+
const nestedValueSchema = isRecord19(nestedDef) ? nestedDef.valueType : void 0;
|
|
60938
62937
|
if (!isZodTypeAny(nestedValueSchema)) {
|
|
60939
62938
|
info.recordValueType = "record<string, unknown>";
|
|
60940
62939
|
return info;
|
|
@@ -60945,7 +62944,7 @@ function extractFieldInfo(name, schema) {
|
|
|
60945
62944
|
}
|
|
60946
62945
|
if (typeName === ZodTypeName.ZodUnion || typeName === ZodTypeName.ZodDiscriminatedUnion) {
|
|
60947
62946
|
const def = inner._def;
|
|
60948
|
-
const optionsValue =
|
|
62947
|
+
const optionsValue = isRecord19(def) ? def.options : void 0;
|
|
60949
62948
|
const options = Array.isArray(optionsValue) ? optionsValue.filter(isZodTypeAny) : [];
|
|
60950
62949
|
const optionTypes = options.map((opt) => {
|
|
60951
62950
|
const { inner: optInner } = unwrapSchema(opt);
|
|
@@ -62109,7 +64108,7 @@ var SimpleCache = class {
|
|
|
62109
64108
|
};
|
|
62110
64109
|
|
|
62111
64110
|
// src/version.ts
|
|
62112
|
-
var SDK_VERSION = "0.
|
|
64111
|
+
var SDK_VERSION = "0.84.0";
|
|
62113
64112
|
|
|
62114
64113
|
// src/client/error.ts
|
|
62115
64114
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -64201,9 +66200,9 @@ Examples:
|
|
|
64201
66200
|
const parseResult = verifyConfigSchema.safeParse(rawConfig);
|
|
64202
66201
|
if (!parseResult.success) {
|
|
64203
66202
|
return output.error("Invalid config format", {
|
|
64204
|
-
issues: parseResult.error.issues.map((
|
|
64205
|
-
path:
|
|
64206
|
-
message:
|
|
66203
|
+
issues: parseResult.error.issues.map((issue4) => ({
|
|
66204
|
+
path: issue4.path.join("."),
|
|
66205
|
+
message: issue4.message
|
|
64207
66206
|
})),
|
|
64208
66207
|
suggestion: "Ensure your config exports a valid riverbank config object"
|
|
64209
66208
|
});
|
|
@@ -64731,8 +66730,8 @@ async function executeAuditForEnv(output, target, options, isJsonOutput) {
|
|
|
64731
66730
|
client
|
|
64732
66731
|
});
|
|
64733
66732
|
const mediaIssues = mapMediaGuardDiagnosticsToAuditIssues(mediaGuardResult.diagnostics);
|
|
64734
|
-
errors.push(...mediaIssues.filter((
|
|
64735
|
-
warnings.push(...mediaIssues.filter((
|
|
66733
|
+
errors.push(...mediaIssues.filter((issue4) => issue4.severity === "error"));
|
|
66734
|
+
warnings.push(...mediaIssues.filter((issue4) => issue4.severity === "warning"));
|
|
64736
66735
|
}
|
|
64737
66736
|
if (!isJsonOutput) {
|
|
64738
66737
|
output.info("Checking for duplicate page paths...");
|
|
@@ -64756,8 +66755,8 @@ async function executeAuditForEnv(output, target, options, isJsonOutput) {
|
|
|
64756
66755
|
}
|
|
64757
66756
|
errors.push(...auditEventReferences(localContent.events, auditCtx));
|
|
64758
66757
|
const courseRefIssues = auditCourseReferences(localContent.courses, auditCtx);
|
|
64759
|
-
errors.push(...courseRefIssues.filter((
|
|
64760
|
-
warnings.push(...courseRefIssues.filter((
|
|
66758
|
+
errors.push(...courseRefIssues.filter((issue4) => issue4.severity === "error"));
|
|
66759
|
+
warnings.push(...courseRefIssues.filter((issue4) => issue4.severity === "warning"));
|
|
64761
66760
|
const success = errors.length === 0;
|
|
64762
66761
|
const result = { success, errors, warnings };
|
|
64763
66762
|
if (isJsonOutput) {
|
|
@@ -64772,14 +66771,14 @@ async function executeAuditForEnv(output, target, options, isJsonOutput) {
|
|
|
64772
66771
|
output.info("");
|
|
64773
66772
|
if (errors.length > 0) {
|
|
64774
66773
|
output.warn(`Found ${errors.length} error(s):`);
|
|
64775
|
-
for (const
|
|
64776
|
-
output.info(` [ERROR] ${
|
|
66774
|
+
for (const issue4 of errors) {
|
|
66775
|
+
output.info(` [ERROR] ${issue4.message}`);
|
|
64777
66776
|
}
|
|
64778
66777
|
}
|
|
64779
66778
|
if (warnings.length > 0) {
|
|
64780
66779
|
output.warn(`Found ${warnings.length} warning(s):`);
|
|
64781
|
-
for (const
|
|
64782
|
-
output.info(` [WARN] ${
|
|
66780
|
+
for (const issue4 of warnings) {
|
|
66781
|
+
output.info(` [WARN] ${issue4.message}`);
|
|
64783
66782
|
}
|
|
64784
66783
|
}
|
|
64785
66784
|
if (success && warnings.length === 0) {
|
|
@@ -68629,27 +70628,76 @@ var envStatusCommand = new Command("status").description("Show which environment
|
|
|
68629
70628
|
})
|
|
68630
70629
|
);
|
|
68631
70630
|
var envCommand = new Command("env").description("Environment configuration and status").addCommand(envStatusCommand);
|
|
70631
|
+
var eventScheduleInputSchema = z.object({
|
|
70632
|
+
recurrenceRule: z.string().nullable().optional(),
|
|
70633
|
+
startDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
|
|
70634
|
+
defaultStartTime: z.string().min(1).optional(),
|
|
70635
|
+
durationMinutes: z.number().int().positive().optional(),
|
|
70636
|
+
startsAt: z.string().min(1).optional(),
|
|
70637
|
+
endsAt: z.string().min(1).optional()
|
|
70638
|
+
}).superRefine((schedule, ctx) => {
|
|
70639
|
+
const result = classifySdkEventSchedule(schedule, {
|
|
70640
|
+
requireCanonicalFields: true
|
|
70641
|
+
});
|
|
70642
|
+
if (!result.ok) {
|
|
70643
|
+
result.issues.forEach((validationIssue) => {
|
|
70644
|
+
ctx.addIssue({
|
|
70645
|
+
code: "custom",
|
|
70646
|
+
path: [...validationIssue.path],
|
|
70647
|
+
message: validationIssue.message
|
|
70648
|
+
});
|
|
70649
|
+
});
|
|
70650
|
+
}
|
|
70651
|
+
}).transform((schedule) => {
|
|
70652
|
+
const result = classifySdkEventSchedule(schedule, {
|
|
70653
|
+
requireCanonicalFields: true
|
|
70654
|
+
});
|
|
70655
|
+
if (!result.ok) {
|
|
70656
|
+
throw new Error("Unreachable invalid event schedule after Zod validation");
|
|
70657
|
+
}
|
|
70658
|
+
if (result.kind === "start-end") {
|
|
70659
|
+
const { startsAt, endsAt } = schedule;
|
|
70660
|
+
if (typeof startsAt !== "string" || typeof endsAt !== "string") {
|
|
70661
|
+
throw new Error("Unreachable invalid start/end event schedule after Zod validation");
|
|
70662
|
+
}
|
|
70663
|
+
return { startsAt, endsAt };
|
|
70664
|
+
}
|
|
70665
|
+
if (result.kind === "start-duration") {
|
|
70666
|
+
const { startsAt, durationMinutes } = schedule;
|
|
70667
|
+
if (typeof startsAt !== "string" || typeof durationMinutes !== "number") {
|
|
70668
|
+
throw new Error("Unreachable invalid start/duration event schedule after Zod validation");
|
|
70669
|
+
}
|
|
70670
|
+
return { startsAt, durationMinutes };
|
|
70671
|
+
}
|
|
70672
|
+
return result.canonical;
|
|
70673
|
+
});
|
|
70674
|
+
var eventPricingInputSchema = z.unknown().superRefine((pricing, ctx) => {
|
|
70675
|
+
const result = classifySdkEventPricing(pricing);
|
|
70676
|
+
if (!result.ok) {
|
|
70677
|
+
result.issues.forEach((validationIssue) => {
|
|
70678
|
+
ctx.addIssue({
|
|
70679
|
+
code: "custom",
|
|
70680
|
+
path: [...validationIssue.path],
|
|
70681
|
+
message: validationIssue.message
|
|
70682
|
+
});
|
|
70683
|
+
});
|
|
70684
|
+
}
|
|
70685
|
+
}).transform((pricing) => {
|
|
70686
|
+
const result = classifySdkEventPricing(pricing);
|
|
70687
|
+
if (!result.ok) {
|
|
70688
|
+
throw new Error("Unreachable invalid event pricing after Zod validation");
|
|
70689
|
+
}
|
|
70690
|
+
return result.pricing;
|
|
70691
|
+
});
|
|
68632
70692
|
var eventUpsertInputSchema = z.object({
|
|
68633
70693
|
identifier: z.string().min(1).optional(),
|
|
68634
70694
|
title: z.string().min(1, "title is required"),
|
|
68635
70695
|
slug: z.string().min(1).optional(),
|
|
68636
70696
|
status: z.enum(["draft", "active", "archived", "cancelled", "completed"]).optional(),
|
|
68637
70697
|
visibility: z.enum(["private", "public", "unlisted"]).optional(),
|
|
68638
|
-
schedule:
|
|
68639
|
-
recurrenceRule: z.string().nullable(),
|
|
68640
|
-
startDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
|
|
68641
|
-
defaultStartTime: z.string().min(1),
|
|
68642
|
-
durationMinutes: z.number().int().positive()
|
|
68643
|
-
}),
|
|
70698
|
+
schedule: eventScheduleInputSchema,
|
|
68644
70699
|
capacity: z.number().int().positive().nullable().optional(),
|
|
68645
|
-
pricing:
|
|
68646
|
-
requiresPayment: z.boolean().optional(),
|
|
68647
|
-
priceAmount: z.number().nullable().optional(),
|
|
68648
|
-
priceCurrency: z.string().nullable().optional(),
|
|
68649
|
-
priceDisplay: z.string().nullable().optional(),
|
|
68650
|
-
acceptsPasses: z.boolean().optional(),
|
|
68651
|
-
acceptsMemberships: z.boolean().optional()
|
|
68652
|
-
}).optional(),
|
|
70700
|
+
pricing: eventPricingInputSchema.optional(),
|
|
68653
70701
|
venueRef: z.string().nullable().optional(),
|
|
68654
70702
|
categoryRef: z.string().nullable().optional(),
|
|
68655
70703
|
content: z.record(z.string(), z.unknown()).optional(),
|
|
@@ -68683,7 +70731,13 @@ function toEventUpsertInput(identifier, raw) {
|
|
|
68683
70731
|
return payload;
|
|
68684
70732
|
}
|
|
68685
70733
|
function buildCancelledEventUpsertInput(current) {
|
|
68686
|
-
const {
|
|
70734
|
+
const {
|
|
70735
|
+
id: _id,
|
|
70736
|
+
createdAt: _createdAt,
|
|
70737
|
+
updatedAt: _updatedAt,
|
|
70738
|
+
contentUpdatedAt: _contentUpdatedAt,
|
|
70739
|
+
...rest
|
|
70740
|
+
} = current;
|
|
68687
70741
|
return {
|
|
68688
70742
|
...rest,
|
|
68689
70743
|
status: "cancelled"
|
|
@@ -68693,23 +70747,25 @@ function canCancelEventStatus(status) {
|
|
|
68693
70747
|
return status === "draft" || status === "active";
|
|
68694
70748
|
}
|
|
68695
70749
|
var upsertCommand5 = new Command("upsert").description("Create or update an event series").argument("<identifier>", "Event identifier").option("--data <json>", "Event payload as JSON string").option("--file <path>", "Path to JSON file with event payload").action(
|
|
68696
|
-
withErrorHandling(
|
|
68697
|
-
|
|
68698
|
-
|
|
68699
|
-
|
|
68700
|
-
|
|
68701
|
-
|
|
68702
|
-
|
|
70750
|
+
withErrorHandling(
|
|
70751
|
+
async (identifier, options, command) => {
|
|
70752
|
+
const { output, client } = createCommandContext(command);
|
|
70753
|
+
const raw = await parseJsonData(options);
|
|
70754
|
+
if (raw.status === "completed") {
|
|
70755
|
+
output.warn(
|
|
70756
|
+
`Event ${identifier}: status "completed" is read-only; omitting status on upsert.`
|
|
70757
|
+
);
|
|
70758
|
+
}
|
|
70759
|
+
const input = toEventUpsertInput(identifier, raw);
|
|
70760
|
+
output.info(`Upserting event: ${identifier}`);
|
|
70761
|
+
const event = await client.events.upsert(input);
|
|
70762
|
+
output.success(`Event upserted: ${event.identifier}`, {
|
|
70763
|
+
id: event.id,
|
|
70764
|
+
status: event.status,
|
|
70765
|
+
visibility: event.visibility
|
|
70766
|
+
});
|
|
68703
70767
|
}
|
|
68704
|
-
|
|
68705
|
-
output.info(`Upserting event: ${identifier}`);
|
|
68706
|
-
const event = await client.events.upsert(input);
|
|
68707
|
-
output.success(`Event upserted: ${event.identifier}`, {
|
|
68708
|
-
id: event.id,
|
|
68709
|
-
status: event.status,
|
|
68710
|
-
visibility: event.visibility
|
|
68711
|
-
});
|
|
68712
|
-
})
|
|
70768
|
+
)
|
|
68713
70769
|
);
|
|
68714
70770
|
var getCommand5 = createGetCommand({
|
|
68715
70771
|
resourceName: "event",
|
|
@@ -68753,31 +70809,35 @@ var deleteCommand3 = new Command("delete").description("Delete an event series")
|
|
|
68753
70809
|
)
|
|
68754
70810
|
);
|
|
68755
70811
|
var cancelCommand = new Command("cancel").description("Cancel an event series").argument("<identifier>", "Event identifier").action(
|
|
68756
|
-
withErrorHandling(
|
|
68757
|
-
|
|
68758
|
-
|
|
68759
|
-
|
|
68760
|
-
|
|
68761
|
-
|
|
68762
|
-
|
|
68763
|
-
|
|
68764
|
-
|
|
68765
|
-
|
|
68766
|
-
|
|
68767
|
-
|
|
68768
|
-
|
|
68769
|
-
|
|
68770
|
-
|
|
68771
|
-
|
|
68772
|
-
|
|
68773
|
-
|
|
68774
|
-
|
|
68775
|
-
|
|
68776
|
-
|
|
70812
|
+
withErrorHandling(
|
|
70813
|
+
async (identifier, _options, command) => {
|
|
70814
|
+
const { output, client } = createCommandContext(command);
|
|
70815
|
+
const current = await client.events.get(identifier);
|
|
70816
|
+
if (!current) {
|
|
70817
|
+
return output.error(`Event not found: ${identifier}`);
|
|
70818
|
+
}
|
|
70819
|
+
if (current.status === "cancelled") {
|
|
70820
|
+
output.success(`Event already cancelled: ${identifier}`);
|
|
70821
|
+
return;
|
|
70822
|
+
}
|
|
70823
|
+
if (!canCancelEventStatus(current.status)) {
|
|
70824
|
+
return output.error(
|
|
70825
|
+
`Event ${identifier} cannot be cancelled from status "${current.status}".`
|
|
70826
|
+
);
|
|
70827
|
+
}
|
|
70828
|
+
try {
|
|
70829
|
+
await client.events.upsert(buildCancelledEventUpsertInput(current));
|
|
70830
|
+
output.success(`Event cancelled: ${identifier}`);
|
|
70831
|
+
} catch (error) {
|
|
70832
|
+
if (error instanceof ManagementApiError && error.statusCode === 404) {
|
|
70833
|
+
return output.error(
|
|
70834
|
+
`Event ${identifier} was removed before cancellation. Pull and retry.`
|
|
70835
|
+
);
|
|
70836
|
+
}
|
|
70837
|
+
throw error;
|
|
68777
70838
|
}
|
|
68778
|
-
throw error;
|
|
68779
70839
|
}
|
|
68780
|
-
|
|
70840
|
+
)
|
|
68781
70841
|
);
|
|
68782
70842
|
var eventCommand = new Command("event").description("Manage events").addHelpText(
|
|
68783
70843
|
"after",
|