@riverbankcms/sdk 0.60.6 → 0.60.9

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 (103) hide show
  1. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  2. package/dist/_dts/api/src/bookingConfig.d.ts +6 -0
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +45 -3
  4. package/dist/_dts/api/src/bookingOperations.d.ts +40 -3
  5. package/dist/_dts/api/src/courses.d.ts +1 -5
  6. package/dist/_dts/api/src/endpoints.d.ts +80 -1
  7. package/dist/_dts/api/src/index.d.ts +3 -2
  8. package/dist/_dts/api/src/navigation/contracts.d.ts +9 -9
  9. package/dist/_dts/api/src/navigation/linkValue.d.ts +1 -1
  10. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  11. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -1
  12. package/dist/_dts/api/src/resources.d.ts +1 -1
  13. package/dist/_dts/api/src/siteBanner.d.ts +8 -8
  14. package/dist/_dts/api/src/siteOnboarding.d.ts +1 -0
  15. package/dist/_dts/api/src/teamMembers.d.ts +27 -0
  16. package/dist/_dts/blocks/src/index.d.ts +2 -1
  17. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +35 -29
  18. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -5
  19. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +40 -34
  20. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -5
  21. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1 -1
  22. package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +2 -2
  23. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
  24. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +24 -0
  25. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +18 -8
  26. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  29. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +185 -0
  30. package/dist/_dts/blocks/src/system/manifest/index.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +201 -201
  32. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -84
  33. package/dist/_dts/blocks/src/system/node/schema.d.ts +5 -5
  34. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +4 -4
  36. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +3 -3
  38. package/dist/_dts/blocks/src/system/types/link.d.ts +93 -1
  39. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  40. package/dist/_dts/content-model/src/metadataConfig.d.ts +1 -0
  41. package/dist/_dts/core/src/branded.d.ts +2 -0
  42. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +124 -8
  43. package/dist/_dts/db/src/schemas/forms.d.ts +85 -64
  44. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +1 -1
  45. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +1 -1
  46. package/dist/_dts/editor-blocks/src/widgets/link/utils.d.ts +1 -1
  47. package/dist/_dts/sdk/src/client/types.d.ts +9 -2
  48. package/dist/_dts/sdk/src/config/typed-entries.d.ts +36 -1
  49. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  50. package/dist/_dts/sdk/src/config/validation.d.ts +40 -37
  51. package/dist/_dts/sdk/src/contracts/content.d.ts +6 -1
  52. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  53. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +18 -8
  54. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +1 -1
  55. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +19 -19
  56. package/dist/_dts/sdk/src/public-api/contracts.d.ts +87 -69
  57. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  58. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -5
  59. package/dist/_dts/sdk/src/version.d.ts +1 -1
  60. package/dist/_dts/theme-core/src/accordions/types.d.ts +11 -11
  61. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +10 -10
  62. package/dist/_dts/theme-core/src/buttons/types.d.ts +27 -27
  63. package/dist/_dts/theme-core/src/cards/types.d.ts +17 -17
  64. package/dist/_dts/theme-core/src/inputs/types.d.ts +14 -14
  65. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +2 -2
  66. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +438 -438
  67. package/dist/_dts/theme-core/src/navigation/types.d.ts +16 -16
  68. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +15 -15
  69. package/dist/_dts/theme-core/src/schema.d.ts +662 -662
  70. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +4 -4
  71. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +15 -15
  72. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +7 -7
  73. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  74. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +5 -5
  75. package/dist/_dts/ui/src/badge.d.ts +1 -1
  76. package/dist/_dts/ui/src/button-group.d.ts +1 -1
  77. package/dist/_dts/ui/src/button.d.ts +2 -2
  78. package/dist/_dts/ui/src/callout.d.ts +1 -1
  79. package/dist/_dts/ui/src/card.d.ts +1 -1
  80. package/dist/_dts/ui/src/surface.d.ts +2 -2
  81. package/dist/_dts/ui/src/toggle.d.ts +4 -4
  82. package/dist/cli/index.mjs +951 -451
  83. package/dist/client/client.mjs +39490 -38952
  84. package/dist/client/hooks.mjs +1992 -1741
  85. package/dist/client/rendering/client.mjs +179 -130
  86. package/dist/client/rendering/islands.mjs +68 -43
  87. package/dist/client/rendering.mjs +1812 -1292
  88. package/dist/preview-next/before-render.mjs +147 -1
  89. package/dist/preview-next/client/runtime.mjs +1377 -829
  90. package/dist/preview-next/middleware.mjs +147 -1
  91. package/dist/server/components.mjs +3246 -2751
  92. package/dist/server/config-validation.mjs +2198 -1962
  93. package/dist/server/config.mjs +2198 -1962
  94. package/dist/server/data.mjs +1992 -1741
  95. package/dist/server/index.mjs +168 -2
  96. package/dist/server/next.mjs +3230 -2701
  97. package/dist/server/page-converter.mjs +345 -259
  98. package/dist/server/prebuild.mjs +1 -1
  99. package/dist/server/rendering/server.mjs +3274 -2763
  100. package/dist/server/rendering.mjs +3274 -2763
  101. package/dist/server/routing.mjs +530 -309
  102. package/dist/server/server.mjs +2011 -1742
  103. package/package.json +1 -1
@@ -45,16 +45,6 @@ function formatKeyAsLabel(key) {
45
45
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
46
46
  }
47
47
 
48
- // ../blocks/src/system/manifest/registry.ts
49
- var REGISTRY_SYMBOL = /* @__PURE__ */ Symbol.for("@riverbankcms/blocks/manifest-registry");
50
- var isVitest = typeof process !== "undefined" && typeof process.env !== "undefined" && process.env.VITEST === "true";
51
- var globalScope = globalThis;
52
- var manifestStore = isVitest ? /* @__PURE__ */ new Map() : globalScope[REGISTRY_SYMBOL] ?? (globalScope[REGISTRY_SYMBOL] = /* @__PURE__ */ new Map());
53
- function registerManifest(manifest) {
54
- manifestStore.set(manifest.name, manifest);
55
- return manifest;
56
- }
57
-
58
48
  // ../blocks/src/system/manifest/schema.ts
59
49
  import { z as z2 } from "zod";
60
50
 
@@ -904,6 +894,16 @@ var manifestSchema = z2.object({
904
894
  icon: z2.string().optional()
905
895
  });
906
896
 
