@orion-studios/payload-studio 0.6.0-beta.13 → 0.6.0-beta.131

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 (38) hide show
  1. package/dist/admin/client.js +2061 -538
  2. package/dist/admin/client.mjs +2078 -568
  3. package/dist/admin/index.js +124 -15
  4. package/dist/admin/index.mjs +1 -1
  5. package/dist/admin-app/client.js +14 -5
  6. package/dist/admin-app/client.mjs +1 -1
  7. package/dist/admin-app/styles.css +277 -1
  8. package/dist/admin.css +98 -2
  9. package/dist/builder-v2/client.d.mts +18 -0
  10. package/dist/builder-v2/client.d.ts +18 -0
  11. package/dist/builder-v2/client.js +3837 -0
  12. package/dist/builder-v2/client.mjs +3712 -0
  13. package/dist/builder-v2/index.d.mts +248 -0
  14. package/dist/builder-v2/index.d.ts +248 -0
  15. package/dist/builder-v2/index.js +805 -0
  16. package/dist/builder-v2/index.mjs +755 -0
  17. package/dist/builder-v2/styles.css +2514 -0
  18. package/dist/{chunk-PF3EBZXF.mjs → chunk-7ZMXZRBP.mjs} +39 -3
  19. package/dist/{chunk-XZQILJK3.mjs → chunk-JC3UV74N.mjs} +124 -15
  20. package/dist/{chunk-KPIX7OSV.mjs → chunk-NF37A575.mjs} +14 -5
  21. package/dist/{chunk-XKUTZ7IU.mjs → chunk-NGLIA2OE.mjs} +53 -2
  22. package/dist/{chunk-OTHERBGX.mjs → chunk-ZADL33R6.mjs} +1 -1
  23. package/dist/{index-Cv-6qnrw.d.mts → index-D5zrOdyv.d.mts} +3 -1
  24. package/dist/{index-Crx_MtPw.d.ts → index-Dv-Alx4h.d.ts} +3 -1
  25. package/dist/index.d.mts +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +215 -19
  28. package/dist/index.mjs +4 -4
  29. package/dist/nextjs/index.js +39 -3
  30. package/dist/nextjs/index.mjs +2 -2
  31. package/dist/studio-pages/builder.css +66 -5
  32. package/dist/studio-pages/client.js +618 -73
  33. package/dist/studio-pages/client.mjs +641 -96
  34. package/dist/studio-pages/index.d.mts +1 -1
  35. package/dist/studio-pages/index.d.ts +1 -1
  36. package/dist/studio-pages/index.js +91 -4
  37. package/dist/studio-pages/index.mjs +2 -2
  38. package/package.json +22 -3
package/dist/index.js CHANGED
@@ -349,6 +349,49 @@ function configureAdmin(config) {
349
349
  }
350
350
  };
351
351
  };
