@riverbankcms/sdk 0.107.0 → 0.109.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 +21 -1
- package/dist/{PreviewEditorSidebar-DpAbAl08.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +48 -28
- package/dist/{PreviewEditorUI-O7cn6Xxv.mjs → PreviewEditorUI-B7OL4sfR.mjs} +10 -9
- package/dist/{PreviewQueryProvider-D0tnKl0t.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CVB7urtl.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +633 -220
- package/dist/{SiteChromeCustomizeContext-C_sizso-.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +5764 -1556
- package/dist/_dts/ai/src/contracts/proposals.d.ts +15383 -11388
- package/dist/_dts/api/src/blocks.d.ts +41 -7
- package/dist/_dts/api/src/bookingAdjustments.d.ts +5 -0
- package/dist/_dts/api/src/bookingOperations.d.ts +4 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +177 -127
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
- package/dist/_dts/api/src/cache-tags.d.ts +3 -0
- package/dist/_dts/api/src/common/envelope.d.ts +7 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +19 -1
- package/dist/_dts/api/src/courses.d.ts +1 -0
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +5 -5
- package/dist/_dts/api/src/endpoints.d.ts +134 -0
- package/dist/_dts/api/src/footer-settings.d.ts +1 -0
- package/dist/_dts/api/src/footerSettings.d.ts +8 -0
- package/dist/_dts/api/src/index.d.ts +7 -4
- package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
- package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
- package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +309 -1
- package/dist/_dts/api/src/siteBanner.d.ts +2 -2
- package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +144 -60
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +35 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +74 -28
- package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +9 -0
- package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +3 -4
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
- package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +1 -22
- package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -22
- package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/form.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +3 -0
- package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +16 -6
- package/dist/_dts/blocks/src/system/defineBlock.d.ts +9 -1
- package/dist/_dts/blocks/src/system/fields/ctas.d.ts +8 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
- package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
- package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +33 -2
- package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
- package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
- package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
- package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
- package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
- package/dist/_dts/content-editor/src/index.d.ts +2 -0
- package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
- package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
- package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +31 -0
- package/dist/_dts/content-model/src/content-types/scaffold.d.ts +58 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/sentinels.d.ts +36 -0
- package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
- package/dist/_dts/content-model/src/index.d.ts +3 -0
- package/dist/_dts/core/src/booking-date-time.d.ts +8 -0
- package/dist/_dts/core/src/branded.d.ts +3 -0
- package/dist/_dts/core/src/editor-state.d.ts +4 -0
- package/dist/_dts/core/src/footer-composition.d.ts +143 -0
- package/dist/_dts/core/src/index.d.ts +2 -0
- package/dist/_dts/core/src/public-profile.d.ts +73 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +221 -205
- package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
- package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
- package/dist/_dts/media-core/src/fileMimeDetection.d.ts +16 -0
- package/dist/_dts/media-core/src/fileStorage.d.ts +8 -0
- package/dist/_dts/media-core/src/storagePathDomain.d.ts +2 -0
- package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +3 -0
- package/dist/_dts/path-utils/src/index.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/audit.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/compare.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +18 -0
- package/dist/_dts/sdk/src/cli/commands/entry.d.ts +15 -0
- package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +3 -0
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +12 -1
- package/dist/_dts/sdk/src/cli/commands/setup.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/commands/verify.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/helpers.d.ts +22 -1
- package/dist/_dts/sdk/src/cli/index.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/output.d.ts +88 -0
- package/dist/_dts/sdk/src/cli/program.d.ts +29 -0
- package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
- package/dist/_dts/sdk/src/client/management/catalog.d.ts +10 -0
- package/dist/_dts/sdk/src/client/management/http.d.ts +7 -1
- package/dist/_dts/sdk/src/client/management/index.d.ts +2 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +58 -20
- package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
- package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
- package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
- package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +900 -827
- package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/core.d.ts +15 -46
- package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +147 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +2 -3
- package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
- package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +45 -33
- package/dist/_dts/theme-core/src/buttons/presets.d.ts +4 -25
- package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +100 -0
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +104 -86
- package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
- package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/gradients/presets.d.ts +200 -8
- package/dist/_dts/theme-core/src/gradients/utils.d.ts +6 -2
- package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +117 -150
- package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
- package/dist/_dts/theme-core/src/navigation/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -2
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +5 -8
- package/dist/_dts/theme-core/src/palette/index.d.ts +0 -1
- package/dist/_dts/theme-core/src/schema.d.ts +1264 -138
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +10 -10
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +13 -6
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +29 -8
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +2 -2
- package/dist/cli/index.mjs +68552 -66955
- package/dist/cli/init-docs/content/cli-reference.md +50 -7
- package/dist/cli/init-docs/content/content-management.md +7 -4
- package/dist/cli/init-docs/content/workflow-publish.md +5 -1
- package/dist/client/{DiscountCodeDisclosure-BwGkvmVH.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
- package/dist/client/{EventCombined.client-JnWE6Hzc.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
- package/dist/client/{EventListing.client-DQewc_kg.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DPAU3SFt.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
- package/dist/client/{MagicLinkForm-D4kpWCbW.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
- package/dist/client/{StepIndicator-CBlkb4rA.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
- package/dist/client/{accordion-DAIBVpTS.mjs → accordion-CeGreumd.mjs} +1 -1
- package/dist/client/{bookingForm-DZ-4l5_1.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
- package/dist/client/bookings.mjs +637 -328
- package/dist/client/{buttons-DJgynGHQ.mjs → buttons-DoFV7KDL.mjs} +618 -306
- package/dist/client/{carousel-D-SLfX8r.mjs → carousel-B2jDtogf.mjs} +1 -1
- package/dist/client/{cart-CEgbgJhX.mjs → cart-D-jZ-vaY.mjs} +3 -3
- package/dist/client/{checkout-CXWrCRAA.mjs → checkout-Dza-LA7N.mjs} +3 -3
- package/dist/client/client.mjs +2497 -1216
- package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
- package/dist/client/{courseRegistration-DVmLrRVz.mjs → courseRegistration-TYkNychb.mjs} +7 -7
- package/dist/client/{eventCalendar-DCuyPY_c.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
- package/dist/client/{eventCombined-kP2CA2D4.mjs → eventCombined-mNrpryE9.mjs} +2 -2
- package/dist/client/{eventDetails-DU0LeF5e.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
- package/dist/client/{eventListing-CcHF87BI.mjs → eventListing-YhKN018y.mjs} +2 -2
- package/dist/client/{eventRegistration-DJnR0yFH.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
- package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
- package/dist/client/{form-CH1lCusH.mjs → form-AcAL45rA.mjs} +2 -2
- package/dist/client/{headerSection-CBPFZoku.mjs → headerSection-uEC52ueD.mjs} +3 -3
- package/dist/client/hooks.mjs +1249 -841
- package/dist/client/{locationMap-Cx1hBg5n.mjs → locationMap-_wJDSUYe.mjs} +3 -3
- package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
- package/dist/client/{newsletterForm-1ZL_ti9u.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
- package/dist/client/{pricing-BIbzmV0G.mjs → pricing-BSYVghwo.mjs} +1 -1
- package/dist/client/{productDetail-BTh5gHBV.mjs → productDetail-Dyk90sMs.mjs} +3 -3
- package/dist/client/{productList-Cc7OMrqN.mjs → productList-BCKThwAI.mjs} +3 -3
- package/dist/client/{propsDecoder-oR-M-ISN.mjs → propsDecoder-CkXxkdSR.mjs} +96 -33
- package/dist/client/rendering/client.mjs +1278 -523
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2308 -1028
- package/dist/client/{shop-CQ_YbCnn.mjs → shop-DeltVH10.mjs} +6 -6
- package/dist/client/{shop-commerce-BM-AoD3M.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
- package/dist/client/{shop-commerce-store-DFMQhU5p.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
- package/dist/client/{shopShared-D0SKO2Cu.mjs → shopShared-B8v-lH_F.mjs} +2 -2
- package/dist/client/{useDiscountCodeUi-CrG4_ARt.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
- package/dist/client/{useEventFilters-CxK8Fekl.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
- package/dist/client/{usePolling-jcVryNgZ.mjs → usePolling-Cmh14fc7.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +213 -0
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +213 -0
- package/dist/{previewAuthStore-BPcJPzdz.mjs → previewAuthStore-CTO7CRPk.mjs} +213 -0
- package/dist/{sdk-runtime-C39Rsk-x.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
- package/dist/{separator-BoMSQnsP.mjs → separator-CI5wZNXT.mjs} +1 -1
- package/dist/server/components.mjs +2370 -1132
- package/dist/server/config-validation.mjs +1256 -842
- package/dist/server/config.mjs +1256 -843
- package/dist/server/data.mjs +1249 -841
- package/dist/server/date-time.mjs +386 -0
- package/dist/server/index.mjs +214 -1
- package/dist/server/navigation.mjs +9 -3
- package/dist/server/next.mjs +3421 -1949
- package/dist/server/page-converter.mjs +1236 -659
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2074 -1060
- package/dist/server/rendering.mjs +2370 -1132
- package/dist/server/routing.mjs +1543 -1062
- package/dist/server/server.mjs +1464 -843
- package/dist/server/theme-bridge.mjs +1581 -474
- package/dist/server/theme.mjs +614 -305
- package/dist/styles/index.css +12 -1
- package/package.json +7 -1
- package/dist/_dts/theme-core/src/buttons/presets/types.d.ts +0 -88
- package/dist/_dts/theme-core/src/buttons/utils/contrast.d.ts +0 -38
- package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +0 -57
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { $ as idleEditorTransactionQueueState, $a as eventButtonVariantSchema, $c as generateInteractiveChildInheritanceCSS, $d as ImageUp, $i as LABEL_FONT_SIZE_MAP, $l as Dialog, $n as eventListingBlockDefinition, $o as defineInteractiveIslandMetaKeys, $r as footerBottomTextFragment, $s as ChevronDownIcon, $t as getPageDesignEditorState, $u as formatBookingTime, Aa as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Ac as resolveMediaNodeResponsiveImage, Ad as Upload, Af as __commonJSMin, Ai as normalEditorCuratedPromotedFieldPaths, Al as Textarea, An as getBlockDefinition, Ao as buildGoogleMapsDirectionsUrl, Ar as buildShopInteractiveIslandProps, As as parseBlockIconValue, At as unsafeAsLinkedContentEntryId, Au as __spreadArray, Ba as isSemanticSpacing, Bc as resolveMediaTransformForAspect, Bd as Settings, Bi as pageDesignEditorBackgroundOverrideOwner, Bl as Popover, Bn as mediaTransforms, Bo as getCardOrientation, Br as deriveCommerceCheckoutState, Bs as inlineTextToPlainText, Bt as usePalette, Bu as cva, Ca as generateCssVars, Cc as MediaPlaceholder, Cd as unsafeAsPassId, Cf as ChevronLeft, Ci as readHeaderNavFontSizePreference, Cl as unmapValueFromSelect, Cn as isKeyboardEvent, Co as normalizeBoxStylesCardVariant, Cr as resolveEventRegistrationScopedEvents, Cs as resolveFeatureCardGeneratedIconSizePx, Ct as useOptionalEditorUiStoreInstance, Cu as DropdownMenuTrigger, Dc as renderAudio, Dd as ok$3, Df as ArrowUp, Di as compileEditorModelRuntime, Dl as TooltipContent, Dn as isSupportedLoaderEndpoint, Do as resolveTokenOrCssColorValue, Dr as buildCheckoutInteractiveIslandProps, Ds as buildGeneratedBlockIconRenderAssetLookupFromUnknown, Dt as pushHistoryEntry, Du as __generator, Ea as ctaButton, Ec as getCurrentResolveImageUrlContext, Ed as err$2, Ef as Box, Ei as applyCompiledRuntimeFieldsToContent, El as Tooltip, En as useUniqueId, Eo as resolveOnColorForThemeToken, Er as buildCartInteractiveIslandProps, Es as toFeatureCardIconSuggestionInputs, Et as createHistoryState, Eu as __extends, Fa as normalizeOfferingsPreviewItemLimit, Fc as attachRenderableMediaAssetFields, Fi as designRuntimeRulesForTheme, Fl as SelectTrigger, Fn as SITE_CHROME_VISIBLE_HEADER_SELECTOR, Fo as formatEventDateParts, Fr as formatCommercePrice, Fs as createRichTextDocFromMarkdown, Ft as createSnapshotFromPageRecord, Fu as useControllableState, Ga as getEventRuntimeFiltersKey, Gc as siblingPath$1, Gd as Pencil, Gi as NAV_LINK_BORDER_RADIUS_MAP, Gl as TabsContent, Gn as isInternalResolvedLinkValue, Go as getEventAvailability, Gr as augmentManifestWithStyleGroups, Gs as SEMANTIC_ICON_DEFINITIONS, Gt as createManifestFormAdapter, Gu as createEditorRemoveBlockCommand, Ha as buildEventRuntimeFilters, Hc as getDirectImageUrlForMediaAsset, Hd as RotateCcw, Hi as getComponentShadowVar, Hl as PopoverTrigger, Hn as uiTransforms, Ho as groupEventsByDate, Hr as productItemKey, Hs as parseInlineTextFromUnknown, Ht as unfinishedBlockCopy, Hu as cn$1, Ia as resolveOfferingsPreviewCoursePath, Ic as isRotationDimensionSwap, Id as Star, Ii as getCuratedSiteStyle, Il as SelectValue, In as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, Io as formatEventPrice, Ir as formatInterval, Is as unwrapRichTextRoot, Iu as createContextScope, Ja as normalizeCsvIds, Jc as AFFORDANCE_SUPPRESS_CLASS, Ji as NAV_LINK_PADDING_X_MAP, Jl as Content$1, Jn as shopBlockDefinition, Jo as getLocalMinuteOfDay, Jr as cardFragment, Js as ArrowDownIcon, Jt as evaluateVisibility, Ju as unsafeAsEditorBlockValues, Ka as resolveEventCalendarListPageSize, Ki as NAV_LINK_LETTER_SPACING_MAP, Kl as TabsList, Kn as ImageResolveContextProvider, Ko as getEventAvailabilityStatus, Kr as richTextFragment, Ks as getSemanticIconComponent, Ku as createEditorReorderBlocksCommand, La as resolveOfferingsPreviewGroupCta, Lc as normalizeRightAngle, Ld as Sparkles, Li as surfaceResolutionContextFromTheme, Ll as Label, Ln as planSiteOverlayHeaderClearance, Lo as formatEventPriceDisplay, Lr as EMPTY_COMMERCE_CART_STATE, Ls as isObjectRecord, Lu as composeEventHandlers, Ma as inferLegacyOfferingsPreviewGroupOrder, Mc as setContextResolveImageUrlContext, Mf as __toESM, Mi as resolveVisiblePromotedFieldPathsForEditorBlock, Ml as Select, Mn as projectRecurringSchedule, Mo as toLocationMapHydrationProps, Mr as buildCartDisplay, Ms as parseGeneratedIconAssetId, Mu as useId$1, Na as isOfferingsPreviewSourceKey, Nc as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, Nd as Trash2, Ni as componentRuntimeRulesForTheme, Nl as SelectContent, Nn as siteFooterManifest, No as formatDate$3, Nr as buildProductCardDisplay, Ns as parseGeneratedIconSetId, Nt as useDebouncedLatestSave, Nu as useDirection, Oc as renderVideo, Od as lucide_react_exports, Of as ArrowDown, Oi as retargetCompiledBoundaryRuntimeForContentAdjacency, Ol as TooltipProvider, On as gradientToCss, Oo as getTextColorForBackground, Or as buildProductDetailInteractiveIslandProps, Os as getBlockIconSemanticId, Ot as redoHistory, Ou as __read, Pa as normalizeOfferingsPreviewGroupOrder, Pc as resolveMediaSlotContract, Pd as Ticket, Pl as SelectItem, Pn as siteHeaderManifest, Po as formatEventCompactDateRail, Pr as buildProductDetailDisplay, Ps as parseSiteIconStyleGuideVersionId, Pt as createRoutingHelpers, Pu as createCollection, Q as enqueueTransaction, Qa as columnOptionSchema, Qc as generateBaseInteractiveCSS, Qd as Image, Qi as INPUT_SPACING_MAP, Ql as ScrollableDialogContent, Qn as buildNewsletterFormInteractiveIslandProps, Qo as createInteractiveIslandCodec, Qr as singleButtonFragment, Qs as CheckIcon$1, Qt as applyPageDesignEditorAction, Qu as formatBookingInstant, Ra as resolveOfferingsPreviewGroupOrderEntries, Rc as formatAspectRatioToken, Ri as isThemeV2NormalEditorRawStyleFieldName, Rl as Badge, Rn as visibleHeaderClearancePx, Ro as formatEventTeacherLine, Rr as buildPassCartItem, Rs as isRecord$21, Ru as Primitive, Sa as expandPalette, Sc as ImagePresets, Sd as unsafeAsMediaAssetId, Sf as ChevronRight, Si as mergeHeaderNavTypographyPreference, Sl as mapOptionValueForSelect, Sn as CSS, So as generateShadowValue, Sr as normalizeEventRegistrationPageSurfaceSubject, Ss as parseFeatureCardGeneratedIconSizePx, St as useEditorUiStoreInstance, Su as DropdownMenuSeparator, Ta as runTransforms, Tc as computeMediaTransformStyle, Td as unsafeAsPositiveSeconds, Tf as Check, Ti as PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, Tl as useField, Tn as useIsomorphicLayoutEffect, To as isCssColorLiteral, Tr as cartBlockDefinition, Ts as suggestSemanticIconForFeatureCard, Tt as canUndoHistory, Tu as __awaiter, Ua as eventListPaginationActionSchema, Uc as getImageUrl, Ui as parseBlockCustomCssRules, Ul as Input, Un as formattingTransforms, Uo as resolveEventCta, Ur as reduceCommerceCart, Us as isIconPickerPreset, Ut as validateBlockManifestIssues, Uu as clsx, Va as resolveSpacing, Vc as asRecord, Vd as Search, Vi as getComponentBorderWidthPx, Vl as PopoverContent, Vn as layoutTransforms, Vo as getContainerClass, Vr as parseStoredCommerceCartState, Vs as isInlineTextEmpty, Vt as recoveryConflictCopy, Vu as useComposedRefs, Wa as eventPageSizeSchema, Wc as getAtPath, Wd as Plus, Wi as parseCustomCssRules, Wl as Tabs, Wn as createManifestValidator, Wo as resolveEventLinkProps, Wr as augmentManifest, Ws as resolveIconPickerPreset, Wt as ManifestForm, Wu as createEditorInsertBlockCommand, X as confirmAutosaveBatch, Xa as normalizeOptionalId, Xc as generateEffectsCSS, Xi as FONT_WEIGHT_MAP, Xl as Root2$1, Xn as productDetailBlockDefinition, Xo as blockBookingPaymentTermsSchema, Xr as faqHeadingFragment, Xs as ArrowRightIcon, Xt as listContentTypes, Xu as formatBookingDate, Y as beginAutosaveBatch, Ya as normalizeCsvString, Yc as generateButtonCss, Yd as Minus, Yi as NAV_LINK_TEXT_SIZE_MAP, Yl as List, Yn as productListBlockDefinition, Yo as resolveRuntimeEventPricing, Yr as faqAccordionFragment, Ys as ArrowLeftIcon, Yt as createStoreBackend, Yu as addLocalScheduleDays, Z as deriveTransactionCapabilities, Za as calendarTabViewsSchema, Zc as generateShadowValue$1, Zd as LoaderCircle, Zi as INPUT_FONT_SIZE_MAP, Zl as Trigger$1, Zn as newsletterSignupBlockDefinition, Zo as buildInteractiveIslandProps, Zr as blogFeaturedPostFragment, Zs as CalendarIcon$1, Zt as toRoutableLinkPayload, Zu as formatBookingDateTime, _c as PlayIcon, _d as parseSiteId, _f as CircleMinus, _i as BACKGROUND_POSITION_PRESET_VALUES, _l as useBlockContext, _n as useDndContext, _o as normalizeEventSurfacePresetsCsv, _r as getWizardStepsForContext$1, _s as mediaSchema, _t as EntryControllerProvider, aa as boundaryRuntimeMetricsForTransition, ac as ClockIcon$1, ad as toScheduledBookingDateTime, af as FileSpreadsheet, ai as heroCtaRowFragment, al as cssVarValue, an as mutateBlockContent, ao as eventCalendarListLayoutCompatibleDisplayModeValues, ar as formBlockDefinition, as as markEditableSurfaceForwarding, at as PreviewTextEditor, au as DialogTitle, bc as UploadIcon, bd as unsafeAsCustomerPassId, bf as ChevronsUpDown, bi as resolveSurfaceForegroundStyles, bl as hasEmptyOption, bn as useSensor, bo as publicEventSchema, br as courseRegistrationBlockDefinition, bs as createFeatureCardIconKey, bu as DropdownMenuItem, ca as sectionTransitionFamilyForBoundaryOptionId, cc as FileArchiveIcon, cd as publicEventPricingCurrency, cf as FileArchive, ci as bodyCopyFragment, cl as textColorStyle, cn as decodePublicProductCategorySelectorQuery, co as when, cr as buildEventRegistrationInteractiveIslandProps, cs as asDesignBlockId, ct as RichTextEditorSurface, da as backgroundAppearanceColorTokenNames, dc as FileTextIcon, dd as publicEventScalarPrice, df as EllipsisVertical, di as siteOptionSources, dl as surfaceForegroundValue, dn as AMBIENT_BACKGROUND_ROLES$1, do as eventScheduleScopeValues, dr as findPreSelectedEvent, ds as ACCORDION_SPACING_MAP, dt as InlineTextEditor, du as Trigger, ec as ChevronLeftIcon, ed as formatLocalScheduleDate, ef as ImagePlus, ei as formEmbedFragment, el as TokenResolver, en as createBlock, eo as eventCalendarDefaultViewSchema, er as buildEventListingInteractiveIslandProps, es as createZodCodec, et as rejectAutosaveBatch, eu as DialogClose, fa as backgroundAppearanceQuickColorTokenNames, fc as InfoIcon, fd as publicEventTicketTypes, ff as Crop, fi as MQ_LG_UP, fl as useBackendWatch, fn as DndContext, fo as eventSurfaceScopeValues, fr as resolveDiscountContext, fs as ACCORDION_TRIGGER_FONT_SCALE, ft as EditorProvider, fu as createCollapsibleScope, g as PreviewDesignCoordinatorProvider, gc as PhoneIcon, gd as parseMediaAssetId, gf as CirclePlus, gi as MQ_TABLET_ONLY, gl as isNonEmptyValue, gn as getClientRect, go as normalizeEventStaffMemberId, gr as getStepNumber$1, gs as PUBLIC_DOWNLOAD_MEDIA_TYPES, gt as EditableBlockProvider, gu as CardTitle, ha as defaultThemeTokens, hc as MinusIcon, hd as expectParsedBrandedId, hf as Clock3, hi as MQ_SM_UP, hl as isHeaderField, hn as closestCenter, ho as normalizeEventScheduleScope, hr as WIZARD_STEPS$1, hs as ICON_SIZE_PX, ht as useUISelector, hu as CardHeader, i as usePreviewDesignHistoryOrder, ic as CirclePlusIcon, id as toBookingTimeZone, if as FileText, ii as ctaCopyFragment, il as borderColorStyle, io as weekStartSchema, ir as buildEventCalendarListingRender, is as composeHeaderSectionWrapperClassName, it as PreviewInlineTextEditor, iu as DialogHeader, ja as buildOfferingsPreviewRenderStates, jc as resolveMediaStorageUrl, jf as __exportAll, ji as planPageDesignLayoutLookCompatibility, jl as Slider, jn as listBlockDescriptors, jo as normalizeLocationMapProps, jr as getShopDisplayForItems, js as resolveBlockIconRenderValue, jt as recordsEqual, ju as __spreadArrays, kc as resolveImageUrlWithContext, kd as X, kf as Archive, ki as retargetCompiledRuntimeFieldsForContentAdjacency, kl as TooltipTrigger, kn as GRADIENT_PRESETS, ko as featuresFromHex, kr as buildProductListInteractiveIslandProps, ks as getGeneratedBlockIconStyleState, kt as undoHistory, ku as __rest, la as sectionTransitionVariantForBoundaryOptionId, lc as FileAudioIcon, ld as publicEventPricingMode, li as defineFragment, ll as DEFAULT_SURFACE_TEXT_COLOR, ln as DEFAULT_LAUNCH_READINESS_INPUT, lo as bindingSchema, lr as toRegistrationEvents, ls as assertNever$6, lt as getRichTextImagePositionFromTarget, lu as Content, ma as parseBackgroundAppearanceColorToken, mc as MapPinIcon$1, md as assertNever$5, mf as Copy, mi as MQ_SM_DOWN, ml as getModalConfig, mn as PointerSensor, mo as normalizeEventCategoryIdsCsv, mr as resolveRegistrationTarget, ms as ICON_CONFIG, mu as CardContent, n as useSiteChromeCustomizeOptional, nc as ChevronUpIcon, nd as parseBookingLocalDate, nf as GripVertical, ni as testimonialsCarouselFragment, nl as themeButtonClassName, nn as deleteBlock, no as filterAutoShowSchema, nr as buildEventCalendarInteractiveIslandProps, ns as defineProgressiveBlockRuntime, nt as resolvePreviewSidebarTab, nu as DialogDescription, oa as defaultSectionTransitionVariantForFamily, oc as DownloadIcon, od as parseEventPageSurfaceSubject, of as FilePlay, oi as ctaRowFragment, ol as mergeStyles, on as reorderBlocks, oo as eventCalendarListLayoutOptions, or as buildFormInteractiveIslandProps, os as splitPositioningClasses, ot as useRichTextEditor, ou as Collapsible, pa as foregroundTokenForBackgroundAppearanceColorToken, pc as MailIcon, pd as formatCurrencyAmount, pf as CreditCard, pi as MQ_MD_DOWN, pl as getFieldIntent, pn as KeyboardCode, po as normalizeEventBlockKind, pr as resolveEventRequiresPayment, ps as ACCORDION_TRIGGER_LETTER_SPACING, pt as useEditor, pu as Card, qa as resolveEventListPaginationAction, qi as NAV_LINK_PADDING_MAP, ql as TabsTrigger, qn as useImageResolveContextOptional, qo as getLocalDateKey, qr as headingFragment, qs as isSemanticIconId, qt as FormRenderer, qu as unsafeAsEditorBlockId, r as PreviewDesignHistoryOrderProvider, rc as CircleMinusIcon, rd as resolveBookingTimeZoneId, rf as File, ri as testimonialsHeadingFragment, rl as backgroundColorStyle, rn as deleteEntrySlotBlock, ro as previewStageSchema, rr as buildEventCalendarListingDisplay, rt as PreviewRichTextEditor, ru as DialogFooter, sa as sectionTransitionFamilies, sc as ExternalLinkIcon, sd as formatBookingPriceDisplay, sf as FileHeadphone, si as heroCopyFragment, sl as rgbColorValue, sn as reorderEntrySlotBlocks, so as el, sr as eventRegistrationBlockDefinition, ss as planSiteChromePlacement, st as EMPTY_DOC, su as CollapsibleContent, t as SiteChromeCustomizeProvider, tc as ChevronRightIcon, td as getBookingLocalDateKey, tf as ImageOff, ti as formCopyFragment, tl as parseThemeButtonVariantId, tn as createEntrySlotBlock, to as eventLayoutSchema, tr as eventCalendarBlockDefinition, ts as defineClientOwnedBlockRuntime, tu as DialogContent, ua as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, uc as FileSpreadsheetIcon, ud as publicEventPricingType, uf as EyeOff, ui as PUBLIC_FILE_FIELD_KINDS, ul as surfaceForegroundDeclarations, un as deriveLaunchReadiness, uo as eventBlockKindValues, ur as findEventByOccurrenceId, us as ACCORDION_OPEN_ACCENT_THICKNESS, ut as insertOrReplaceRichTextImage, uu as Root, v as PreviewThemeOverlayProvider, vc as PlusIcon, vd as unsafeAsAppointmentResourceId, vf as CircleCheck, vi as getAnchorClasses, vl as SdkConfigProvider, vn as useDraggable, vo as normalizeEventSurfaceScope, vr as giftingBlockDefinition, vs as FEATURE_CARD_GENERATED_ICON_SIZE_PX, vu as DropdownMenu, wa as createTransformRegistry, wc as buildResolveImageUrlContext, wd as unsafeAsPositiveByteCount$1, wf as ChevronDown, wi as formatSiteChromeBackgroundTokenLabel, wl as FieldFrame, wn as useCombinedRefs, wo as normalizeCardVariantRole, wr as checkoutBlockDefinition, ws as shouldReserveFeatureCardIconZone, wt as canRedoHistory, wu as __assign, xc as XIcon, xd as unsafeAsFormId, xf as ChevronUp, xi as resolveBackgroundColorValue, xl as mapCurrentValueForSelect, xn as useSensors, xo as generateCardCss, xr as buildCourseRegistrationInteractiveIslandProps, xs as getFeatureCardIconCompletion, xt as useEditorUiStore, y as usePreviewThemeOverlay, yc as ShoppingCartIcon, yd as unsafeAsAppointmentServiceId, yf as CircleAlert, yi as boxStylesTransforms, yl as useSdkConfig, yn as useDroppable, yo as normalizeEventVenueId, yr as buildGiftingInteractiveIslandProps, ys as FEATURE_CARD_ICON_TREATMENTS, yt as useEntryEditorController, yu as DropdownMenuContent, za as resolveOfferingsPreviewGroups, zc as parseAspectRatioValue, zi as isThemeV2NormalEditorRawStylePath, zn as contentTransforms, zo as formatTime$3, zr as buildProductCartItem, zs as coerceInlineTextWithFallback, zt as PaletteProvider, zu as Button } from "./SiteChromeCustomizeContext-C_sizso-.mjs";
|
|
3
|
-
import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-
|
|
4
|
-
import { _ as API_ENDPOINTS, a as usePreviewToken, c as createBearerAPIClient, d as unwrapResponse, g as resolveSurfaceDocumentAttributes, h as SURFACE_IDS, i as usePreviewAuthFetch, l as ApiEnvelopeError, m as SURFACE_DOCUMENT_DATA_ATTRIBUTE, n as markPreviewAuthExpired, o as isPreviewRuntimeSessionEditable, r as usePreviewAuth, s as ApiRequestError, t as initPreviewAuth, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-
|
|
2
|
+
import { $ as beginAutosaveBatch, $a as eventPageSizeSchema, $c as getImageUrl, $i as NAV_LINK_PADDING_X_MAP, $l as Popover, $n as useImageResolveContextOptional, $o as resolveEventLinkProps, $r as headingFragment, $s as resolveIconPickerPreset, $t as evaluateVisibility, $u as cva, Ac as XIcon, Ad as parseMediaAssetId, Af as CirclePlus, Ai as formatSiteChromeBackgroundTokenLabel, Al as useBlockContext, An as CSS, Ao as normalizeEventVenueId, Ar as checkoutBlockDefinition, As as getFeatureCardIconCompletion, At as canUndoHistory, Ba as buildOfferingsPreviewRenderStates, Bc as resolveMediaNodeResponsiveImage, Bd as err$2, Bf as ArrowUp, Bi as designRuntimeRulesForTheme, Bl as TooltipContent, Bn as siteHeaderManifest, Bo as normalizeLocationMapProps, Br as buildProductDetailDisplay, Bs as resolveBlockIconRenderValue, Bt as createSnapshotFromPageRecord, Bu as __generator, C as usePreviewThemeOverlay, Ca as foregroundTokenForBackgroundAppearanceColorToken, Cc as MapPinIcon$1, Cd as publicEventPricingMode, Ci as BACKGROUND_POSITION_PRESET_VALUES, Cl as surfaceForegroundDeclarations, Cn as closestCenter, Co as eventSurfaceScopeValues, Cr as getWizardStepsForContext$1, Cs as ICON_CONFIG, Cu as Root, Dc as PlusIcon, Dd as formatCurrencyAmount, Df as CreditCard, Di as resolveBackgroundColorValue, Dl as getModalConfig, Dn as useDroppable, Do as normalizeEventStaffMemberId, Dr as buildCourseRegistrationInteractiveIslandProps, Ds as FEATURE_CARD_GENERATED_ICON_SIZE_PX, Dt as useEditorUiStoreInstance, Du as CardContent, Ec as PlayIcon, Ed as publicEventTicketTypes, Ef as Crop, Ei as resolveSurfaceForegroundStyles, El as getFieldIntent, En as useDraggable, Eo as normalizeEventScheduleScope, Er as courseRegistrationBlockDefinition, Es as mediaSchema, Et as useEditorUiStore, Eu as Card, Fa as ctaButton, Fc as computeMediaTransformStyle, Fd as unsafeAsFormId, Ff as ChevronRight, Fi as normalEditorCuratedPromotedFieldPaths, Fl as mapOptionValueForSelect, Fn as isSupportedLoaderEndpoint, Fo as normalizeCardVariantRole, Fr as buildProductListInteractiveIslandProps, Fs as toFeatureCardIconSuggestionInputs, Ft as unsafeAsLinkedContentEntryId, Fu as DropdownMenuSeparator, Ga as resolveOfferingsPreviewCoursePath, Gc as attachRenderableMediaAssetFields, Gf as __toESM, Gi as pageDesignEditorBackgroundOverrideOwner, Gl as Select, Gn as contentTransforms, Go as formatEventPrice, Gr as buildProductCartItem, Gs as unwrapRichTextRoot, Gt as usePalette, Gu as useId$1, Ha as isOfferingsPreviewSourceKey, Hc as setContextResolveImageUrlContext, Hd as lucide_react_exports, Hf as Archive, Hi as surfaceResolutionContextFromTheme, Hl as TooltipTrigger, Hn as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, Ho as formatDate$3, Hr as formatInterval, Hs as parseGeneratedIconSetId, Hu as __rest, Ic as getCurrentResolveImageUrlContext, Id as unsafeAsMediaAssetId, If as ChevronLeft, Ii as planPageDesignLayoutLookCompatibility, Il as unmapValueFromSelect, In as getBlockDefinition, Io as isCssColorLiteral, Ir as buildShopInteractiveIslandProps, Is as buildGeneratedBlockIconRenderAssetLookupFromUnknown, It as recordsEqual, Iu as DropdownMenuTrigger, Ja as resolveOfferingsPreviewGroups, Jc as formatAspectRatioToken, Jd as Ticket, Ji as parseBlockCustomCssRules, Jl as SelectTrigger, Jn as uiTransforms, Jo as formatTime$3, Jr as productItemKey, Js as coerceInlineTextWithFallback, Jt as validateBlockManifestIssues, Ju as useControllableState, Ka as resolveOfferingsPreviewGroupCta, Kc as isRotationDimensionSwap, Ki as getComponentBorderWidthPx, Kl as SelectContent, Kn as mediaTransforms, Ko as formatEventPriceDisplay, Kr as deriveCommerceCheckoutState, Ks as isObjectRecord, Kt as recoveryConflictCopy, Ku as useDirection, Lc as renderAudio, Ld as unsafeAsPassId, Lf as ChevronDown, Li as resolveVisiblePromotedFieldPathsForEditorBlock, Ll as FieldFrame, Ln as listBlockDescriptors, Lo as resolveOnColorForThemeToken, Lr as getShopDisplayForItems, Ls as getBlockIconSemanticId, Lu as __assign, Ma as generateCssVars, Mc as ImagePresets, Md as unsafeAsAppointmentResourceId, Mf as CircleCheck, Mi as compileEditorModelRuntime, Ml as useSdkConfig, Mn as useCombinedRefs, Mo as generateCardCss, Mr as buildCartInteractiveIslandProps, Ms as resolveFeatureCardGeneratedIconSizePx, Mt as pushHistoryEntry, Mu as DropdownMenuContent, Na as createTransformRegistry, Nc as MediaPlaceholder, Nd as unsafeAsAppointmentServiceId, Nf as CircleAlert, Ni as retargetCompiledBoundaryRuntimeForContentAdjacency, Nl as hasEmptyOption, Nn as useIsomorphicLayoutEffect, No as generateShadowValue, Nr as buildCheckoutInteractiveIslandProps, Ns as shouldReserveFeatureCardIconZone, Nt as redoHistory, Nu as DropdownMenuItem, Oc as ShoppingCartIcon, Od as assertNever$5, Of as Copy, Oi as mergeHeaderNavTypographyPreference, Ol as isHeaderField, On as useSensor, Oo as normalizeEventSurfacePresetsCsv, Or as normalizeEventRegistrationPageSurfaceSubject, Os as FEATURE_CARD_ICON_TREATMENTS, Ot as useOptionalEditorUiStoreInstance, Ou as CardHeader, Pa as runTransforms, Pc as buildResolveImageUrlContext, Pd as unsafeAsCustomerPassId, Pf as ChevronsUpDown, Pi as retargetCompiledRuntimeFieldsForContentAdjacency, Pl as mapCurrentValueForSelect, Pn as useUniqueId, Po as normalizeBoxStylesCardVariant, Pr as buildProductDetailInteractiveIslandProps, Ps as suggestSemanticIconForFeatureCard, Pt as undoHistory, Qa as eventListPaginationActionSchema, Qc as getDirectImageUrlForMediaAsset, Qi as NAV_LINK_PADDING_MAP, Qn as ImageResolveContextProvider, Qo as resolveEventCta, Qr as richTextFragment, Qs as isIconPickerPreset, Qt as FormRenderer, Qu as Button, Rc as renderVideo, Rd as unsafeAsPositiveByteCount$1, Rf as Check, Ri as componentRuntimeRulesForTheme, Rl as useField, Rn as projectRecurringSchedule, Ro as resolveTokenOrCssColorValue, Rr as buildCartDisplay, Rs as getGeneratedBlockIconStyleState, Rt as useDebouncedLatestSave, Ru as __awaiter, S as PreviewThemeOverlayProvider, Sa as backgroundAppearanceQuickColorTokenNames, Sc as MailIcon, Sd as publicEventPricingCurrency, Sf as FileArchive, Si as MQ_TABLET_ONLY, Sl as DEFAULT_SURFACE_TEXT_COLOR, Sn as PointerSensor, So as eventScheduleScopeValues, Sr as getStepNumber$1, Ss as ACCORDION_TRIGGER_LETTER_SPACING, St as EntryControllerProvider, Su as Content, Ta as defaultThemeTokens, Tc as PhoneIcon, Td as publicEventScalarPrice, Tf as EllipsisVertical, Ti as boxStylesTransforms, Tl as useBackendWatch, Tn as useDndContext, To as normalizeEventCategoryIdsCsv, Tr as buildGiftingInteractiveIslandProps, Ts as PUBLIC_DOWNLOAD_MEDIA_TYPES, Tu as createCollapsibleScope, Ua as normalizeOfferingsPreviewGroupOrder, Uc as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, Ud as X, Uf as __commonJSMin, Ui as isThemeV2NormalEditorRawStyleFieldName, Ul as Textarea, Un as planSiteOverlayHeaderClearance, Uo as formatEventCompactDateRail, Ur as EMPTY_COMMERCE_CART_STATE, Us as parseSiteIconStyleGuideVersionId, Uu as __spreadArray, Va as inferLegacyOfferingsPreviewGroupOrder, Vc as resolveMediaStorageUrl, Vd as ok$3, Vf as ArrowDown, Vi as getCuratedSiteStyle, Vl as TooltipProvider, Vn as SITE_CHROME_VISIBLE_HEADER_SELECTOR, Vo as toLocationMapHydrationProps, Vr as formatCommercePrice, Vs as parseGeneratedIconAssetId, Vu as __read, Wa as normalizeOfferingsPreviewItemLimit, Wc as resolveMediaSlotContract, Wd as Upload, Wf as __exportAll, Wi as isThemeV2NormalEditorRawStylePath, Wl as Slider, Wn as visibleHeaderClearancePx, Wo as formatEventDateParts, Wr as buildPassCartItem, Ws as createRichTextDocFromMarkdown, Wt as PaletteProvider, Wu as __spreadArrays, Xa as resolveSpacing, Xc as resolveMediaTransformForAspect, Xd as Star, Xi as NAV_LINK_BORDER_RADIUS_MAP, Xl as Label, Xn as createManifestValidator, Xo as getContainerClass, Xr as augmentManifest, Xs as isInlineTextEmpty, Xt as createManifestFormAdapter, Xu as composeEventHandlers, Ya as isSemanticSpacing, Yc as parseAspectRatioValue, Yi as parseCustomCssRules, Yl as SelectValue, Yn as formattingTransforms, Yo as getCardOrientation, Yr as reduceCommerceCart, Ys as inlineTextToPlainText, Yt as ManifestForm, Yu as createContextScope, Za as buildEventRuntimeFilters, Zc as asRecord, Zd as Sparkles, Zi as NAV_LINK_LETTER_SPACING_MAP, Zl as Badge, Zn as isInternalResolvedLinkValue, Zo as groupEventsByDate, Zr as augmentManifestWithStyleGroups, Zs as parseInlineTextFromUnknown, Zu as Primitive, _a as sectionTransitionFamilies, _c as FileArchiveIcon, _d as resolveBookingTimeZoneId, _f as File, _i as MQ_LG_UP, _l as borderColorStyle, _n as DEFAULT_LAUNCH_READINESS_INPUT, _o as el, _r as findPreSelectedEvent, _s as asDesignBlockId, _t as EditorProvider, _u as DialogHeader, ac as ArrowRightIcon, ad as createEditorRemoveBlockCommand, af as Pencil, ai as formEmbedFragment, al as generateButtonCss, an as createBlock, ao as normalizeOptionalId, ar as eventListingBlockDefinition, as as blockBookingPaymentTermsSchema, au as TabsList, b as PreviewDesignCoordinatorProvider, ba as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, bc as FileTextIcon, bd as parseEventPageSurfaceSubject, bf as FilePlay, bi as MQ_SM_DOWN, bl as rgbColorValue, bn as DndContext, bo as bindingSchema, br as resolveRegistrationTarget, bs as ACCORDION_SPACING_MAP, bt as useUISelector, bu as CollapsibleContent, cc as ChevronDownIcon, cd as unsafeAsEditorBlockValues, ci as testimonialsHeadingFragment, cl as featuresFromHex, cn as deleteBlock, co as eventButtonVariantSchema, cr as buildEventCalendarInteractiveIslandProps, cs as defineInteractiveIslandMetaKeys, ct as PreviewRichTextEditor, cu as List, da as GRADIENT_PRESETS, dc as ChevronUpIcon, dd as formatBookingDateTime, df as LoaderCircle, di as ctaRowFragment, dl as generateBaseInteractiveCSS, do as filterAutoShowSchema, dr as formBlockDefinition, ds as defineProgressiveBlockRuntime, dt as useRichTextEditor, du as ScrollableDialogContent, ea as NAV_LINK_TEXT_SIZE_MAP, ec as SEMANTIC_ICON_DEFINITIONS, ed as useComposedRefs, ef as Settings, ei as cardFragment, el as getAtPath, en as createStoreBackend, eo as getEventRuntimeFiltersKey, er as shopBlockDefinition, es as getEventAvailability, et as confirmAutosaveBatch, eu as PopoverContent, f as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, fa as GRADIENT_PRESET_IDS, fc as CircleMinusIcon, fd as formatBookingInstant, ff as Image, fi as heroCopyFragment, fl as generateInteractiveChildInheritanceCSS, fn as mutateBlockContent, fo as previewStageSchema, fr as buildFormInteractiveIslandProps, ft as EMPTY_DOC, fu as Dialog, ga as defaultSectionTransitionVariantForFamily, gc as ExternalLinkIcon, gd as parseBookingLocalDate, gf as GripVertical, gi as siteOptionSources, gl as backgroundColorStyle, gn as decodePublicProductCategorySelectorQuery, go as bind, gr as findEventByOccurrenceId, gs as planSiteChromePlacement, gt as InlineTextEditor, gu as DialogFooter, ha as boundaryRuntimeMetricsForTransition, hc as DownloadIcon, hd as getBookingLocalDateKey, hf as ImageOff, hi as PUBLIC_FILE_FIELD_KINDS, hl as themeButtonClassName, hn as reorderPageSurfaceSlotBlocks, ho as eventCalendarListLayoutOptions, hr as toRegistrationEvents, hs as splitPositioningClasses, ht as insertOrReplaceRichTextImage, hu as DialogDescription, i as usePreviewDesignHistoryOrder, ia as LABEL_FONT_SIZE_MAP, ic as ArrowLeftIcon, id as createEditorInsertBlockCommand, if as Plus, ii as singleButtonFragment, il as AFFORDANCE_SUPPRESS_CLASS, in as getPageDesignEditorState, io as normalizeCsvString, ir as buildNewsletterFormInteractiveIslandProps, is as resolveRuntimeEventPricing, it as rejectAutosaveBatch, iu as TabsContent, jc as createIcon, jd as parseSiteId, jf as CircleMinus, ji as applyCompiledRuntimeFieldsToContent, jl as SdkConfigProvider, jn as isKeyboardEvent, jo as publicEventSchema, jr as cartBlockDefinition, js as parseFeatureCardGeneratedIconSizePx, jt as createHistoryState, ju as DropdownMenu, kc as UploadIcon, kd as expectParsedBrandedId, kf as Clock3, ki as readHeaderNavFontSizePreference, kl as isNonEmptyValue, kn as useSensors, ko as normalizeEventSurfaceScope, kr as resolveEventRegistrationScopedEvents, ks as createFeatureCardIconKey, kt as canRedoHistory, ku as CardTitle, lc as ChevronLeftIcon, ld as addLocalScheduleDays, lf as Minus, li as ctaCopyFragment, ll as generateEffectsCSS, ln as deleteEntrySlotBlock, lo as eventCalendarDefaultViewSchema, lr as buildEventCalendarListingDisplay, ls as createZodCodec, lt as PreviewInlineTextEditor, lu as Root2$1, ma as parseGradientPresetId, mc as ClockIcon$1, md as formatLocalScheduleDate, mf as ImagePlus, mi as defineFragment, ml as parseThemeButtonVariantId, mn as reorderEntrySlotBlocks, mo as eventCalendarListLayoutCompatibleDisplayModeValues, mr as buildEventRegistrationInteractiveIslandProps, ms as markEditableSurfaceForwarding, mt as getRichTextImagePositionFromTarget, mu as DialogContent, n as useSiteChromeCustomizeOptional, na as INPUT_FONT_SIZE_MAP, nc as isSemanticIconId, nd as clsx, nf as RotateCcw, ni as faqHeadingFragment, nn as toRoutableLinkPayload, no as resolveEventListPaginationAction, nr as productDetailBlockDefinition, ns as getLocalDateKey, nt as enqueueTransaction, nu as Input, oc as CalendarIcon$1, od as createEditorReorderBlocksCommand, oi as formCopyFragment, ol as expandPalette, on as createEntrySlotBlock, oo as calendarTabViewsSchema, or as buildEventListingInteractiveIslandProps, os as buildInteractiveIslandProps, ot as resolvePreviewSidebarTab, ou as TabsTrigger, p as reportPreviewDesignError, pa as getGradientPreset, pc as CirclePlusIcon, pd as formatBookingTime, pf as ImageUp, pi as bodyCopyFragment, pl as TokenResolver, pn as reorderBlocks, po as weekStartSchema, pr as eventRegistrationBlockDefinition, ps as composeHeaderSectionWrapperClassName, pt as RichTextEditorSurface, pu as DialogClose, qa as resolveOfferingsPreviewGroupOrderEntries, qc as normalizeRightAngle, qd as Trash2, qi as getComponentShadowVar, ql as SelectItem, qn as layoutTransforms, qo as formatEventTeacherLine, qr as parseStoredCommerceCartState, qs as isRecord$21, qt as unfinishedBlockCopy, qu as createCollection, r as PreviewDesignHistoryOrderProvider, ra as INPUT_SPACING_MAP, rc as ArrowDownIcon, rd as parseFooterModuleId, ri as blogFeaturedPostFragment, rn as applyPageDesignEditorAction, ro as normalizeCsvIds, rr as newsletterSignupBlockDefinition, rs as getLocalMinuteOfDay, rt as idleEditorTransactionQueueState, ru as Tabs, sc as CheckIcon$1, sd as unsafeAsEditorBlockId, si as testimonialsCarouselFragment, sl as getTextColorForBackground, sn as createPageSurfaceSlotBlock, so as columnOptionSchema, sr as eventCalendarBlockDefinition, ss as createInteractiveIslandCodec, su as Content$1, t as SiteChromeCustomizeProvider, ta as FONT_WEIGHT_MAP, tc as getSemanticIconComponent, td as cn$1, tf as Search, ti as faqAccordionFragment, tl as siblingPath$1, tn as listContentTypes, to as resolveEventCalendarListPageSize, tr as productListBlockDefinition, ts as getEventAvailabilityStatus, tt as deriveTransactionCapabilities, tu as PopoverTrigger, u as PREVIEW_DESIGN_LOAD_ERROR_MESSAGE, ua as gradientToCss, uc as ChevronRightIcon, ud as formatBookingDate, ui as heroCtaRowFragment, ul as generateShadowValue$1, un as deletePageSurfaceSlotBlock, uo as eventLayoutSchema, ur as buildEventCalendarListingRender, us as defineClientOwnedBlockRuntime, ut as PreviewTextEditor, uu as Trigger$1, va as sectionTransitionFamilyForBoundaryOptionId, vc as FileAudioIcon, vd as toBookingTimeZone, vf as FileText, vi as MQ_MD_DOWN, vl as cssVarValue, vn as deriveLaunchReadiness, vo as richText, vr as resolveDiscountContext, vs as assertNever$6, vt as useEditor, vu as DialogTitle, wa as parseBackgroundAppearanceColorToken, wc as MinusIcon, wd as publicEventPricingType, wf as EyeOff, wi as getAnchorClasses, wl as surfaceForegroundValue, wn as getClientRect, wo as normalizeEventBlockKind, wr as giftingBlockDefinition, ws as ICON_SIZE_PX, wt as useEntryEditorController, wu as Trigger, xa as backgroundAppearanceColorTokenNames, xc as InfoIcon, xd as formatBookingPriceDisplay, xf as FileHeadphone, xi as MQ_SM_UP, xl as textColorStyle, xn as KeyboardCode, xo as eventBlockKindValues, xr as WIZARD_STEPS$1, xs as ACCORDION_TRIGGER_FONT_SCALE, xt as EditableBlockProvider, ya as sectionTransitionVariantForBoundaryOptionId, yc as FileSpreadsheetIcon, yd as toScheduledBookingDateTime, yf as FileSpreadsheet, yi as MQ_MD_UP, yl as mergeStyles, yn as AMBIENT_BACKGROUND_ROLES$1, yo as when, yr as resolveEventRequiresPayment, ys as ACCORDION_OPEN_ACCENT_THICKNESS, yu as Collapsible, za as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, zc as resolveImageUrlWithContext, zd as unsafeAsPositiveSeconds, zf as Box, zl as Tooltip, zn as siteFooterManifest, zo as buildGoogleMapsDirectionsUrl, zr as buildProductCardDisplay, zs as parseBlockIconValue, zt as createRoutingHelpers, zu as __extends } from "./SiteChromeCustomizeContext-DUpalEdL.mjs";
|
|
3
|
+
import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-D0y2l8JN.mjs";
|
|
4
|
+
import { _ as API_ENDPOINTS, a as usePreviewToken, c as createBearerAPIClient, d as unwrapResponse, g as resolveSurfaceDocumentAttributes, h as SURFACE_IDS, i as usePreviewAuthFetch, l as ApiEnvelopeError, m as SURFACE_DOCUMENT_DATA_ATTRIBUTE, n as markPreviewAuthExpired, o as isPreviewRuntimeSessionEditable, r as usePreviewAuth, s as ApiRequestError, t as initPreviewAuth, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-CTO7CRPk.mjs";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import React, { Children, Component, Fragment, cloneElement, createContext, createElement, createRef, forwardRef, isValidElement, memo, startTransition, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1973,10 +1973,10 @@ function useBlockApi() {
|
|
|
1973
1973
|
}
|
|
1974
1974
|
//#endregion
|
|
1975
1975
|
//#region ../blocks/src/primitives/layout/Section.tsx
|
|
1976
|
-
const Section = forwardRef(function Section({ as: Comp = "section", children, background, className = "",
|
|
1976
|
+
const Section = forwardRef(function Section({ as: Comp = "section", children, background, className = "", style, "data-slot": dataSlot }, ref) {
|
|
1977
1977
|
return /* @__PURE__ */ jsx(Comp, {
|
|
1978
1978
|
ref,
|
|
1979
|
-
className: clsx("rb-relative rb-isolate
|
|
1979
|
+
className: clsx("rb-relative rb-isolate rb-overflow-visible", className),
|
|
1980
1980
|
style: mergeStyles(typeof background === "string" && background.trim().length > 0 ? backgroundColorStyle(background.trim()) : void 0, style),
|
|
1981
1981
|
"data-slot": dataSlot ?? "section",
|
|
1982
1982
|
children
|
|
@@ -2097,10 +2097,7 @@ function Grid({ as: Comp = "div", cols = {
|
|
|
2097
2097
|
}
|
|
2098
2098
|
//#endregion
|
|
2099
2099
|
//#region ../blocks/src/system/runtime/nodes/layout.tsx
|
|
2100
|
-
const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase,
|
|
2101
|
-
...props,
|
|
2102
|
-
allowOverflow
|
|
2103
|
-
});
|
|
2100
|
+
const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Section, { ...props });
|
|
2104
2101
|
const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
|
|
2105
2102
|
const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
|
|
2106
2103
|
const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
|
|
@@ -2611,6 +2608,58 @@ function getCtaIconComponent(name) {
|
|
|
2611
2608
|
return CTA_ICON_COMPONENTS[name] ?? null;
|
|
2612
2609
|
}
|
|
2613
2610
|
//#endregion
|
|
2611
|
+
//#region ../blocks/src/system/icons/social.tsx
|
|
2612
|
+
const SOCIAL_ICON_NAMES = [
|
|
2613
|
+
"SocialFacebook",
|
|
2614
|
+
"SocialInstagram",
|
|
2615
|
+
"SocialLinkedIn",
|
|
2616
|
+
"SocialTikTok",
|
|
2617
|
+
"SocialX",
|
|
2618
|
+
"SocialYouTube"
|
|
2619
|
+
];
|
|
2620
|
+
const socialIcons = {
|
|
2621
|
+
SocialFacebook: createIcon("SocialFacebookIcon", /* @__PURE__ */ jsx("path", { d: "M14 8h3V4h-3c-3 0-5 2-5 5v3H6v4h3v6h4v-6h3l1-4h-4V9c0-.7.3-1 1-1Z" })),
|
|
2622
|
+
SocialInstagram: createIcon("SocialInstagramIcon", /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
2623
|
+
/* @__PURE__ */ jsx("rect", {
|
|
2624
|
+
x: "3",
|
|
2625
|
+
y: "3",
|
|
2626
|
+
width: "18",
|
|
2627
|
+
height: "18",
|
|
2628
|
+
rx: "5"
|
|
2629
|
+
}),
|
|
2630
|
+
/* @__PURE__ */ jsx("circle", {
|
|
2631
|
+
cx: "12",
|
|
2632
|
+
cy: "12",
|
|
2633
|
+
r: "4"
|
|
2634
|
+
}),
|
|
2635
|
+
/* @__PURE__ */ jsx("circle", {
|
|
2636
|
+
cx: "17.5",
|
|
2637
|
+
cy: "6.5",
|
|
2638
|
+
r: ".75",
|
|
2639
|
+
fill: "currentColor",
|
|
2640
|
+
stroke: "none"
|
|
2641
|
+
})
|
|
2642
|
+
] })),
|
|
2643
|
+
SocialLinkedIn: createIcon("SocialLinkedInIcon", /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
2644
|
+
/* @__PURE__ */ jsx("path", { d: "M6 9v10" }),
|
|
2645
|
+
/* @__PURE__ */ jsx("path", {
|
|
2646
|
+
d: "M6 5.5v.01",
|
|
2647
|
+
strokeWidth: "3"
|
|
2648
|
+
}),
|
|
2649
|
+
/* @__PURE__ */ jsx("path", { d: "M10.5 19v-6a4 4 0 0 1 8 0v6" }),
|
|
2650
|
+
/* @__PURE__ */ jsx("path", { d: "M10.5 9v10" })
|
|
2651
|
+
] })),
|
|
2652
|
+
SocialTikTok: createIcon("SocialTikTokIcon", /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("path", { d: "M14 4v11.5a4.5 4.5 0 1 1-4-4.47" }), /* @__PURE__ */ jsx("path", { d: "M14 4c.7 3 2.4 4.5 5 4.5" })] })),
|
|
2653
|
+
SocialX: createIcon("SocialXIcon", /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("path", { d: "m5 4 14 16" }), /* @__PURE__ */ jsx("path", { d: "M19 4 5 20" })] })),
|
|
2654
|
+
SocialYouTube: createIcon("SocialYouTubeIcon", /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("path", { d: "M21 12c0 3.5-.5 5.5-1.3 6.3S16.5 19.5 12 19.5s-6.9-.4-7.7-1.2S3 15.5 3 12s.5-5.5 1.3-6.3S7.5 4.5 12 4.5s6.9.4 7.7 1.2S21 8.5 21 12Z" }), /* @__PURE__ */ jsx("path", { d: "m10 9 5 3-5 3Z" })] }))
|
|
2655
|
+
};
|
|
2656
|
+
function isSocialIconName(value) {
|
|
2657
|
+
return typeof value === "string" && SOCIAL_ICON_NAMES.includes(value);
|
|
2658
|
+
}
|
|
2659
|
+
function getSocialIconComponent(value) {
|
|
2660
|
+
return isSocialIconName(value) ? socialIcons[value] : null;
|
|
2661
|
+
}
|
|
2662
|
+
//#endregion
|
|
2614
2663
|
//#region ../blocks/src/system/icons/registry.ts
|
|
2615
2664
|
function buildSearchText(parts) {
|
|
2616
2665
|
return parts.map((part) => part.trim()).filter(Boolean).join(" ");
|
|
@@ -2646,10 +2695,10 @@ function getIconPickerOptionsForPreset(preset) {
|
|
|
2646
2695
|
return ICON_PICKER_OPTIONS_BY_PRESET[preset];
|
|
2647
2696
|
}
|
|
2648
2697
|
function isKnownIconName(value) {
|
|
2649
|
-
return isCtaIconName(value) || isSemanticIconId(value);
|
|
2698
|
+
return isCtaIconName(value) || isSemanticIconId(value) || isSocialIconName(value);
|
|
2650
2699
|
}
|
|
2651
2700
|
function getIconComponent(name) {
|
|
2652
|
-
return getCtaIconComponent(name) ?? getSemanticIconComponent(name);
|
|
2701
|
+
return getCtaIconComponent(name) ?? getSemanticIconComponent(name) ?? getSocialIconComponent(name);
|
|
2653
2702
|
}
|
|
2654
2703
|
//#endregion
|
|
2655
2704
|
//#region ../blocks/src/system/runtime/nodes/buttonAffordance.ts
|
|
@@ -3537,7 +3586,6 @@ const HeaderSectionNode$1 = ({ blockId, children, className, "data-preview-site-
|
|
|
3537
3586
|
const asProp = rest.as;
|
|
3538
3587
|
const styleProp = rest.style;
|
|
3539
3588
|
const backgroundProp = typeof rest.background === "string" ? rest.background : void 0;
|
|
3540
|
-
const allowOverflowProp = typeof rest.allowOverflow === "boolean" ? rest.allowOverflow : void 0;
|
|
3541
3589
|
const dataSlotProp = typeof rest["data-slot"] === "string" ? rest["data-slot"] : void 0;
|
|
3542
3590
|
return /* @__PURE__ */ jsxs("nav", {
|
|
3543
3591
|
...getIslandRootProps("headerSection", blockId),
|
|
@@ -3552,7 +3600,6 @@ const HeaderSectionNode$1 = ({ blockId, children, className, "data-preview-site-
|
|
|
3552
3600
|
as: asProp,
|
|
3553
3601
|
style: styleProp,
|
|
3554
3602
|
background: backgroundProp ?? "background",
|
|
3555
|
-
allowOverflow: allowOverflowProp,
|
|
3556
3603
|
"data-slot": dataSlotProp,
|
|
3557
3604
|
className: sectionClasses || void 0,
|
|
3558
3605
|
children
|
|
@@ -7192,7 +7239,7 @@ function resolveGroupFrame(cardStyles) {
|
|
|
7192
7239
|
contentClassName: "offerings-preview-card-content rb-flex rb-h-full rb-min-h-full rb-flex-col rb-gap-5"
|
|
7193
7240
|
};
|
|
7194
7241
|
return {
|
|
7195
|
-
containerClassName: ["offerings-preview-card offerings-preview-card--framed rb-relative rb-isolate rb-h-full rb-min-h-full rb-overflow-
|
|
7242
|
+
containerClassName: ["offerings-preview-card offerings-preview-card--framed rb-relative rb-isolate rb-h-full rb-min-h-full rb-overflow-visible rb-bg-surface rb-border rb-border-border", resolveGroupFrameClasses(cardStyles)].filter(Boolean).join(" "),
|
|
7196
7243
|
containerStyle: resolveGroupFrameStyle(cardStyles),
|
|
7197
7244
|
contentClassName: "card-content offerings-preview-card-content rb-flex rb-h-full rb-min-h-full rb-flex-col rb-gap-5"
|
|
7198
7245
|
};
|
|
@@ -7454,6 +7501,39 @@ function headingDecoration({ bindFrom = defaultBindFrom, className } = {}) {
|
|
|
7454
7501
|
} } })], when(`${bindFrom}.family`));
|
|
7455
7502
|
}
|
|
7456
7503
|
//#endregion
|
|
7504
|
+
//#region ../blocks/src/system/fragments/library/footerBottomText.ts
|
|
7505
|
+
const footerBottomTextFragment = defineFragment({
|
|
7506
|
+
id: "footerBottomText",
|
|
7507
|
+
title: "Footer Text",
|
|
7508
|
+
description: "Rich text content for the main footer body and optional bottom bar.",
|
|
7509
|
+
fields: [{
|
|
7510
|
+
id: "bodyText",
|
|
7511
|
+
type: "richText",
|
|
7512
|
+
label: "Body text",
|
|
7513
|
+
description: "Appears in the main footer area.",
|
|
7514
|
+
ui: { variant: "limited" }
|
|
7515
|
+
}, {
|
|
7516
|
+
id: "bottomText",
|
|
7517
|
+
type: "richText",
|
|
7518
|
+
label: "Bottom bar text",
|
|
7519
|
+
description: "Appears in the optional footer bottom bar.",
|
|
7520
|
+
ui: { variant: "limited" }
|
|
7521
|
+
}],
|
|
7522
|
+
layout: [richText({
|
|
7523
|
+
className: "rb-prose rb-prose-sm rb-mx-auto rb-max-w-3xl rb-text-center",
|
|
7524
|
+
style: textColorStyle("text/80")
|
|
7525
|
+
}, when("bodyText"), bind("bodyText", { transforms: [{
|
|
7526
|
+
id: "content.interpolateRichTextTokens",
|
|
7527
|
+
options: { tokens: ["year", "site_name"] }
|
|
7528
|
+
}] })), richText({
|
|
7529
|
+
className: "rb-prose rb-prose-sm rb-mx-auto rb-max-w-3xl rb-text-center",
|
|
7530
|
+
style: textColorStyle("text/80")
|
|
7531
|
+
}, when("bottomText"), bind("bottomText", { transforms: [{
|
|
7532
|
+
id: "content.interpolateRichTextTokens",
|
|
7533
|
+
options: { tokens: ["year", "site_name"] }
|
|
7534
|
+
}] }))]
|
|
7535
|
+
});
|
|
7536
|
+
//#endregion
|
|
7457
7537
|
//#region ../blocks/src/system/fragments/library/headerCta.ts
|
|
7458
7538
|
const headerCtaFragment = defineFragment({
|
|
7459
7539
|
id: "headerCta",
|
|
@@ -24994,7 +25074,6 @@ const HeaderSectionNode = ({ blockId, blockKind, blockContent, fragmentRegistry,
|
|
|
24994
25074
|
const asProp = restProps.as;
|
|
24995
25075
|
const styleProp = restProps.style;
|
|
24996
25076
|
const backgroundProp = typeof restProps.background === "string" ? restProps.background : void 0;
|
|
24997
|
-
const allowOverflowProp = typeof restProps.allowOverflow === "boolean" ? restProps.allowOverflow : void 0;
|
|
24998
25077
|
const dataSlotProp = typeof restProps["data-slot"] === "string" ? restProps["data-slot"] : void 0;
|
|
24999
25078
|
return /* @__PURE__ */ jsx("nav", {
|
|
25000
25079
|
ref: (el) => {
|
|
@@ -25016,7 +25095,6 @@ const HeaderSectionNode = ({ blockId, blockKind, blockContent, fragmentRegistry,
|
|
|
25016
25095
|
as: asProp,
|
|
25017
25096
|
style: styleProp,
|
|
25018
25097
|
background: backgroundProp ?? "background",
|
|
25019
|
-
allowOverflow: allowOverflowProp,
|
|
25020
25098
|
"data-slot": dataSlotProp,
|
|
25021
25099
|
className: sectionClasses || void 0,
|
|
25022
25100
|
children
|
|
@@ -28141,9 +28219,9 @@ function appendBackgroundMediaClasses(baseClassName, input) {
|
|
|
28141
28219
|
].filter(Boolean).join(" ");
|
|
28142
28220
|
}
|
|
28143
28221
|
function gradientPresetCss(value) {
|
|
28144
|
-
|
|
28145
|
-
|
|
28146
|
-
|
|
28222
|
+
const presetId = parseGradientPresetId(value);
|
|
28223
|
+
if (!presetId) return null;
|
|
28224
|
+
const preset = getGradientPreset(presetId);
|
|
28147
28225
|
return gradientToCss(preset, Object.fromEntries(preset.stops.map((stop) => [stop.color, `rgb(var(--tb-${stop.color}))`])));
|
|
28148
28226
|
}
|
|
28149
28227
|
const backgroundTransforms = [
|
|
@@ -28182,16 +28260,17 @@ const backgroundTransforms = [
|
|
|
28182
28260
|
run: (value, _options, context) => resolveSurfaceForegroundStyles(value, context)
|
|
28183
28261
|
},
|
|
28184
28262
|
{
|
|
28185
|
-
id: "background.
|
|
28263
|
+
id: "background.resolveFrameClassName",
|
|
28186
28264
|
kind: "formatter",
|
|
28187
|
-
summary: "Resolve
|
|
28188
|
-
run: (value) => {
|
|
28189
|
-
|
|
28265
|
+
summary: "Resolve clipping on a decorative background frame without clipping foreground content",
|
|
28266
|
+
run: (value, options) => {
|
|
28267
|
+
const baseClass = options?.baseClass?.trim() ?? "";
|
|
28268
|
+
if (!value || typeof value !== "object") return `${baseClass} rb-overflow-hidden`.trim();
|
|
28190
28269
|
const input = value;
|
|
28191
|
-
if (input.overflow === true) return
|
|
28270
|
+
if (input.overflow === true) return `${baseClass} rb-overflow-visible`.trim();
|
|
28192
28271
|
const objectFit = isString$1(input.objectFit) ? input.objectFit.trim() : null;
|
|
28193
28272
|
const scale = isString$1(input.scale) ? input.scale.trim() : isNumber$1(input.scale) ? String(input.scale) : null;
|
|
28194
|
-
return Boolean((objectFit === "custom" || objectFit === "original") && scale && scale.trim().length > 0);
|
|
28273
|
+
return `${baseClass} ${Boolean((objectFit === "custom" || objectFit === "original") && scale && scale.trim().length > 0) ? "rb-overflow-visible" : "rb-overflow-hidden"}`.trim();
|
|
28195
28274
|
}
|
|
28196
28275
|
},
|
|
28197
28276
|
{
|
|
@@ -29544,9 +29623,9 @@ function isReactNode(value) {
|
|
|
29544
29623
|
* Handles conditionals ($when), scopes ($scopes), repeaters ($repeat), bindings ($bind), and children.
|
|
29545
29624
|
*/
|
|
29546
29625
|
function resolveNode(node, context, indexFallback) {
|
|
29547
|
-
if (!shouldRenderNode(node, context)) return null;
|
|
29548
29626
|
const scopeContext = applyScopes(node, context);
|
|
29549
29627
|
if (node.$repeat) return resolveRepeater(node, scopeContext);
|
|
29628
|
+
if (!shouldRenderNode(node, scopeContext)) return null;
|
|
29550
29629
|
const registry = scopeContext.registry ?? serverComponentRegistry;
|
|
29551
29630
|
const normalizedType = node.type.toLowerCase();
|
|
29552
29631
|
const component = registry[node.type] ?? registry[normalizedType] ?? (normalizedType === "section" ? SectionNode : void 0);
|
|
@@ -30913,6 +30992,19 @@ Object.keys(NAV_LINK_PRESETS);
|
|
|
30913
30992
|
//#region ../theme-core/src/header/generateHeaderCss.ts
|
|
30914
30993
|
const HEADER_BLUR = "blur(12px)";
|
|
30915
30994
|
const FLOATING_BLUR = "blur(16px)";
|
|
30995
|
+
const INSET_SHELL_MARKER_CLASS = "header-bar-frame-inset-shell";
|
|
30996
|
+
const INSET_SHELL_EDGE = "1rem";
|
|
30997
|
+
const INSET_SHELL_INSET_BLOCK = "0.875rem";
|
|
30998
|
+
const INSET_SHELL_RADIUS = "9999px";
|
|
30999
|
+
const INSET_SHELL_CONTAINER_MAX = "80rem";
|
|
31000
|
+
const INSET_SHELL_INTERIOR_PADDING_X = "1.75rem";
|
|
31001
|
+
/**
|
|
31002
|
+
* Whether the classic header should render as an inset "brand capsule" shell.
|
|
31003
|
+
* The facet is only meaningful for the classic layout; other variants ignore it.
|
|
31004
|
+
*/
|
|
31005
|
+
function usesInsetShell(header) {
|
|
31006
|
+
return header.barFrame === "inset-shell" && header.variant === "classic";
|
|
31007
|
+
}
|
|
30916
31008
|
/**
|
|
30917
31009
|
* Generate complete CSS for header system from theme config
|
|
30918
31010
|
*
|
|
@@ -31012,7 +31104,36 @@ function generateHeaderRootStyles(header, themeId, tokens, _theme) {
|
|
|
31012
31104
|
const baseBlock = `\n${selector} {\n ${rules.join("\n ")}\n}\n`;
|
|
31013
31105
|
const overlayFix = `\n${`${selector}:has([data-nav-mobile-overlay][aria-hidden="false"])`} {\n backdrop-filter: none !important;\n -webkit-backdrop-filter: none !important;\n}\n`;
|
|
31014
31106
|
if (isContainedNav || backgroundRules.length === 0) return `${baseBlock}\n${overlayFix}`;
|
|
31015
|
-
return `${baseBlock}\n${`\n${backgroundSelector} {\n content: \"\";\n position: absolute;\n inset: 0;\n pointer-events: none;\n border-radius: inherit;\n z-index: -1;\n ${backgroundRules.join("\n ")}\n}\n`}\n${overlayFix}`;
|
|
31107
|
+
return `${baseBlock}\n${`\n${backgroundSelector} {\n content: \"\";\n position: absolute;\n inset: 0;\n pointer-events: none;\n border-radius: inherit;\n z-index: -1;\n ${backgroundRules.join("\n ")}\n}\n`}\n${overlayFix}${usesInsetShell(header) ? generateInsetShellStyles(header, themeId) : ""}`;
|
|
31108
|
+
}
|
|
31109
|
+
/**
|
|
31110
|
+
* Reshapes the full-bleed header paint layer into a contained brand capsule at
|
|
31111
|
+
* the desktop breakpoint. The capsule is centred, capped to the page container
|
|
31112
|
+
* width, inset from the top, fully rounded, and carries the header depth so it
|
|
31113
|
+
* reads as a floating pill. Root border/shadow are neutralised on desktop so a
|
|
31114
|
+
* bordered style does not leave a full-width hairline around the capsule. Sticky
|
|
31115
|
+
* positioning is unaffected — the root stays full width and sticky while the
|
|
31116
|
+
* ::before paint provides the capsule.
|
|
31117
|
+
*/
|
|
31118
|
+
function generateInsetShellStyles(header, themeId) {
|
|
31119
|
+
const scope = `:where([data-theme-scope="${themeId}"])`;
|
|
31120
|
+
const shellRootSelector = `${scope} .header-root.${INSET_SHELL_MARKER_CLASS}`;
|
|
31121
|
+
const shellBeforeSelector = `${scope} .header-root.${INSET_SHELL_MARKER_CLASS}::before`;
|
|
31122
|
+
const layoutSelector = `${scope} .header-root.${INSET_SHELL_MARKER_CLASS} .rb-header-layout`;
|
|
31123
|
+
const widthValue = header.maxWidth === "full" ? `calc(100% - (${INSET_SHELL_EDGE} * 2))` : `min(${INSET_SHELL_CONTAINER_MAX}, calc(100% - (${INSET_SHELL_EDGE} * 2)))`;
|
|
31124
|
+
const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "none");
|
|
31125
|
+
const rootRules = ["border: none;", "box-shadow: none;"];
|
|
31126
|
+
const beforeRules = [
|
|
31127
|
+
`inset: ${INSET_SHELL_INSET_BLOCK} auto;`,
|
|
31128
|
+
"left: 50%;",
|
|
31129
|
+
"right: auto;",
|
|
31130
|
+
"transform: translateX(-50%);",
|
|
31131
|
+
`width: ${widthValue};`,
|
|
31132
|
+
`border-radius: ${INSET_SHELL_RADIUS};`,
|
|
31133
|
+
...shadowVar ? [`box-shadow: ${shadowVar};`] : []
|
|
31134
|
+
];
|
|
31135
|
+
const layoutRules = [`padding-inline: ${INSET_SHELL_INTERIOR_PADDING_X};`];
|
|
31136
|
+
return `\n@media ${MQ_MD_UP} {\n${shellRootSelector} {\n ${rootRules.join("\n ")}\n}\n${shellBeforeSelector} {\n ${beforeRules.join("\n ")}\n}\n${layoutSelector} {\n ${layoutRules.join("\n ")}\n}\n}\n`;
|
|
31016
31137
|
}
|
|
31017
31138
|
/**
|
|
31018
31139
|
* Generate logo typography styles
|
|
@@ -31090,7 +31211,7 @@ function generateLogoTextBehaviorStyles(logoText, themeId) {
|
|
|
31090
31211
|
*/
|
|
31091
31212
|
function generateNavLinkStyles(header, themeId, tokens, theme, contrastTreatment, navTextSize) {
|
|
31092
31213
|
const navPreferences = {
|
|
31093
|
-
typography: header.navTypography ?? "inherit",
|
|
31214
|
+
typography: header.navFontRole ?? header.navTypography ?? "inherit",
|
|
31094
31215
|
fontSize: readHeaderNavFontSizePreference(header.navTextSize)
|
|
31095
31216
|
};
|
|
31096
31217
|
if (header.navLinkStyle) return generateNavLinkCSS({
|
|
@@ -33275,6 +33396,8 @@ function buildThemeCssVars(theme) {
|
|
|
33275
33396
|
const inputRadius = mapInputRadius(inputSystem.base.corners, theme.corners);
|
|
33276
33397
|
return {
|
|
33277
33398
|
...generateCssVars(theme.palette),
|
|
33399
|
+
["--tb-secondaryForeground"]: "var(--tb-onSecondary)",
|
|
33400
|
+
["--tb-accentForeground"]: "var(--tb-onAccent)",
|
|
33278
33401
|
["--tb-scrim"]: "0 0 0",
|
|
33279
33402
|
["--tb-shadow"]: "0 0 0",
|
|
33280
33403
|
...generateShadowCssVars(theme),
|
|
@@ -35416,6 +35539,12 @@ const containerResponsiveThemeCss = `/*
|
|
|
35416
35539
|
.rb-lg-hidden {
|
|
35417
35540
|
display: none;
|
|
35418
35541
|
}
|
|
35542
|
+
.rb-lg-flex-row {
|
|
35543
|
+
flex-direction: row;
|
|
35544
|
+
}
|
|
35545
|
+
.rb-lg-items-center {
|
|
35546
|
+
align-items: center;
|
|
35547
|
+
}
|
|
35419
35548
|
}
|
|
35420
35549
|
|
|
35421
35550
|
}
|
|
@@ -41925,6 +42054,11 @@ const containerResponsiveThemeCss = `/*
|
|
|
41925
42054
|
flex-wrap: wrap;
|
|
41926
42055
|
}
|
|
41927
42056
|
|
|
42057
|
+
/* Text-style CTA actions belong to the section foreground contract. */
|
|
42058
|
+
:where(.theme-scope) [data-block="cta-full"] .cta-row .button-link {
|
|
42059
|
+
color: var(--rb-surface-link-color, var(--rb-surface-text-color, rgb(var(--tb-primary))));
|
|
42060
|
+
}
|
|
42061
|
+
|
|
41928
42062
|
/* =============================================================================
|
|
41929
42063
|
* Block: Body Text (content block, Phase 2)
|
|
41930
42064
|
*
|
|
@@ -46852,7 +46986,7 @@ const containerResponsiveThemeCss = `/*
|
|
|
46852
46986
|
[data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
|
|
46853
46987
|
.rb-feature-card {
|
|
46854
46988
|
height: auto;
|
|
46855
|
-
overflow:
|
|
46989
|
+
overflow: visible;
|
|
46856
46990
|
border: 0;
|
|
46857
46991
|
border-radius: 0;
|
|
46858
46992
|
background: transparent;
|
|
@@ -48154,6 +48288,26 @@ function stripEmptyStringValues(params) {
|
|
|
48154
48288
|
function ensureSiteId(params, context) {
|
|
48155
48289
|
if (!params.siteId && typeof context.siteId === "string" && context.siteId) params.siteId = context.siteId;
|
|
48156
48290
|
}
|
|
48291
|
+
/**
|
|
48292
|
+
* Map the embed block's author-facing order values onto the public
|
|
48293
|
+
* `listPublishedEntries` `order` contract enum.
|
|
48294
|
+
*
|
|
48295
|
+
* `'order'` ("Custom order field") is the MANUAL-ORDERING axis: it means "render
|
|
48296
|
+
* entries in the content type's author-defined order". It intentionally maps to
|
|
48297
|
+
* `undefined` (endpoint default) here rather than a fixed `manual.asc`, because
|
|
48298
|
+
* this transform is schema-blind — it can't tell whether the embedded content
|
|
48299
|
+
* type actually opts into `ordering.mode: 'manual'`. Forcing `manual.asc` for a
|
|
48300
|
+
* non-manual type would silently flip its default sort (all `manualOrder` values
|
|
48301
|
+
* are equal, so it would degrade to createdAt-asc) — a render regression.
|
|
48302
|
+
*
|
|
48303
|
+
* The manual-ordering HONOR therefore lives server-side where the schema IS
|
|
48304
|
+
* known: `listContentEntries` (content/entries/list.ts) applies `manualOrder ASC`
|
|
48305
|
+
* as the default for manual-ordered types (plan 8.3). That is the path
|
|
48306
|
+
* `block-loaders/content.ts` renders through. The embed/`listPublishedEntries`
|
|
48307
|
+
* loader path (contentEntryLoaders) is not yet schema-aware for its default
|
|
48308
|
+
* ordering; honoring manual order there for the default `'order'` value is a
|
|
48309
|
+
* bounded follow-up (recorded in plan 8.3), not this change.
|
|
48310
|
+
*/
|
|
48157
48311
|
function normalizeOrder(orderBy) {
|
|
48158
48312
|
switch (orderBy) {
|
|
48159
48313
|
case "newest": return "published_at.desc";
|
|
@@ -55838,7 +55992,8 @@ function validateRelativeStoragePath(value) {
|
|
|
55838
55992
|
if (value.startsWith("sites/")) return fail({ tag: "SITE_SCOPED_PATH" });
|
|
55839
55993
|
if (value.startsWith("/")) return fail({ tag: "LEADING_SLASH" });
|
|
55840
55994
|
if (value.includes("//")) return fail({ tag: "DOUBLE_SLASH" });
|
|
55841
|
-
if (value.
|
|
55995
|
+
if (value.includes("%")) return fail({ tag: "PERCENT_ENCODING" });
|
|
55996
|
+
if (value.split("/").some((segment) => segment === "." || segment === "..")) return fail({ tag: "TRAVERSAL" });
|
|
55842
55997
|
return ok$1(value);
|
|
55843
55998
|
}
|
|
55844
55999
|
function brandRelativeStoragePath(value) {
|
|
@@ -57036,124 +57191,85 @@ function BackgroundColorField({ path, backend, config }) {
|
|
|
57036
57191
|
//#endregion
|
|
57037
57192
|
//#region ../block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.tsx
|
|
57038
57193
|
/**
|
|
57039
|
-
* BackgroundGradientWidget
|
|
57040
|
-
*
|
|
57041
57194
|
* Select a curated gradient from the theme-based library.
|
|
57042
57195
|
* Gradients use theme color tokens, so they adapt to the site's palette.
|
|
57043
57196
|
*/
|
|
57044
|
-
function BackgroundGradientWidget(
|
|
57045
|
-
const { label, value, onChange, description, error, dataPath } = props;
|
|
57197
|
+
function BackgroundGradientWidget({ label, value, onChange, description, error, dataPath }) {
|
|
57046
57198
|
const { tokens } = usePalette();
|
|
57047
|
-
const
|
|
57048
|
-
const selectedPresetId = useMemo(() => {
|
|
57049
|
-
if (!value) return null;
|
|
57050
|
-
return GRADIENT_PRESETS.find((p) => p.type === value.type && p.angle === value.angle && p.position === value.position && p.stops.length === value.stops.length && p.stops.every((stop, i) => stop.color === value.stops[i]?.color && stop.position === value.stops[i]?.position))?.id ?? null;
|
|
57051
|
-
}, [value]);
|
|
57199
|
+
const selectedPreset = useMemo(() => value ? GRADIENT_PRESETS.find((preset) => gradientConfigsMatch(preset, value)) ?? null : null, [value]);
|
|
57052
57200
|
const handleSelectPreset = (presetId) => {
|
|
57053
|
-
|
|
57054
|
-
if (!preset) return;
|
|
57055
|
-
onChange({
|
|
57056
|
-
type: preset.type,
|
|
57057
|
-
angle: preset.angle,
|
|
57058
|
-
position: preset.position,
|
|
57059
|
-
stops: preset.stops
|
|
57060
|
-
});
|
|
57201
|
+
onChange(gradientConfigFromPreset(getGradientPreset(presetId)));
|
|
57061
57202
|
};
|
|
57062
|
-
return /* @__PURE__ */
|
|
57203
|
+
return /* @__PURE__ */ jsx(FieldFrame, {
|
|
57204
|
+
fieldPath: dataPath,
|
|
57205
|
+
label,
|
|
57206
|
+
description,
|
|
57207
|
+
error,
|
|
57063
57208
|
className: "space-y-3",
|
|
57064
|
-
"
|
|
57065
|
-
|
|
57066
|
-
/* @__PURE__ */
|
|
57067
|
-
|
|
57068
|
-
|
|
57069
|
-
|
|
57070
|
-
}),
|
|
57071
|
-
description ? /* @__PURE__ */ jsx("p", {
|
|
57072
|
-
className: "text-xs text-muted-foreground mt-1",
|
|
57073
|
-
children: description
|
|
57074
|
-
}) : null,
|
|
57075
|
-
error ? /* @__PURE__ */ jsx("p", {
|
|
57076
|
-
className: "text-xs text-destructive mt-1",
|
|
57077
|
-
children: error
|
|
57078
|
-
}) : null
|
|
57079
|
-
] }),
|
|
57080
|
-
/* @__PURE__ */ jsx("div", {
|
|
57209
|
+
children: ({ id, descriptionId, messageId }) => /* @__PURE__ */ jsxs("div", {
|
|
57210
|
+
className: "space-y-3",
|
|
57211
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
57212
|
+
role: "group",
|
|
57213
|
+
"aria-label": `${label} presets`,
|
|
57214
|
+
"aria-describedby": [descriptionId, messageId].filter(Boolean).join(" ") || void 0,
|
|
57081
57215
|
className: "grid grid-cols-2 gap-3 sm:grid-cols-3",
|
|
57082
|
-
children: GRADIENT_PRESETS.map((preset) => {
|
|
57083
|
-
const isSelected =
|
|
57084
|
-
const cssGradient = gradientToCss(
|
|
57085
|
-
|
|
57086
|
-
angle: preset.angle,
|
|
57087
|
-
position: preset.position,
|
|
57088
|
-
stops: preset.stops
|
|
57089
|
-
}, tokens);
|
|
57216
|
+
children: GRADIENT_PRESETS.map((preset, index) => {
|
|
57217
|
+
const isSelected = selectedPreset?.id === preset.id;
|
|
57218
|
+
const cssGradient = gradientToCss(gradientConfigFromPreset(preset), tokens);
|
|
57219
|
+
const kindLabel = gradientKindLabel$1(preset.type);
|
|
57090
57220
|
return /* @__PURE__ */ jsxs("button", {
|
|
57221
|
+
id: index === 0 ? id : void 0,
|
|
57091
57222
|
type: "button",
|
|
57223
|
+
"aria-label": `${preset.name}, ${kindLabel} gradient`,
|
|
57224
|
+
"aria-pressed": isSelected,
|
|
57092
57225
|
onClick: () => handleSelectPreset(preset.id),
|
|
57093
|
-
className: cn$1("group flex flex-col gap-2 rounded-md border p-2 transition", isSelected ? "border-foreground bg-accent/30" : "border-muted-foreground/30 bg-background hover:bg-muted/40"),
|
|
57094
|
-
children: [/* @__PURE__ */ jsx("
|
|
57226
|
+
className: cn$1("group flex flex-col gap-2 rounded-md border p-2 text-left transition", isSelected ? "border-foreground bg-accent/30" : "border-muted-foreground/30 bg-background hover:bg-muted/40"),
|
|
57227
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
57228
|
+
"aria-hidden": "true",
|
|
57095
57229
|
className: "h-16 w-full rounded-sm",
|
|
57096
57230
|
style: { background: cssGradient }
|
|
57097
|
-
}), /* @__PURE__ */
|
|
57098
|
-
className: "
|
|
57099
|
-
children:
|
|
57231
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
57232
|
+
className: "space-y-0.5",
|
|
57233
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
57234
|
+
className: "block text-xs font-medium text-foreground",
|
|
57235
|
+
children: preset.name
|
|
57236
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
57237
|
+
className: "block text-[11px] font-medium uppercase tracking-wide text-muted-foreground",
|
|
57238
|
+
children: kindLabel
|
|
57239
|
+
})]
|
|
57100
57240
|
})]
|
|
57101
57241
|
}, preset.id);
|
|
57102
57242
|
})
|
|
57103
|
-
}),
|
|
57104
|
-
value ? /* @__PURE__ */ jsxs("div", {
|
|
57243
|
+
}), value ? /* @__PURE__ */ jsxs("p", {
|
|
57105
57244
|
className: "text-xs text-muted-foreground",
|
|
57106
|
-
|
|
57107
|
-
|
|
57108
|
-
|
|
57109
|
-
|
|
57110
|
-
children: [/* @__PURE__ */ jsxs("button", {
|
|
57111
|
-
type: "button",
|
|
57112
|
-
onClick: () => setShowAdvanced(!showAdvanced),
|
|
57113
|
-
className: "flex items-center gap-2 text-xs font-medium text-muted-foreground hover:text-foreground transition",
|
|
57114
|
-
children: [showAdvanced ? /* @__PURE__ */ jsx(ChevronUp, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx(ChevronDown, { className: "h-3 w-3" }), "Advanced Settings"]
|
|
57115
|
-
}), showAdvanced && value ? /* @__PURE__ */ jsxs("div", {
|
|
57116
|
-
className: "mt-3 space-y-3 text-xs",
|
|
57117
|
-
children: [
|
|
57118
|
-
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Label, {
|
|
57119
|
-
className: "text-xs",
|
|
57120
|
-
children: "Type"
|
|
57121
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
57122
|
-
className: "mt-1 text-muted-foreground",
|
|
57123
|
-
children: [
|
|
57124
|
-
value.type === "linear" ? "Linear" : "Radial",
|
|
57125
|
-
value.type === "linear" && value.angle !== void 0 ? ` (${value.angle}�)` : "",
|
|
57126
|
-
value.type === "radial" && value.position ? ` (${value.position})` : ""
|
|
57127
|
-
]
|
|
57128
|
-
})] }),
|
|
57129
|
-
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Label, {
|
|
57130
|
-
className: "text-xs",
|
|
57131
|
-
children: "Color Stops"
|
|
57132
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
57133
|
-
className: "mt-1 space-y-1",
|
|
57134
|
-
children: value.stops.map((stop, idx) => /* @__PURE__ */ jsxs("div", {
|
|
57135
|
-
className: "flex items-center gap-2 text-muted-foreground",
|
|
57136
|
-
children: [
|
|
57137
|
-
/* @__PURE__ */ jsx("span", {
|
|
57138
|
-
className: "h-3 w-3 rounded-full border border-border/50",
|
|
57139
|
-
style: { backgroundColor: tokens[stop.color] ?? "#000000" }
|
|
57140
|
-
}),
|
|
57141
|
-
/* @__PURE__ */ jsx("span", { children: stop.color }),
|
|
57142
|
-
/* @__PURE__ */ jsx("span", { children: "�" }),
|
|
57143
|
-
/* @__PURE__ */ jsxs("span", { children: [stop.position, "%"] })
|
|
57144
|
-
]
|
|
57145
|
-
}, idx))
|
|
57146
|
-
})] }),
|
|
57147
|
-
/* @__PURE__ */ jsx("p", {
|
|
57148
|
-
className: "text-muted-foreground",
|
|
57149
|
-
children: "To customize gradient angles, positions, or add/remove color stops, select a preset as a starting point. Full customization coming soon."
|
|
57150
|
-
})
|
|
57151
|
-
]
|
|
57152
|
-
}) : null]
|
|
57153
|
-
})
|
|
57154
|
-
]
|
|
57245
|
+
"aria-live": "polite",
|
|
57246
|
+
children: ["Selected gradient: ", selectedPreset ? `${selectedPreset.name} · ${gradientKindLabel$1(selectedPreset.type)}` : "Custom"]
|
|
57247
|
+
}) : null]
|
|
57248
|
+
})
|
|
57155
57249
|
});
|
|
57156
57250
|
}
|
|
57251
|
+
function gradientConfigFromPreset(preset) {
|
|
57252
|
+
return {
|
|
57253
|
+
type: preset.type,
|
|
57254
|
+
angle: preset.angle,
|
|
57255
|
+
shape: preset.shape,
|
|
57256
|
+
position: preset.position,
|
|
57257
|
+
stops: preset.stops.map((stop) => ({ ...stop }))
|
|
57258
|
+
};
|
|
57259
|
+
}
|
|
57260
|
+
function gradientConfigsMatch(preset, value) {
|
|
57261
|
+
return preset.type === value.type && preset.angle === value.angle && radialShape(preset) === radialShape(value) && preset.position === value.position && preset.stops.length === value.stops.length && preset.stops.every((stop, index) => stop.color === value.stops[index]?.color && stop.position === value.stops[index]?.position);
|
|
57262
|
+
}
|
|
57263
|
+
function radialShape(config) {
|
|
57264
|
+
return config.type === "radial" ? config.shape ?? "circle" : config.shape;
|
|
57265
|
+
}
|
|
57266
|
+
function gradientKindLabel$1(type) {
|
|
57267
|
+
switch (type) {
|
|
57268
|
+
case "linear": return "Linear";
|
|
57269
|
+
case "radial": return "Radial";
|
|
57270
|
+
case "conic": return "Conic";
|
|
57271
|
+
}
|
|
57272
|
+
}
|
|
57157
57273
|
//#endregion
|
|
57158
57274
|
//#region ../block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.tsx
|
|
57159
57275
|
/**
|
|
@@ -57191,12 +57307,7 @@ function BackgroundGradientField({ path, backend, config }) {
|
|
|
57191
57307
|
function findPresetFromCss(css, tokens) {
|
|
57192
57308
|
if (!css) return null;
|
|
57193
57309
|
for (const preset of GRADIENT_PRESETS) {
|
|
57194
|
-
const presetConfig =
|
|
57195
|
-
type: preset.type,
|
|
57196
|
-
angle: preset.angle,
|
|
57197
|
-
position: preset.position,
|
|
57198
|
-
stops: preset.stops
|
|
57199
|
-
};
|
|
57310
|
+
const presetConfig = gradientConfigFromPreset(preset);
|
|
57200
57311
|
if (gradientToCss(presetConfig, tokens) === css) return presetConfig;
|
|
57201
57312
|
}
|
|
57202
57313
|
return null;
|
|
@@ -58420,7 +58531,8 @@ function buildInsertBlockHistoryCommand({ block, index, draftContent, publishedC
|
|
|
58420
58531
|
draftContent: toEditorBlockValues(baseline),
|
|
58421
58532
|
publishedContent: toEditorBlockValues(nextPublishedContent),
|
|
58422
58533
|
bindings: toEditorBlockValues(block.bindings ?? null),
|
|
58423
|
-
purpose
|
|
58534
|
+
purpose,
|
|
58535
|
+
optimisticHash: block.optimisticHash ?? null
|
|
58424
58536
|
}, {
|
|
58425
58537
|
id: blockId,
|
|
58426
58538
|
version: 0,
|
|
@@ -58431,7 +58543,8 @@ function buildInsertBlockHistoryCommand({ block, index, draftContent, publishedC
|
|
|
58431
58543
|
kind: block.kind,
|
|
58432
58544
|
purpose,
|
|
58433
58545
|
orderIndex: index,
|
|
58434
|
-
publishedContent: toEditorBlockValues(nextPublishedContent)
|
|
58546
|
+
publishedContent: toEditorBlockValues(nextPublishedContent),
|
|
58547
|
+
optimisticHash: block.optimisticHash ?? null
|
|
58435
58548
|
}
|
|
58436
58549
|
}, index);
|
|
58437
58550
|
}
|
|
@@ -58441,6 +58554,8 @@ function blockEditorOwnerKey(owner) {
|
|
|
58441
58554
|
switch (owner.kind) {
|
|
58442
58555
|
case "page": return `page:${owner.pageId}`;
|
|
58443
58556
|
case "entry-slot": return `entry-slot:${owner.type}:${owner.entryId}:${owner.slotKey}`;
|
|
58557
|
+
case "surface-slot": return `surface-slot:${owner.pageSurfaceId}:${owner.slotKey}`;
|
|
58558
|
+
default: return assertNever$5(owner);
|
|
58444
58559
|
}
|
|
58445
58560
|
}
|
|
58446
58561
|
async function createEditableBlockForOwner(apiClient, siteId, owner, input) {
|
|
@@ -58462,6 +58577,16 @@ async function createEditableBlockForOwner(apiClient, siteId, owner, input) {
|
|
|
58462
58577
|
position: input.position,
|
|
58463
58578
|
purpose: input.purpose
|
|
58464
58579
|
});
|
|
58580
|
+
case "surface-slot": return createPageSurfaceSlotBlock(apiClient, {
|
|
58581
|
+
siteId,
|
|
58582
|
+
pageSurfaceId: owner.pageSurfaceId,
|
|
58583
|
+
slotKey: owner.slotKey,
|
|
58584
|
+
kind: input.kind,
|
|
58585
|
+
position: input.position,
|
|
58586
|
+
purpose: input.purpose,
|
|
58587
|
+
expectedCompositionHash: owner.compositionHash
|
|
58588
|
+
});
|
|
58589
|
+
default: return assertNever$5(owner);
|
|
58465
58590
|
}
|
|
58466
58591
|
}
|
|
58467
58592
|
async function reorderEditableBlocksForOwner(apiClient, siteId, owner, blockIds) {
|
|
@@ -58478,6 +58603,14 @@ async function reorderEditableBlocksForOwner(apiClient, siteId, owner, blockIds)
|
|
|
58478
58603
|
slotKey: owner.slotKey,
|
|
58479
58604
|
blockIds
|
|
58480
58605
|
});
|
|
58606
|
+
case "surface-slot": return reorderPageSurfaceSlotBlocks(apiClient, {
|
|
58607
|
+
siteId,
|
|
58608
|
+
pageSurfaceId: owner.pageSurfaceId,
|
|
58609
|
+
slotKey: owner.slotKey,
|
|
58610
|
+
blockIds,
|
|
58611
|
+
expectedCompositionHash: owner.compositionHash
|
|
58612
|
+
});
|
|
58613
|
+
default: return assertNever$5(owner);
|
|
58481
58614
|
}
|
|
58482
58615
|
}
|
|
58483
58616
|
async function deleteEditableBlockForOwner(apiClient, siteId, owner, blockId) {
|
|
@@ -58494,11 +58627,23 @@ async function deleteEditableBlockForOwner(apiClient, siteId, owner, blockId) {
|
|
|
58494
58627
|
slotKey: owner.slotKey,
|
|
58495
58628
|
blockId
|
|
58496
58629
|
});
|
|
58630
|
+
case "surface-slot": return deletePageSurfaceSlotBlock(apiClient, {
|
|
58631
|
+
siteId,
|
|
58632
|
+
pageSurfaceId: owner.pageSurfaceId,
|
|
58633
|
+
slotKey: owner.slotKey,
|
|
58634
|
+
blockId,
|
|
58635
|
+
expectedCompositionHash: owner.compositionHash
|
|
58636
|
+
});
|
|
58637
|
+
default: return assertNever$5(owner);
|
|
58497
58638
|
}
|
|
58498
58639
|
}
|
|
58640
|
+
function surfaceCompositionHashFromResponse(response) {
|
|
58641
|
+
if (typeof response === "object" && response !== null && "compositionHash" in response && typeof response.compositionHash === "string") return response.compositionHash;
|
|
58642
|
+
return null;
|
|
58643
|
+
}
|
|
58499
58644
|
//#endregion
|
|
58500
58645
|
//#region ../editor-blocks/src/block-editor/hooks/useBlockCreation.ts
|
|
58501
|
-
function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, uiStore }) {
|
|
58646
|
+
function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, uiStore, onStructuralRevisionChange }) {
|
|
58502
58647
|
const [pickerOpen, setPickerOpen] = useState(false);
|
|
58503
58648
|
const [insertPosition, setInsertPosition] = useState(null);
|
|
58504
58649
|
const [creatingBlockName, setCreatingBlockName] = useState(null);
|
|
@@ -58526,11 +58671,14 @@ function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList,
|
|
|
58526
58671
|
setCreatingBlockName(descriptor.name);
|
|
58527
58672
|
setErrorMessage(null);
|
|
58528
58673
|
try {
|
|
58529
|
-
const
|
|
58674
|
+
const response = await createEditableBlockForOwner(apiClient, siteId, owner, {
|
|
58530
58675
|
kind: descriptor.name,
|
|
58531
58676
|
position: insertPosition,
|
|
58532
58677
|
purpose: "content"
|
|
58533
|
-
})
|
|
58678
|
+
});
|
|
58679
|
+
const nextCompositionHash = surfaceCompositionHashFromResponse(response);
|
|
58680
|
+
if (nextCompositionHash) onStructuralRevisionChange?.(nextCompositionHash);
|
|
58681
|
+
const newBlock = response.block;
|
|
58534
58682
|
const updated = [...blockList];
|
|
58535
58683
|
updated.splice(insertPosition, 0, {
|
|
58536
58684
|
...newBlock,
|
|
@@ -58576,6 +58724,7 @@ function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList,
|
|
|
58576
58724
|
creatingBlockName,
|
|
58577
58725
|
insertPosition,
|
|
58578
58726
|
onBlocksChange,
|
|
58727
|
+
onStructuralRevisionChange,
|
|
58579
58728
|
owner,
|
|
58580
58729
|
setBlockList,
|
|
58581
58730
|
siteId,
|
|
@@ -58591,7 +58740,7 @@ function getDuplicateDraftContent(block) {
|
|
|
58591
58740
|
if (!source || typeof source !== "object" || Array.isArray(source)) return null;
|
|
58592
58741
|
return JSON.parse(JSON.stringify(source));
|
|
58593
58742
|
}
|
|
58594
|
-
function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, setErrorMessage, uiStore }) {
|
|
58743
|
+
function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, setErrorMessage, uiStore, onStructuralRevisionChange }) {
|
|
58595
58744
|
const [duplicatingBlockId, setDuplicatingBlockId] = useState(null);
|
|
58596
58745
|
return {
|
|
58597
58746
|
duplicatingBlockId,
|
|
@@ -58607,18 +58756,27 @@ function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockLis
|
|
|
58607
58756
|
setDuplicatingBlockId(blockId);
|
|
58608
58757
|
setErrorMessage(null);
|
|
58609
58758
|
let createdBlockId = null;
|
|
58759
|
+
let ownerAfterCreate = owner;
|
|
58610
58760
|
try {
|
|
58611
|
-
const
|
|
58761
|
+
const response = await createEditableBlockForOwner(apiClient, siteId, owner, {
|
|
58612
58762
|
kind: sourceBlock.kind,
|
|
58613
58763
|
position: insertIndex,
|
|
58614
58764
|
purpose,
|
|
58615
58765
|
duplicatedFromBlockId: blockId
|
|
58616
|
-
})
|
|
58766
|
+
});
|
|
58767
|
+
const createdCompositionHash = surfaceCompositionHashFromResponse(response);
|
|
58768
|
+
ownerAfterCreate = owner.kind === "surface-slot" && createdCompositionHash ? {
|
|
58769
|
+
...owner,
|
|
58770
|
+
compositionHash: createdCompositionHash
|
|
58771
|
+
} : owner;
|
|
58772
|
+
if (createdCompositionHash) onStructuralRevisionChange?.(createdCompositionHash);
|
|
58773
|
+
const createdBlock = response.block;
|
|
58617
58774
|
if (!createdBlock.id) throw new Error("Duplicate block did not return a block id");
|
|
58618
58775
|
createdBlockId = createdBlock.id;
|
|
58619
58776
|
if (draftContent) await mutateBlockContent(apiClient, {
|
|
58620
58777
|
siteId,
|
|
58621
58778
|
blockId: createdBlock.id,
|
|
58779
|
+
optimisticHash: createdBlock.optimisticHash ?? null,
|
|
58622
58780
|
data: draftContent
|
|
58623
58781
|
});
|
|
58624
58782
|
const insertedBlock = {
|
|
@@ -58650,7 +58808,8 @@ function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockLis
|
|
|
58650
58808
|
}
|
|
58651
58809
|
} catch (error) {
|
|
58652
58810
|
if (createdBlockId) try {
|
|
58653
|
-
await deleteEditableBlockForOwner(apiClient, siteId,
|
|
58811
|
+
const nextCompositionHash = surfaceCompositionHashFromResponse(await deleteEditableBlockForOwner(apiClient, siteId, ownerAfterCreate, createdBlockId));
|
|
58812
|
+
if (nextCompositionHash) onStructuralRevisionChange?.(nextCompositionHash);
|
|
58654
58813
|
} catch {}
|
|
58655
58814
|
const message = error instanceof Error ? error.message : "Failed to duplicate block";
|
|
58656
58815
|
console.error("[useBlockDuplication] duplicate failed:", message, error);
|
|
@@ -58664,6 +58823,7 @@ function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockLis
|
|
|
58664
58823
|
blockList,
|
|
58665
58824
|
duplicatingBlockId,
|
|
58666
58825
|
onBlocksChange,
|
|
58826
|
+
onStructuralRevisionChange,
|
|
58667
58827
|
owner,
|
|
58668
58828
|
setBlockList,
|
|
58669
58829
|
setErrorMessage,
|
|
@@ -58682,7 +58842,7 @@ function blockIdsEqual(left, right) {
|
|
|
58682
58842
|
if (left.length !== right.length) return false;
|
|
58683
58843
|
return left.every((blockId, index) => blockId === right[index]);
|
|
58684
58844
|
}
|
|
58685
|
-
function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, setErrorMessage, uiStore }) {
|
|
58845
|
+
function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, setErrorMessage, uiStore, onStructuralRevisionChange }) {
|
|
58686
58846
|
const [reorderId, setReorderId] = useState(null);
|
|
58687
58847
|
const applyReorder = useCallback(async (updated, original) => {
|
|
58688
58848
|
if (!allowReordering) return;
|
|
@@ -58690,7 +58850,8 @@ function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList,
|
|
|
58690
58850
|
const nextBlockIds = getBlockIds(updated);
|
|
58691
58851
|
uiStore?.getState().history.applyCommand?.({ ...createEditorReorderBlocksCommand(nextBlockIds.map((blockId) => unsafeAsEditorBlockId(blockId))) });
|
|
58692
58852
|
try {
|
|
58693
|
-
await reorderEditableBlocksForOwner(apiClient, siteId, owner, nextBlockIds);
|
|
58853
|
+
const nextCompositionHash = surfaceCompositionHashFromResponse(await reorderEditableBlocksForOwner(apiClient, siteId, owner, nextBlockIds));
|
|
58854
|
+
if (nextCompositionHash) onStructuralRevisionChange?.(nextCompositionHash);
|
|
58694
58855
|
onBlocksChange?.(updated);
|
|
58695
58856
|
} catch (error) {
|
|
58696
58857
|
const message = error instanceof Error ? error.message : "Failed to reorder blocks";
|
|
@@ -58707,6 +58868,7 @@ function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList,
|
|
|
58707
58868
|
allowReordering,
|
|
58708
58869
|
apiClient,
|
|
58709
58870
|
onBlocksChange,
|
|
58871
|
+
onStructuralRevisionChange,
|
|
58710
58872
|
owner,
|
|
58711
58873
|
setBlockList,
|
|
58712
58874
|
siteId,
|
|
@@ -60509,6 +60671,7 @@ const SortableBlockItem = memo(function SortableBlockItem({ siteId, block, onMov
|
|
|
60509
60671
|
})
|
|
60510
60672
|
});
|
|
60511
60673
|
return /* @__PURE__ */ jsx("div", {
|
|
60674
|
+
"data-block-editor-client-ready": mounted ? "true" : "false",
|
|
60512
60675
|
ref: (node) => {
|
|
60513
60676
|
sortable.setNodeRef(node);
|
|
60514
60677
|
if (node) blockRef.current = node;
|
|
@@ -60576,7 +60739,7 @@ function getGeneratedIconSetErrorMessage(error) {
|
|
|
60576
60739
|
const message = getApiRequestErrorMessage(error);
|
|
60577
60740
|
return message === "Internal server error" || /^Request to .+ failed with status \d+$/u.test(message) ? GENERATED_ICON_SET_FRIENDLY_ERROR : message;
|
|
60578
60741
|
}
|
|
60579
|
-
const BlockEditor = forwardRef(function BlockEditor({ siteId, dashboardBaseUrl, owner, blocks, recoveryConflictBlockIds = [], recoveryConflictReviewRequestId = null, apiClient, uiStore, enableReordering = true, enableCreation = true, enableDeletion = true, onBlockSave, onBlocksChange, theme, widgetOverrides, headerLeftSlot, hideThemeV2RawStyleFields = false, pageDesignEditorModel = null, enabledContentTypes = [], sdkConfig = null, customBlocks = [], allowedBlockKinds = null, emptyUnavailableMessage = "No blocks available for this page.", initialCollapsed = true, reorderControlMode = DEFAULT_REORDER_CONTROL_MODE, actionPresentation = DEFAULT_BLOCK_ACTION_PRESENTATION }, ref) {
|
|
60742
|
+
const BlockEditor = forwardRef(function BlockEditor({ siteId, dashboardBaseUrl, owner, blocks, recoveryConflictBlockIds = [], recoveryConflictReviewRequestId = null, apiClient, uiStore, enableReordering = true, enableCreation = true, enableDeletion = true, onBlockSave, onBlocksChange, onStructuralRevisionChange, theme, widgetOverrides, headerLeftSlot, hideThemeV2RawStyleFields = false, pageDesignEditorModel = null, enabledContentTypes = [], sdkConfig = null, customBlocks = [], allowedBlockKinds = null, emptyUnavailableMessage = "No blocks available for this page.", initialCollapsed = true, reorderControlMode = DEFAULT_REORDER_CONTROL_MODE, actionPresentation = DEFAULT_BLOCK_ACTION_PRESENTATION }, ref) {
|
|
60580
60743
|
const [blockList, setBlockList] = useState(() => normalizeBlockListInitial(blocks));
|
|
60581
60744
|
const [errorMessage, setErrorMessage] = useState(null);
|
|
60582
60745
|
const [highlightedBlockId, setHighlightedBlockId] = useState(null);
|
|
@@ -60601,8 +60764,21 @@ const BlockEditor = forwardRef(function BlockEditor({ siteId, dashboardBaseUrl,
|
|
|
60601
60764
|
const conflictedBlockIdSet = useMemo(() => new Set(recoveryConflictBlockIds), [recoveryConflictBlockIds]);
|
|
60602
60765
|
const blockIds = useMemo(() => blockList.map((block) => block.id).filter((blockId) => typeof blockId === "string"), [blockList]);
|
|
60603
60766
|
const pageDesignBlockById = useMemo(() => new Map((pageDesignEditorModel?.blocks ?? []).map((block) => [String(block.blockId), block])), [pageDesignEditorModel]);
|
|
60767
|
+
const ownerKey = useMemo(() => blockEditorOwnerKey(owner), [owner]);
|
|
60768
|
+
const [surfaceCompositionHash, setSurfaceCompositionHash] = useState(owner.kind === "surface-slot" ? owner.compositionHash : null);
|
|
60769
|
+
const updateStructuralRevision = useCallback((revision) => {
|
|
60770
|
+
setSurfaceCompositionHash(revision);
|
|
60771
|
+
onStructuralRevisionChange?.(revision);
|
|
60772
|
+
}, [onStructuralRevisionChange]);
|
|
60773
|
+
useEffect(() => {
|
|
60774
|
+
setSurfaceCompositionHash(owner.kind === "surface-slot" ? owner.compositionHash : null);
|
|
60775
|
+
}, [ownerKey, owner.kind === "surface-slot" ? owner.compositionHash : null]);
|
|
60776
|
+
const mutationOwner = useMemo(() => owner.kind === "surface-slot" ? {
|
|
60777
|
+
...owner,
|
|
60778
|
+
compositionHash: surfaceCompositionHash ?? owner.compositionHash
|
|
60779
|
+
} : owner, [owner, surfaceCompositionHash]);
|
|
60604
60780
|
const { isCollapsed, setCollapsed } = useBlockExpandState({
|
|
60605
|
-
pageId:
|
|
60781
|
+
pageId: ownerKey,
|
|
60606
60782
|
blockIds,
|
|
60607
60783
|
initialCollapsed
|
|
60608
60784
|
});
|
|
@@ -60833,41 +61009,45 @@ const BlockEditor = forwardRef(function BlockEditor({ siteId, dashboardBaseUrl,
|
|
|
60833
61009
|
allowCreation: canCreateBlocks,
|
|
60834
61010
|
apiClient,
|
|
60835
61011
|
siteId,
|
|
60836
|
-
owner,
|
|
61012
|
+
owner: mutationOwner,
|
|
60837
61013
|
blockList,
|
|
60838
61014
|
setBlockList,
|
|
60839
61015
|
onBlocksChange,
|
|
60840
61016
|
triggerFocus,
|
|
60841
|
-
uiStore
|
|
61017
|
+
uiStore,
|
|
61018
|
+
onStructuralRevisionChange: updateStructuralRevision
|
|
60842
61019
|
});
|
|
60843
61020
|
const { reorderId, handleMove, onDragEnd } = useBlockReorder({
|
|
60844
61021
|
allowReordering,
|
|
60845
61022
|
apiClient,
|
|
60846
61023
|
siteId,
|
|
60847
|
-
owner,
|
|
61024
|
+
owner: mutationOwner,
|
|
60848
61025
|
blockList,
|
|
60849
61026
|
setBlockList,
|
|
60850
61027
|
onBlocksChange,
|
|
60851
61028
|
setErrorMessage,
|
|
60852
|
-
uiStore
|
|
61029
|
+
uiStore,
|
|
61030
|
+
onStructuralRevisionChange: updateStructuralRevision
|
|
60853
61031
|
});
|
|
60854
61032
|
const { duplicatingBlockId, duplicateBlock } = useBlockDuplication({
|
|
60855
61033
|
allowCreation: canCreateBlocks,
|
|
60856
61034
|
apiClient,
|
|
60857
61035
|
siteId,
|
|
60858
|
-
owner,
|
|
61036
|
+
owner: mutationOwner,
|
|
60859
61037
|
blockList,
|
|
60860
61038
|
setBlockList,
|
|
60861
61039
|
onBlocksChange,
|
|
60862
61040
|
triggerFocus,
|
|
60863
61041
|
setErrorMessage,
|
|
60864
|
-
uiStore
|
|
61042
|
+
uiStore,
|
|
61043
|
+
onStructuralRevisionChange: updateStructuralRevision
|
|
60865
61044
|
});
|
|
60866
61045
|
const handleDelete = useCallback(async (blockId) => {
|
|
60867
61046
|
try {
|
|
60868
61047
|
setErrorMessage(null);
|
|
60869
61048
|
if (!blockList.find((block) => block.id === blockId)) return;
|
|
60870
|
-
await deleteEditableBlockForOwner(apiClient, siteId,
|
|
61049
|
+
const nextCompositionHash = surfaceCompositionHashFromResponse(await deleteEditableBlockForOwner(apiClient, siteId, mutationOwner, blockId));
|
|
61050
|
+
if (nextCompositionHash) updateStructuralRevision(nextCompositionHash);
|
|
60871
61051
|
const updatedList = blockList.filter((b) => b.id !== blockId);
|
|
60872
61052
|
setBlockList(updatedList);
|
|
60873
61053
|
if (uiStore) uiStore.getState().history.applyCommand?.({ ...createEditorRemoveBlockCommand(unsafeAsEditorBlockId(blockId)) });
|
|
@@ -60879,11 +61059,12 @@ const BlockEditor = forwardRef(function BlockEditor({ siteId, dashboardBaseUrl,
|
|
|
60879
61059
|
}, [
|
|
60880
61060
|
apiClient,
|
|
60881
61061
|
siteId,
|
|
60882
|
-
|
|
61062
|
+
mutationOwner,
|
|
60883
61063
|
blockList,
|
|
60884
61064
|
setBlockList,
|
|
60885
61065
|
onBlocksChange,
|
|
60886
|
-
uiStore
|
|
61066
|
+
uiStore,
|
|
61067
|
+
updateStructuralRevision
|
|
60887
61068
|
]);
|
|
60888
61069
|
useEffect(() => {
|
|
60889
61070
|
return () => {
|
|
@@ -64322,14 +64503,7 @@ const IMAGE_BACKGROUND_TREATMENT = {
|
|
|
64322
64503
|
minContrastRatio: BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO,
|
|
64323
64504
|
minOverlayOpacity: .64
|
|
64324
64505
|
};
|
|
64325
|
-
const gradientPresetIds =
|
|
64326
|
-
const gradientPresetIdSet = new Set(gradientPresetIds);
|
|
64327
|
-
function parseGradientPresetId(value) {
|
|
64328
|
-
if (typeof value !== "string") return null;
|
|
64329
|
-
const normalized = value.trim();
|
|
64330
|
-
if (!gradientPresetIdSet.has(normalized)) return null;
|
|
64331
|
-
return normalized;
|
|
64332
|
-
}
|
|
64506
|
+
const gradientPresetIds = GRADIENT_PRESET_IDS;
|
|
64333
64507
|
function backgroundModeForOverride(override) {
|
|
64334
64508
|
return override.kind;
|
|
64335
64509
|
}
|
|
@@ -64423,7 +64597,27 @@ function backgroundCapabilityFromModes(modeCapabilities) {
|
|
|
64423
64597
|
};
|
|
64424
64598
|
}
|
|
64425
64599
|
function parseBackgroundOverrideFromContent(content) {
|
|
64426
|
-
|
|
64600
|
+
const source = parseCanonicalSectionBackground(content);
|
|
64601
|
+
return source.kind === "page-design-override" ? source.parsed : {
|
|
64602
|
+
kind: "supported",
|
|
64603
|
+
override: DEFAULT_BACKGROUND_OVERRIDE
|
|
64604
|
+
};
|
|
64605
|
+
}
|
|
64606
|
+
/**
|
|
64607
|
+
* Classifies persisted content before runtime Look decoration is considered.
|
|
64608
|
+
* Only the explicit owner marker can make a background a page-design override.
|
|
64609
|
+
*/
|
|
64610
|
+
function parseCanonicalSectionBackground(content) {
|
|
64611
|
+
const background = (isRecord$9(content._sectionStyles) ? content._sectionStyles : null)?.background;
|
|
64612
|
+
if (background === null || background === void 0) return { kind: "none" };
|
|
64613
|
+
if (!isRecord$9(background) || background.contentOwner !== "page-design-editor") return {
|
|
64614
|
+
kind: "block-authored",
|
|
64615
|
+
background: isRecord$9(background) ? background : {}
|
|
64616
|
+
};
|
|
64617
|
+
return {
|
|
64618
|
+
kind: "page-design-override",
|
|
64619
|
+
parsed: parseBackgroundOverride(background)
|
|
64620
|
+
};
|
|
64427
64621
|
}
|
|
64428
64622
|
function parseBackgroundOverride(value) {
|
|
64429
64623
|
if (value === null || value === void 0) return {
|
|
@@ -64530,11 +64724,15 @@ function serializeBackgroundOverride(override) {
|
|
|
64530
64724
|
headingColor: foregroundToken
|
|
64531
64725
|
};
|
|
64532
64726
|
}
|
|
64533
|
-
case "gradient":
|
|
64534
|
-
|
|
64535
|
-
|
|
64536
|
-
|
|
64537
|
-
|
|
64727
|
+
case "gradient": {
|
|
64728
|
+
const foreground = getGradientPreset(override.gradientId).foreground;
|
|
64729
|
+
return {
|
|
64730
|
+
contentOwner: pageDesignEditorBackgroundOverrideOwner,
|
|
64731
|
+
type: "gradient",
|
|
64732
|
+
gradientPresetId: override.gradientId,
|
|
64733
|
+
...foreground
|
|
64734
|
+
};
|
|
64735
|
+
}
|
|
64538
64736
|
case "image": return {
|
|
64539
64737
|
contentOwner: pageDesignEditorBackgroundOverrideOwner,
|
|
64540
64738
|
type: "image",
|
|
@@ -65719,7 +65917,8 @@ function localRuntimeDraftForBlock(input) {
|
|
|
65719
65917
|
kind: block.blockKind,
|
|
65720
65918
|
purpose: null,
|
|
65721
65919
|
orderIndex: null,
|
|
65722
|
-
publishedContent: null
|
|
65920
|
+
publishedContent: null,
|
|
65921
|
+
optimisticHash: null
|
|
65723
65922
|
}
|
|
65724
65923
|
};
|
|
65725
65924
|
}
|
|
@@ -65774,8 +65973,8 @@ function PreviewPageDesignEditorStateProvider({ apiClient, siteId, pageId, enabl
|
|
|
65774
65973
|
if (!cancelled) setWorkflowState(previewCustomizeLoadSucceeded(nextState));
|
|
65775
65974
|
}).catch((error) => {
|
|
65776
65975
|
if (cancelled) return;
|
|
65777
|
-
|
|
65778
|
-
setWorkflowState(failedPreviewCustomizeWorkflowState(
|
|
65976
|
+
reportPreviewDesignError("Failed to load page design editor state", error);
|
|
65977
|
+
setWorkflowState(failedPreviewCustomizeWorkflowState(PREVIEW_DESIGN_LOAD_ERROR_MESSAGE));
|
|
65779
65978
|
});
|
|
65780
65979
|
return () => {
|
|
65781
65980
|
cancelled = true;
|
|
@@ -66062,20 +66261,23 @@ function actionWithCurrentBaseContentId(action, editorModel) {
|
|
|
66062
66261
|
}
|
|
66063
66262
|
}
|
|
66064
66263
|
function classifyApplyActionError(error) {
|
|
66065
|
-
const message = error instanceof Error ? error.message : "Failed to save design change.";
|
|
66066
66264
|
if (error instanceof ApiRequestError) {
|
|
66067
66265
|
if (error.status === 409) return {
|
|
66068
66266
|
kind: "stale",
|
|
66069
66267
|
message: PREVIEW_CUSTOMIZE_STALE_MESSAGE
|
|
66070
66268
|
};
|
|
66071
|
-
if (error.status === 400 || error.status === 422)
|
|
66072
|
-
|
|
66073
|
-
|
|
66074
|
-
|
|
66269
|
+
if (error.status === 400 || error.status === 422) {
|
|
66270
|
+
reportPreviewDesignError("Failed to apply page design change", error);
|
|
66271
|
+
return {
|
|
66272
|
+
kind: "invalid",
|
|
66273
|
+
message: PREVIEW_DESIGN_SAVE_ERROR_MESSAGE
|
|
66274
|
+
};
|
|
66275
|
+
}
|
|
66075
66276
|
}
|
|
66277
|
+
reportPreviewDesignError("Failed to apply page design change", error);
|
|
66076
66278
|
return {
|
|
66077
66279
|
kind: "failed",
|
|
66078
|
-
message
|
|
66280
|
+
message: PREVIEW_DESIGN_SAVE_ERROR_MESSAGE
|
|
66079
66281
|
};
|
|
66080
66282
|
}
|
|
66081
66283
|
function usePreviewPageDesignEditorState() {
|
|
@@ -66212,7 +66414,8 @@ function PreviewEntryControllerProvider({ children, siteId, pageId, routeId: pro
|
|
|
66212
66414
|
content: b.content ?? null,
|
|
66213
66415
|
draftContent: b.draftContent ?? null,
|
|
66214
66416
|
publishedContent: b.publishedContent ?? null,
|
|
66215
|
-
bindings: b.bindings ?? null
|
|
66417
|
+
bindings: b.bindings ?? null,
|
|
66418
|
+
optimisticHash: b.optimisticHash ?? null
|
|
66216
66419
|
}));
|
|
66217
66420
|
}, [initialBlocks]);
|
|
66218
66421
|
const entityId = pageId || entryData?.id || "";
|
|
@@ -66220,20 +66423,30 @@ function PreviewEntryControllerProvider({ children, siteId, pageId, routeId: pro
|
|
|
66220
66423
|
const entityLabel = entryData ? "Entry" : "Page";
|
|
66221
66424
|
const routeId = providedRouteId ?? void 0;
|
|
66222
66425
|
const initialContent = entryData ? draftContent ?? entryData.content ?? {} : null;
|
|
66223
|
-
|
|
66426
|
+
const common = {
|
|
66224
66427
|
apiClient,
|
|
66225
|
-
kind: entryData ? "content" : "page",
|
|
66226
66428
|
type: entityType || "page",
|
|
66227
66429
|
siteId,
|
|
66228
|
-
|
|
66430
|
+
owner: {
|
|
66431
|
+
kind: "contentEntry",
|
|
66432
|
+
contentEntryId: entityId
|
|
66433
|
+
},
|
|
66229
66434
|
routeId,
|
|
66230
66435
|
schema,
|
|
66231
66436
|
entityLabel,
|
|
66232
66437
|
initialEntry,
|
|
66438
|
+
initialBlocks: normalizedInitialBlocks,
|
|
66439
|
+
historyShortcutsEnabled: isEditingMode
|
|
66440
|
+
};
|
|
66441
|
+
return entryData ? /* @__PURE__ */ jsx(EntryControllerProvider, {
|
|
66442
|
+
...common,
|
|
66443
|
+
kind: "content",
|
|
66233
66444
|
initialContent,
|
|
66445
|
+
children
|
|
66446
|
+
}) : /* @__PURE__ */ jsx(EntryControllerProvider, {
|
|
66447
|
+
...common,
|
|
66448
|
+
kind: "page",
|
|
66234
66449
|
initialStatus,
|
|
66235
|
-
initialBlocks: normalizedInitialBlocks,
|
|
66236
|
-
historyShortcutsEnabled: isEditingMode,
|
|
66237
66450
|
children
|
|
66238
66451
|
});
|
|
66239
66452
|
}
|
|
@@ -67228,6 +67441,74 @@ function PreviewChromeFloatingControl({ anchorSelector, anchorTargetSelector, pl
|
|
|
67228
67441
|
children
|
|
67229
67442
|
}), layer.portalTarget)] });
|
|
67230
67443
|
}
|
|
67444
|
+
function PreviewChromeFloatingBar({ anchorSelector, gapPx = 8, children }) {
|
|
67445
|
+
const layer = usePreviewChromeLayerOptional();
|
|
67446
|
+
const probeRef = useRef(null);
|
|
67447
|
+
const [position, setPosition] = useState(null);
|
|
67448
|
+
const [themeCustomProperties, setThemeCustomProperties] = useState({});
|
|
67449
|
+
useEffect(() => {
|
|
67450
|
+
if (!layer?.portalTarget) return;
|
|
67451
|
+
const portalTarget = layer.portalTarget;
|
|
67452
|
+
let resizeObserver = null;
|
|
67453
|
+
let observedAnchor = null;
|
|
67454
|
+
const update = () => {
|
|
67455
|
+
const anchor = probeRef.current?.closest(anchorSelector);
|
|
67456
|
+
if (anchor !== observedAnchor) {
|
|
67457
|
+
resizeObserver?.disconnect();
|
|
67458
|
+
observedAnchor = anchor;
|
|
67459
|
+
if (anchor && typeof ResizeObserver !== "undefined") {
|
|
67460
|
+
resizeObserver = new ResizeObserver(update);
|
|
67461
|
+
resizeObserver.observe(anchor);
|
|
67462
|
+
}
|
|
67463
|
+
}
|
|
67464
|
+
if (!anchor) {
|
|
67465
|
+
setPosition(null);
|
|
67466
|
+
return;
|
|
67467
|
+
}
|
|
67468
|
+
const anchorRect = anchor.getBoundingClientRect();
|
|
67469
|
+
const layerRect = portalTarget.getBoundingClientRect();
|
|
67470
|
+
const placement = anchorRect.top >= 56 ? "above" : "below";
|
|
67471
|
+
setThemeCustomProperties(readThemeCustomProperties(anchor));
|
|
67472
|
+
setPosition({
|
|
67473
|
+
left: anchorRect.left - layerRect.left,
|
|
67474
|
+
top: placement === "above" ? anchorRect.top - layerRect.top - gapPx : anchorRect.bottom - layerRect.top + gapPx,
|
|
67475
|
+
width: anchorRect.width,
|
|
67476
|
+
placement
|
|
67477
|
+
});
|
|
67478
|
+
};
|
|
67479
|
+
update();
|
|
67480
|
+
const unsubscribe = layer.subscribeLayout(update);
|
|
67481
|
+
return () => {
|
|
67482
|
+
resizeObserver?.disconnect();
|
|
67483
|
+
unsubscribe();
|
|
67484
|
+
};
|
|
67485
|
+
}, [
|
|
67486
|
+
anchorSelector,
|
|
67487
|
+
gapPx,
|
|
67488
|
+
layer
|
|
67489
|
+
]);
|
|
67490
|
+
if (!layer?.portalTarget) return /* @__PURE__ */ jsx("div", {
|
|
67491
|
+
className: "absolute inset-x-0 bottom-full z-20 mb-2",
|
|
67492
|
+
children
|
|
67493
|
+
});
|
|
67494
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
67495
|
+
ref: probeRef,
|
|
67496
|
+
"aria-hidden": "true",
|
|
67497
|
+
style: { display: "contents" }
|
|
67498
|
+
}), position ? createPortal(/* @__PURE__ */ jsx("div", {
|
|
67499
|
+
"data-preview-chrome-floating-bar": "",
|
|
67500
|
+
"data-placement": position.placement,
|
|
67501
|
+
className: "pointer-events-auto absolute z-[80]",
|
|
67502
|
+
style: {
|
|
67503
|
+
...themeCustomProperties,
|
|
67504
|
+
left: position.left,
|
|
67505
|
+
top: position.top,
|
|
67506
|
+
width: position.width,
|
|
67507
|
+
transform: position.placement === "above" ? "translateY(-100%)" : void 0
|
|
67508
|
+
},
|
|
67509
|
+
children
|
|
67510
|
+
}), layer.portalTarget) : null] });
|
|
67511
|
+
}
|
|
67231
67512
|
function readThemeCustomProperties(element) {
|
|
67232
67513
|
if (typeof window === "undefined") return {};
|
|
67233
67514
|
const computedStyle = window.getComputedStyle(element);
|
|
@@ -67646,6 +67927,7 @@ function CustomizeBackgroundControlRows({ modeLabel, valueLabel, valueAriaLabel,
|
|
|
67646
67927
|
//#region ../preview-next/src/client/preview/SiteChromeCustomizeButton.tsx
|
|
67647
67928
|
function SiteChromeCustomizeButton({ surface, containerClassName = "pointer-events-auto absolute right-2 top-2 z-50 opacity-0 transition group-focus-within/site-chrome:opacity-100 group-hover/site-chrome:opacity-100" }) {
|
|
67648
67929
|
const customize = useSiteChromeCustomizeOptional();
|
|
67930
|
+
const editorUiStore = useOptionalEditorUiStoreInstance();
|
|
67649
67931
|
const popover = useCustomizePopoverController();
|
|
67650
67932
|
const [backgroundChooserOpen, setBackgroundChooserOpen] = useState(false);
|
|
67651
67933
|
const popoverSide = useSiteChromeCustomizePopoverSide({
|
|
@@ -67797,13 +68079,18 @@ function SiteChromeCustomizeButton({ surface, containerClassName = "pointer-even
|
|
|
67797
68079
|
onClick: (event) => {
|
|
67798
68080
|
event.preventDefault();
|
|
67799
68081
|
event.stopPropagation();
|
|
67800
|
-
|
|
68082
|
+
if (surfaceState.surface === "footer") {
|
|
68083
|
+
const editorUi = editorUiStore?.getState();
|
|
68084
|
+
editorUi?.inspectFooter();
|
|
68085
|
+
editorUi?.setPreviewSidebarTab("editor");
|
|
68086
|
+
editorUi?.setDrawerOpen(true);
|
|
68087
|
+
} else requestPreviewSidebarOpen({
|
|
67801
68088
|
tab: "editor",
|
|
67802
|
-
designRow:
|
|
68089
|
+
designRow: "header-style"
|
|
67803
68090
|
});
|
|
67804
68091
|
popover.close();
|
|
67805
68092
|
},
|
|
67806
|
-
children: "More options"
|
|
68093
|
+
children: surfaceState.surface === "footer" ? "Edit footer" : "More options"
|
|
67807
68094
|
})
|
|
67808
68095
|
}),
|
|
67809
68096
|
surfaceState.diagnostics.length > 0 ? /* @__PURE__ */ jsx("ul", {
|
|
@@ -67969,7 +68256,7 @@ function renderEditableSurface(children, surface, options) {
|
|
|
67969
68256
|
if (isValidElement(child) && child.type !== Fragment && (isHostElement(child) || options.preserveSingleComponentRoot || isEditableSurfaceForwardingElement(child))) return cloneElement(child, {
|
|
67970
68257
|
className: joinClassNames(child.props.className, "group/site-chrome relative"),
|
|
67971
68258
|
"data-preview-site-chrome-surface": surface,
|
|
67972
|
-
children: /* @__PURE__ */ jsxs(Fragment$1, { children: [child.props.children, /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })] })
|
|
68259
|
+
children: /* @__PURE__ */ jsxs(Fragment$1, { children: [surface === "footer" ? /* @__PURE__ */ jsx(FooterModuleInspectionSurface, { children: child.props.children }) : child.props.children, /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })] })
|
|
67973
68260
|
});
|
|
67974
68261
|
if (surface === "header") return /* @__PURE__ */ jsxs("div", {
|
|
67975
68262
|
className: "group/site-chrome",
|
|
@@ -67983,7 +68270,66 @@ function renderEditableSurface(children, surface, options) {
|
|
|
67983
68270
|
return /* @__PURE__ */ jsxs("div", {
|
|
67984
68271
|
className: "group/site-chrome relative",
|
|
67985
68272
|
"data-preview-site-chrome-surface": surface,
|
|
67986
|
-
children: [children, /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })]
|
|
68273
|
+
children: [/* @__PURE__ */ jsx(FooterModuleInspectionSurface, { children }), /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })]
|
|
68274
|
+
});
|
|
68275
|
+
}
|
|
68276
|
+
function FooterModuleInspectionSurface({ children }) {
|
|
68277
|
+
const uiStore = useOptionalEditorUiStoreInstance();
|
|
68278
|
+
const rootRef = useRef(null);
|
|
68279
|
+
const [active, setActive] = useState(null);
|
|
68280
|
+
const [position, setPosition] = useState(null);
|
|
68281
|
+
useEffect(() => {
|
|
68282
|
+
const root = rootRef.current;
|
|
68283
|
+
if (!root) return;
|
|
68284
|
+
const modules = root.querySelectorAll("[data-preview-footer-module-id]");
|
|
68285
|
+
for (const module of modules) {
|
|
68286
|
+
module.tabIndex = 0;
|
|
68287
|
+
const label = module.dataset.previewFooterModuleId?.replace(/-/gu, " ") ?? "footer section";
|
|
68288
|
+
module.setAttribute("aria-label", `Edit ${label}`);
|
|
68289
|
+
}
|
|
68290
|
+
}, [children]);
|
|
68291
|
+
const activateElement = (element) => {
|
|
68292
|
+
if (!element) return;
|
|
68293
|
+
const parsed = parseFooterModuleId(element.dataset.previewFooterModuleId);
|
|
68294
|
+
if (!parsed.ok) return;
|
|
68295
|
+
const label = element.dataset.previewFooterModuleId?.replace(/-/gu, " ") ?? "footer section";
|
|
68296
|
+
const rect = element.getBoundingClientRect();
|
|
68297
|
+
setActive({
|
|
68298
|
+
moduleId: parsed.value,
|
|
68299
|
+
label
|
|
68300
|
+
});
|
|
68301
|
+
setPosition({
|
|
68302
|
+
top: Math.max(8, rect.top + 8),
|
|
68303
|
+
left: Math.max(8, rect.right - 64)
|
|
68304
|
+
});
|
|
68305
|
+
};
|
|
68306
|
+
const inspect = (moduleId) => {
|
|
68307
|
+
uiStore?.getState().inspectFooterModule(moduleId);
|
|
68308
|
+
uiStore?.getState().setPreviewSidebarTab("editor");
|
|
68309
|
+
uiStore?.getState().setDrawerOpen(true);
|
|
68310
|
+
};
|
|
68311
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
68312
|
+
ref: rootRef,
|
|
68313
|
+
style: { display: "contents" },
|
|
68314
|
+
onMouseOver: (event) => activateElement(event.target.closest("[data-preview-footer-module-id]")),
|
|
68315
|
+
onFocusCapture: (event) => activateElement(event.target.closest("[data-preview-footer-module-id]")),
|
|
68316
|
+
onKeyDown: (event) => {
|
|
68317
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
68318
|
+
const element = event.target.closest("[data-preview-footer-module-id]");
|
|
68319
|
+
if (!element) return;
|
|
68320
|
+
const parsed = parseFooterModuleId(element.dataset.previewFooterModuleId);
|
|
68321
|
+
if (!parsed.ok) return;
|
|
68322
|
+
event.preventDefault();
|
|
68323
|
+
inspect(parsed.value);
|
|
68324
|
+
},
|
|
68325
|
+
children: [children, active && position && uiStore ? /* @__PURE__ */ jsx("button", {
|
|
68326
|
+
type: "button",
|
|
68327
|
+
className: "pointer-events-auto fixed z-[75] rounded-full border bg-background px-3 py-1.5 text-xs font-medium text-foreground shadow-md",
|
|
68328
|
+
style: position,
|
|
68329
|
+
"aria-label": `Edit ${active.label}`,
|
|
68330
|
+
onClick: () => inspect(active.moduleId),
|
|
68331
|
+
children: "Edit"
|
|
68332
|
+
}) : null]
|
|
67987
68333
|
});
|
|
67988
68334
|
}
|
|
67989
68335
|
function isHostElement(child) {
|
|
@@ -68224,17 +68570,17 @@ function LinkedEntryEditEventBridge() {
|
|
|
68224
68570
|
//#region ../preview-next/src/client/preview/PreviewShellLayout.tsx
|
|
68225
68571
|
const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
|
|
68226
68572
|
const PreviewEditorSidebar = React.lazy(async () => {
|
|
68227
|
-
return { default: (await import("./PreviewEditorSidebar-
|
|
68573
|
+
return { default: (await import("./PreviewEditorSidebar-DWqwfy3_.mjs")).PreviewEditorSidebar };
|
|
68228
68574
|
});
|
|
68229
68575
|
const PreviewEditorUI = React.lazy(async () => {
|
|
68230
|
-
return { default: (await import("./PreviewEditorUI-
|
|
68576
|
+
return { default: (await import("./PreviewEditorUI-B7OL4sfR.mjs")).PreviewEditorUI };
|
|
68231
68577
|
});
|
|
68232
68578
|
const previewPaneContainmentStyle = {
|
|
68233
68579
|
contain: "layout paint",
|
|
68234
68580
|
isolation: "isolate",
|
|
68235
68581
|
transform: "translateZ(0)"
|
|
68236
68582
|
};
|
|
68237
|
-
function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl = null, pageId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, apiClient, bearerToken, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonPersonalityId = null, runtimePaletteState, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime = defaultPreviewThemeRuntime, siteStyleAccess = { kind: "hidden" } }) {
|
|
68583
|
+
function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl = null, pageId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, apiClient, bearerToken, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonPersonalityId = null, runtimePaletteState, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime = defaultPreviewThemeRuntime, siteStyleAccess = { kind: "hidden" }, onFooterSaved }) {
|
|
68238
68584
|
const layout = useOptionalPreviewLayout();
|
|
68239
68585
|
const headerNode = layout?.headerNode ?? null;
|
|
68240
68586
|
const bannerNode = layout?.bannerNode ?? null;
|
|
@@ -68439,6 +68785,7 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
|
|
|
68439
68785
|
setPreviewSidebarTab(tab);
|
|
68440
68786
|
setPreviewSidebarActiveTab(tab);
|
|
68441
68787
|
},
|
|
68788
|
+
onFooterSaved,
|
|
68442
68789
|
onClose: () => setDrawerOpen(false),
|
|
68443
68790
|
entrySubrouteContext: entrySubrouteContext ?? null,
|
|
68444
68791
|
assistantPanel,
|
|
@@ -68517,7 +68864,7 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
|
|
|
68517
68864
|
}
|
|
68518
68865
|
//#endregion
|
|
68519
68866
|
//#region ../preview-next/src/client/preview/PreviewShell.tsx
|
|
68520
|
-
function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl = null, surfaceId, theme, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonPersonalityId = null, runtimePaletteState, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime = defaultPreviewThemeRuntime, designEditorEligibility, hideSiteStyleConfigurator = false, baseFetch }) {
|
|
68867
|
+
function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl = null, surfaceId, theme, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonPersonalityId = null, runtimePaletteState, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime = defaultPreviewThemeRuntime, designEditorEligibility, hideSiteStyleConfigurator = false, baseFetch, onFooterSaved }) {
|
|
68521
68868
|
const apiClient = useMemo(() => createBearerAPIClient(previewToken, apiBaseUrl), [previewToken, apiBaseUrl]);
|
|
68522
68869
|
const resolvedDesignEditorEligibility = designEditorEligibility ?? defaultDesignEditorEligibility({
|
|
68523
68870
|
pageId,
|
|
@@ -68592,6 +68939,7 @@ function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug,
|
|
|
68592
68939
|
bookingOfferingPresets,
|
|
68593
68940
|
themeRuntime,
|
|
68594
68941
|
siteStyleAccess,
|
|
68942
|
+
onFooterSaved,
|
|
68595
68943
|
children
|
|
68596
68944
|
})]
|
|
68597
68945
|
})
|
|
@@ -69105,6 +69453,12 @@ function normalizeTextChildren(input) {
|
|
|
69105
69453
|
if (Array.isArray(input)) return input.map((item) => normalizeTextChildren(item)).join("");
|
|
69106
69454
|
return "";
|
|
69107
69455
|
}
|
|
69456
|
+
function renderPreviewRichTextToolbarHost(toolbar) {
|
|
69457
|
+
return /* @__PURE__ */ jsx(PreviewChromeFloatingBar, {
|
|
69458
|
+
anchorSelector: "[data-rb-preview-richtext-editor]",
|
|
69459
|
+
children: toolbar
|
|
69460
|
+
});
|
|
69461
|
+
}
|
|
69108
69462
|
const RichTextWithEditor = ({ value, path, linkedEntryField, ...rest }) => {
|
|
69109
69463
|
const { isEditingMode } = useEditor();
|
|
69110
69464
|
if (isEditingMode && (path || linkedEntryField)) return /* @__PURE__ */ jsx(PreviewRichTextEditor, {
|
|
@@ -69113,6 +69467,7 @@ const RichTextWithEditor = ({ value, path, linkedEntryField, ...rest }) => {
|
|
|
69113
69467
|
linkedEntryField,
|
|
69114
69468
|
onLinkedEntryFieldFocus: dispatchLinkedEntryFieldFocusEvent,
|
|
69115
69469
|
onBlockFieldFocus: dispatchBlockFieldFocusEventFromPath,
|
|
69470
|
+
renderToolbarHost: renderPreviewRichTextToolbarHost,
|
|
69116
69471
|
doc: value
|
|
69117
69472
|
});
|
|
69118
69473
|
return /* @__PURE__ */ jsx(RichText, {
|
|
@@ -69715,30 +70070,81 @@ function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
|
|
|
69715
70070
|
})(event);
|
|
69716
70071
|
}
|
|
69717
70072
|
});
|
|
69718
|
-
const renderGradientOptions = () => capability.gradientIds?.length ? /* @__PURE__ */ jsxs("div", { children: [
|
|
69719
|
-
|
|
69720
|
-
|
|
69721
|
-
|
|
69722
|
-
|
|
69723
|
-
|
|
69724
|
-
|
|
69725
|
-
|
|
69726
|
-
|
|
69727
|
-
|
|
69728
|
-
|
|
69729
|
-
|
|
69730
|
-
|
|
69731
|
-
|
|
70073
|
+
const renderGradientOptions = () => capability.gradientIds?.length ? /* @__PURE__ */ jsxs("div", { children: [
|
|
70074
|
+
/* @__PURE__ */ jsx("div", {
|
|
70075
|
+
className: "mb-1 text-xs font-medium text-muted-foreground",
|
|
70076
|
+
children: "Gradients"
|
|
70077
|
+
}),
|
|
70078
|
+
/* @__PURE__ */ jsx("p", {
|
|
70079
|
+
className: "mb-2 text-[11px] leading-4 text-muted-foreground",
|
|
70080
|
+
children: "Curated presets use this site's colours. The full section preview shows the final result."
|
|
70081
|
+
}),
|
|
70082
|
+
/* @__PURE__ */ jsx("div", {
|
|
70083
|
+
className: "grid grid-cols-2 gap-2",
|
|
70084
|
+
children: capability.gradientIds.map((gradientId) => {
|
|
70085
|
+
const preset = getGradientPreset(gradientId);
|
|
70086
|
+
const kindLabel = gradientKindLabel(preset);
|
|
70087
|
+
const selected = current.kind === "gradient" && current.gradientId === gradientId;
|
|
70088
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
70089
|
+
type: "button",
|
|
70090
|
+
"aria-label": `Choose ${preset.name}, ${kindLabel}`,
|
|
70091
|
+
"aria-pressed": selected,
|
|
70092
|
+
className: `overflow-hidden rounded-md border text-left text-xs transition hover:border-muted-foreground ${selected ? "border-foreground ring-1 ring-foreground" : "bg-background"}`,
|
|
70093
|
+
onClick: chooseFromClick({
|
|
70094
|
+
kind: "gradient",
|
|
70095
|
+
gradientId
|
|
70096
|
+
}),
|
|
70097
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
70098
|
+
"aria-hidden": "true",
|
|
70099
|
+
className: "block h-14 w-full border-b",
|
|
70100
|
+
style: { backgroundImage: gradientPreviewCss(gradientId) }
|
|
70101
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
70102
|
+
className: "relative block min-w-0 px-2 py-1.5",
|
|
70103
|
+
children: [
|
|
70104
|
+
/* @__PURE__ */ jsx("span", {
|
|
70105
|
+
className: "block truncate font-medium",
|
|
70106
|
+
children: preset.name
|
|
70107
|
+
}),
|
|
70108
|
+
/* @__PURE__ */ jsx("span", {
|
|
70109
|
+
className: "block text-[10px] text-muted-foreground",
|
|
70110
|
+
children: kindLabel
|
|
70111
|
+
}),
|
|
70112
|
+
selected ? /* @__PURE__ */ jsx("span", {
|
|
70113
|
+
"aria-hidden": "true",
|
|
70114
|
+
className: "absolute right-2 top-1.5 grid h-4 w-4 place-items-center rounded-full bg-foreground text-[10px] text-background",
|
|
70115
|
+
children: "✓"
|
|
70116
|
+
}) : null
|
|
70117
|
+
]
|
|
70118
|
+
})]
|
|
70119
|
+
}, gradientId);
|
|
70120
|
+
})
|
|
70121
|
+
}),
|
|
70122
|
+
current.kind === "gradient" ? /* @__PURE__ */ jsxs("div", {
|
|
70123
|
+
className: "mt-2 flex items-center justify-between gap-2 border-t pt-2",
|
|
70124
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
70125
|
+
className: "flex min-w-0 items-center gap-2",
|
|
69732
70126
|
children: [/* @__PURE__ */ jsx("span", {
|
|
69733
|
-
|
|
69734
|
-
|
|
69735
|
-
|
|
69736
|
-
|
|
69737
|
-
|
|
70127
|
+
"aria-hidden": "true",
|
|
70128
|
+
className: "h-7 w-10 shrink-0 rounded border",
|
|
70129
|
+
style: { backgroundImage: gradientPreviewCss(current.gradientId) }
|
|
70130
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
70131
|
+
className: "min-w-0",
|
|
70132
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
70133
|
+
className: "block truncate text-xs font-medium",
|
|
70134
|
+
children: gradientLabel(current.gradientId)
|
|
70135
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
70136
|
+
className: "block text-[10px] text-muted-foreground",
|
|
70137
|
+
children: "Selected for this section"
|
|
70138
|
+
})]
|
|
69738
70139
|
})]
|
|
69739
|
-
})
|
|
69740
|
-
|
|
69741
|
-
|
|
70140
|
+
}), capability.modes.includes("default") ? /* @__PURE__ */ jsx("button", {
|
|
70141
|
+
type: "button",
|
|
70142
|
+
className: "shrink-0 rounded px-1.5 py-1 text-xs font-medium hover:bg-muted",
|
|
70143
|
+
onClick: chooseFromClick(defaultBackgroundOverrideForMode("default", capability)),
|
|
70144
|
+
children: "Use default"
|
|
70145
|
+
}) : null]
|
|
70146
|
+
}) : null
|
|
70147
|
+
] }) : null;
|
|
69742
70148
|
const renderImageOptions = () => capability.modes.includes("image") ? /* @__PURE__ */ jsxs("div", { children: [
|
|
69743
70149
|
/* @__PURE__ */ jsx("div", {
|
|
69744
70150
|
className: "mb-1 text-xs font-medium text-muted-foreground",
|
|
@@ -69970,7 +70376,15 @@ function backgroundModeLabel(mode) {
|
|
|
69970
70376
|
return mode === "default" ? "Default" : formatVariantLabel(mode);
|
|
69971
70377
|
}
|
|
69972
70378
|
function gradientLabel(gradientId) {
|
|
69973
|
-
return
|
|
70379
|
+
return getGradientPreset(gradientId).name;
|
|
70380
|
+
}
|
|
70381
|
+
function gradientKindLabel(preset) {
|
|
70382
|
+
switch (preset.type) {
|
|
70383
|
+
case "linear": return "Linear";
|
|
70384
|
+
case "radial": return "Radial · top";
|
|
70385
|
+
case "conic": return "Conic";
|
|
70386
|
+
default: return assertNever$6(preset.type, "Unhandled gradient preset type");
|
|
70387
|
+
}
|
|
69974
70388
|
}
|
|
69975
70389
|
function imageSourceLabel(source) {
|
|
69976
70390
|
switch (source) {
|
|
@@ -69984,8 +70398,7 @@ function tokenSwatchCss(token) {
|
|
|
69984
70398
|
return `rgb(var(--tb-${token}))`;
|
|
69985
70399
|
}
|
|
69986
70400
|
function gradientPreviewCss(gradientId) {
|
|
69987
|
-
const preset =
|
|
69988
|
-
if (!preset) return "linear-gradient(135deg, rgb(var(--tb-primary)), rgb(var(--tb-secondary)))";
|
|
70401
|
+
const preset = getGradientPreset(gradientId);
|
|
69989
70402
|
return gradientToCss(preset, Object.fromEntries(preset.stops.map((stop) => [stop.color, tokenSwatchCss(stop.color)])));
|
|
69990
70403
|
}
|
|
69991
70404
|
function readBackgroundColorPaletteSnapshot() {
|