897
+ // ../blocks/src/system/manifest/registry.ts
898
+ var REGISTRY_SYMBOL = /* @__PURE__ */ Symbol.for("@riverbankcms/blocks/manifest-registry");
899
+ var isVitest = typeof process !== "undefined" && typeof process.env !== "undefined" && process.env.VITEST === "true";
900
+ var globalScope = globalThis;
901
+ var manifestStore = isVitest ? /* @__PURE__ */ new Map() : globalScope[REGISTRY_SYMBOL] ?? (globalScope[REGISTRY_SYMBOL] = /* @__PURE__ */ new Map());
902
+ function registerManifest(manifest) {
903
+ manifestStore.set(manifest.name, manifest);
904
+ return manifest;
905
+ }
906
+
907
907
  // ../theme-core/src/site-styles/types.ts
908
908
  function asDesignBlockId(value) {
909
909
  return brandNonEmptyString(value, "DesignBlockId");
@@ -8273,7 +8273,19 @@ var teamMemberFragment = defineFragment({
8273
8273
  bind("photo")
8274
8274
  )
8275
8275
  ]),
8276
- text({ as: "h3" }, bind("name")),
8276
+ link(
8277
+ {
8278
+ href: { $bind: { from: "profilePath" } },
8279
+ className: "rb-team-member-name-link"
8280
+ },
8281
+ [text({ as: "h3" }, bind("name"))],
8282
+ when("profilePath")
8283
+ ),
8284
+ text(
8285
+ { as: "h3" },
8286
+ when("profilePath", { not: true }),
8287
+ bind("name")
8288
+ ),
8277
8289
  text({ as: "p", className: "rb-team-member-role" }, when("role"), bind("role")),
8278
8290
  richText(
8279
8291
  { className: "rb-prose rb-max-w-none" },
@@ -11368,7 +11380,9 @@ var courseSessionSchema = z31.object({
11368
11380
  var courseTeamMemberSummarySchema = z31.object({
11369
11381
  id: z31.string(),
11370
11382
  name: z31.string(),
11371
- summary: z31.string().nullable()
11383
+ roleLabel: z31.string().nullable(),
11384
+ summary: z31.string().nullable(),
11385
+ profilePath: z31.string().nullable()
11372
11386
  });
11373
11387
  var coursePricingOptionSchema = z31.object({
11374
11388
  id: z31.string(),
@@ -11473,7 +11487,9 @@ var publicEventTicketTypeSchema = z32.object({
11473
11487
  var publicTeamMemberSummarySchema = z32.object({
11474
11488
  id: z32.string(),
11475
11489
  name: z32.string(),
11476
- summary: z32.string().nullable()
11490
+ roleLabel: z32.string().nullable(),
11491
+ summary: z32.string().nullable(),
11492
+ profilePath: z32.string().nullable()
11477
11493
  });
11478
11494
  var publicEventSchema = z32.object({
11479
11495
  kind: z32.enum(["event", "course_session"]).optional(),
@@ -17244,7 +17260,25 @@ var newsletterSignupBlockDefinition = {
17244
17260
  };
17245
17261
 
17246
17262
  // ../blocks/src/system/blocks/team-members.ts
17263
+ import { z as z50 } from "zod";
17247
17264
  var ITEM_NAME2 = "member";
17265
+ var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
17266
+ message: "Team member photos must be image media"
17267
+ }).nullable();
17268
+ var teamMemberDataSchema = z50.object({
17269
+ _type: z50.literal("teamMember"),
17270
+ id: z50.string(),
17271
+ name: z50.string(),
17272
+ role: z50.string().nullable(),
17273
+ roleLabel: z50.string().nullable(),
17274
+ bio: z50.string().nullable(),
17275
+ summary: z50.string().nullable(),
17276
+ photo: teamMemberPhotoSchema,
17277
+ profilePath: z50.string().nullable()
17278
+ });
17279
+ var teamMembersDataSchema = z50.array(teamMemberDataSchema);
17280
+ var dynamicSourceWhen = { equals: "site_staff" };
17281
+ var manualSourceWhen = { equals: "site_staff", not: true };
17248
17282
  var headingNode = text(
17249
17283
  { as: "h2" },
17250
17284
  bind("content.heading"),
@@ -17334,7 +17368,15 @@ var teamMemberStackLayout = el(
17334
17368
  ]
17335
17369
  ),
17336
17370
  stack({ gap: "sm", className: "rb-team-member-body rb-flex-1 rb-min-w-0" }, [
17337
- text({ as: "h3" }, bind("name")),
17371
+ link(
17372
+ {
17373
+ href: { $bind: { from: "profilePath" } },
17374
+ className: "rb-team-member-name-link"
17375
+ },
17376
+ [text({ as: "h3" }, bind("name"))],
17377
+ when("profilePath")
17378
+ ),
17379
+ text({ as: "h3" }, when("profilePath", { not: true }), bind("name")),
17338
17380
  text(
17339
17381
  { as: "p", className: "rb-team-member-role" },
17340
17382
  when("role"),
@@ -17348,12 +17390,18 @@ var teamMemberStackLayout = el(
17348
17390
  ])
17349
17391
  ]
17350
17392
  );
17351
- var gridMembersNode = repeaterFragmentLayout({
17393
+ var manualGridMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
17352
17394
  collectionPath: "content.members",
17353
17395
  itemName: ITEM_NAME2,
17354
17396
  fragments: { teamMember: teamMemberFragment },
17355
17397
  itemGap: "sm"
17356
- });
17398
+ }));
17399
+ var dynamicGridMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
17400
+ collectionPath: "data.members",
17401
+ itemName: ITEM_NAME2,
17402
+ fragments: { teamMember: teamMemberFragment },
17403
+ itemGap: "sm"
17404
+ }));
17357
17405
  var gridVariant = wrapVariant3(
17358
17406
  el(
17359
17407
  "grid",
@@ -17367,22 +17415,29 @@ var gridVariant = wrapVariant3(
17367
17415
  },
17368
17416
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
17369
17417
  },
17370
- [gridMembersNode]
17418
+ [manualGridMembersNode, dynamicGridMembersNode]
17371
17419
  )
17372
17420
  );