352
+ const attachStudioEditRedirectToCollection = (collection, options) => {
353
+ if (!studioEnabled) {
354
+ return collection;
355
+ }
356
+ const collectionWithBreadcrumb = attachStudioBackBreadcrumbToCollection(collection);
357
+ const existingViews = collectionWithBreadcrumb.admin?.components?.views;
358
+ const existingEditViews = existingViews?.edit;
359
+ const hasCustomEditView = Boolean(
360
+ existingEditViews?.root || existingEditViews?.default && typeof existingEditViews.default === "object" && existingEditViews.default.Component
361
+ );
362
+ if (hasCustomEditView) {
363
+ return collectionWithBreadcrumb;
364
+ }
365
+ return {
366
+ ...collectionWithBreadcrumb,
367
+ admin: {
368
+ ...collectionWithBreadcrumb.admin,
369
+ components: {
370
+ ...collectionWithBreadcrumb.admin?.components,
371
+ views: {
372
+ ...existingViews,
373
+ edit: {
374
+ ...existingEditViews,
375
+ default: {
376
+ ...typeof existingEditViews?.default === "object" ? existingEditViews.default : {},
377
+ Component: {
378
+ exportName: "StudioDocumentRedirect",
379
+ path: clientPath,
380
+ clientProps: {
381
+ description: options.description,
382
+ ...options.emptyHref ? { emptyHref: options.emptyHref } : {},
383
+ ...options.emptyLabel ? { emptyLabel: options.emptyLabel } : {},
384
+ pathBase: options.pathBase,
385
+ title: options.title
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }
391
+ }
392
+ }
393
+ };
394
+ };
352
395
  return {
353
396
  admin: {
354
397
  css: cssPath,
@@ -390,6 +433,7 @@ function configureAdmin(config) {
390
433
  },
391
434
  ...studioEnabled ? {
392
435
  studioGlobals: {
436
+ exact: true,
393
437
  path: globalsBasePath,
394
438
  Component: {
395
439
  exportName: "AdminStudioGlobalsView",
@@ -401,10 +445,11 @@ function configureAdmin(config) {
401
445
  }
402
446
  }
403
447
  },
404
- studioPages: {
405
- path: pagesBasePath,
448
+ studioPageNew: {
449
+ exact: true,
450
+ path: `${pagesBasePath}/new`,
406
451
  Component: {
407
- exportName: "AdminStudioPagesListView",
452
+ exportName: "AdminStudioNewPageView",
408
453
  path: clientPath,
409
454
  clientProps: {
410
455
  ...studioNavClientProps,
@@ -413,6 +458,7 @@ function configureAdmin(config) {
413
458
  }
414
459
  },
415
460
  studioPageEditor: {
461
+ exact: true,
416
462
  path: `${pagesBasePath}/:id`,
417
463
  Component: {
418
464
  exportName: "AdminStudioPageEditView",
@@ -423,10 +469,11 @@ function configureAdmin(config) {
423
469
  }
424
470
  }
425
471
  },
426
- studioPageNew: {
427
- path: `${pagesBasePath}/new`,
472
+ studioPages: {
473
+ exact: true,
474
+ path: pagesBasePath,
428
475
  Component: {
429
- exportName: "AdminStudioNewPageView",
476
+ exportName: "AdminStudioPagesListView",
430
477
  path: clientPath,
431
478
  clientProps: {
432
479
  ...studioNavClientProps,
@@ -435,6 +482,7 @@ function configureAdmin(config) {
435
482
  }
436
483
  },
437
484
  studioContactForm: {
485
+ exact: true,
438
486
  path: contactFormStudioPath,
439
487
  Component: {
440
488
  exportName: "AdminStudioContactFormView",
@@ -447,7 +495,47 @@ function configureAdmin(config) {
447
495
  }
448
496
  },
449
497
  ...formsEnabled ? {
498
+ studioFormSubmission: {
499
+ exact: true,
500
+ path: `${formsBasePath}/submissions/:id`,
501
+ Component: {
502
+ exportName: "AdminStudioFormSubmissionView",
503
+ path: clientPath,
504
+ clientProps: {
505
+ ...studioNavClientProps,
506
+ formsCollectionSlug,
507
+ formSubmissionsCollectionSlug,
508
+ formUploadsCollectionSlug
509
+ }
510
+ }
511
+ },
512
+ studioFormUpload: {
513
+ exact: true,
514
+ path: `${formsBasePath}/uploads/:id`,
515
+ Component: {
516
+ exportName: "AdminStudioFormUploadView",
517
+ path: clientPath,
518
+ clientProps: {
519
+ ...studioNavClientProps,
520
+ formUploadsCollectionSlug
521
+ }
522
+ }
523
+ },
524
+ studioFormDetail: {
525
+ exact: true,
526
+ path: `${formsBasePath}/:id`,
527
+ Component: {
528
+ exportName: "AdminStudioFormDetailView",
529
+ path: clientPath,
530
+ clientProps: {
531
+ ...studioNavClientProps,
532
+ formsCollectionSlug,
533
+ formSubmissionsCollectionSlug
534
+ }
535
+ }
536
+ },
450
537
  studioForms: {
538
+ exact: true,
451
539
  path: formsBasePath,
452
540
  Component: {
453
541
  exportName: "AdminStudioFormsView",
@@ -461,10 +549,11 @@ function configureAdmin(config) {
461
549
  }
462
550
  }
463
551
  } : {},
464
- studioMedia: {
465
- path: mediaBasePath,
552
+ studioMediaItem: {
553
+ exact: true,
554
+ path: `${mediaBasePath}/:id`,
466
555
  Component: {
467
- exportName: "AdminStudioMediaView",
556
+ exportName: "AdminStudioMediaItemView",
468
557
  path: clientPath,
469
558
  clientProps: {
470
559
  ...studioNavClientProps,
@@ -472,10 +561,11 @@ function configureAdmin(config) {
472
561
  }
473
562
  }
474
563
  },
475
- studioMediaItem: {
476
- path: `${mediaBasePath}/:id`,
564
+ studioMedia: {
565
+ exact: true,
566
+ path: mediaBasePath,
477
567
  Component: {
478
- exportName: "AdminStudioMediaItemView",
568
+ exportName: "AdminStudioMediaView",
479
569
  path: clientPath,
480
570
  clientProps: {
481
571
  ...studioNavClientProps,
@@ -484,6 +574,7 @@ function configureAdmin(config) {
484
574
  }
485
575
  },
486
576
  studioTools: {
577
+ exact: true,
487
578
  path: toolsBasePath,
488
579
  Component: {
489
580
  exportName: "AdminStudioToolsView",
@@ -637,13 +728,31 @@ function configureAdmin(config) {
637
728
  return attachStudioBackBreadcrumbToCollection(mediaCollection);
638
729
  },
639
730
  wrapFormsCollection(formsCollection) {
640
- return attachStudioBackBreadcrumbToCollection(formsCollection);
731
+ return attachStudioEditRedirectToCollection(formsCollection, {
732
+ description: "Redirecting to the Studio form workspace.",
733
+ emptyHref: formsBasePath,
734
+ emptyLabel: "Open Forms",
735
+ pathBase: formsBasePath,
736
+ title: "Opening Form..."
737
+ });
641
738
  },
642
739
  wrapFormSubmissionsCollection(formSubmissionsCollection) {
643
- return attachStudioBackBreadcrumbToCollection(formSubmissionsCollection);
740
+ return attachStudioEditRedirectToCollection(formSubmissionsCollection, {
741
+ description: "Redirecting to the Studio submission workspace.",
742
+ emptyHref: formsBasePath,
743
+ emptyLabel: "Open Forms",
744
+ pathBase: `${formsBasePath}/submissions`,
745
+ title: "Opening Submission..."
746
+ });
644
747
  },
645
748
  wrapFormUploadsCollection(formUploadsCollection) {
646
- return attachStudioBackBreadcrumbToCollection(formUploadsCollection);
749
+ return attachStudioEditRedirectToCollection(formUploadsCollection, {
750
+ description: "Redirecting to the Studio upload workspace.",
751
+ emptyHref: formsBasePath,
752
+ emptyLabel: "Open Forms",
753
+ pathBase: `${formsBasePath}/uploads`,
754
+ title: "Opening Upload..."
755
+ });
647
756
  },
648
757
  wrapGlobals(globals2) {
649
758
  const labelMap = {
@@ -3584,7 +3693,9 @@ var defaultBuilderBlockSettingsV2 = {
3584
3693
  },
3585
3694
  typography: {
3586
3695
  bodyAlign: "left",
3696
+ bodySizePt: null,
3587
3697
  headingAlign: "left",
3698
+ headingSizePt: null,
3588
3699
  letterSpacingPreset: "normal",
3589
3700
  lineHeightPreset: "normal",
3590
3701
  maxTextWidth: "auto"
@@ -3613,7 +3724,9 @@ var defaultBuilderItemSettingsV2 = {
3613
3724
  },
3614
3725
  typography: {
3615
3726
  bodyAlign: "left",
3727
+ bodySizePt: null,
3616
3728
  headingAlign: "left",
3729
+ headingSizePt: null,
3617
3730
  letterSpacingPreset: "normal",
3618
3731
  lineHeightPreset: "normal",
3619
3732
  maxTextWidth: "auto"
@@ -3643,6 +3756,7 @@ var defaultBuilderThemeTokens = {
3643
3756
 
3644
3757
  // src/studio-pages/builder/adapters/settingsV2.ts
3645
3758
  var isRecord3 = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
3759
+ var isTextAlign = (value) => value === "left" || value === "center" || value === "right" || value === "justify";
3646
3760
  var parsePercent = (value) => {
3647
3761
  if (typeof value === "number" && Number.isFinite(value)) {
3648
3762
  return Math.max(0, Math.min(100, value));
@@ -3667,6 +3781,18 @@ var parsePixel = (value) => {
3667
3781
  }
3668
3782
  return null;
3669
3783
  };
3784
+ var parsePoint = (value) => {
3785
+ if (typeof value === "number" && Number.isFinite(value)) {
3786
+ return Math.max(6, Math.min(120, Math.round(value)));
3787
+ }
3788
+ if (typeof value === "string" && value.trim().length > 0) {
3789
+ const parsed = Number(value);
3790
+ if (Number.isFinite(parsed)) {
3791
+ return Math.max(6, Math.min(120, Math.round(parsed)));
3792
+ }
3793
+ }
3794
+ return null;
3795
+ };
3670
3796
  var mergeSettings = (defaults, input) => {
3671
3797
  if (!isRecord3(input)) {
3672
3798
  return structuredClone(defaults);
@@ -3685,6 +3811,10 @@ var mergeSettings = (defaults, input) => {
3685
3811
  };
3686
3812
  var legacyBlockToV2Settings = (block) => {
3687
3813
  const current = structuredClone(defaultBuilderBlockSettingsV2);
3814
+ if (block.blockType === "hero" && block.variant === "centered") {
3815
+ current.typography.headingAlign = "center";
3816
+ current.typography.bodyAlign = "center";
3817
+ }
3688
3818
  current.layout.contentWidth = block.contentWidth === "narrow" || block.contentWidth === "content" || block.contentWidth === "wide" || block.contentWidth === "full" || block.contentWidth === "inherit" ? block.contentWidth : current.layout.contentWidth;
3689
3819
  current.layout.sectionPaddingX = block.sectionPaddingX === "none" || block.sectionPaddingX === "sm" || block.sectionPaddingX === "md" || block.sectionPaddingX === "lg" || block.sectionPaddingX === "inherit" ? block.sectionPaddingX : current.layout.sectionPaddingX;
3690
3820
  current.layout.sectionPaddingY = block.sectionPaddingY === "none" || block.sectionPaddingY === "sm" || block.sectionPaddingY === "lg" ? block.sectionPaddingY : current.layout.sectionPaddingY;
@@ -3721,15 +3851,28 @@ var legacyBlockToV2Settings = (block) => {
3721
3851
  current.media.positionX = parsePercent(block.imagePositionX ?? block.backgroundImagePositionX);
3722
3852
  current.media.positionY = parsePercent(block.imagePositionY ?? block.backgroundImagePositionY);
3723
3853
  current.media.height = parsePixel(block.imageHeight);
3724
- current.typography.headingAlign = block.textHeadingAlign === "left" || block.textHeadingAlign === "center" || block.textHeadingAlign === "right" || block.textHeadingAlign === "justify" ? block.textHeadingAlign : current.typography.headingAlign;
3725
- current.typography.bodyAlign = block.textBodyAlign === "left" || block.textBodyAlign === "center" || block.textBodyAlign === "right" || block.textBodyAlign === "justify" ? block.textBodyAlign : current.typography.bodyAlign;
3854
+ current.typography.headingAlign = isTextAlign(block.textHeadingAlign) ? block.textHeadingAlign : current.typography.headingAlign;
3855
+ current.typography.bodyAlign = isTextAlign(block.textBodyAlign) ? block.textBodyAlign : current.typography.bodyAlign;
3856
+ current.typography.headingSizePt = parsePoint(block.textHeadingSizePt);
3857
+ current.typography.bodySizePt = parsePoint(block.textBodySizePt);
3726
3858
  current.typography.maxTextWidth = block.textMaxWidth === "auto" || block.textMaxWidth === "sm" || block.textMaxWidth === "md" || block.textMaxWidth === "lg" || block.textMaxWidth === "full" ? block.textMaxWidth : current.typography.maxTextWidth;
3727
3859
  current.typography.lineHeightPreset = block.textLineHeightPreset === "tight" || block.textLineHeightPreset === "normal" || block.textLineHeightPreset === "relaxed" ? block.textLineHeightPreset : current.typography.lineHeightPreset;
3728
3860
  current.typography.letterSpacingPreset = block.textLetterSpacingPreset === "tight" || block.textLetterSpacingPreset === "normal" || block.textLetterSpacingPreset === "relaxed" ? block.textLetterSpacingPreset : current.typography.letterSpacingPreset;
3729
3861
  current.advanced.editCopyInPanel = Boolean(block.editCopyInPanel ?? current.advanced.editCopyInPanel);
3730
3862
  current.advanced.customClassName = typeof block.customClassName === "string" ? block.customClassName : current.advanced.customClassName;
3731
3863
  current.advanced.hideOnMobile = Boolean(block.hideOnMobile ?? current.advanced.hideOnMobile);
3732
- return mergeSettings(current, block.settings);
3864
+ const settings = mergeSettings(current, block.settings);
3865
+ if (block.blockType === "hero") {
3866
+ const top = settings.layout.paddingTopPt;
3867
+ const bottom = settings.layout.paddingBottomPt;
3868
+ const hasLegacyLinkedHeroPadding = settings.layout.linkVerticalPadding !== false && (top === null || typeof top === "undefined" || top === 30) && (bottom === null || typeof bottom === "undefined" || bottom === 30 || bottom === 20);
3869
+ if (hasLegacyLinkedHeroPadding) {
3870
+ settings.layout.linkVerticalPadding = false;
3871
+ settings.layout.paddingTopPt = 30;
3872
+ settings.layout.paddingBottomPt = 20;
3873
+ }
3874
+ }
3875
+ return settings;
3733
3876
  };
3734
3877
  var v2SettingsToLegacyBlock = (blockWithSettings) => {
3735
3878
  const settings = legacyBlockToV2Settings(blockWithSettings);
@@ -3755,6 +3898,8 @@ var v2SettingsToLegacyBlock = (blockWithSettings) => {
3755
3898
  next.contentGradientAngle = settings.appearance.contentGradientAngle;
3756
3899
  next.textHeadingAlign = settings.typography.headingAlign;
3757
3900
  next.textBodyAlign = settings.typography.bodyAlign;
3901
+ next.textHeadingSizePt = settings.typography.headingSizePt;
3902
+ next.textBodySizePt = settings.typography.bodySizePt;
3758
3903
  next.textMaxWidth = settings.typography.maxTextWidth;
3759
3904
  next.textLineHeightPreset = settings.typography.lineHeightPreset;
3760
3905
  next.textLetterSpacingPreset = settings.typography.letterSpacingPreset;
@@ -4178,8 +4323,52 @@ var alignOptions = [
4178
4323
  { label: "Right", value: "right" },
4179
4324
  { label: "Justify", value: "justify" }
4180
4325
  ];
4181
- var layoutFieldSet = [];
4326
+ var layoutFieldSet = [
4327
+ {
4328
+ group: "layout",
4329
+ key: "settings.layout.linkVerticalPadding",
4330
+ label: "Link Top/Bottom Padding",
4331
+ tags: ["spacing", "padding", "vertical"],
4332
+ type: "checkbox"
4333
+ },
4334
+ {
4335
+ group: "layout",
4336
+ key: "settings.layout.paddingTopPt",
4337
+ label: "Top Padding (pt)",
4338
+ max: 240,
4339
+ min: 0,
4340
+ tags: ["spacing", "padding", "top"],
4341
+ type: "number"
4342
+ },
4343
+ {
4344
+ group: "layout",
4345
+ key: "settings.layout.paddingBottomPt",
4346
+ label: "Bottom Padding (pt)",
4347
+ max: 240,
4348
+ min: 0,
4349
+ tags: ["spacing", "padding", "bottom"],
4350
+ type: "number"
4351
+ }
4352
+ ];
4182
4353
  var typographyFieldSet = [
4354
+ {
4355
+ group: "typography",
4356
+ key: "settings.typography.headingSizePt",
4357
+ label: "Heading Text Size (pt)",
4358
+ max: 120,
4359
+ min: 6,
4360
+ tags: ["text", "size", "heading", "font"],
4361
+ type: "number"
4362
+ },
4363
+ {
4364
+ group: "typography",
4365
+ key: "settings.typography.bodySizePt",
4366
+ label: "Body Text Size (pt)",
4367
+ max: 72,
4368
+ min: 6,
4369
+ tags: ["text", "size", "body", "paragraph", "font"],
4370
+ type: "number"
4371
+ },
4183
4372
  {
4184
4373
  group: "typography",
4185
4374
  key: "settings.typography.headingAlign",
@@ -4396,6 +4585,13 @@ var inspectorDefinitionByBlockType = {
4396
4585
  { group: "basics", inlineEditable: true, key: "kicker", label: "Kicker", type: "text" },
4397
4586
  { group: "basics", inlineEditable: true, key: "headline", label: "Headline", type: "text" },
4398
4587
  { group: "basics", inlineEditable: true, key: "subheadline", label: "Subheadline", type: "textarea" },
4588
+ {
4589
+ group: "basics",
4590
+ key: "settings.marquee.itemsText",
4591
+ label: "Scrolling Bar Options",
4592
+ tags: ["marquee", "scrolling", "bar", "categories"],
4593
+ type: "textarea"
4594
+ },
4399
4595
  {
4400
4596
  group: "basics",
4401
4597
  key: "variant",
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  admin_exports
3
- } from "./chunk-XZQILJK3.mjs";
3
+ } from "./chunk-JC3UV74N.mjs";
4
4
  import {
5
5
  admin_app_exports
6
6
  } from "./chunk-RKTIFEUY.mjs";
@@ -10,13 +10,13 @@ import {
10
10
  } from "./chunk-JQAHXYAM.mjs";
11
11
  import {
12
12
  nextjs_exports
13
- } from "./chunk-OTHERBGX.mjs";
13
+ } from "./chunk-ZADL33R6.mjs";
14
14
  import "./chunk-ZTXJG4K5.mjs";
15
15
  import {
16
16
  studio_pages_exports
17
- } from "./chunk-XKUTZ7IU.mjs";
17
+ } from "./chunk-NGLIA2OE.mjs";
18
18
  import "./chunk-OQSEJXC4.mjs";
19
- import "./chunk-PF3EBZXF.mjs";
19
+ import "./chunk-7ZMXZRBP.mjs";
20
20
  import {
21
21
  studio_exports
22
22
  } from "./chunk-ADIIWIYL.mjs";
@@ -127,7 +127,9 @@ var defaultBuilderBlockSettingsV2 = {
127
127
  },
128
128
  typography: {
129
129
  bodyAlign: "left",
130
+ bodySizePt: null,
130
131
  headingAlign: "left",
132
+ headingSizePt: null,
131
133
  letterSpacingPreset: "normal",
132
134
  lineHeightPreset: "normal",
133
135
  maxTextWidth: "auto"
@@ -156,7 +158,9 @@ var defaultBuilderItemSettingsV2 = {
156
158
  },
157
159
  typography: {
158
160
  bodyAlign: "left",
161
+ bodySizePt: null,
159
162
  headingAlign: "left",
163
+ headingSizePt: null,
160
164
  letterSpacingPreset: "normal",
161
165
  lineHeightPreset: "normal",
162
166
  maxTextWidth: "auto"
@@ -166,6 +170,7 @@ var defaultBuilderItemSettingsV2 = {
166
170
 
167
171
  // src/studio-pages/builder/adapters/settingsV2.ts
168
172
  var isRecord2 = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
173
+ var isTextAlign = (value) => value === "left" || value === "center" || value === "right" || value === "justify";
169
174
  var parsePercent = (value) => {
170
175
  if (typeof value === "number" && Number.isFinite(value)) {
171
176
  return Math.max(0, Math.min(100, value));
@@ -190,6 +195,18 @@ var parsePixel = (value) => {
190
195
  }
191
196
  return null;
192
197
  };
198
+ var parsePoint = (value) => {
199
+ if (typeof value === "number" && Number.isFinite(value)) {
200
+ return Math.max(6, Math.min(120, Math.round(value)));
201
+ }
202
+ if (typeof value === "string" && value.trim().length > 0) {
203
+ const parsed = Number(value);
204
+ if (Number.isFinite(parsed)) {
205
+ return Math.max(6, Math.min(120, Math.round(parsed)));
206
+ }
207
+ }
208
+ return null;
209
+ };
193
210
  var mergeSettings = (defaults, input) => {
194
211
  if (!isRecord2(input)) {
195
212
  return structuredClone(defaults);
@@ -208,6 +225,10 @@ var mergeSettings = (defaults, input) => {
208
225
  };
209
226
  var legacyBlockToV2Settings = (block) => {
210
227
  const current = structuredClone(defaultBuilderBlockSettingsV2);
228
+ if (block.blockType === "hero" && block.variant === "centered") {
229
+ current.typography.headingAlign = "center";
230
+ current.typography.bodyAlign = "center";
231
+ }
211
232
  current.layout.contentWidth = block.contentWidth === "narrow" || block.contentWidth === "content" || block.contentWidth === "wide" || block.contentWidth === "full" || block.contentWidth === "inherit" ? block.contentWidth : current.layout.contentWidth;
212
233
  current.layout.sectionPaddingX = block.sectionPaddingX === "none" || block.sectionPaddingX === "sm" || block.sectionPaddingX === "md" || block.sectionPaddingX === "lg" || block.sectionPaddingX === "inherit" ? block.sectionPaddingX : current.layout.sectionPaddingX;
213
234
  current.layout.sectionPaddingY = block.sectionPaddingY === "none" || block.sectionPaddingY === "sm" || block.sectionPaddingY === "lg" ? block.sectionPaddingY : current.layout.sectionPaddingY;
@@ -244,15 +265,28 @@ var legacyBlockToV2Settings = (block) => {
244
265
  current.media.positionX = parsePercent(block.imagePositionX ?? block.backgroundImagePositionX);
245
266
  current.media.positionY = parsePercent(block.imagePositionY ?? block.backgroundImagePositionY);
246
267
  current.media.height = parsePixel(block.imageHeight);
247
- current.typography.headingAlign = block.textHeadingAlign === "left" || block.textHeadingAlign === "center" || block.textHeadingAlign === "right" || block.textHeadingAlign === "justify" ? block.textHeadingAlign : current.typography.headingAlign;
248
- current.typography.bodyAlign = block.textBodyAlign === "left" || block.textBodyAlign === "center" || block.textBodyAlign === "right" || block.textBodyAlign === "justify" ? block.textBodyAlign : current.typography.bodyAlign;
268
+ current.typography.headingAlign = isTextAlign(block.textHeadingAlign) ? block.textHeadingAlign : current.typography.headingAlign;
269
+ current.typography.bodyAlign = isTextAlign(block.textBodyAlign) ? block.textBodyAlign : current.typography.bodyAlign;
270
+ current.typography.headingSizePt = parsePoint(block.textHeadingSizePt);
271
+ current.typography.bodySizePt = parsePoint(block.textBodySizePt);
249
272
  current.typography.maxTextWidth = block.textMaxWidth === "auto" || block.textMaxWidth === "sm" || block.textMaxWidth === "md" || block.textMaxWidth === "lg" || block.textMaxWidth === "full" ? block.textMaxWidth : current.typography.maxTextWidth;
250
273
  current.typography.lineHeightPreset = block.textLineHeightPreset === "tight" || block.textLineHeightPreset === "normal" || block.textLineHeightPreset === "relaxed" ? block.textLineHeightPreset : current.typography.lineHeightPreset;
251
274
  current.typography.letterSpacingPreset = block.textLetterSpacingPreset === "tight" || block.textLetterSpacingPreset === "normal" || block.textLetterSpacingPreset === "relaxed" ? block.textLetterSpacingPreset : current.typography.letterSpacingPreset;
252
275
  current.advanced.editCopyInPanel = Boolean(block.editCopyInPanel ?? current.advanced.editCopyInPanel);
253
276
  current.advanced.customClassName = typeof block.customClassName === "string" ? block.customClassName : current.advanced.customClassName;
254
277
  current.advanced.hideOnMobile = Boolean(block.hideOnMobile ?? current.advanced.hideOnMobile);
255
- return mergeSettings(current, block.settings);
278
+ const settings = mergeSettings(current, block.settings);
279
+ if (block.blockType === "hero") {
280
+ const top = settings.layout.paddingTopPt;
281
+ const bottom = settings.layout.paddingBottomPt;
282
+ const hasLegacyLinkedHeroPadding = settings.layout.linkVerticalPadding !== false && (top === null || typeof top === "undefined" || top === 30) && (bottom === null || typeof bottom === "undefined" || bottom === 30 || bottom === 20);
283
+ if (hasLegacyLinkedHeroPadding) {
284
+ settings.layout.linkVerticalPadding = false;
285
+ settings.layout.paddingTopPt = 30;
286
+ settings.layout.paddingBottomPt = 20;
287
+ }
288
+ }
289
+ return settings;
256
290
  };
257
291
  var v2SettingsToLegacyBlock = (blockWithSettings) => {
258
292
  const settings = legacyBlockToV2Settings(blockWithSettings);
@@ -278,6 +312,8 @@ var v2SettingsToLegacyBlock = (blockWithSettings) => {
278
312
  next.contentGradientAngle = settings.appearance.contentGradientAngle;
279
313
  next.textHeadingAlign = settings.typography.headingAlign;
280
314
  next.textBodyAlign = settings.typography.bodyAlign;
315
+ next.textHeadingSizePt = settings.typography.headingSizePt;
316
+ next.textBodySizePt = settings.typography.bodySizePt;
281
317
  next.textMaxWidth = settings.typography.maxTextWidth;
282
318
  next.textLineHeightPreset = settings.typography.lineHeightPreset;
283
319
  next.textLetterSpacingPreset = settings.typography.letterSpacingPreset;
@@ -5,9 +5,9 @@ import {
5
5
  createSiteQueries,
6
6
  resolveMedia,
7
7
  resolveSocialMediaLinks
8
- } from "../chunk-OTHERBGX.mjs";
8
+ } from "../chunk-ZADL33R6.mjs";
9
9
  import "../chunk-ZTXJG4K5.mjs";
10
- import "../chunk-PF3EBZXF.mjs";
10
+ import "../chunk-7ZMXZRBP.mjs";
11
11
  import "../chunk-ADIIWIYL.mjs";
12
12
  import "../chunk-6BWS3CLP.mjs";
13
13
  export {
@@ -116,6 +116,12 @@ h4 {
116
116
  --orion-shell-max: 100%;
117
117
  }
118
118
 
119
+ @media (max-width: 767px) {
120
+ .orion-builder-hide-mobile {
121
+ display: none !important;
122
+ }
123
+ }
124
+
119
125
  .orion-builder-content {
120
126
  width: min(var(--orion-shell-max), calc(100% - (var(--orion-shell-inline) * 2)));
121
127
  margin-inline: auto;
@@ -256,36 +262,44 @@ h4 {
256
262
  }
257
263
 
258
264
  .hero-content {
259
- position: absolute;
260
- inset: 0;
261
265
  display: flex;
262
266
  flex-direction: column;
263
267
  justify-content: center;
264
- padding: 2rem;
268
+ inset: 0;
265
269
  max-width: 610px;
270
+ padding: 2rem;
271
+ position: absolute;
272
+ text-align: var(--orion-builder-body-align, left);
266
273
  }
267
274
 
268
275
  .hero h1 {
269
276
  font-size: clamp(2rem, 4vw, 3.1rem);
270
277
  letter-spacing: -0.02em;
271
278
  margin: 0;
279
+ text-align: var(--orion-builder-heading-align, var(--orion-builder-body-align, left));
272
280
  }
273
281
 
274
282
  .hero p {
283
+ color: color-mix(in srgb, var(--orion-studio-accent-contrast) 90%, transparent);
275
284
  margin-top: 0.75rem;
276
285
  max-width: 48ch;
277
- color: color-mix(in srgb, var(--orion-studio-accent-contrast) 90%, transparent);
286
+ text-align: var(--orion-builder-body-align, left);
278
287
  }
279
288
 
280
289
  .hero-actions {
281
290
  display: flex;
282
291
  flex-wrap: wrap;
283
292
  gap: 0.75rem;
293
+ justify-content: var(--orion-builder-actions-align, flex-start);
284
294
  margin-top: 1.1rem;
285
295
  }
286
296
 
287
297
  .hero-centered .hero-content {
288
- text-align: center;
298
+ text-align: var(--orion-builder-body-align, center);
299
+ }
300
+
301
+ .hero .kicker {
302
+ text-align: var(--orion-builder-heading-align, var(--orion-builder-body-align, left));
289
303
  }
290
304
 
291
305
  .features {
@@ -877,6 +891,48 @@ h4 {
877
891
  padding: 0.2rem;
878
892
  }
879
893
 
894
+ .orion-builder-settings-color-control {
895
+ display: grid;
896
+ grid-template-columns: minmax(0, 1fr) 36px;
897
+ width: 100%;
898
+ }
899
+
900
+ .orion-builder-settings-color-control .orion-builder-settings-input.is-color {
901
+ border-bottom-right-radius: 0;
902
+ border-top-right-radius: 0;
903
+ }
904
+
905
+ .orion-builder-settings-eyedropper {
906
+ align-items: center;
907
+ appearance: none;
908
+ background: #fffaf4;
909
+ border: 1px solid var(--orion-studio-accent-border);
910
+ border-left: 0;
911
+ border-radius: 0 10px 10px 0;
912
+ color: var(--orion-studio-ink);
913
+ cursor: pointer;
914
+ display: flex;
915
+ height: 35px;
916
+ justify-content: center;
917
+ padding: 0;
918
+ transition:
919
+ background 160ms ease,
920
+ color 160ms ease;
921
+ width: 36px;
922
+ }
923
+
924
+ .orion-builder-settings-eyedropper:hover,
925
+ .orion-builder-settings-eyedropper:focus-visible {
926
+ background: var(--orion-studio-accent);
927
+ color: #fffaf4;
928
+ outline: none;
929
+ }
930
+
931
+ .orion-builder-settings-eyedropper svg {
932
+ height: 16px;
933
+ width: 16px;
934
+ }
935
+
880
936
  .orion-builder-settings-input-split {
881
937
  align-items: center;
882
938
  display: grid;
@@ -984,6 +1040,11 @@ h4 {
984
1040
  text-align: var(--orion-builder-heading-align, inherit);
985
1041
  }
986
1042
 
1043
+ .orion-builder-content p,
1044
+ .orion-builder-content li {
1045
+ text-align: var(--orion-builder-body-align, inherit);
1046
+ }
1047
+
987
1048
  /* Builder-only override: show full testimonial copy even if host app globals clamp it. */
988
1049
  .orion-builder-shell .orion-builder-content .testimonial-quote {
989
1050
  -webkit-box-orient: initial;