@riverbankcms/sdk 0.70.2 → 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 (89) hide show
  1. package/README.md +29 -0
  2. package/dist/_dts/api/src/contentTypes.d.ts +2 -1
  3. package/dist/_dts/block-form/src/client/index.d.ts +1 -1
  4. package/dist/_dts/block-form/src/fields/types.d.ts +14 -2
  5. package/dist/_dts/block-form/src/registry/schemas.d.ts +2 -0
  6. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldDefaults.d.ts +2 -2
  7. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldSchema.d.ts +2 -2
  8. package/dist/_dts/blocks/src/lib/media.d.ts +1 -1
  9. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1829 -149
  10. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +1829 -149
  11. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1829 -149
  12. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1829 -149
  13. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +1829 -149
  14. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1 -30727
  15. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +11 -30827
  16. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1829 -149
  17. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -3
  18. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1829 -149
  19. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +106 -1
  20. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1829 -149
  21. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1829 -149
  22. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1829 -149
  23. package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -3
  24. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +2 -30793
  25. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +2 -30727
  26. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +2 -30779
  27. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +33 -30743
  28. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +2 -30770
  29. package/dist/_dts/blocks/src/system/fragments/types.d.ts +8 -7
  30. package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +7 -5
  31. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +192 -3
  33. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +1 -1
  34. package/dist/_dts/content-model/src/content-types/schema.d.ts +7 -0
  35. package/dist/_dts/content-model/src/contentManifest.d.ts +4 -1
  36. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +1 -1
  37. package/dist/_dts/core/src/index.d.ts +1 -1
  38. package/dist/_dts/core/src/planner.d.ts +4 -0
  39. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +53 -20
  40. package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
  41. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +6 -5
  42. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +0 -1
  43. package/dist/_dts/media-editor/src/context.d.ts +4 -1
  44. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +8 -1
  45. package/dist/_dts/media-react/src/index.d.ts +1 -5
  46. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +2 -1
  47. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  48. package/dist/_dts/sdk/src/cli/commands/delete.d.ts +3 -0
  49. package/dist/_dts/sdk/src/cli/commands/style.d.ts +18 -0
  50. package/dist/_dts/sdk/src/cli/helpers.d.ts +8 -33
  51. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +81 -0
  52. package/dist/_dts/sdk/src/components.d.ts +2 -1
  53. package/dist/_dts/sdk/src/config/field-definitions.d.ts +6 -2
  54. package/dist/_dts/sdk/src/config/typed-entries.d.ts +4 -2
  55. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -1
  56. package/dist/_dts/sdk/src/manifest/prompt/examples/cta.d.ts +5 -5
  57. package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +2 -2
  58. package/dist/_dts/sdk/src/manifest/prompt/examples/hero.d.ts +2 -2
  59. package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +10 -10
  60. package/dist/_dts/sdk/src/manifest/prompt/examples/testimonials.d.ts +4 -4
  61. package/dist/_dts/sdk/src/manifest/validation/output-schema.d.ts +11 -1
  62. package/dist/_dts/sdk/src/next/types.d.ts +4 -2
  63. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  64. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -1
  65. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +10 -0
  66. package/dist/_dts/sdk/src/rendering/overrides.d.ts +12 -0
  67. package/dist/_dts/sdk/src/version.d.ts +1 -1
  68. package/dist/cli/index.mjs +1072 -289
  69. package/dist/cli/init-docs/content/workflow-preview-mode.md +167 -0
  70. package/dist/client/client.mjs +443 -403
  71. package/dist/client/hooks.mjs +172 -121
  72. package/dist/client/rendering/client.mjs +148 -112
  73. package/dist/client/rendering/islands.mjs +80 -31
  74. package/dist/client/rendering.mjs +25531 -25481
  75. package/dist/preview-next/client/runtime.mjs +394 -1136
  76. package/dist/server/components.mjs +229 -171
  77. package/dist/server/config-template-validation.mjs +31 -1
  78. package/dist/server/config-validation.mjs +172 -121
  79. package/dist/server/config.mjs +172 -121
  80. package/dist/server/data.mjs +172 -121
  81. package/dist/server/index.mjs +1 -1
  82. package/dist/server/next.mjs +301 -174
  83. package/dist/server/page-converter.mjs +379 -185
  84. package/dist/server/prebuild.mjs +1 -1
  85. package/dist/server/rendering/server.mjs +219 -171
  86. package/dist/server/rendering.mjs +229 -171
  87. package/dist/server/routing.mjs +175 -124
  88. package/dist/server/server.mjs +173 -122
  89. package/package.json +5 -3
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.70.2";
7
+ var SDK_VERSION = "0.70.4";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;
@@ -742,6 +742,28 @@ function resolveRepeaterGridColumnFieldId(options) {
742
742
 
743
743
  // ../blocks/src/system/manifest/schema.ts
744
744
  var visibilityLevels = ["admin", "designer", "author"];
745
+ var MEDIA_KINDS = [
746
+ "image",
747
+ "video",
748
+ "audio",
749
+ "document",
750
+ "spreadsheet",
751
+ "archive"
752
+ ];
753
+ var DISPLAY_MEDIA_KINDS = [
754
+ "image",
755
+ "video",
756
+ "audio"
757
+ ];
758
+ var PUBLIC_FILE_FIELD_KINDS = [
759
+ "document",
760
+ "spreadsheet",
761
+ "archive",
762
+ "audio"
763
+ ];
764
+ function isDisplayMediaKind(kind) {
765
+ return DISPLAY_MEDIA_KINDS.includes(kind);
766
+ }
745
767
  var siteOptionSources = [
746
768
  "eventCategories",
747
769
  "venues",
@@ -905,11 +927,19 @@ var richTextFieldSchema = baseFieldSchema.extend({
905
927
  });
906
928
  var mediaFieldSchema = baseFieldSchema.extend({
907
929
  type: z3.literal("media"),
908
- mediaKinds: z3.array(
909
- z3.enum(["image", "video", "audio", "document", "spreadsheet", "archive"])
910
- ).default(["image"]),
930
+ // Keep full MEDIA_KINDS parse compatibility for pre-file-field manifests.
931
+ // New authoring surfaces should use `file.fileKinds` for document/archive
932
+ // style assets, but old saved schemas must not fail to open.
933
+ mediaKinds: z3.array(z3.enum(MEDIA_KINDS)).default(["image"]).transform((kinds) => {
934
+ const displayKinds = kinds.filter(isDisplayMediaKind);
935
+ return displayKinds.length > 0 ? displayKinds : ["image"];
936
+ }),
911
937
  aspectRatio: z3.string().optional()
912
938
  });
939
+ var fileFieldSchema = baseFieldSchema.extend({
940
+ type: z3.literal("file"),
941
+ fileKinds: z3.array(z3.enum(PUBLIC_FILE_FIELD_KINDS)).default([...PUBLIC_FILE_FIELD_KINDS])
942
+ });
913
943
  var booleanFieldSchema = baseFieldSchema.extend({
914
944
  type: z3.literal("boolean")
915
945
  });
@@ -1215,6 +1245,7 @@ function getFieldSchemaInternal() {
1215
1245
  textFieldSchema,
1216
1246
  richTextFieldSchema,
1217
1247
  mediaFieldSchema,
1248
+ fileFieldSchema,
1218
1249
  booleanFieldSchema,
1219
1250
  numberFieldSchema,
1220
1251
  dateFieldSchema,
@@ -1493,6 +1524,7 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
1493
1524
  case "richText":
1494
1525
  return makePlan("richText", "object", field, path, required, commonConstraints(required, { kind: "richTextDoc" }));
1495
1526
  case "media":
1527
+ case "file":
1496
1528
  return makePlan("media", "object", field, path, required, commonConstraints(required, { kind: "mediaObject" }));
1497
1529
  case "link":
1498
1530
  return makePlan("link", "object", field, path, required, commonConstraints(required, { kind: "linkObject" }));
@@ -11384,13 +11416,18 @@ var fragmentDataSchema = z28.object({
11384
11416
  loader: dataLoaderSchema.optional()
11385
11417
  });
11386
11418
  var fragmentConfigSchema = z28.object({
11387
- id: z28.string().min(1, "Fragment id is required").regex(FRAGMENT_ID_PATTERN, "Fragment id must be alphanumeric with optional . _ - separators"),
11419
+ id: z28.string().min(1, "Fragment id is required").regex(
11420
+ FRAGMENT_ID_PATTERN,
11421
+ "Fragment id must be alphanumeric with optional . _ - separators"
11422
+ ),
11388
11423
  title: z28.string().optional(),
11389
11424
  description: z28.string().optional(),
11390
11425
  category: z28.enum(["content", "media", "interactive", "layout"]).optional(),
11391
11426
  icon: z28.string().optional(),
11392
11427
  fields: fieldSchema.array().default([]),
11393
- layout: z28.union([NodeSchema, NodeSchema.array()]).transform((value) => Array.isArray(value) ? value : [value]),
11428
+ layout: z28.union([NodeSchema, NodeSchema.array()]).transform(
11429
+ (value) => Array.isArray(value) ? value : [value]
11430
+ ),
11394
11431
  data: fragmentDataSchema.optional()
11395
11432
  });
11396
11433
  var FragmentConfigError = class extends Error {
@@ -11412,13 +11449,19 @@ function defineFragment(config) {
11412
11449
  function scopeFragmentFields(fragment, scope) {
11413
11450
  const normalizedScope = scope.trim();
11414
11451
  if (!normalizedScope) {
11415
- return fragment.fields.map((field) => cloneFieldDefinition2(field));
11452
+ return fragment.fields.map(
11453
+ (field) => cloneFieldDefinition2(field)
11454
+ );
11416
11455
  }
11417
- return fragment.fields.map((field) => prefixFieldId(field, normalizedScope));
11456
+ return fragment.fields.map(
11457
+ (field) => prefixFieldId(field, normalizedScope)
11458
+ );
11418
11459
  }
11419
11460
  function scopeFragmentLayout(fragment, scope) {
11420
11461
  const normalizedScope = scope.trim();
11421
- return fragment.layout.map((node) => cloneAndScopeNode(node, normalizedScope));
11462
+ return fragment.layout.map(
11463
+ (node) => cloneAndScopeNode(node, normalizedScope)
11464
+ );
11422
11465
  }
11423
11466
  function validateFieldDefinitions(fields3, fragmentId) {
11424
11467
  const seen = /* @__PURE__ */ new Set();
@@ -11500,7 +11543,9 @@ function cloneAndScopeNode(node, scope) {
11500
11543
  ...node
11501
11544
  };
11502
11545
  if (node.children) {
11503
- cloned.children = node.children.map((child) => cloneAndScopeNode(child, scope));
11546
+ cloned.children = node.children.map(
11547
+ (child) => cloneAndScopeNode(child, scope)
11548
+ );
11504
11549
  }
11505
11550
  if (node.props) {
11506
11551
  cloned.props = scopePropBindings(node.props, scope);
@@ -11526,7 +11571,9 @@ function scopeBinding(binding, scope) {
11526
11571
  const cloned = {
11527
11572
  ...binding,
11528
11573
  transforms: binding.transforms?.map(
11529
- (step) => ({ ...step })
11574
+ (step) => ({
11575
+ ...step
11576
+ })
11530
11577
  ) ?? []
11531
11578
  };
11532
11579
  cloned.from = scopeContentPath(binding.from, scope);
@@ -11570,7 +11617,9 @@ function scopePropValue(value, scope) {
11570
11617
  };
11571
11618
  }
11572
11619
  const result = {};
11573
- for (const [key, entry] of Object.entries(value)) {
11620
+ for (const [key, entry] of Object.entries(
11621
+ value
11622
+ )) {
11574
11623
  result[key] = scopePropValue(entry, scope);
11575
11624
  }
11576
11625
  return result;
@@ -12019,28 +12068,29 @@ var ctaRowFragment = defineFragment({
12019
12068
  });
12020
12069
 
12021
12070
  // ../blocks/src/system/fragments/library/heroCtaRow.ts
12071
+ var heroCtaFields = [
12072
+ createCtasRepeater({
12073
+ label: "Calls to action",
12074
+ itemLabel: "CTA",
12075
+ maxItems: 3,
12076
+ button: {
12077
+ variants: [
12078
+ { value: "default", label: "Default" },
12079
+ { value: "primary", label: "Primary" },
12080
+ { value: "secondary", label: "Secondary" },
12081
+ { value: "outline", label: "Outline" }
12082
+ ],
12083
+ defaultVariant: "default",
12084
+ includeSize: true,
12085
+ defaultSize: "lg"
12086
+ }
12087
+ })
12088
+ ];
12022
12089
  var heroCtaRowFragment = defineFragment({
12023
12090
  id: "heroCtaRow",
12024
12091
  title: "Hero CTAs",
12025
12092
  description: "Repeatable hero calls to action rendered inline.",
12026
- fields: [
12027
- createCtasRepeater({
12028
- label: "Calls to action",
12029
- itemLabel: "CTA",
12030
- maxItems: 3,
12031
- button: {
12032
- variants: [
12033
- { value: "default", label: "Default" },
12034
- { value: "primary", label: "Primary" },
12035
- { value: "secondary", label: "Secondary" },
12036
- { value: "outline", label: "Outline" }
12037
- ],
12038
- defaultVariant: "default",
12039
- includeSize: true,
12040
- defaultSize: "lg"
12041
- }
12042
- })
12043
- ],
12093
+ fields: heroCtaFields,
12044
12094
  layout: [
12045
12095
  ctaRow({
12046
12096
  collectionPath: "content.ctas",
@@ -18045,8 +18095,7 @@ var PUBLIC_DOWNLOAD_MEDIA_TYPES = [
18045
18095
  "document",
18046
18096
  "spreadsheet",
18047
18097
  "archive",
18048
- "audio",
18049
- "video"
18098
+ "audio"
18050
18099
  ];
18051
18100
  var hotspotSchema2 = z39.object({
18052
18101
  x: z39.number().min(0).max(1),
@@ -19782,104 +19831,107 @@ var courseDetailsBlockDefinition = {
19782
19831
  };
19783
19832
 
19784
19833
  // ../blocks/src/system/blocks/events/event-spotlight.ts
19785
- var eventSpotlightManifest = createBlockManifest({
19834
+ var eventSpotlightFields = [
19835
+ ...sectionHeaderFields("Upcoming Events"),
19836
+ {
19837
+ id: "maxEvents",
19838
+ type: "select",
19839
+ label: "Events to display",
19840
+ description: "Number of events to show",
19841
+ required: false,
19842
+ multiple: false,
19843
+ defaultValue: "3",
19844
+ options: [
19845
+ { value: "1", label: "1 event" },
19846
+ { value: "2", label: "2 events" },
19847
+ { value: "3", label: "3 events" },
19848
+ { value: "4", label: "4 events" },
19849
+ { value: "5", label: "5 events" },
19850
+ { value: "6", label: "6 events" }
19851
+ ],
19852
+ ui: { intent: "display" }
19853
+ },
19854
+ {
19855
+ id: "ctaLabel",
19856
+ type: "text",
19857
+ label: "Section button text",
19858
+ description: "Optional button shown below the spotlight cards",
19859
+ required: false,
19860
+ multiline: false,
19861
+ maxLength: 40,
19862
+ ui: { intent: "content" }
19863
+ },
19864
+ {
19865
+ id: "ctaUrl",
19866
+ type: "link",
19867
+ label: "Section button destination",
19868
+ required: false,
19869
+ ui: { intent: "display" }
19870
+ },
19871
+ layoutField,
19872
+ columnsField(["2", "3"]),
19873
+ ...cardStylingFields,
19874
+ ...eventDisplayFields,
19875
+ emptyStateField,
19876
+ sectionStylesField({
19877
+ id: "_sectionStyles",
19878
+ label: "Section styles"
19879
+ })
19880
+ ];
19881
+ var eventSpotlightLayout = [
19882
+ styledSection({
19883
+ children: sectionContainer([
19884
+ // Optional heading
19885
+ text(
19886
+ { as: "h2" },
19887
+ bind("content.heading"),
19888
+ when("content.heading")
19889
+ ),
19890
+ // Optional description
19891
+ richText(
19892
+ { className: "rb-prose rb-max-w-none" },
19893
+ bind("content.description"),
19894
+ when("content.description")
19895
+ ),
19896
+ // Event spotlight component
19897
+ el("event-spotlight", {
19898
+ events: { $bind: { from: "data.events" } },
19899
+ layout: { $bind: { from: "content.layout", fallback: "grid" } },
19900
+ columns: { $bind: { from: "content.columns", fallback: "3" } },
19901
+ cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
19902
+ buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
19903
+ buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
19904
+ ctaLabel: { $bind: { from: "content.ctaLabel" } },
19905
+ ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
19906
+ showVenue: { $bind: { from: "content.showVenue" } },
19907
+ showMap: { $bind: { from: "content.showMap" } },
19908
+ showCapacity: { $bind: { from: "content.showCapacity" } },
19909
+ emptyMessage: { $bind: { from: "content.emptyMessage" } }
19910
+ })
19911
+ ], {
19912
+ gap: "lg"
19913
+ }),
19914
+ // sectionContainer (rb-container) already provides horizontal padding
19915
+ baseClass: "",
19916
+ spacing: "comfortable"
19917
+ })
19918
+ ];
19919
+ var eventSpotlightConfig = {
19786
19920
  id: "block.event-spotlight",
19787
19921
  version: "1.1.0",
19788
19922
  title: "Event Spotlight",
19789
19923
  titleSource: "heading",
19790
19924
  description: "Feature a few upcoming events on your homepage",
19791
19925
  skipSectionStyles: true,
19792
- additionalFields: [
19793
- ...sectionHeaderFields("Upcoming Events"),
19794
- {
19795
- id: "maxEvents",
19796
- type: "select",
19797
- label: "Events to display",
19798
- description: "Number of events to show",
19799
- required: false,
19800
- multiple: false,
19801
- defaultValue: "3",
19802
- options: [
19803
- { value: "1", label: "1 event" },
19804
- { value: "2", label: "2 events" },
19805
- { value: "3", label: "3 events" },
19806
- { value: "4", label: "4 events" },
19807
- { value: "5", label: "5 events" },
19808
- { value: "6", label: "6 events" }
19809
- ],
19810
- ui: { intent: "display" }
19811
- },
19812
- {
19813
- id: "ctaLabel",
19814
- type: "text",
19815
- label: "Section button text",
19816
- description: "Optional button shown below the spotlight cards",
19817
- required: false,
19818
- multiline: false,
19819
- maxLength: 40,
19820
- ui: { intent: "content" }
19821
- },
19822
- {
19823
- id: "ctaUrl",
19824
- type: "link",
19825
- label: "Section button destination",
19826
- required: false,
19827
- ui: { intent: "display" }
19828
- },
19829
- layoutField,
19830
- columnsField(["2", "3"]),
19831
- ...cardStylingFields,
19832
- ...eventDisplayFields,
19833
- emptyStateField,
19834
- sectionStylesField({
19835
- id: "_sectionStyles",
19836
- label: "Section styles"
19837
- })
19838
- ],
19926
+ additionalFields: eventSpotlightFields,
19839
19927
  styleTokens: { background: "surface", typography: "body", spacing: "md" },
19840
19928
  behaviours: { supportsThemeSwitching: true, inlineEditing: false, animation: false, paletteHidden: false },
19841
19929
  category: "content",
19842
19930
  tags: ["events", "featured", "homepage", "spotlight", "upcoming"],
19843
19931
  icon: "Star",
19844
- layout: [
19845
- styledSection({
19846
- children: sectionContainer([
19847
- // Optional heading
19848
- text(
19849
- { as: "h2" },
19850
- bind("content.heading"),
19851
- when("content.heading")
19852
- ),
19853
- // Optional description
19854
- richText(
19855
- { className: "rb-prose rb-max-w-none" },
19856
- bind("content.description"),
19857
- when("content.description")
19858
- ),
19859
- // Event spotlight component
19860
- el("event-spotlight", {
19861
- events: { $bind: { from: "data.events" } },
19862
- layout: { $bind: { from: "content.layout", fallback: "grid" } },
19863
- columns: { $bind: { from: "content.columns", fallback: "3" } },
19864
- cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
19865
- buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
19866
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
19867
- ctaLabel: { $bind: { from: "content.ctaLabel" } },
19868
- ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
19869
- showVenue: { $bind: { from: "content.showVenue" } },
19870
- showMap: { $bind: { from: "content.showMap" } },
19871
- showCapacity: { $bind: { from: "content.showCapacity" } },
19872
- emptyMessage: { $bind: { from: "content.emptyMessage" } }
19873
- })
19874
- ], {
19875
- gap: "lg"
19876
- }),
19877
- // sectionContainer (rb-container) already provides horizontal padding
19878
- baseClass: "",
19879
- spacing: "comfortable"
19880
- })
19881
- ]
19882
- });
19932
+ layout: eventSpotlightLayout
19933
+ };
19934
+ var eventSpotlightManifest = createBlockManifest(eventSpotlightConfig);
19883
19935
  var eventSpotlightBlockDefinition = {
19884
19936
  manifest: eventSpotlightManifest,
19885
19937
  dataSchemas: {
@@ -24604,18 +24656,18 @@ var fileDownloadManifest = createBlockManifest({
24604
24656
  title: "File Download",
24605
24657
  titleSource: ["title", "file.filename"],
24606
24658
  category: "media",
24607
- description: "Add a simple public download link for a document, ZIP, audio, or video file.",
24659
+ description: "Add a simple public download link for a document, ZIP, or audio file.",
24608
24660
  tags: ["file", "download", "document", "zip", "media"],
24609
24661
  icon: "Download",
24610
24662
  includeContainerStyles: true,
24611
24663
  additionalFields: [
24612
24664
  {
24613
24665
  id: "file",
24614
- type: "media",
24666
+ type: "file",
24615
24667
  label: "Download file",
24616
24668
  description: "Choose the file visitors can download.",
24617
24669
  required: false,
24618
- mediaKinds: [...PUBLIC_DOWNLOAD_MEDIA_TYPES],
24670
+ fileKinds: [...PUBLIC_DOWNLOAD_MEDIA_TYPES],
24619
24671
  ui: { intent: "content" }
24620
24672
  },
24621
24673
  {
@@ -29127,28 +29179,8 @@ var __iconNode15 = [
29127
29179
  ];
29128
29180
  var FileHeadphone = createLucideIcon("file-headphone", __iconNode15);
29129
29181
 
29130
- // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-play.js
29131
- var __iconNode16 = [
29132
- [
29133
- "path",
29134
- {
29135
- 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",
29136
- key: "1oefj6"
29137
- }
29138
- ],
29139
- ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
29140
- [
29141
- "path",
29142
- {
29143
- 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",
29144
- key: "1tzo1f"
29145
- }
29146
- ]
29147
- ];
29148
- var FilePlay = createLucideIcon("file-play", __iconNode16);
29149
-
29150
29182
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js
29151
- var __iconNode17 = [
29183
+ var __iconNode16 = [
29152
29184
  [
29153
29185
  "path",
29154
29186
  {
@@ -29162,10 +29194,10 @@ var __iconNode17 = [
29162
29194
  ["path", { d: "M8 17h2", key: "2yhykz" }],
29163
29195
  ["path", { d: "M14 17h2", key: "10kma7" }]
29164
29196
  ];
29165
- var FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode17);
29197
+ var FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode16);
29166
29198
 
29167
29199
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/file-text.js
29168
- var __iconNode18 = [
29200
+ var __iconNode17 = [
29169
29201
  [
29170
29202
  "path",
29171
29203
  {
@@ -29178,25 +29210,25 @@ var __iconNode18 = [
29178
29210
  ["path", { d: "M16 13H8", key: "t4e002" }],
29179
29211
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
29180
29212
  ];
29181
- var FileText = createLucideIcon("file-text", __iconNode18);
29213
+ var FileText = createLucideIcon("file-text", __iconNode17);
29182
29214
 
29183
29215
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/info.js
29184
- var __iconNode19 = [
29216
+ var __iconNode18 = [
29185
29217
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
29186
29218
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
29187
29219
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
29188
29220
  ];
29189
- var Info = createLucideIcon("info", __iconNode19);
29221
+ var Info = createLucideIcon("info", __iconNode18);
29190
29222
 
29191
29223
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/mail.js
29192
- var __iconNode20 = [
29224
+ var __iconNode19 = [
29193
29225
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
29194
29226
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
29195
29227
  ];
29196
- var Mail = createLucideIcon("mail", __iconNode20);
29228
+ var Mail = createLucideIcon("mail", __iconNode19);
29197
29229
 
29198
29230
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/map-pin.js
29199
- var __iconNode21 = [
29231
+ var __iconNode20 = [
29200
29232
  [
29201
29233
  "path",
29202
29234
  {
@@ -29206,14 +29238,14 @@ var __iconNode21 = [
29206
29238
  ],
29207
29239
  ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }]
29208
29240
  ];
29209
- var MapPin = createLucideIcon("map-pin", __iconNode21);
29241
+ var MapPin = createLucideIcon("map-pin", __iconNode20);
29210
29242
 
29211
29243
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/minus.js
29212
- var __iconNode22 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
29213
- var Minus = createLucideIcon("minus", __iconNode22);
29244
+ var __iconNode21 = [["path", { d: "M5 12h14", key: "1ays0h" }]];
29245
+ var Minus = createLucideIcon("minus", __iconNode21);
29214
29246
 
29215
29247
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/phone.js
29216
- var __iconNode23 = [
29248
+ var __iconNode22 = [
29217
29249
  [
29218
29250
  "path",
29219
29251
  {
@@ -29222,10 +29254,10 @@ var __iconNode23 = [
29222
29254
  }
29223
29255
  ]
29224
29256
  ];
29225
- var Phone = createLucideIcon("phone", __iconNode23);
29257
+ var Phone = createLucideIcon("phone", __iconNode22);
29226
29258
 
29227
29259
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/play.js
29228
- var __iconNode24 = [
29260
+ var __iconNode23 = [
29229
29261
  [
29230
29262
  "path",
29231
29263
  {
@@ -29234,17 +29266,17 @@ var __iconNode24 = [
29234
29266
  }
29235
29267
  ]
29236
29268
  ];
29237
- var Play = createLucideIcon("play", __iconNode24);
29269
+ var Play = createLucideIcon("play", __iconNode23);
29238
29270
 
29239
29271
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/plus.js
29240
- var __iconNode25 = [
29272
+ var __iconNode24 = [
29241
29273
  ["path", { d: "M5 12h14", key: "1ays0h" }],
29242
29274
  ["path", { d: "M12 5v14", key: "s699le" }]
29243
29275
  ];
29244
- var Plus = createLucideIcon("plus", __iconNode25);
29276
+ var Plus = createLucideIcon("plus", __iconNode24);
29245
29277
 
29246
29278
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/shopping-cart.js
29247
- var __iconNode26 = [
29279
+ var __iconNode25 = [
29248
29280
  ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
29249
29281
  ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
29250
29282
  [
@@ -29255,22 +29287,22 @@ var __iconNode26 = [
29255
29287
  }
29256
29288
  ]
29257
29289
  ];
29258
- var ShoppingCart = createLucideIcon("shopping-cart", __iconNode26);
29290
+ var ShoppingCart = createLucideIcon("shopping-cart", __iconNode25);
29259
29291
 
29260
29292
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/upload.js
29261
- var __iconNode27 = [
29293
+ var __iconNode26 = [
29262
29294
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
29263
29295
  ["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
29264
29296
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
29265
29297
  ];
29266
- var Upload = createLucideIcon("upload", __iconNode27);
29298
+ var Upload = createLucideIcon("upload", __iconNode26);
29267
29299
 
29268
29300
  // ../../node_modules/.pnpm/lucide-react@0.563.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/x.js
29269
- var __iconNode28 = [
29301
+ var __iconNode27 = [
29270
29302
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
29271
29303
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
29272
29304
  ];
29273
- var X = createLucideIcon("x", __iconNode28);
29305
+ var X = createLucideIcon("x", __iconNode27);
29274
29306
 
29275
29307
  // ../blocks/src/system/icons/cta.ts
29276
29308
  var CTA_ICON_NAMES = [
@@ -29362,7 +29394,12 @@ var IconNode = ({
29362
29394
 
29363
29395
  // ../blocks/src/system/runtime/nodes/file-download.tsx
29364
29396
  import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
29365
- var FILE_DOWNLOAD_BUTTON_VARIANTS = ["primary", "secondary", "outline", "link"];
29397
+ var FILE_DOWNLOAD_BUTTON_VARIANTS = [
29398
+ "primary",
29399
+ "secondary",
29400
+ "outline",
29401
+ "link"
29402
+ ];
29366
29403
  function isDownloadableMediaType(type) {
29367
29404
  return typeof type === "string" && PUBLIC_DOWNLOAD_MEDIA_TYPES.includes(type);
29368
29405
  }
@@ -29377,8 +29414,6 @@ function iconForMediaType(type) {
29377
29414
  switch (type) {
29378
29415
  case "audio":
29379
29416
  return /* @__PURE__ */ jsx17(FileHeadphone, { "aria-hidden": "true" });
29380
- case "video":
29381
- return /* @__PURE__ */ jsx17(FilePlay, { "aria-hidden": "true" });
29382
29417
  case "document":
29383
29418
  return /* @__PURE__ */ jsx17(FileText, { "aria-hidden": "true" });
29384
29419
  case "spreadsheet":
@@ -29417,8 +29452,22 @@ function FileDownloadNode({
29417
29452
  }
29418
29453
  ),
29419
29454
  /* @__PURE__ */ jsxs6("div", { className: "rb-min-w-0 rb-space-y-1", children: [
29420
- /* @__PURE__ */ jsx17("h2", { className: "rb-m-0 rb-text-lg rb-font-semibold", style: textColorStyle("heading"), children: heading }),
29421
- body ? /* @__PURE__ */ jsx17("p", { className: "rb-m-0 rb-text-sm", style: textColorStyle("mutedText"), children: body }) : null,
29455
+ /* @__PURE__ */ jsx17(
29456
+ "h2",
29457
+ {
29458
+ className: "rb-m-0 rb-text-lg rb-font-semibold",
29459
+ style: textColorStyle("heading"),
29460
+ children: heading
29461
+ }
29462
+ ),
29463
+ body ? /* @__PURE__ */ jsx17(
29464
+ "p",
29465
+ {
29466
+ className: "rb-m-0 rb-text-sm",
29467
+ style: textColorStyle("mutedText"),
29468
+ children: body
29469
+ }
29470
+ ) : null,
29422
29471
  /* @__PURE__ */ jsx17(
29423
29472
  "p",
29424
29473
  {
@@ -56991,7 +57040,6 @@ lucide-react/dist/esm/icons/download.js:
56991
57040
  lucide-react/dist/esm/icons/external-link.js:
56992
57041
  lucide-react/dist/esm/icons/file-archive.js:
56993
57042
  lucide-react/dist/esm/icons/file-headphone.js:
56994
- lucide-react/dist/esm/icons/file-play.js:
56995
57043
  lucide-react/dist/esm/icons/file-spreadsheet.js:
56996
57044
  lucide-react/dist/esm/icons/file-text.js:
56997
57045
  lucide-react/dist/esm/icons/info.js: