@riverbankcms/sdk 0.78.2 → 0.79.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 +80 -0
- package/dist/{PreviewEditorSidebar-4DXLYX2V.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +724 -47
- package/dist/{PreviewEditorUI-CS5P4N3P.mjs → PreviewEditorUI-27KJVEET.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -0
- package/dist/_dts/api/src/endpoints.d.ts +55 -0
- package/dist/_dts/api/src/index.d.ts +5 -3
- package/dist/_dts/api/src/media.d.ts +8 -1
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
- package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
- package/dist/_dts/api/src/navigation.d.ts +2 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +1 -0
- package/dist/_dts/api/src/siteIcons.d.ts +128 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +16 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/api/src/webhooks.d.ts +239 -0
- package/dist/_dts/blocks/src/index.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +22 -22
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
- package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
- package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
- package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
- package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
- package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
- package/dist/_dts/blocks/src/system/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
- package/dist/_dts/core/src/branded.d.ts +6 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +191 -0
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
- package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
- package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -2
- package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
- package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +2 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
- package/dist/_dts/sdk/src/next/index.d.ts +1 -1
- package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
- package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
- package/dist/_dts/site-commands/src/commands.d.ts +3 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
- package/dist/_dts/theme-core/src/schema.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
- package/dist/_dts/ui/src/combobox.d.ts +1 -0
- package/dist/{chunk-RGTOD4AJ.mjs → chunk-4HCW7FHJ.mjs} +491 -56
- package/dist/{chunk-OKMBEAXY.mjs → chunk-A3HHFKVT.mjs} +1 -1
- package/dist/{chunk-6HYXHRAI.mjs → chunk-GP555I66.mjs} +177 -7
- package/dist/{chunk-CR5HKAGU.mjs → chunk-K2IIF34C.mjs} +55 -0
- package/dist/{chunk-4QEGTLK6.mjs → chunk-LCY32PXF.mjs} +1 -1
- package/dist/{chunk-MCRQMPET.mjs → chunk-V47ZU33I.mjs} +1745 -157
- package/dist/cli/index.mjs +1169 -171
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
- package/dist/client/{accordion-PLYNJIIM.mjs → accordion-QLA7KBYO.mjs} +1 -1
- package/dist/client/{bookingForm-BXAP6AO7.mjs → bookingForm-PYZIPA5G.mjs} +3 -3
- package/dist/client/bookings.mjs +110 -2
- package/dist/client/{carousel-TRBXDHGF.mjs → carousel-5EIULWBI.mjs} +2 -2
- package/dist/client/{cart-Z7H3HJRS.mjs → cart-DOP3FNI4.mjs} +5 -5
- package/dist/client/{checkout-WAFCUBIX.mjs → checkout-BVMF6FBV.mjs} +5 -5
- package/dist/client/{chunk-JRDUHZCT.mjs → chunk-44K2U3QI.mjs} +4 -4
- package/dist/client/{chunk-UVQEJJTN.mjs → chunk-CCNTDRCF.mjs} +1 -1
- package/dist/client/{chunk-ZI3LLBPZ.mjs → chunk-GG4M2NP6.mjs} +1 -1
- package/dist/client/{chunk-JGXPTEI2.mjs → chunk-R5ESWNKX.mjs} +6 -3
- package/dist/client/{chunk-CWGTG37I.mjs → chunk-TYONZMST.mjs} +1 -1
- package/dist/client/{chunk-75OUS5MT.mjs → chunk-UDS3NTWA.mjs} +1 -1
- package/dist/client/{chunk-DNRGY432.mjs → chunk-V6M5FCR5.mjs} +1 -1
- package/dist/client/{chunk-FUXW6VW2.mjs → chunk-YLDYVRZL.mjs} +4 -4
- package/dist/client/client.mjs +21329 -19729
- package/dist/client/{courseRegistration-AHFQHWIJ.mjs → courseRegistration-E6EAA6NL.mjs} +3 -3
- package/dist/client/{eventCalendar-LDXTV5R7.mjs → eventCalendar-HBG3HAK6.mjs} +5 -5
- package/dist/client/{eventCombined-A4JGTNJO.mjs → eventCombined-6K5ZZWAK.mjs} +5 -5
- package/dist/client/{eventDetails-4YXTZ7EG.mjs → eventDetails-Q75ICXLT.mjs} +5 -5
- package/dist/client/{eventListing-P72TPFFM.mjs → eventListing-27P5F7DZ.mjs} +5 -5
- package/dist/client/{eventRegistration-LSYJHGMT.mjs → eventRegistration-IQ7AMASR.mjs} +5 -5
- package/dist/client/{form-AOPYOKOW.mjs → form-JRTD65FN.mjs} +1 -1
- package/dist/client/{headerSection-5TFYDFVQ.mjs → headerSection-7FPSSZHS.mjs} +2 -2
- package/dist/client/hooks.mjs +350 -35
- package/dist/client/{locationMap-QSZ3ZVAZ.mjs → locationMap-7NGFNYBH.mjs} +1 -1
- package/dist/client/{newsletterForm-KTRHZY52.mjs → newsletterForm-F3BADCI2.mjs} +1 -1
- package/dist/client/{productDetail-N4E775RG.mjs → productDetail-V3HP7ITJ.mjs} +5 -5
- package/dist/client/{productList-UGUQ2S45.mjs → productList-L3EGJUF2.mjs} +5 -5
- package/dist/client/rendering/client.mjs +2713 -1382
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +2014 -414
- package/dist/client/{shop-VHSZEEQ2.mjs → shop-DQUB5E2C.mjs} +5 -5
- package/dist/preview-next/before-render.mjs +55 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +55 -0
- package/dist/{sdk-runtime-WHPJEF5G.mjs → sdk-runtime-AF6KXJU4.mjs} +6 -6
- package/dist/server/components.mjs +2169 -781
- package/dist/server/config-validation.mjs +350 -35
- package/dist/server/config.mjs +350 -35
- package/dist/server/data.mjs +350 -35
- package/dist/server/index.mjs +64 -1
- package/dist/server/next/revalidate.mjs +229 -34
- package/dist/server/next.mjs +2307 -818
- package/dist/server/page-converter.mjs +275 -34
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2174 -786
- package/dist/server/rendering.mjs +2187 -799
- package/dist/server/routing.mjs +767 -50
- package/dist/server/server.mjs +351 -36
- package/dist/server/theme-bridge.mjs +164 -2
- package/dist/server/theme.mjs +2 -2
- package/dist/server/webhooks.mjs +129 -25
- package/dist/styles/index.css +55 -0
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +0 -8
|
@@ -146,7 +146,7 @@ var themeColorBaseTokenNames = [
|
|
|
146
146
|
"accentForeground"
|
|
147
147
|
];
|
|
148
148
|
var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
149
|
-
var
|
|
149
|
+
var themeColorShadeSteps = [
|
|
150
150
|
"50",
|
|
151
151
|
"100",
|
|
152
152
|
"200",
|
|
@@ -159,7 +159,7 @@ var SHADE_STEPS = [
|
|
|
159
159
|
"900",
|
|
160
160
|
"950"
|
|
161
161
|
];
|
|
162
|
-
var shadeStepSet = new Set(
|
|
162
|
+
var shadeStepSet = new Set(themeColorShadeSteps);
|
|
163
163
|
function isKnownBaseToken(value) {
|
|
164
164
|
return themeColorBaseTokenSet.has(value);
|
|
165
165
|
}
|
|
@@ -4718,6 +4718,114 @@ var curatedSiteStyles = [
|
|
|
4718
4718
|
paletteChoice("warm-neutral-clay")
|
|
4719
4719
|
]
|
|
4720
4720
|
}),
|
|
4721
|
+
defineCuratedSiteStyle({
|
|
4722
|
+
id: "site-style:clarity-zen-blue",
|
|
4723
|
+
name: "Clarity Zen",
|
|
4724
|
+
description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
|
|
4725
|
+
generationBrief: "Use a calm, soft palette, editorial serif headings, warm grounded copy, rounded cards, calm proof sections, and clear booking routes. Keep the tone compassionate and straightforward, with professional trust rather than hard-sell wellness language.",
|
|
4726
|
+
siteCreatorSelection: {
|
|
4727
|
+
kind: "site_creator_keyword_heuristic",
|
|
4728
|
+
priority: 25
|
|
4729
|
+
},
|
|
4730
|
+
selectionKeywordRules: [
|
|
4731
|
+
{ kind: "substring", value: "psychotherap" },
|
|
4732
|
+
{ kind: "phrase", value: "mental health" },
|
|
4733
|
+
{ kind: "phrase", value: "talk therapy" },
|
|
4734
|
+
{ kind: "phrase", value: "therapy and wellbeing" }
|
|
4735
|
+
],
|
|
4736
|
+
tokenRecipes: {
|
|
4737
|
+
palette: "brand-led",
|
|
4738
|
+
contrast: "standard",
|
|
4739
|
+
radius: "rounded",
|
|
4740
|
+
shadow: "subtle",
|
|
4741
|
+
typography: "serif-editorial",
|
|
4742
|
+
spacing: "airy",
|
|
4743
|
+
motion: "subtle"
|
|
4744
|
+
},
|
|
4745
|
+
compositionBudget: balancedBudget,
|
|
4746
|
+
themeOverrides: {
|
|
4747
|
+
typography: {
|
|
4748
|
+
body: {
|
|
4749
|
+
family: "Inter, system-ui, sans-serif",
|
|
4750
|
+
size: "md",
|
|
4751
|
+
weight: "regular",
|
|
4752
|
+
lineHeight: "relaxed",
|
|
4753
|
+
letterSpacing: "normal"
|
|
4754
|
+
},
|
|
4755
|
+
headings: {
|
|
4756
|
+
default: {
|
|
4757
|
+
family: '"Cormorant Garamond", Georgia, serif',
|
|
4758
|
+
weight: "regular",
|
|
4759
|
+
lineHeight: "normal",
|
|
4760
|
+
letterSpacing: "normal",
|
|
4761
|
+
colorToken: "text",
|
|
4762
|
+
italic: null,
|
|
4763
|
+
case: null
|
|
4764
|
+
},
|
|
4765
|
+
h1: {
|
|
4766
|
+
size: "xl",
|
|
4767
|
+
weight: "regular",
|
|
4768
|
+
lineHeight: "normal",
|
|
4769
|
+
letterSpacing: "normal",
|
|
4770
|
+
italic: null
|
|
4771
|
+
},
|
|
4772
|
+
h2: {
|
|
4773
|
+
size: "lg",
|
|
4774
|
+
weight: "regular",
|
|
4775
|
+
lineHeight: "normal",
|
|
4776
|
+
letterSpacing: "normal",
|
|
4777
|
+
italic: null
|
|
4778
|
+
},
|
|
4779
|
+
h3: {
|
|
4780
|
+
size: "md",
|
|
4781
|
+
weight: "regular",
|
|
4782
|
+
lineHeight: "normal",
|
|
4783
|
+
letterSpacing: "normal",
|
|
4784
|
+
italic: null
|
|
4785
|
+
}
|
|
4786
|
+
},
|
|
4787
|
+
scale: "majorThird"
|
|
4788
|
+
},
|
|
4789
|
+
bodyText: {
|
|
4790
|
+
intro: {
|
|
4791
|
+
paragraphSize: "default",
|
|
4792
|
+
headingSize: "editorial"
|
|
4793
|
+
}
|
|
4794
|
+
}
|
|
4795
|
+
},
|
|
4796
|
+
defaultBlockVariants: {
|
|
4797
|
+
"block.faq": "split-heading-columns"
|
|
4798
|
+
},
|
|
4799
|
+
recommendedAppearancePresetIds: [
|
|
4800
|
+
"hero-split-editorial",
|
|
4801
|
+
"intro-organic-statement",
|
|
4802
|
+
"feature-cards-raised-rule",
|
|
4803
|
+
"media-text-quiet-story",
|
|
4804
|
+
"testimonials-brand-background-quotes",
|
|
4805
|
+
"faq-contained-help",
|
|
4806
|
+
"contact-form-panel"
|
|
4807
|
+
],
|
|
4808
|
+
recommendedHeaderLookIds: [
|
|
4809
|
+
"centered-calm",
|
|
4810
|
+
"serif-line",
|
|
4811
|
+
"minimal-transparent"
|
|
4812
|
+
],
|
|
4813
|
+
recommendedFooterLookIds: [
|
|
4814
|
+
"footer-muted-grounding",
|
|
4815
|
+
"site-footer-brand-two-band"
|
|
4816
|
+
],
|
|
4817
|
+
buttonPersonalityChoices: [
|
|
4818
|
+
buttonChoice("soft-pill"),
|
|
4819
|
+
buttonChoice("pebble"),
|
|
4820
|
+
buttonChoice("editorial-link")
|
|
4821
|
+
],
|
|
4822
|
+
paletteVariantChoices: [
|
|
4823
|
+
paletteChoice("brand-led-cool"),
|
|
4824
|
+
paletteChoice("soft-natural-watercolor"),
|
|
4825
|
+
paletteChoice("soft-natural-stone"),
|
|
4826
|
+
paletteChoice("warm-neutral-cream")
|
|
4827
|
+
]
|
|
4828
|
+
}),
|
|
4721
4829
|
defineCuratedSiteStyle({
|
|
4722
4830
|
id: "site-style:personal-retreat-journal",
|
|
4723
4831
|
name: "Personal Retreat Journal",
|
|
@@ -15396,6 +15504,60 @@ var containerResponsiveThemeCss = `/*
|
|
|
15396
15504
|
|
|
15397
15505
|
:where(.theme-scope) .rb-heading-decoration-color-muted {
|
|
15398
15506
|
color: rgb(var(--tb-mutedText));
|
|
15507
|
+
}
|
|
15508
|
+
|
|
15509
|
+
/* =============================================================================
|
|
15510
|
+
* Block: Feature Card Icons
|
|
15511
|
+
* =============================================================================
|
|
15512
|
+
*/
|
|
15513
|
+
|
|
15514
|
+
:where(.theme-scope) .rb-feature-card-icon-zone {
|
|
15515
|
+
display: inline-flex;
|
|
15516
|
+
align-items: center;
|
|
15517
|
+
justify-content: center;
|
|
15518
|
+
flex: 0 0 auto;
|
|
15519
|
+
margin-bottom: 0.125rem;
|
|
15520
|
+
color: rgb(var(--tb-primary));
|
|
15521
|
+
}
|
|
15522
|
+
|
|
15523
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--empty {
|
|
15524
|
+
visibility: hidden;
|
|
15525
|
+
}
|
|
15526
|
+
|
|
15527
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--plain {
|
|
15528
|
+
width: 1.5rem;
|
|
15529
|
+
height: 1.5rem;
|
|
15530
|
+
}
|
|
15531
|
+
|
|
15532
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--soft-badge,
|
|
15533
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
|
|
15534
|
+
width: 2.5rem;
|
|
15535
|
+
height: 2.5rem;
|
|
15536
|
+
border-radius: var(--rb-block-radius, 0.75rem);
|
|
15537
|
+
}
|
|
15538
|
+
|
|
15539
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--soft-badge {
|
|
15540
|
+
background-color: rgb(var(--tb-primary) / 10%);
|
|
15541
|
+
}
|
|
15542
|
+
|
|
15543
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
|
|
15544
|
+
background-color: rgb(var(--tb-surface));
|
|
15545
|
+
border: 1px solid rgb(var(--tb-border));
|
|
15546
|
+
box-shadow: 0 1px 2px rgba(var(--tb-shadow), 0.08);
|
|
15547
|
+
}
|
|
15548
|
+
|
|
15549
|
+
:where(.theme-scope) .rb-feature-card-icon {
|
|
15550
|
+
width: 1.25rem;
|
|
15551
|
+
height: 1.25rem;
|
|
15552
|
+
}
|
|
15553
|
+
|
|
15554
|
+
:where(.theme-scope) .rb-feature-card-icon--generated {
|
|
15555
|
+
object-fit: contain;
|
|
15556
|
+
}
|
|
15557
|
+
|
|
15558
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
|
|
15559
|
+
width: 1.5rem;
|
|
15560
|
+
height: 1.5rem;
|
|
15399
15561
|
}`;
|
|
15400
15562
|
|
|
15401
15563
|
// ../theme-core/src/ThemeScopeCore.tsx
|
package/dist/server/theme.mjs
CHANGED
|
@@ -174,7 +174,7 @@ var themeColorBaseTokenNames = [
|
|
|
174
174
|
"accentForeground"
|
|
175
175
|
];
|
|
176
176
|
var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
177
|
-
var
|
|
177
|
+
var themeColorShadeSteps = [
|
|
178
178
|
"50",
|
|
179
179
|
"100",
|
|
180
180
|
"200",
|
|
@@ -187,7 +187,7 @@ var SHADE_STEPS = [
|
|
|
187
187
|
"900",
|
|
188
188
|
"950"
|
|
189
189
|
];
|
|
190
|
-
var shadeStepSet = new Set(
|
|
190
|
+
var shadeStepSet = new Set(themeColorShadeSteps);
|
|
191
191
|
function isKnownBaseToken(value) {
|
|
192
192
|
return themeColorBaseTokenSet.has(value);
|
|
193
193
|
}
|
package/dist/server/webhooks.mjs
CHANGED
|
@@ -1,53 +1,151 @@
|
|
|
1
1
|
// src/webhooks/verify.ts
|
|
2
2
|
import crypto from "crypto";
|
|
3
|
+
|
|
4
|
+
// ../api/src/webhooks.ts
|
|
3
5
|
import { z } from "zod";
|
|
4
|
-
var
|
|
6
|
+
var RIVERBANK_SIGNATURE_PREFIX = "sha256=";
|
|
7
|
+
var SUPPORTED_WEBHOOK_EVENTS = [
|
|
5
8
|
"page.published",
|
|
9
|
+
"page.unpublished",
|
|
10
|
+
"page.deleted",
|
|
11
|
+
"page.path_changed",
|
|
6
12
|
"entry.published",
|
|
13
|
+
"entry.unpublished",
|
|
14
|
+
"entry.deleted",
|
|
15
|
+
"entry.path_changed",
|
|
7
16
|
"navigation.updated",
|
|
8
17
|
"theme.updated",
|
|
9
18
|
"site.settings_updated"
|
|
10
|
-
]
|
|
19
|
+
];
|
|
20
|
+
var WebhookEventSchema = z.enum(SUPPORTED_WEBHOOK_EVENTS);
|
|
21
|
+
function asRevalidationPath(path) {
|
|
22
|
+
return path;
|
|
23
|
+
}
|
|
24
|
+
function parseRevalidationPath(input) {
|
|
25
|
+
const trimmed = input.trim();
|
|
26
|
+
if (!trimmed) {
|
|
27
|
+
return { success: false, error: { tag: "EMPTY_PATH", input } };
|
|
28
|
+
}
|
|
29
|
+
if (/^[a-z][a-z\d+.-]*:/i.test(trimmed) || trimmed.startsWith("//") || !trimmed.startsWith("/")) {
|
|
30
|
+
return { success: false, error: { tag: "ABSOLUTE_OR_PROTOCOL_PATH", input } };
|
|
31
|
+
}
|
|
32
|
+
if (/[\u0000-\u001F\u007F]/.test(trimmed) || trimmed.includes("\\") || trimmed.includes("?") || trimmed.includes("#")) {
|
|
33
|
+
return { success: false, error: { tag: "MALFORMED_PATH", input } };
|
|
34
|
+
}
|
|
35
|
+
const collapsed = trimmed.replace(/\/{2,}/g, "/");
|
|
36
|
+
const normalized = collapsed === "/" ? "/" : collapsed.replace(/\/+$/g, "");
|
|
37
|
+
return { success: true, path: asRevalidationPath(normalized) };
|
|
38
|
+
}
|
|
39
|
+
function normalizeRevalidationPath(input) {
|
|
40
|
+
const result = parseRevalidationPath(input);
|
|
41
|
+
return result.success ? result.path : null;
|
|
42
|
+
}
|
|
43
|
+
function unwrapRevalidationPath(path) {
|
|
44
|
+
return path;
|
|
45
|
+
}
|
|
11
46
|
var PagePublishedDataSchema = z.object({
|
|
12
47
|
pageId: z.string(),
|
|
13
48
|
path: z.string(),
|
|
14
49
|
slug: z.string().optional()
|
|
15
|
-
});
|
|
50
|
+
}).strict();
|
|
51
|
+
var PageRemovedDataSchema = z.object({
|
|
52
|
+
pageId: z.string(),
|
|
53
|
+
path: z.string(),
|
|
54
|
+
slug: z.string().optional()
|
|
55
|
+
}).strict();
|
|
56
|
+
var PagePathChangedDataSchema = z.object({
|
|
57
|
+
pageId: z.string(),
|
|
58
|
+
previousPath: z.string(),
|
|
59
|
+
path: z.string(),
|
|
60
|
+
slug: z.string().optional()
|
|
61
|
+
}).strict();
|
|
16
62
|
var EntryPublishedDataSchema = z.object({
|
|
17
63
|
entryId: z.string(),
|
|
18
64
|
path: z.string(),
|
|
19
65
|
contentType: z.string()
|
|
20
|
-
});
|
|
66
|
+
}).strict();
|
|
67
|
+
var EntryRemovedDataSchema = z.object({
|
|
68
|
+
entryId: z.string(),
|
|
69
|
+
path: z.string(),
|
|
70
|
+
contentType: z.string()
|
|
71
|
+
}).strict();
|
|
72
|
+
var EntryPathChangedDataSchema = z.object({
|
|
73
|
+
entryId: z.string(),
|
|
74
|
+
previousPath: z.string(),
|
|
75
|
+
path: z.string(),
|
|
76
|
+
contentType: z.string()
|
|
77
|
+
}).strict();
|
|
21
78
|
var NavigationUpdatedDataSchema = z.object({
|
|
22
79
|
menuId: z.string().optional()
|
|
23
|
-
});
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
PagePublishedDataSchema,
|
|
27
|
-
EntryPublishedDataSchema,
|
|
28
|
-
NavigationUpdatedDataSchema,
|
|
29
|
-
EmptyDataSchema
|
|
30
|
-
]);
|
|
31
|
-
var WebhookPayloadSchema = z.object({
|
|
32
|
-
/** Event type */
|
|
33
|
-
event: WebhookEventSchema,
|
|
34
|
-
/** ISO timestamp of when the event occurred */
|
|
80
|
+
}).strict();
|
|
81
|
+
var EmptyWebhookDataSchema = z.object({}).strict();
|
|
82
|
+
var WebhookPayloadBaseSchema = z.object({
|
|
35
83
|
timestamp: z.string(),
|
|
36
|
-
|
|
84
|
+
dispatchId: z.string().optional(),
|
|
37
85
|
siteId: z.string(),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/** Cache invalidation tags (for tag-based revalidation) */
|
|
41
|
-
tags: z.array(z.string()).optional()
|
|
86
|
+
tags: z.array(z.string()).optional(),
|
|
87
|
+
paths: z.array(z.string()).optional()
|
|
42
88
|
});
|
|
89
|
+
var WebhookPayloadSchema = z.discriminatedUnion("event", [
|
|
90
|
+
WebhookPayloadBaseSchema.extend({
|
|
91
|
+
event: z.literal("page.published"),
|
|
92
|
+
data: PagePublishedDataSchema
|
|
93
|
+
}),
|
|
94
|
+
WebhookPayloadBaseSchema.extend({
|
|
95
|
+
event: z.literal("page.unpublished"),
|
|
96
|
+
data: PageRemovedDataSchema
|
|
97
|
+
}),
|
|
98
|
+
WebhookPayloadBaseSchema.extend({
|
|
99
|
+
event: z.literal("page.deleted"),
|
|
100
|
+
data: PageRemovedDataSchema
|
|
101
|
+
}),
|
|
102
|
+
WebhookPayloadBaseSchema.extend({
|
|
103
|
+
event: z.literal("page.path_changed"),
|
|
104
|
+
data: PagePathChangedDataSchema
|
|
105
|
+
}),
|
|
106
|
+
WebhookPayloadBaseSchema.extend({
|
|
107
|
+
event: z.literal("entry.published"),
|
|
108
|
+
data: EntryPublishedDataSchema
|
|
109
|
+
}),
|
|
110
|
+
WebhookPayloadBaseSchema.extend({
|
|
111
|
+
event: z.literal("entry.unpublished"),
|
|
112
|
+
data: EntryRemovedDataSchema
|
|
113
|
+
}),
|
|
114
|
+
WebhookPayloadBaseSchema.extend({
|
|
115
|
+
event: z.literal("entry.deleted"),
|
|
116
|
+
data: EntryRemovedDataSchema
|
|
117
|
+
}),
|
|
118
|
+
WebhookPayloadBaseSchema.extend({
|
|
119
|
+
event: z.literal("entry.path_changed"),
|
|
120
|
+
data: EntryPathChangedDataSchema
|
|
121
|
+
}),
|
|
122
|
+
WebhookPayloadBaseSchema.extend({
|
|
123
|
+
event: z.literal("navigation.updated"),
|
|
124
|
+
data: NavigationUpdatedDataSchema
|
|
125
|
+
}),
|
|
126
|
+
WebhookPayloadBaseSchema.extend({
|
|
127
|
+
event: z.literal("theme.updated"),
|
|
128
|
+
data: EmptyWebhookDataSchema
|
|
129
|
+
}),
|
|
130
|
+
WebhookPayloadBaseSchema.extend({
|
|
131
|
+
event: z.literal("site.settings_updated"),
|
|
132
|
+
data: EmptyWebhookDataSchema
|
|
133
|
+
})
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
// src/webhooks/verify.ts
|
|
43
137
|
function verifyWebhookSignature(payload, signature, secret) {
|
|
44
|
-
|
|
45
|
-
if (signature.length !== expectedSignature.length) {
|
|
138
|
+
if (!signature.startsWith(RIVERBANK_SIGNATURE_PREFIX)) {
|
|
46
139
|
return false;
|
|
47
140
|
}
|
|
141
|
+
const signatureDigest = signature.slice(RIVERBANK_SIGNATURE_PREFIX.length);
|
|
142
|
+
if (!/^[a-f0-9]{64}$/.test(signatureDigest)) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
const expectedSignature = crypto.createHmac("sha256", secret).update(payload).digest("hex");
|
|
48
146
|
return crypto.timingSafeEqual(
|
|
49
|
-
Buffer.from(
|
|
50
|
-
Buffer.from(expectedSignature)
|
|
147
|
+
Buffer.from(signatureDigest, "hex"),
|
|
148
|
+
Buffer.from(expectedSignature, "hex")
|
|
51
149
|
);
|
|
52
150
|
}
|
|
53
151
|
function parseWebhookPayload(body) {
|
|
@@ -64,7 +162,13 @@ function parseWebhookPayload(body) {
|
|
|
64
162
|
return { success: true, payload: result.data };
|
|
65
163
|
}
|
|
66
164
|
export {
|
|
165
|
+
RIVERBANK_SIGNATURE_PREFIX,
|
|
166
|
+
SUPPORTED_WEBHOOK_EVENTS,
|
|
167
|
+
WebhookEventSchema,
|
|
67
168
|
WebhookPayloadSchema,
|
|
169
|
+
normalizeRevalidationPath,
|
|
170
|
+
parseRevalidationPath,
|
|
68
171
|
parseWebhookPayload,
|
|
172
|
+
unwrapRevalidationPath,
|
|
69
173
|
verifyWebhookSignature
|
|
70
174
|
};
|
package/dist/styles/index.css
CHANGED
|
@@ -9432,3 +9432,58 @@
|
|
|
9432
9432
|
}
|
|
9433
9433
|
|
|
9434
9434
|
|
|
9435
|
+
/* =============================================================================
|
|
9436
|
+
* Block: Feature Card Icons
|
|
9437
|
+
* =============================================================================
|
|
9438
|
+
*/
|
|
9439
|
+
|
|
9440
|
+
:where(.theme-scope) .rb-feature-card-icon-zone {
|
|
9441
|
+
display: inline-flex;
|
|
9442
|
+
align-items: center;
|
|
9443
|
+
justify-content: center;
|
|
9444
|
+
flex: 0 0 auto;
|
|
9445
|
+
margin-bottom: 0.125rem;
|
|
9446
|
+
color: rgb(var(--tb-primary));
|
|
9447
|
+
}
|
|
9448
|
+
|
|
9449
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--empty {
|
|
9450
|
+
visibility: hidden;
|
|
9451
|
+
}
|
|
9452
|
+
|
|
9453
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--plain {
|
|
9454
|
+
width: 1.5rem;
|
|
9455
|
+
height: 1.5rem;
|
|
9456
|
+
}
|
|
9457
|
+
|
|
9458
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--soft-badge,
|
|
9459
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
|
|
9460
|
+
width: 2.5rem;
|
|
9461
|
+
height: 2.5rem;
|
|
9462
|
+
border-radius: var(--rb-block-radius, 0.75rem);
|
|
9463
|
+
}
|
|
9464
|
+
|
|
9465
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--soft-badge {
|
|
9466
|
+
background-color: rgb(var(--tb-primary) / 10%);
|
|
9467
|
+
}
|
|
9468
|
+
|
|
9469
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
|
|
9470
|
+
background-color: rgb(var(--tb-surface));
|
|
9471
|
+
border: 1px solid rgb(var(--tb-border));
|
|
9472
|
+
box-shadow: 0 1px 2px rgba(var(--tb-shadow), 0.08);
|
|
9473
|
+
}
|
|
9474
|
+
|
|
9475
|
+
:where(.theme-scope) .rb-feature-card-icon {
|
|
9476
|
+
width: 1.25rem;
|
|
9477
|
+
height: 1.25rem;
|
|
9478
|
+
}
|
|
9479
|
+
|
|
9480
|
+
:where(.theme-scope) .rb-feature-card-icon--generated {
|
|
9481
|
+
object-fit: contain;
|
|
9482
|
+
}
|
|
9483
|
+
|
|
9484
|
+
:where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
|
|
9485
|
+
width: 1.5rem;
|
|
9486
|
+
height: 1.5rem;
|
|
9487
|
+
}
|
|
9488
|
+
|
|
9489
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riverbankcms/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.79.0",
|
|
4
4
|
"description": "Riverbank CMS SDK for headless content consumption",
|
|
5
5
|
"main": "./dist/server/index.mjs",
|
|
6
6
|
"module": "./dist/server/index.mjs",
|
|
@@ -234,6 +234,7 @@
|
|
|
234
234
|
"test:lazy-overrides-smoke": "node scripts/lazy-overrides-smoke.mjs",
|
|
235
235
|
"test:layout-page-hydration-smoke": "node scripts/layout-page-hydration-smoke.mjs",
|
|
236
236
|
"test:content-load-failure-status-smoke": "node scripts/content-load-failure-status-smoke.mjs",
|
|
237
|
+
"test:isr-catch-all-revalidate-smoke": "node scripts/isr-catch-all-revalidate-smoke.mjs",
|
|
237
238
|
"verify": "./verify.sh",
|
|
238
239
|
"cli": "tsx src/cli/index.ts"
|
|
239
240
|
},
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
export { SdkPreviewModeRuntime } from './chunk-RGTOD4AJ.mjs';
|
|
3
|
-
import './chunk-OKMBEAXY.mjs';
|
|
4
|
-
import './chunk-4QEGTLK6.mjs';
|
|
5
|
-
import './chunk-6HYXHRAI.mjs';
|
|
6
|
-
import './chunk-MCRQMPET.mjs';
|
|
7
|
-
import './chunk-CR5HKAGU.mjs';
|
|
8
|
-
import './chunk-R7POPVJR.mjs';
|