17373
- var stackMembersNode = repeaterFragmentLayout({
17421
+ var manualStackMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
17374
17422
  collectionPath: "content.members",
17375
17423
  itemName: ITEM_NAME2,
17376
17424
  fragments: { teamMember: teamMemberFragment },
17377
17425
  layoutOverrides: { teamMember: teamMemberStackLayout },
17378
17426
  itemGap: "sm"
17379
- });
17427
+ }));
17428
+ var dynamicStackMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
17429
+ collectionPath: "data.members",
17430
+ itemName: ITEM_NAME2,
17431
+ fragments: { teamMember: teamMemberFragment },
17432
+ layoutOverrides: { teamMember: teamMemberStackLayout },
17433
+ itemGap: "sm"
17434
+ }));
17380
17435
  var stackVariant = wrapVariant3({
17381
17436
  type: "stack",
17382
17437
  props: {
17383
17438
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
17384
17439
  },
17385
- children: [stackMembersNode]
17440
+ children: [manualStackMembersNode, dynamicStackMembersNode]
17386
17441
  });
17387
17442
  var teamMembersManifest = createBlockManifest({
17388
17443
  id: "block.team-members",
@@ -17397,6 +17452,18 @@ var teamMembersManifest = createBlockManifest({
17397
17452
  required: false,
17398
17453
  maxLength: 120
17399
17454
  }),
17455
+ parseFieldDefinition({
17456
+ id: "source",
17457
+ type: "select",
17458
+ label: "Team members",
17459
+ description: "Choose whether to use the site-wide team or a hand-picked list.",
17460
+ defaultValue: "manual",
17461
+ options: [
17462
+ { value: "manual", label: "Choose manually" },
17463
+ { value: "site_staff", label: "Use all site team members" }
17464
+ ],
17465
+ ui: { intent: "behavior" }
17466
+ }),
17400
17467
  parseFieldDefinition({
17401
17468
  id: "layoutAlign",
17402
17469
  type: "select",
@@ -17499,18 +17566,24 @@ var teamMembersManifest = createBlockManifest({
17499
17566
  ],
17500
17567
  ui: { intent: "display" }
17501
17568
  }),
17502
- fragmentsToRepeaterField(
17503
- "members",
17504
- "Team members",
17505
- { teamMember: teamMemberFragment },
17506
- {
17507
- minItems: 0,
17508
- maxItems: 50,
17509
- itemLabel: "Team member",
17510
- itemLabelSource: "name",
17511
- description: "Add people to this section."
17569
+ {
17570
+ ...fragmentsToRepeaterField(
17571
+ "members",
17572
+ "Team members",
17573
+ { teamMember: teamMemberFragment },
17574
+ {
17575
+ minItems: 0,
17576
+ maxItems: 50,
17577
+ itemLabel: "Team member",
17578
+ itemLabelSource: "name",
17579
+ description: "Add people to this section."
17580
+ }
17581
+ ),
17582
+ ui: {
17583
+ intent: "content",
17584
+ visibleWhen: { field: "source", equals: "manual" }
17512
17585
  }
17513
- )
17586
+ }
17514
17587
  ],
17515
17588
  layout: gridVariant,
17516
17589
  variants: {
@@ -17536,7 +17609,20 @@ var teamMembersManifest = createBlockManifest({
17536
17609
  styleTokens: { spacing: "lg" }
17537
17610
  });
17538
17611
  var teamMembersBlockDefinition = {
17539
- manifest: teamMembersManifest
17612
+ manifest: teamMembersManifest,
17613
+ dataSchemas: {
17614
+ members: teamMembersDataSchema
17615
+ },
17616
+ dataLoaders: {
17617
+ members: {
17618
+ endpoint: "listPublicTeamMembers",
17619
+ params: {
17620
+ siteId: { $bind: { from: "$root.siteId" } },
17621
+ stage: { $bind: { from: "$root.previewStage", fallback: "published" } }
17622
+ },
17623
+ mode: "server"
17624
+ }
17625
+ }
17540
17626
  };
17541
17627
 
17542
17628
  // ../blocks/src/system/runtime/nodes/location-map.shared.ts
@@ -18514,11 +18600,11 @@ function resolveModelForPass(passId, tierOverrides, passOverrides, globalModel)
18514
18600
  }
18515
18601
 
18516
18602
  // src/page-converter/passes/pass1-segmentation-matching.ts
18517
- import { z as z54 } from "zod";
18603
+ import { z as z55 } from "zod";
18518
18604
 
18519
18605
  // src/manifest/passes/pass1-fields.ts
18520
- import { z as z50 } from "zod";
18521
- var simpleFieldTypeEnum = z50.enum([
18606
+ import { z as z51 } from "zod";
18607
+ var simpleFieldTypeEnum = z51.enum([
18522
18608
  "text",
18523
18609
  "richText",
18524
18610
  "media",
@@ -18527,7 +18613,7 @@ var simpleFieldTypeEnum = z50.enum([
18527
18613
  "select",
18528
18614
  "number"
18529
18615
  ]);
18530
- var fieldTypeEnum = z50.enum([
18616
+ var fieldTypeEnum = z51.enum([
18531
18617
  "text",
18532
18618
  "richText",
18533
18619
  "media",
@@ -18538,109 +18624,109 @@ var fieldTypeEnum = z50.enum([
18538
18624
  "repeater",
18539
18625
  "group"
18540
18626
  ]);
18541
- var linkDefaultValue = z50.object({
18542
- label: z50.string().describe("The visible link text")
18627
+ var linkDefaultValue = z51.object({
18628
+ label: z51.string().describe("The visible link text")
18543
18629
  });
18544
- var mediaDefaultValue = z50.object({
18545
- src: z50.string().describe("Image/video source URL"),
18546
- alt: z50.string().describe("Alt text for accessibility (empty string if none)")
18630
+ var mediaDefaultValue = z51.object({
18631
+ src: z51.string().describe("Image/video source URL"),
18632
+ alt: z51.string().describe("Alt text for accessibility (empty string if none)")
18547
18633
  });
18548
- var nestedFieldSchema = z50.object({
18549
- id: z50.string().min(1).describe("camelCase field ID"),
18634
+ var nestedFieldSchema = z51.object({
18635
+ id: z51.string().min(1).describe("camelCase field ID"),
18550
18636
  type: simpleFieldTypeEnum,
18551
- label: z50.string().min(1),
18552
- required: z50.boolean().nullable()
18637
+ label: z51.string().min(1),
18638
+ required: z51.boolean().nullable()
18553
18639
  });
18554
- var simpleFieldSchema = z50.object({
18555
- id: z50.string().min(1).describe("camelCase field ID (e.g., headline, ctaButton)"),
18640
+ var simpleFieldSchema = z51.object({
18641
+ id: z51.string().min(1).describe("camelCase field ID (e.g., headline, ctaButton)"),
18556
18642
  type: simpleFieldTypeEnum,
18557
- label: z50.string().min(1),
18558
- required: z50.boolean(),
18559
- multiline: z50.boolean().nullable().describe("For text fields: true if multiple lines"),
18560
- defaultValue: z50.union([
18561
- z50.string(),
18562
- z50.number(),
18563
- z50.boolean(),
18643
+ label: z51.string().min(1),
18644
+ required: z51.boolean(),
18645
+ multiline: z51.boolean().nullable().describe("For text fields: true if multiple lines"),
18646
+ defaultValue: z51.union([
18647
+ z51.string(),
18648
+ z51.number(),
18649
+ z51.boolean(),
18564
18650
  linkDefaultValue,
18565
18651
  mediaDefaultValue,
18566
- z50.null()
18652
+ z51.null()
18567
18653
  ]).describe("Default content extracted from HTML"),
18568
- htmlContext: z50.string().describe("Brief description of where this appears in the HTML")
18569
- });
18570
- var repeaterFieldSchema2 = z50.object({
18571
- id: z50.string().min(1).describe("camelCase field ID (e.g., socialLinks, features)"),
18572
- type: z50.literal("repeater"),
18573
- label: z50.string().min(1),
18574
- required: z50.boolean(),
18575
- itemLabel: z50.string().min(1).describe('Singular label for each item (e.g., "Link", "Feature")'),
18576
- itemFields: z50.array(nestedFieldSchema).min(1).describe("Fields for each item in the repeater"),
18577
- htmlContext: z50.string().describe("Brief description of where this appears in the HTML")
18578
- });
18579
- var groupFieldSchema2 = z50.object({
18580
- id: z50.string().min(1).describe("camelCase field ID (e.g., contactInfo, seoSettings)"),
18581
- type: z50.literal("group"),
18582
- label: z50.string().min(1),
18583
- required: z50.boolean(),
18584
- groupFields: z50.array(nestedFieldSchema).min(1).describe("Fields within the group"),
18585
- htmlContext: z50.string().describe("Brief description of where this appears in the HTML")
18586
- });
18587
- var extractedFieldSchema = z50.union([
18654
+ htmlContext: z51.string().describe("Brief description of where this appears in the HTML")
18655
+ });
18656
+ var repeaterFieldSchema2 = z51.object({
18657
+ id: z51.string().min(1).describe("camelCase field ID (e.g., socialLinks, features)"),
18658
+ type: z51.literal("repeater"),
18659
+ label: z51.string().min(1),
18660
+ required: z51.boolean(),
18661
+ itemLabel: z51.string().min(1).describe('Singular label for each item (e.g., "Link", "Feature")'),
18662
+ itemFields: z51.array(nestedFieldSchema).min(1).describe("Fields for each item in the repeater"),
18663
+ htmlContext: z51.string().describe("Brief description of where this appears in the HTML")
18664
+ });
18665
+ var groupFieldSchema2 = z51.object({
18666
+ id: z51.string().min(1).describe("camelCase field ID (e.g., contactInfo, seoSettings)"),
18667
+ type: z51.literal("group"),
18668
+ label: z51.string().min(1),
18669
+ required: z51.boolean(),
18670
+ groupFields: z51.array(nestedFieldSchema).min(1).describe("Fields within the group"),
18671
+ htmlContext: z51.string().describe("Brief description of where this appears in the HTML")
18672
+ });
18673
+ var extractedFieldSchema = z51.union([
18588
18674
  simpleFieldSchema,
18589
18675
  repeaterFieldSchema2,
18590
18676
  groupFieldSchema2
18591
18677
  ]);
18592
- var extractedEntrySchema = z50.object({
18593
- identifier: z50.string().regex(/^[a-z0-9-]+$/).describe("Unique slug-safe identifier (e.g., wine-tasting-evening)"),
18594
- title: z50.string().min(1).describe("Entry title"),
18678
+ var extractedEntrySchema = z51.object({
18679
+ identifier: z51.string().regex(/^[a-z0-9-]+$/).describe("Unique slug-safe identifier (e.g., wine-tasting-evening)"),
18680
+ title: z51.string().min(1).describe("Entry title"),
18595
18681
  // Use passthrough() instead of record() - generates additionalProperties:true without propertyNames
18596
18682
  // which OpenAI's structured output accepts
18597
- data: z50.object({}).passthrough().describe("Entry data matching the content type schema")
18598
- });
18599
- var newContentTypeSchema = z50.object({
18600
- key: z50.string().regex(/^[a-z][a-z0-9-]*$/).describe("Content type key (e.g., testimonial, team-member)"),
18601
- name: z50.string().min(1).describe("Human-readable name"),
18602
- description: z50.string().nullable().describe("Description of this content type"),
18603
- fields: z50.array(z50.object({
18604
- id: z50.string().min(1),
18605
- type: z50.string().min(1),
18606
- label: z50.string().min(1),
18607
- required: z50.boolean().nullable(),
18608
- description: z50.string().nullable()
18683
+ data: z51.object({}).passthrough().describe("Entry data matching the content type schema")
18684
+ });
18685
+ var newContentTypeSchema = z51.object({
18686
+ key: z51.string().regex(/^[a-z][a-z0-9-]*$/).describe("Content type key (e.g., testimonial, team-member)"),
18687
+ name: z51.string().min(1).describe("Human-readable name"),
18688
+ description: z51.string().nullable().describe("Description of this content type"),
18689
+ fields: z51.array(z51.object({
18690
+ id: z51.string().min(1),
18691
+ type: z51.string().min(1),
18692
+ label: z51.string().min(1),
18693
+ required: z51.boolean().nullable(),
18694
+ description: z51.string().nullable()
18609
18695
  })).min(1),
18610
- isRouted: z50.boolean().describe("Whether entries have their own pages")
18696
+ isRouted: z51.boolean().describe("Whether entries have their own pages")
18611
18697
  });
18612
- var contentTypeApproachSchema = z50.discriminatedUnion("approach", [
18698
+ var contentTypeApproachSchema = z51.discriminatedUnion("approach", [
18613
18699
  // Use an existing content type
18614
- z50.object({
18615
- approach: z50.literal("existingContentType"),
18616
- contentTypeKey: z50.string().min(1).describe("Key of the existing content type to use"),
18617
- entries: z50.array(extractedEntrySchema).min(1).describe("Extracted entries"),
18618
- rationale: z50.string().describe("Why this content type fits")
18700
+ z51.object({
18701
+ approach: z51.literal("existingContentType"),
18702
+ contentTypeKey: z51.string().min(1).describe("Key of the existing content type to use"),
18703
+ entries: z51.array(extractedEntrySchema).min(1).describe("Extracted entries"),
18704
+ rationale: z51.string().describe("Why this content type fits")
18619
18705
  }),
18620
18706
  // Create a new content type
18621
- z50.object({
18622
- approach: z50.literal("newContentType"),
18707
+ z51.object({
18708
+ approach: z51.literal("newContentType"),
18623
18709
  contentType: newContentTypeSchema,
18624
- entries: z50.array(extractedEntrySchema).min(1).describe("Extracted entries"),
18625
- rationale: z50.string().describe("Why a new content type is needed")
18710
+ entries: z51.array(extractedEntrySchema).min(1).describe("Extracted entries"),
18711
+ rationale: z51.string().describe("Why a new content type is needed")
18626
18712
  }),
18627
18713
  // Use repeater field (page-specific data)
18628
- z50.object({
18629
- approach: z50.literal("repeater"),
18630
- rationale: z50.string().describe("Why repeater is preferred over content type")
18714
+ z51.object({
18715
+ approach: z51.literal("repeater"),
18716
+ rationale: z51.string().describe("Why repeater is preferred over content type")
18631
18717
  }),
18632
18718
  // No list data - standard field extraction
18633
- z50.object({
18634
- approach: z50.literal("none"),
18635
- rationale: z50.string().describe("Why this is not list data")
18719
+ z51.object({
18720
+ approach: z51.literal("none"),
18721
+ rationale: z51.string().describe("Why this is not list data")
18636
18722
  })
18637
18723
  ]);
18638
- var pass1OutputSchema = z50.object({
18639
- blockId: z50.string().regex(/^custom\.[a-z][a-z0-9-]*$/).describe("Block ID like custom.hero-section"),
18640
- blockTitle: z50.string().min(1),
18641
- blockDescription: z50.string().nullable(),
18642
- category: z50.enum(["marketing", "content", "blog", "media", "layout", "interactive"]),
18643
- fields: z50.array(extractedFieldSchema).min(1),
18724
+ var pass1OutputSchema = z51.object({
18725
+ blockId: z51.string().regex(/^custom\.[a-z][a-z0-9-]*$/).describe("Block ID like custom.hero-section"),
18726
+ blockTitle: z51.string().min(1),
18727
+ blockDescription: z51.string().nullable(),
18728
+ category: z51.enum(["marketing", "content", "blog", "media", "layout", "interactive"]),
18729
+ fields: z51.array(extractedFieldSchema).min(1),
18644
18730
  /**
18645
18731
  * Content type decision for list-like content.
18646
18732
  * When content types are available, the LLM may decide to use content entries
@@ -18882,10 +18968,10 @@ async function getJsonFromAiText(ai, config, userMessage, schema) {
18882
18968
  }
18883
18969
 
18884
18970
  // src/manifest/passes/pass3-styling.ts
18885
- import { z as z53 } from "zod";
18971
+ import { z as z54 } from "zod";
18886
18972
 
18887
18973
  // src/manifest/validation/output-schema.ts
18888
- import { z as z52 } from "zod";
18974
+ import { z as z53 } from "zod";
18889
18975
 
18890
18976
  // src/manifest/validation/layout-utils.ts
18891
18977
  function collectLayoutNodeInfos(node, path2 = "layout", out = []) {
@@ -18926,53 +19012,53 @@ function collectLayoutClassNames(node, out = /* @__PURE__ */ new Set()) {
18926
19012
  }
18927
19013
 
18928
19014
  // src/zod/titleSourceSchema.ts
18929
- import { z as z51 } from "zod";
18930
- var titleSourceValueSchema = z51.union([
18931
- z51.string().min(1),
18932
- z51.array(z51.string().min(1)).min(1)
19015
+ import { z as z52 } from "zod";
19016
+ var titleSourceValueSchema = z52.union([
19017
+ z52.string().min(1),
19018
+ z52.array(z52.string().min(1)).min(1)
18933
19019
  ]);
18934
19020
 
18935
19021
  // src/manifest/validation/output-schema.ts
18936
- var blockCategoryEnum2 = z52.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
18937
- var llmColorValue = z52.object({
18938
- name: z52.string(),
18939
- hex: z52.string()
18940
- });
18941
- var llmThemePrimitive = z52.union([
18942
- z52.string(),
18943
- z52.number(),
18944
- z52.boolean(),
18945
- z52.null()
19022
+ var blockCategoryEnum2 = z53.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
19023
+ var llmColorValue = z53.object({
19024
+ name: z53.string(),
19025
+ hex: z53.string()
19026
+ });
19027
+ var llmThemePrimitive = z53.union([
19028
+ z53.string(),
19029
+ z53.number(),
19030
+ z53.boolean(),
19031
+ z53.null()
18946
19032
  ]);
18947
- var llmThemePatchValue = z52.union([
19033
+ var llmThemePatchValue = z53.union([
18948
19034
  llmThemePrimitive,
18949
19035
  llmColorValue,
18950
- z52.array(llmColorValue),
18951
- z52.array(llmThemePrimitive)
19036
+ z53.array(llmColorValue),
19037
+ z53.array(llmThemePrimitive)
18952
19038
  ]);
18953
- var llmThemePatchOpSchema = z52.discriminatedUnion("op", [
18954
- z52.object({ op: z52.literal("add"), path: z52.string().min(1), value: llmThemePatchValue }),
18955
- z52.object({ op: z52.literal("replace"), path: z52.string().min(1), value: llmThemePatchValue }),
18956
- z52.object({ op: z52.literal("remove"), path: z52.string().min(1) })
19039
+ var llmThemePatchOpSchema = z53.discriminatedUnion("op", [
19040
+ z53.object({ op: z53.literal("add"), path: z53.string().min(1), value: llmThemePatchValue }),
19041
+ z53.object({ op: z53.literal("replace"), path: z53.string().min(1), value: llmThemePatchValue }),
19042
+ z53.object({ op: z53.literal("remove"), path: z53.string().min(1) })
18957
19043
  ]);
18958
- var llmCssDeclaration = z52.object({
18959
- property: z52.string(),
18960
- value: z52.string()
19044
+ var llmCssDeclaration = z53.object({
19045
+ property: z53.string(),
19046
+ value: z53.string()
18961
19047
  });
18962
- var llmCustomCssRuleSchema = z52.object({
18963
- id: z52.string().min(1),
18964
- selector: z52.string().min(1),
18965
- declarations: z52.array(llmCssDeclaration)
19048
+ var llmCustomCssRuleSchema = z53.object({
19049
+ id: z53.string().min(1),
19050
+ selector: z53.string().min(1),
19051
+ declarations: z53.array(llmCssDeclaration)
18966
19052
  });
18967
- var llmNestedRuleSchema = z52.object({
18968
- selector: z52.string().min(1),
18969
- declarations: z52.array(llmCssDeclaration)
19053
+ var llmNestedRuleSchema = z53.object({
19054
+ selector: z53.string().min(1),
19055
+ declarations: z53.array(llmCssDeclaration)
18970
19056
  });
18971
- var llmMediaAtRuleSchema = z52.object({
18972
- id: z52.string().min(1),
18973
- type: z52.literal("media"),
18974
- query: z52.string().min(1),
18975
- rules: z52.array(llmNestedRuleSchema)
19057
+ var llmMediaAtRuleSchema = z53.object({
19058
+ id: z53.string().min(1),
19059
+ type: z53.literal("media"),
19060
+ query: z53.string().min(1),
19061
+ rules: z53.array(llmNestedRuleSchema)
18976
19062
  });
18977
19063
  function normalizeDeclarationsArrayToRecord(declarations) {
18978
19064
  const record = {};
@@ -19002,79 +19088,79 @@ function normalizeLlmMediaAtRule(atRule) {
19002
19088
  rules: atRule.rules.map(normalizeLlmNestedRule)
19003
19089
  };
19004
19090
  }
19005
- var jsonPrimitiveSchema = z52.union([
19006
- z52.string(),
19007
- z52.number(),
19008
- z52.boolean(),
19009
- z52.null()
19091
+ var jsonPrimitiveSchema = z53.union([
19092
+ z53.string(),
19093
+ z53.number(),
19094
+ z53.boolean(),
19095
+ z53.null()
19010
19096
  ]);
19011
- var jsonValueSchema = z52.union([
19097
+ var jsonValueSchema = z53.union([
19012
19098
  jsonPrimitiveSchema,
19013
- z52.array(jsonPrimitiveSchema)
19099
+ z53.array(jsonPrimitiveSchema)
19014
19100
  ]);
19015
- var llmBaseFieldSchema = z52.object({
19016
- id: z52.string().min(1),
19017
- label: z52.string().min(1),
19018
- description: z52.string().nullable(),
19019
- required: z52.boolean(),
19101
+ var llmBaseFieldSchema = z53.object({
19102
+ id: z53.string().min(1),
19103
+ label: z53.string().min(1),
19104
+ description: z53.string().nullable(),
19105
+ required: z53.boolean(),
19020
19106
  defaultValue: jsonValueSchema.nullable()
19021
19107
  });
19022
19108
  var llmTextFieldSchema = llmBaseFieldSchema.extend({
19023
- type: z52.literal("text"),
19024
- multiline: z52.boolean(),
19025
- maxLength: z52.number().int().positive().nullable()
19109
+ type: z53.literal("text"),
19110
+ multiline: z53.boolean(),
19111
+ maxLength: z53.number().int().positive().nullable()
19026
19112
  });
19027
19113
  var llmRichTextFieldSchema = llmBaseFieldSchema.extend({
19028
- type: z52.literal("richText")
19114
+ type: z53.literal("richText")
19029
19115
  });
19030
19116
  var llmMediaFieldSchema = llmBaseFieldSchema.extend({
19031
- type: z52.literal("media"),
19032
- mediaKinds: z52.array(z52.enum(["image", "video", "audio", "document", "spreadsheet", "archive"])).nullable()
19117
+ type: z53.literal("media"),
19118
+ mediaKinds: z53.array(z53.enum(["image", "video", "audio", "document", "spreadsheet", "archive"])).nullable()
19033
19119
  });
19034
19120
  var llmBooleanFieldSchema = llmBaseFieldSchema.extend({
19035
- type: z52.literal("boolean")
19121
+ type: z53.literal("boolean")
19036
19122
  });
19037
19123
  var llmLinkFieldSchema = llmBaseFieldSchema.extend({
19038
- type: z52.literal("link")
19124
+ type: z53.literal("link")
19039
19125
  });
19040
19126
  var llmSelectFieldSchema = llmBaseFieldSchema.extend({
19041
- type: z52.literal("select"),
19042
- options: z52.array(z52.object({
19043
- value: z52.string(),
19044
- label: z52.string()
19127
+ type: z53.literal("select"),
19128
+ options: z53.array(z53.object({
19129
+ value: z53.string(),
19130
+ label: z53.string()
19045
19131
  })),
19046
- multiple: z52.boolean().nullable()
19132
+ multiple: z53.boolean().nullable()
19047
19133
  });
19048
19134
  var llmNumberFieldSchema = llmBaseFieldSchema.extend({
19049
- type: z52.literal("number")
19050
- });
19051
- var llmNestedFieldSchema = z52.object({
19052
- id: z52.string(),
19053
- type: z52.string(),
19054
- label: z52.string(),
19055
- required: z52.boolean().nullable(),
19056
- multiline: z52.boolean().nullable(),
19135
+ type: z53.literal("number")
19136
+ });
19137
+ var llmNestedFieldSchema = z53.object({
19138
+ id: z53.string(),
19139
+ type: z53.string(),
19140
+ label: z53.string(),
19141
+ required: z53.boolean().nullable(),
19142
+ multiline: z53.boolean().nullable(),
19057
19143
  defaultValue: jsonValueSchema.nullable()
19058
19144
  }).passthrough();
19059
- var llmNestedFieldsSchema = z52.array(llmNestedFieldSchema);
19145
+ var llmNestedFieldsSchema = z53.array(llmNestedFieldSchema);
19060
19146
  var llmGroupFieldSchema = llmBaseFieldSchema.extend({
19061
- type: z52.literal("group"),
19062
- schema: z52.object({
19147
+ type: z53.literal("group"),
19148
+ schema: z53.object({
19063
19149
  fields: llmNestedFieldsSchema
19064
19150
  })
19065
19151
  });
19066
19152
  var llmRepeaterFieldSchema = llmBaseFieldSchema.extend({
19067
- type: z52.literal("repeater"),
19068
- itemLabel: z52.string(),
19069
- itemLabelSource: z52.string().nullable(),
19070
- minItems: z52.number().int().min(0),
19071
- maxItems: z52.number().int().positive().nullable(),
19072
- allowConversion: z52.boolean(),
19073
- schema: z52.object({
19153
+ type: z53.literal("repeater"),
19154
+ itemLabel: z53.string(),
19155
+ itemLabelSource: z53.string().nullable(),
19156
+ minItems: z53.number().int().min(0),
19157
+ maxItems: z53.number().int().positive().nullable(),
19158
+ allowConversion: z53.boolean(),
19159
+ schema: z53.object({
19074
19160
  fields: llmNestedFieldsSchema
19075
19161
  })
19076
19162
  });
19077
- var llmFieldSchema = z52.union([
19163
+ var llmFieldSchema = z53.union([
19078
19164
  llmTextFieldSchema,
19079
19165
  llmRichTextFieldSchema,
19080
19166
  llmMediaFieldSchema,
@@ -19085,64 +19171,64 @@ var llmFieldSchema = z52.union([
19085
19171
  llmGroupFieldSchema,
19086
19172
  llmRepeaterFieldSchema
19087
19173
  ]);
19088
- var llmBindingSchema = z52.object({
19089
- from: z52.string(),
19090
- fallback: z52.string().nullable(),
19091
- transforms: z52.array(z52.object({
19092
- id: z52.string()
19174
+ var llmBindingSchema = z53.object({
19175
+ from: z53.string(),
19176
+ fallback: z53.string().nullable(),
19177
+ transforms: z53.array(z53.object({
19178
+ id: z53.string()
19093
19179
  })).nullable()
19094
19180
  });
19095
- var llmRepeatSchema = z52.object({
19096
- collection: z52.object({ from: z52.string() }),
19097
- itemName: z52.string()
19181
+ var llmRepeatSchema = z53.object({
19182
+ collection: z53.object({ from: z53.string() }),
19183
+ itemName: z53.string()
19098
19184
  });
19099
- var llmPropsSchema = z52.object({}).passthrough().nullable();
19185
+ var llmPropsSchema = z53.object({}).passthrough().nullable();
19100
19186
  function buildLlmNodeSchema(maxDepth) {
19101
- const nodeBase = z52.object({
19102
- type: z52.string(),
19187
+ const nodeBase = z53.object({
19188
+ type: z53.string(),
19103
19189
  props: llmPropsSchema,
19104
19190
  $bind: llmBindingSchema.nullable(),
19105
19191
  $repeat: llmRepeatSchema.nullable(),
19106
- $when: z52.object({
19107
- condition: z52.object({ from: z52.string() })
19192
+ $when: z53.object({
19193
+ condition: z53.object({ from: z53.string() })
19108
19194
  }).nullable()
19109
19195
  });
19110
- let schema = nodeBase.extend({ children: z52.null() });
19196
+ let schema = nodeBase.extend({ children: z53.null() });
19111
19197
  for (let i = 0; i < maxDepth; i++) {
19112
- schema = nodeBase.extend({ children: z52.array(schema).nullable() });
19198
+ schema = nodeBase.extend({ children: z53.array(schema).nullable() });
19113
19199
  }
19114
19200
  return schema;
19115
19201
  }
19116
19202
  var MAX_LAYOUT_DEPTH = 6;
19117
19203
  var llmNodeSchema = buildLlmNodeSchema(MAX_LAYOUT_DEPTH);
19118
- var llmCustomBlockSchema = z52.object({
19119
- id: z52.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
19204
+ var llmCustomBlockSchema = z53.object({
19205
+ id: z53.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
19120
19206
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
19121
19207
  }),
19122
- title: z52.string().min(1, "Title is required"),
19208
+ title: z53.string().min(1, "Title is required"),
19123
19209
  // Keep in sync with `sdkCustomBlockSchema` and the system manifest schema:
19124
19210
  // - `null` used by OpenAI structured output for "optional" values
19125
19211
  // - array allows multi-part titles (e.g. ["navLabel", "title"])
19126
19212
  titleSource: titleSourceValueSchema.nullable(),
19127
- description: z52.string().nullable(),
19213
+ description: z53.string().nullable(),
19128
19214
  category: blockCategoryEnum2,
19129
- icon: z52.string().nullable(),
19130
- tags: z52.array(z52.string()).nullable(),
19215
+ icon: z53.string().nullable(),
19216
+ tags: z53.array(z53.string()).nullable(),
19131
19217
  // Use LLM-specific field schema (no z.any() for OpenAI compatibility)
19132
19218
  fields: llmFieldSchema.array().min(1, "Custom blocks must have at least one field"),
19133
19219
  // Use LLM-specific node schema (no z.any() for OpenAI compatibility)
19134
19220
  layout: llmNodeSchema
19135
19221
  });
19136
- var htmlToManifestOutputSchema = z52.object({
19137
- blocks: z52.array(llmCustomBlockSchema).min(1, "At least one block is required").max(10, "Maximum 10 blocks per conversion"),
19138
- themePatch: z52.array(llmThemePatchOpSchema).nullable(),
19139
- customCssRules: z52.array(llmCustomCssRuleSchema).nullable(),
19140
- customCssAtRules: z52.array(llmMediaAtRuleSchema).nullable(),
19222
+ var htmlToManifestOutputSchema = z53.object({
19223
+ blocks: z53.array(llmCustomBlockSchema).min(1, "At least one block is required").max(10, "Maximum 10 blocks per conversion"),
19224
+ themePatch: z53.array(llmThemePatchOpSchema).nullable(),
19225
+ customCssRules: z53.array(llmCustomCssRuleSchema).nullable(),
19226
+ customCssAtRules: z53.array(llmMediaAtRuleSchema).nullable(),
19141
19227
  /**
19142
19228
  * Explanation of fixes made when retrying after validation errors.
19143
19229
  * Should explain what changes were made and why.
19144
19230
  */
19145
- fixRationale: z52.string().nullable()
19231
+ fixRationale: z53.string().nullable()
19146
19232
  });
19147
19233
  function collectValidationErrors(output) {
19148
19234
  const errors = [];
@@ -19977,20 +20063,20 @@ function formatValidationFeedback(errors, output) {
19977
20063
  }
19978
20064
 
19979
20065
  // src/manifest/passes/pass3-styling.ts
19980
- var pass3aOutputSchema = z53.object({
19981
- classNamePatches: z53.array(
19982
- z53.object({
19983
- nodePath: z53.string(),
20066
+ var pass3aOutputSchema = z54.object({
20067
+ classNamePatches: z54.array(
20068
+ z54.object({
20069
+ nodePath: z54.string(),
19984
20070
  // "" for root, "children[0]", "children[0].children[1]" etc.
19985
- className: z53.string().min(1)
20071
+ className: z54.string().min(1)
19986
20072
  })
19987
20073
  ),
19988
- rationale: z53.string()
20074
+ rationale: z54.string()
19989
20075
  });
19990
- var pass3bOutputSchema = z53.object({
19991
- customCssRules: z53.array(llmCustomCssRuleSchema).nullable(),
19992
- customCssAtRules: z53.array(llmMediaAtRuleSchema).nullable(),
19993
- rationale: z53.string()
20076
+ var pass3bOutputSchema = z54.object({
20077
+ customCssRules: z54.array(llmCustomCssRuleSchema).nullable(),
20078
+ customCssAtRules: z54.array(llmMediaAtRuleSchema).nullable(),
20079
+ rationale: z54.string()
19994
20080
  });
19995
20081
  function getNodeAtPath(layout, path2) {
19996
20082
  if (path2 === "" || path2 === "root" || path2 === "layout") {
@@ -20297,38 +20383,38 @@ Do NOT include [data-block=...] in selectors - we add that automatically.
20297
20383
 
20298
20384
  // src/page-converter/passes/pass1-segmentation-matching.ts
20299
20385
  var SIZE_WARNING_BYTES = 100 * 1024;
20300
- var sectionTypeEnum = z54.enum(["header", "content", "footer"]);
20301
- var blockCategoryEnum3 = z54.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
20302
- var baseSectionSchema = z54.object({
20303
- html: z54.string().min(1),
20304
- purpose: z54.string().min(1),
20386
+ var sectionTypeEnum = z55.enum(["header", "content", "footer"]);
20387
+ var blockCategoryEnum3 = z55.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
20388
+ var baseSectionSchema = z55.object({
20389
+ html: z55.string().min(1),
20390
+ purpose: z55.string().min(1),
20305
20391
  sectionType: sectionTypeEnum
20306
20392
  });
20307
20393
  var builtinMatchSchema = baseSectionSchema.extend({
20308
- decision: z54.literal("builtin"),
20309
- matchedBlock: z54.string().min(1),
20310
- matchScore: z54.number().min(0).max(100),
20311
- matchRationale: z54.string().min(1)
20394
+ decision: z55.literal("builtin"),
20395
+ matchedBlock: z55.string().min(1),
20396
+ matchScore: z55.number().min(0).max(100),
20397
+ matchRationale: z55.string().min(1)
20312
20398
  });
20313
20399
  var customMatchSchema = baseSectionSchema.extend({
20314
- decision: z54.literal("custom"),
20315
- customBlockSuggestion: z54.object({
20316
- title: z54.string().min(1),
20400
+ decision: z55.literal("custom"),
20401
+ customBlockSuggestion: z55.object({
20402
+ title: z55.string().min(1),
20317
20403
  category: blockCategoryEnum3
20318
20404
  })
20319
20405
  });
20320
- var sectionMatchSchema = z54.discriminatedUnion("decision", [
20406
+ var sectionMatchSchema = z55.discriminatedUnion("decision", [
20321
20407
  builtinMatchSchema,
20322
20408
  customMatchSchema
20323
20409
  ]);
20324
- var skippedContentSchema = z54.object({
20325
- description: z54.string(),
20326
- reason: z54.string()
20410
+ var skippedContentSchema = z55.object({
20411
+ description: z55.string(),
20412
+ reason: z55.string()
20327
20413
  });
20328
- var combinedPassSchema = z54.object({
20329
- sections: z54.array(sectionMatchSchema).min(1),
20330
- skippedContent: z54.array(skippedContentSchema).nullable(),
20331
- rationale: z54.string()
20414
+ var combinedPassSchema = z55.object({
20415
+ sections: z55.array(sectionMatchSchema).min(1),
20416
+ skippedContent: z55.array(skippedContentSchema).nullable(),
20417
+ rationale: z55.string()
20332
20418
  });
20333
20419
  function buildSystemPrompt(availableBlocks, matchThreshold) {
20334
20420
  const blockCatalog = availableBlocks.map((b) => {
@@ -20535,10 +20621,10 @@ async function segmentAndMatchBlocks(html, availableBlocks, ctx) {
20535
20621
  }
20536
20622
 
20537
20623
  // src/page-converter/passes/pass2-population.ts
20538
- import { z as z56 } from "zod";
20624
+ import { z as z57 } from "zod";
20539
20625
 
20540
20626
  // src/manifest/three-pass-converter.ts
20541
- import { z as z55 } from "zod";
20627
+ import { z as z56 } from "zod";
20542
20628
 
20543
20629
  // src/manifest/prompt/theme-summary.ts
20544
20630
  var WEIGHT_MAP = {
@@ -20874,9 +20960,9 @@ function mapPass1FieldToOutputField(field) {
20874
20960
  maxLength: null
20875
20961
  };
20876
20962
  }
20877
- var pass2OutputSchema = z55.object({
20963
+ var pass2OutputSchema = z56.object({
20878
20964
  layout: llmNodeSchema,
20879
- rationale: z55.string().describe("Explain which node binds to which field")
20965
+ rationale: z56.string().describe("Explain which node binds to which field")
20880
20966
  });
20881
20967
  function buildPass2SystemPrompt(fields3, contentTypeApproach) {
20882
20968
  const fieldList = fields3.map((f) => {
@@ -21736,9 +21822,9 @@ async function convertHtmlToManifest(input, options) {
21736
21822
  }
21737
21823
 
21738
21824
  // src/page-converter/passes/pass2-population.ts
21739
- var builtinContentSchema = z56.object({
21740
- content: z56.any(),
21741
- rationale: z56.string()
21825
+ var builtinContentSchema = z57.object({
21826
+ content: z57.any(),
21827
+ rationale: z57.string()
21742
21828
  });
21743
21829
  var SECTION_STYLES_ALLOWED_KEYS = /* @__PURE__ */ new Set(["background", "spacing"]);
21744
21830
  var BOX_STYLES_ALLOWED_KEYS = /* @__PURE__ */ new Set(["background", "spacing", "raised", "rounded", "border", "fullWidth"]);