@riverbankcms/sdk 0.70.3 → 0.70.4

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.
Files changed (79) hide show
  1. package/dist/_dts/api/src/contentTypes.d.ts +2 -1
  2. package/dist/_dts/block-form/src/client/index.d.ts +1 -1
  3. package/dist/_dts/block-form/src/fields/types.d.ts +14 -2
  4. package/dist/_dts/block-form/src/registry/schemas.d.ts +2 -0
  5. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldDefaults.d.ts +2 -2
  6. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldSchema.d.ts +2 -2
  7. package/dist/_dts/blocks/src/lib/media.d.ts +1 -1
  8. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1829 -149
  9. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +1829 -149
  10. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1829 -149
  11. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1829 -149
  12. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +1829 -149
  13. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1 -30727
  14. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +11 -30827
  15. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1829 -149
  16. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -3
  17. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1829 -149
  18. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +106 -1
  19. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1829 -149
  20. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1829 -149
  21. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1829 -149
  22. package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -3
  23. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +2 -30793
  24. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +2 -30727
  25. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +2 -30779
  26. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +33 -30743
  27. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +2 -30770
  28. package/dist/_dts/blocks/src/system/fragments/types.d.ts +8 -7
  29. package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +7 -5
  30. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +192 -3
  32. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +1 -1
  33. package/dist/_dts/content-model/src/content-types/schema.d.ts +7 -0
  34. package/dist/_dts/content-model/src/contentManifest.d.ts +4 -1
  35. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +1 -1
  36. package/dist/_dts/core/src/index.d.ts +1 -1
  37. package/dist/_dts/core/src/planner.d.ts +4 -0
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +53 -20
  39. package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
  40. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +6 -5
  41. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +0 -1
  42. package/dist/_dts/media-editor/src/context.d.ts +4 -1
  43. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +8 -1
  44. package/dist/_dts/media-react/src/index.d.ts +1 -5
  45. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +2 -1
  46. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  47. package/dist/_dts/sdk/src/config/field-definitions.d.ts +6 -2
  48. package/dist/_dts/sdk/src/config/typed-entries.d.ts +4 -2
  49. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -1
  50. package/dist/_dts/sdk/src/manifest/prompt/examples/cta.d.ts +5 -5
  51. package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +2 -2
  52. package/dist/_dts/sdk/src/manifest/prompt/examples/hero.d.ts +2 -2
  53. package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +10 -10
  54. package/dist/_dts/sdk/src/manifest/prompt/examples/testimonials.d.ts +4 -4
  55. package/dist/_dts/sdk/src/manifest/validation/output-schema.d.ts +11 -1
  56. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  57. package/dist/_dts/sdk/src/version.d.ts +1 -1
  58. package/dist/cli/index.mjs +395 -190
  59. package/dist/cli/init-docs/content/workflow-preview-mode.md +167 -0
  60. package/dist/client/client.mjs +243 -203
  61. package/dist/client/hooks.mjs +172 -121
  62. package/dist/client/rendering/client.mjs +148 -112
  63. package/dist/client/rendering/islands.mjs +80 -31
  64. package/dist/client/rendering.mjs +242 -202
  65. package/dist/preview-next/client/runtime.mjs +386 -1135
  66. package/dist/server/components.mjs +219 -171
  67. package/dist/server/config-template-validation.mjs +31 -1
  68. package/dist/server/config-validation.mjs +172 -121
  69. package/dist/server/config.mjs +172 -121
  70. package/dist/server/data.mjs +172 -121
  71. package/dist/server/index.mjs +1 -1
  72. package/dist/server/next.mjs +220 -172
  73. package/dist/server/page-converter.mjs +379 -185
  74. package/dist/server/prebuild.mjs +1 -1
  75. package/dist/server/rendering/server.mjs +219 -171
  76. package/dist/server/rendering.mjs +219 -171
  77. package/dist/server/routing.mjs +175 -124
  78. package/dist/server/server.mjs +173 -122
  79. package/package.json +2 -1
@@ -1278,8 +1278,7 @@ var init_media = __esm({
1278
1278
  "document",
1279
1279
  "spreadsheet",
1280
1280
  "archive",
1281
- "audio",
1282
- "video"
1281
+ "audio"
1283
1282
  ];
1284
1283
  hotspotSchema = z2.object({
1285
1284
  x: z2.number().min(0).max(1),
@@ -12119,6 +12118,9 @@ var init_repeaterGrid = __esm({
12119
12118
 
12120
12119
  // ../blocks/src/system/manifest/schema.ts
12121
12120
  import { z as z29 } from "zod";
12121
+ function isDisplayMediaKind(kind) {
12122
+ return DISPLAY_MEDIA_KINDS.includes(kind);
12123
+ }
12122
12124
  function assertNeverSelectSource(value) {
12123
12125
  throw new Error(`Unhandled select source: ${JSON.stringify(value)}`);
12124
12126
  }
@@ -12130,6 +12132,7 @@ function getFieldSchemaInternal() {
12130
12132
  textFieldSchema,
12131
12133
  richTextFieldSchema,
12132
12134
  mediaFieldSchema,
12135
+ fileFieldSchema,
12133
12136
  booleanFieldSchema,
12134
12137
  numberFieldSchema,
12135
12138
  dateFieldSchema,
@@ -12196,7 +12199,7 @@ function createSdkSelectField(input) {
12196
12199
  })
12197
12200
  );
12198
12201
  }
12199
- var visibilityLevels, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, blockCategoryEnum, manifestSchema;
12202
+ var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, blockCategoryEnum, manifestSchema;
12200
12203
  var init_schema3 = __esm({
12201
12204
  "../blocks/src/system/manifest/schema.ts"() {
12202
12205
  "use strict";
@@ -12204,6 +12207,25 @@ var init_schema3 = __esm({
12204
12207
  init_node();
12205
12208
  init_repeaterGrid();
12206
12209
  visibilityLevels = ["admin", "designer", "author"];
12210
+ MEDIA_KINDS = [
12211
+ "image",
12212
+ "video",
12213
+ "audio",
12214
+ "document",
12215
+ "spreadsheet",
12216
+ "archive"
12217
+ ];
12218
+ DISPLAY_MEDIA_KINDS = [
12219
+ "image",
12220
+ "video",
12221
+ "audio"
12222
+ ];
12223
+ PUBLIC_FILE_FIELD_KINDS = [
12224
+ "document",
12225
+ "spreadsheet",
12226
+ "archive",
12227
+ "audio"
12228
+ ];
12207
12229
  siteOptionSources = [
12208
12230
  "eventCategories",
12209
12231
  "venues",
@@ -12364,11 +12386,19 @@ var init_schema3 = __esm({
12364
12386
  });
12365
12387
  mediaFieldSchema = baseFieldSchema.extend({
12366
12388
  type: z29.literal("media"),
12367
- mediaKinds: z29.array(
12368
- z29.enum(["image", "video", "audio", "document", "spreadsheet", "archive"])
12369
- ).default(["image"]),
12389
+ // Keep full MEDIA_KINDS parse compatibility for pre-file-field manifests.
12390
+ // New authoring surfaces should use `file.fileKinds` for document/archive
12391
+ // style assets, but old saved schemas must not fail to open.
12392
+ mediaKinds: z29.array(z29.enum(MEDIA_KINDS)).default(["image"]).transform((kinds) => {
12393
+ const displayKinds = kinds.filter(isDisplayMediaKind);
12394
+ return displayKinds.length > 0 ? displayKinds : ["image"];
12395
+ }),
12370
12396
  aspectRatio: z29.string().optional()
12371
12397
  });
12398
+ fileFieldSchema = baseFieldSchema.extend({
12399
+ type: z29.literal("file"),
12400
+ fileKinds: z29.array(z29.enum(PUBLIC_FILE_FIELD_KINDS)).default([...PUBLIC_FILE_FIELD_KINDS])
12401
+ });
12372
12402
  booleanFieldSchema = baseFieldSchema.extend({
12373
12403
  type: z29.literal("boolean")
12374
12404
  });
@@ -12782,13 +12812,19 @@ function defineFragment(config) {
12782
12812
  function scopeFragmentFields(fragment, scope) {
12783
12813
  const normalizedScope = scope.trim();
12784
12814
  if (!normalizedScope) {
12785
- return fragment.fields.map((field) => cloneFieldDefinition(field));
12815
+ return fragment.fields.map(
12816
+ (field) => cloneFieldDefinition(field)
12817
+ );
12786
12818
  }
12787
- return fragment.fields.map((field) => prefixFieldId(field, normalizedScope));
12819
+ return fragment.fields.map(
12820
+ (field) => prefixFieldId(field, normalizedScope)
12821
+ );
12788
12822
  }
12789
12823
  function scopeFragmentLayout(fragment, scope) {
12790
12824
  const normalizedScope = scope.trim();
12791
- return fragment.layout.map((node) => cloneAndScopeNode(node, normalizedScope));
12825
+ return fragment.layout.map(
12826
+ (node) => cloneAndScopeNode(node, normalizedScope)
12827
+ );
12792
12828
  }
12793
12829
  function validateFieldDefinitions(fields3, fragmentId) {
12794
12830
  const seen = /* @__PURE__ */ new Set();
@@ -12870,7 +12906,9 @@ function cloneAndScopeNode(node, scope) {
12870
12906
  ...node
12871
12907
  };
12872
12908
  if (node.children) {
12873
- cloned.children = node.children.map((child) => cloneAndScopeNode(child, scope));
12909
+ cloned.children = node.children.map(
12910
+ (child) => cloneAndScopeNode(child, scope)
12911
+ );
12874
12912
  }
12875
12913
  if (node.props) {
12876
12914
  cloned.props = scopePropBindings(node.props, scope);
@@ -12896,7 +12934,9 @@ function scopeBinding(binding, scope) {
12896
12934
  const cloned = {
12897
12935
  ...binding,
12898
12936
  transforms: binding.transforms?.map(
12899
- (step) => ({ ...step })
12937
+ (step) => ({
12938
+ ...step
12939
+ })
12900
12940
  ) ?? []
12901
12941
  };
12902
12942
  cloned.from = scopeContentPath(binding.from, scope);
@@ -12940,7 +12980,9 @@ function scopePropValue(value, scope) {
12940
12980
  };
12941
12981
  }
12942
12982
  const result = {};
12943
- for (const [key, entry] of Object.entries(value)) {
12983
+ for (const [key, entry] of Object.entries(
12984
+ value
12985
+ )) {
12944
12986
  result[key] = scopePropValue(entry, scope);
12945
12987
  }
12946
12988
  return result;
@@ -12987,13 +13029,18 @@ var init_types14 = __esm({
12987
13029
  loader: dataLoaderSchema.optional()
12988
13030
  });
12989
13031
  fragmentConfigSchema = z30.object({
12990
- id: z30.string().min(1, "Fragment id is required").regex(FRAGMENT_ID_PATTERN, "Fragment id must be alphanumeric with optional . _ - separators"),
13032
+ id: z30.string().min(1, "Fragment id is required").regex(
13033
+ FRAGMENT_ID_PATTERN,
13034
+ "Fragment id must be alphanumeric with optional . _ - separators"
13035
+ ),
12991
13036
  title: z30.string().optional(),
12992
13037
  description: z30.string().optional(),
12993
13038
  category: z30.enum(["content", "media", "interactive", "layout"]).optional(),
12994
13039
  icon: z30.string().optional(),
12995
13040
  fields: fieldSchema.array().default([]),
12996
- layout: z30.union([NodeSchema, NodeSchema.array()]).transform((value) => Array.isArray(value) ? value : [value]),
13041
+ layout: z30.union([NodeSchema, NodeSchema.array()]).transform(
13042
+ (value) => Array.isArray(value) ? value : [value]
13043
+ ),
12997
13044
  data: fragmentDataSchema.optional()
12998
13045
  });
12999
13046
  FragmentConfigError = class extends Error {
@@ -13343,35 +13390,36 @@ var init_ctaRow2 = __esm({
13343
13390
  });
13344
13391
 
13345
13392
  // ../blocks/src/system/fragments/library/heroCtaRow.ts
13346
- var heroCtaRowFragment;
13393
+ var heroCtaFields, heroCtaRowFragment;
13347
13394
  var init_heroCtaRow = __esm({
13348
13395
  "../blocks/src/system/fragments/library/heroCtaRow.ts"() {
13349
13396
  "use strict";
13350
13397
  init_types14();
13351
13398
  init_fragments();
13352
13399
  init_ctas();
13400
+ heroCtaFields = [
13401
+ createCtasRepeater({
13402
+ label: "Calls to action",
13403
+ itemLabel: "CTA",
13404
+ maxItems: 3,
13405
+ button: {
13406
+ variants: [
13407
+ { value: "default", label: "Default" },
13408
+ { value: "primary", label: "Primary" },
13409
+ { value: "secondary", label: "Secondary" },
13410
+ { value: "outline", label: "Outline" }
13411
+ ],
13412
+ defaultVariant: "default",
13413
+ includeSize: true,
13414
+ defaultSize: "lg"
13415
+ }
13416
+ })
13417
+ ];
13353
13418
  heroCtaRowFragment = defineFragment({
13354
13419
  id: "heroCtaRow",
13355
13420
  title: "Hero CTAs",
13356
13421
  description: "Repeatable hero calls to action rendered inline.",
13357
- fields: [
13358
- createCtasRepeater({
13359
- label: "Calls to action",
13360
- itemLabel: "CTA",
13361
- maxItems: 3,
13362
- button: {
13363
- variants: [
13364
- { value: "default", label: "Default" },
13365
- { value: "primary", label: "Primary" },
13366
- { value: "secondary", label: "Secondary" },
13367
- { value: "outline", label: "Outline" }
13368
- ],
13369
- defaultVariant: "default",
13370
- includeSize: true,
13371
- defaultSize: "lg"
13372
- }
13373
- })
13374
- ],
13422
+ fields: heroCtaFields,
13375
13423
  layout: [
13376
13424
  ctaRow({
13377
13425
  collectionPath: "content.ctas",
@@ -24459,40 +24507,13 @@ var init_file_headphone = __esm({
24459
24507
  }
24460
24508
  });
24461
24509
 
24462
- // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-play.js
24463
- var __iconNode17, FilePlay;
24464
- var init_file_play = __esm({
24465
- "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-play.js"() {
24466
- "use strict";
24467
- init_createLucideIcon();
24468
- __iconNode17 = [
24469
- [
24470
- "path",
24471
- {
24472
- d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
24473
- key: "1oefj6"
24474
- }
24475
- ],
24476
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
24477
- [
24478
- "path",
24479
- {
24480
- d: "M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z",
24481
- key: "1tzo1f"
24482
- }
24483
- ]
24484
- ];
24485
- FilePlay = createLucideIcon("file-play", __iconNode17);
24486
- }
24487
- });
24488
-
24489
24510
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js
24490
- var __iconNode18, FileSpreadsheet;
24511
+ var __iconNode17, FileSpreadsheet;
24491
24512
  var init_file_spreadsheet = __esm({
24492
24513
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js"() {
24493
24514
  "use strict";
24494
24515
  init_createLucideIcon();
24495
- __iconNode18 = [
24516
+ __iconNode17 = [
24496
24517
  [
24497
24518
  "path",
24498
24519
  {
@@ -24506,17 +24527,17 @@ var init_file_spreadsheet = __esm({
24506
24527
  ["path", { d: "M8 17h2", key: "2yhykz" }],
24507
24528
  ["path", { d: "M14 17h2", key: "10kma7" }]
24508
24529
  ];
24509
- FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode18);
24530
+ FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode17);
24510
24531
  }
24511
24532
  });
24512
24533
 
24513
24534
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-text.js
24514
- var __iconNode19, FileText;
24535
+ var __iconNode18, FileText;
24515
24536
  var init_file_text = __esm({
24516
24537
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-text.js"() {
24517
24538
  "use strict";
24518
24539
  init_createLucideIcon();
24519
- __iconNode19 = [
24540
+ __iconNode18 = [
24520
24541
  [
24521
24542
  "path",
24522
24543
  {
@@ -24529,46 +24550,46 @@ var init_file_text = __esm({
24529
24550
  ["path", { d: "M16 13H8", key: "t4e002" }],
24530
24551
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
24531
24552
  ];
24532
- FileText = createLucideIcon("file-text", __iconNode19);
24553
+ FileText = createLucideIcon("file-text", __iconNode18);
24533
24554
  }
24534
24555
  });
24535
24556
 
24536
24557
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/info.js
24537
- var __iconNode20, Info;
24558
+ var __iconNode19, Info;
24538
24559
  var init_info = __esm({
24539
24560
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/info.js"() {
24540
24561
  "use strict";
24541
24562
  init_createLucideIcon();
24542
- __iconNode20 = [
24563
+ __iconNode19 = [
24543
24564
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
24544
24565
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
24545
24566
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
24546
24567
  ];
24547
- Info = createLucideIcon("info", __iconNode20);
24568
+ Info = createLucideIcon("info", __iconNode19);
24548
24569
  }
24549
24570
  });
24550
24571
 
24551
24572
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/mail.js
24552
- var __iconNode21, Mail;
24573
+ var __iconNode20, Mail;
24553
24574
  var init_mail = __esm({
24554
24575
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/mail.js"() {
24555
24576
  "use strict";
24556
24577
  init_createLucideIcon();
24557
- __iconNode21 = [
24578
+ __iconNode20 = [
24558
24579
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
24559
24580
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
24560
24581
  ];
24561
- Mail = createLucideIcon("mail", __iconNode21);
24582
+ Mail = createLucideIcon("mail", __iconNode20);
24562
24583
  }
24563
24584
  });
24564
24585
 
24565
24586
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/map-pin.js
24566
- var __iconNode22, MapPin;
24587
+ var __iconNode21, MapPin;
24567
24588
  var init_map_pin = __esm({
24568
24589
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/map-pin.js"() {
24569
24590
  "use strict";
24570
24591
  init_createLucideIcon();
24571
- __iconNode22 = [
24592
+ __iconNode21 = [
24572
24593
  [
24573
24594
  "path",
24574
24595
  {
@@ -24578,28 +24599,28 @@ var init_map_pin = __esm({
24578
24599
  ],
24579
24600
  ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }]
24580
24601
  ];
24581
- MapPin = createLucideIcon("map-pin", __iconNode22);
24602
+ MapPin = createLucideIcon("map-pin", __iconNode21);
24582
24603
  }
24583
24604
  });
24584
24605
 
24585
24606
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/minus.js
24586
- var __iconNode23, Minus;
24607
+ var __iconNode22, Minus;
24587
24608
  var init_minus = __esm({
24588
24609
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/minus.js"() {
24589
24610
  "use strict";
24590
24611
  init_createLucideIcon();
24591
- __iconNode23 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
24592
- Minus = createLucideIcon("minus", __iconNode23);
24612
+ __iconNode22 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
24613
+ Minus = createLucideIcon("minus", __iconNode22);
24593
24614
  }
24594
24615
  });
24595
24616
 
24596
24617
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/phone.js
24597
- var __iconNode24, Phone;
24618
+ var __iconNode23, Phone;
24598
24619
  var init_phone = __esm({
24599
24620
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/phone.js"() {
24600
24621
  "use strict";
24601
24622
  init_createLucideIcon();
24602
- __iconNode24 = [
24623
+ __iconNode23 = [
24603
24624
  [
24604
24625
  "path",
24605
24626
  {
@@ -24608,17 +24629,17 @@ var init_phone = __esm({
24608
24629
  }
24609
24630
  ]
24610
24631
  ];
24611
- Phone = createLucideIcon("phone", __iconNode24);
24632
+ Phone = createLucideIcon("phone", __iconNode23);
24612
24633
  }
24613
24634
  });
24614
24635
 
24615
24636
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/play.js
24616
- var __iconNode25, Play;
24637
+ var __iconNode24, Play;
24617
24638
  var init_play = __esm({
24618
24639
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/play.js"() {
24619
24640
  "use strict";
24620
24641
  init_createLucideIcon();
24621
- __iconNode25 = [
24642
+ __iconNode24 = [
24622
24643
  [
24623
24644
  "path",
24624
24645
  {
@@ -24627,31 +24648,31 @@ var init_play = __esm({
24627
24648
  }
24628
24649
  ]
24629
24650
  ];
24630
- Play = createLucideIcon("play", __iconNode25);
24651
+ Play = createLucideIcon("play", __iconNode24);
24631
24652
  }
24632
24653
  });
24633
24654
 
24634
24655
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/plus.js
24635
- var __iconNode26, Plus;
24656
+ var __iconNode25, Plus;
24636
24657
  var init_plus = __esm({
24637
24658
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/plus.js"() {
24638
24659
  "use strict";
24639
24660
  init_createLucideIcon();
24640
- __iconNode26 = [
24661
+ __iconNode25 = [
24641
24662
  ["path", { d: "M5 12h14", key: "1ays0h" }],
24642
24663
  ["path", { d: "M12 5v14", key: "s699le" }]
24643
24664
  ];
24644
- Plus = createLucideIcon("plus", __iconNode26);
24665
+ Plus = createLucideIcon("plus", __iconNode25);
24645
24666
  }
24646
24667
  });
24647
24668
 
24648
24669
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shopping-cart.js
24649
- var __iconNode27, ShoppingCart;
24670
+ var __iconNode26, ShoppingCart;
24650
24671
  var init_shopping_cart = __esm({
24651
24672
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shopping-cart.js"() {
24652
24673
  "use strict";
24653
24674
  init_createLucideIcon();
24654
- __iconNode27 = [
24675
+ __iconNode26 = [
24655
24676
  ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
24656
24677
  ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
24657
24678
  [
@@ -24662,17 +24683,17 @@ var init_shopping_cart = __esm({
24662
24683
  }
24663
24684
  ]
24664
24685
  ];
24665
- ShoppingCart = createLucideIcon("shopping-cart", __iconNode27);
24686
+ ShoppingCart = createLucideIcon("shopping-cart", __iconNode26);
24666
24687
  }
24667
24688
  });
24668
24689
 
24669
24690
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/sparkles.js
24670
- var __iconNode28, Sparkles;
24691
+ var __iconNode27, Sparkles;
24671
24692
  var init_sparkles = __esm({
24672
24693
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/sparkles.js"() {
24673
24694
  "use strict";
24674
24695
  init_createLucideIcon();
24675
- __iconNode28 = [
24696
+ __iconNode27 = [
24676
24697
  [
24677
24698
  "path",
24678
24699
  {
@@ -24684,17 +24705,17 @@ var init_sparkles = __esm({
24684
24705
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
24685
24706
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
24686
24707
  ];
24687
- Sparkles = createLucideIcon("sparkles", __iconNode28);
24708
+ Sparkles = createLucideIcon("sparkles", __iconNode27);
24688
24709
  }
24689
24710
  });
24690
24711
 
24691
24712
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/star.js
24692
- var __iconNode29, Star;
24713
+ var __iconNode28, Star;
24693
24714
  var init_star = __esm({
24694
24715
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/star.js"() {
24695
24716
  "use strict";
24696
24717
  init_createLucideIcon();
24697
- __iconNode29 = [
24718
+ __iconNode28 = [
24698
24719
  [
24699
24720
  "path",
24700
24721
  {
@@ -24703,17 +24724,17 @@ var init_star = __esm({
24703
24724
  }
24704
24725
  ]
24705
24726
  ];
24706
- Star = createLucideIcon("star", __iconNode29);
24727
+ Star = createLucideIcon("star", __iconNode28);
24707
24728
  }
24708
24729
  });
24709
24730
 
24710
24731
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/ticket.js
24711
- var __iconNode30, Ticket;
24732
+ var __iconNode29, Ticket;
24712
24733
  var init_ticket = __esm({
24713
24734
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/ticket.js"() {
24714
24735
  "use strict";
24715
24736
  init_createLucideIcon();
24716
- __iconNode30 = [
24737
+ __iconNode29 = [
24717
24738
  [
24718
24739
  "path",
24719
24740
  {
@@ -24725,36 +24746,36 @@ var init_ticket = __esm({
24725
24746
  ["path", { d: "M13 17v2", key: "1ont0d" }],
24726
24747
  ["path", { d: "M13 11v2", key: "1wjjxi" }]
24727
24748
  ];
24728
- Ticket = createLucideIcon("ticket", __iconNode30);
24749
+ Ticket = createLucideIcon("ticket", __iconNode29);
24729
24750
  }
24730
24751
  });
24731
24752
 
24732
24753
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/upload.js
24733
- var __iconNode31, Upload;
24754
+ var __iconNode30, Upload;
24734
24755
  var init_upload = __esm({
24735
24756
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/upload.js"() {
24736
24757
  "use strict";
24737
24758
  init_createLucideIcon();
24738
- __iconNode31 = [
24759
+ __iconNode30 = [
24739
24760
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
24740
24761
  ["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
24741
24762
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
24742
24763
  ];
24743
- Upload = createLucideIcon("upload", __iconNode31);
24764
+ Upload = createLucideIcon("upload", __iconNode30);
24744
24765
  }
24745
24766
  });
24746
24767
 
24747
24768
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/x.js
24748
- var __iconNode32, X;
24769
+ var __iconNode31, X;
24749
24770
  var init_x = __esm({
24750
24771
  "../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/x.js"() {
24751
24772
  "use strict";
24752
24773
  init_createLucideIcon();
24753
- __iconNode32 = [
24774
+ __iconNode31 = [
24754
24775
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
24755
24776
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
24756
24777
  ];
24757
- X = createLucideIcon("x", __iconNode32);
24778
+ X = createLucideIcon("x", __iconNode31);
24758
24779
  }
24759
24780
  });
24760
24781
 
@@ -24765,7 +24786,6 @@ var init_lucide_react = __esm({
24765
24786
  init_circle_minus();
24766
24787
  init_circle_plus();
24767
24788
  init_file_headphone();
24768
- init_file_play();
24769
24789
  init_sparkles();
24770
24790
  init_arrow_down();
24771
24791
  init_arrow_left();
@@ -24915,8 +24935,6 @@ function iconForMediaType(type) {
24915
24935
  switch (type) {
24916
24936
  case "audio":
24917
24937
  return /* @__PURE__ */ jsx18(FileHeadphone, { "aria-hidden": "true" });
24918
- case "video":
24919
- return /* @__PURE__ */ jsx18(FilePlay, { "aria-hidden": "true" });
24920
24938
  case "document":
24921
24939
  return /* @__PURE__ */ jsx18(FileText, { "aria-hidden": "true" });
24922
24940
  case "spreadsheet":
@@ -24955,8 +24973,22 @@ function FileDownloadNode({
24955
24973
  }
24956
24974
  ),
24957
24975
  /* @__PURE__ */ jsxs6("div", { className: "rb-min-w-0 rb-space-y-1", children: [
24958
- /* @__PURE__ */ jsx18("h2", { className: "rb-m-0 rb-text-lg rb-font-semibold", style: textColorStyle("heading"), children: heading }),
24959
- body ? /* @__PURE__ */ jsx18("p", { className: "rb-m-0 rb-text-sm", style: textColorStyle("mutedText"), children: body }) : null,
24976
+ /* @__PURE__ */ jsx18(
24977
+ "h2",
24978
+ {
24979
+ className: "rb-m-0 rb-text-lg rb-font-semibold",
24980
+ style: textColorStyle("heading"),
24981
+ children: heading
24982
+ }
24983
+ ),
24984
+ body ? /* @__PURE__ */ jsx18(
24985
+ "p",
24986
+ {
24987
+ className: "rb-m-0 rb-text-sm",
24988
+ style: textColorStyle("mutedText"),
24989
+ children: body
24990
+ }
24991
+ ) : null,
24960
24992
  /* @__PURE__ */ jsx18(
24961
24993
  "p",
24962
24994
  {
@@ -24994,7 +25026,12 @@ var init_file_download = __esm({
24994
25026
  init_media();
24995
25027
  init_buttons();
24996
25028
  init_media3();
24997
- FILE_DOWNLOAD_BUTTON_VARIANTS = ["primary", "secondary", "outline", "link"];
25029
+ FILE_DOWNLOAD_BUTTON_VARIANTS = [
25030
+ "primary",
25031
+ "secondary",
25032
+ "outline",
25033
+ "link"
25034
+ ];
24998
25035
  }
24999
25036
  });
25000
25037
 
@@ -65051,6 +65088,7 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
65051
65088
  case "richText":
65052
65089
  return makePlan("richText", "object", field, path, required, commonConstraints(required, { kind: "richTextDoc" }));
65053
65090
  case "media":
65091
+ case "file":
65054
65092
  return makePlan("media", "object", field, path, required, commonConstraints(required, { kind: "mediaObject" }));
65055
65093
  case "link":
65056
65094
  return makePlan("link", "object", field, path, required, commonConstraints(required, { kind: "linkObject" }));
@@ -69600,104 +69638,107 @@ init_fragments();
69600
69638
  init_boxStyles2();
69601
69639
  init_defineBlock();
69602
69640
  init_shared2();
69603
- var eventSpotlightManifest = createBlockManifest({
69641
+ var eventSpotlightFields = [
69642
+ ...sectionHeaderFields("Upcoming Events"),
69643
+ {
69644
+ id: "maxEvents",
69645
+ type: "select",
69646
+ label: "Events to display",
69647
+ description: "Number of events to show",
69648
+ required: false,
69649
+ multiple: false,
69650
+ defaultValue: "3",
69651
+ options: [
69652
+ { value: "1", label: "1 event" },
69653
+ { value: "2", label: "2 events" },
69654
+ { value: "3", label: "3 events" },
69655
+ { value: "4", label: "4 events" },
69656
+ { value: "5", label: "5 events" },
69657
+ { value: "6", label: "6 events" }
69658
+ ],
69659
+ ui: { intent: "display" }
69660
+ },
69661
+ {
69662
+ id: "ctaLabel",
69663
+ type: "text",
69664
+ label: "Section button text",
69665
+ description: "Optional button shown below the spotlight cards",
69666
+ required: false,
69667
+ multiline: false,
69668
+ maxLength: 40,
69669
+ ui: { intent: "content" }
69670
+ },
69671
+ {
69672
+ id: "ctaUrl",
69673
+ type: "link",
69674
+ label: "Section button destination",
69675
+ required: false,
69676
+ ui: { intent: "display" }
69677
+ },
69678
+ layoutField,
69679
+ columnsField(["2", "3"]),
69680
+ ...cardStylingFields,
69681
+ ...eventDisplayFields,
69682
+ emptyStateField,
69683
+ sectionStylesField({
69684
+ id: "_sectionStyles",
69685
+ label: "Section styles"
69686
+ })
69687
+ ];
69688
+ var eventSpotlightLayout = [
69689
+ styledSection({
69690
+ children: sectionContainer([
69691
+ // Optional heading
69692
+ text(
69693
+ { as: "h2" },
69694
+ bind("content.heading"),
69695
+ when("content.heading")
69696
+ ),
69697
+ // Optional description
69698
+ richText(
69699
+ { className: "rb-prose rb-max-w-none" },
69700
+ bind("content.description"),
69701
+ when("content.description")
69702
+ ),
69703
+ // Event spotlight component
69704
+ el("event-spotlight", {
69705
+ events: { $bind: { from: "data.events" } },
69706
+ layout: { $bind: { from: "content.layout", fallback: "grid" } },
69707
+ columns: { $bind: { from: "content.columns", fallback: "3" } },
69708
+ cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
69709
+ buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
69710
+ buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
69711
+ ctaLabel: { $bind: { from: "content.ctaLabel" } },
69712
+ ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
69713
+ showVenue: { $bind: { from: "content.showVenue" } },
69714
+ showMap: { $bind: { from: "content.showMap" } },
69715
+ showCapacity: { $bind: { from: "content.showCapacity" } },
69716
+ emptyMessage: { $bind: { from: "content.emptyMessage" } }
69717
+ })
69718
+ ], {
69719
+ gap: "lg"
69720
+ }),
69721
+ // sectionContainer (rb-container) already provides horizontal padding
69722
+ baseClass: "",
69723
+ spacing: "comfortable"
69724
+ })
69725
+ ];
69726
+ var eventSpotlightConfig = {
69604
69727
  id: "block.event-spotlight",
69605
69728
  version: "1.1.0",
69606
69729
  title: "Event Spotlight",
69607
69730
  titleSource: "heading",
69608
69731
  description: "Feature a few upcoming events on your homepage",
69609
69732
  skipSectionStyles: true,
69610
- additionalFields: [
69611
- ...sectionHeaderFields("Upcoming Events"),
69612
- {
69613
- id: "maxEvents",
69614
- type: "select",
69615
- label: "Events to display",
69616
- description: "Number of events to show",
69617
- required: false,
69618
- multiple: false,
69619
- defaultValue: "3",
69620
- options: [
69621
- { value: "1", label: "1 event" },
69622
- { value: "2", label: "2 events" },
69623
- { value: "3", label: "3 events" },
69624
- { value: "4", label: "4 events" },
69625
- { value: "5", label: "5 events" },
69626
- { value: "6", label: "6 events" }
69627
- ],
69628
- ui: { intent: "display" }
69629
- },
69630
- {
69631
- id: "ctaLabel",
69632
- type: "text",
69633
- label: "Section button text",
69634
- description: "Optional button shown below the spotlight cards",
69635
- required: false,
69636
- multiline: false,
69637
- maxLength: 40,
69638
- ui: { intent: "content" }
69639
- },
69640
- {
69641
- id: "ctaUrl",
69642
- type: "link",
69643
- label: "Section button destination",
69644
- required: false,
69645
- ui: { intent: "display" }
69646
- },
69647
- layoutField,
69648
- columnsField(["2", "3"]),
69649
- ...cardStylingFields,
69650
- ...eventDisplayFields,
69651
- emptyStateField,
69652
- sectionStylesField({
69653
- id: "_sectionStyles",
69654
- label: "Section styles"
69655
- })
69656
- ],
69733
+ additionalFields: eventSpotlightFields,
69657
69734
  styleTokens: { background: "surface", typography: "body", spacing: "md" },
69658
69735
  behaviours: { supportsThemeSwitching: true, inlineEditing: false, animation: false, paletteHidden: false },
69659
69736
  category: "content",
69660
69737
  tags: ["events", "featured", "homepage", "spotlight", "upcoming"],
69661
69738
  icon: "Star",
69662
- layout: [
69663
- styledSection({
69664
- children: sectionContainer([
69665
- // Optional heading
69666
- text(
69667
- { as: "h2" },
69668
- bind("content.heading"),
69669
- when("content.heading")
69670
- ),
69671
- // Optional description
69672
- richText(
69673
- { className: "rb-prose rb-max-w-none" },
69674
- bind("content.description"),
69675
- when("content.description")
69676
- ),
69677
- // Event spotlight component
69678
- el("event-spotlight", {
69679
- events: { $bind: { from: "data.events" } },
69680
- layout: { $bind: { from: "content.layout", fallback: "grid" } },
69681
- columns: { $bind: { from: "content.columns", fallback: "3" } },
69682
- cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
69683
- buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
69684
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
69685
- ctaLabel: { $bind: { from: "content.ctaLabel" } },
69686
- ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
69687
- showVenue: { $bind: { from: "content.showVenue" } },
69688
- showMap: { $bind: { from: "content.showMap" } },
69689
- showCapacity: { $bind: { from: "content.showCapacity" } },
69690
- emptyMessage: { $bind: { from: "content.emptyMessage" } }
69691
- })
69692
- ], {
69693
- gap: "lg"
69694
- }),
69695
- // sectionContainer (rb-container) already provides horizontal padding
69696
- baseClass: "",
69697
- spacing: "comfortable"
69698
- })
69699
- ]
69700
- });
69739
+ layout: eventSpotlightLayout
69740
+ };
69741
+ var eventSpotlightManifest = createBlockManifest(eventSpotlightConfig);
69701
69742
  var eventSpotlightBlockDefinition = {
69702
69743
  manifest: eventSpotlightManifest,
69703
69744
  dataSchemas: {
@@ -71112,18 +71153,18 @@ var fileDownloadManifest = createBlockManifest({
71112
71153
  title: "File Download",
71113
71154
  titleSource: ["title", "file.filename"],
71114
71155
  category: "media",
71115
- description: "Add a simple public download link for a document, ZIP, audio, or video file.",
71156
+ description: "Add a simple public download link for a document, ZIP, or audio file.",
71116
71157
  tags: ["file", "download", "document", "zip", "media"],
71117
71158
  icon: "Download",
71118
71159
  includeContainerStyles: true,
71119
71160
  additionalFields: [
71120
71161
  {
71121
71162
  id: "file",
71122
- type: "media",
71163
+ type: "file",
71123
71164
  label: "Download file",
71124
71165
  description: "Choose the file visitors can download.",
71125
71166
  required: false,
71126
- mediaKinds: [...PUBLIC_DOWNLOAD_MEDIA_TYPES],
71167
+ fileKinds: [...PUBLIC_DOWNLOAD_MEDIA_TYPES],
71127
71168
  ui: { intent: "content" }
71128
71169
  },
71129
71170
  {
@@ -84979,7 +85020,6 @@ lucide-react/dist/esm/icons/download.js:
84979
85020
  lucide-react/dist/esm/icons/external-link.js:
84980
85021
  lucide-react/dist/esm/icons/file-archive.js:
84981
85022
  lucide-react/dist/esm/icons/file-headphone.js:
84982
- lucide-react/dist/esm/icons/file-play.js:
84983
85023
  lucide-react/dist/esm/icons/file-spreadsheet.js:
84984
85024
  lucide-react/dist/esm/icons/file-text.js:
84985
85025
  lucide-react/dist/esm/icons/info.js: