@orion-studios/payload-studio 0.6.0-beta.18 → 0.6.0-beta.181

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 +742 -540
  2. package/dist/admin/client.mjs +825 -632
  3. package/dist/admin/index.js +37 -25
  4. package/dist/admin/index.mjs +2 -2
  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 +257 -0
  8. package/dist/admin.css +80 -0
  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 +4328 -0
  12. package/dist/builder-v2/client.mjs +4203 -0
  13. package/dist/builder-v2/index.d.mts +249 -0
  14. package/dist/builder-v2/index.d.ts +249 -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 +2693 -0
  18. package/dist/{chunk-XKUTZ7IU.mjs → chunk-276KAPGM.mjs} +56 -5
  19. package/dist/{chunk-PF3EBZXF.mjs → chunk-7ZMXZRBP.mjs} +39 -3
  20. package/dist/{chunk-3AHBR7RI.mjs → chunk-KHK6RTGC.mjs} +40 -28
  21. package/dist/{chunk-KPIX7OSV.mjs → chunk-NF37A575.mjs} +14 -5
  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 +128 -29
  28. package/dist/index.mjs +10 -10
  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 +3 -3
  38. package/package.json +22 -3
package/dist/index.js CHANGED
@@ -433,6 +433,7 @@ function configureAdmin(config) {
433
433
  },
434
434
  ...studioEnabled ? {
435
435
  studioGlobals: {
436
+ exact: true,
436
437
  path: globalsBasePath,
437
438
  Component: {
438
439
  exportName: "AdminStudioGlobalsView",
@@ -444,10 +445,11 @@ function configureAdmin(config) {
444
445
  }
445
446
  }
446
447
  },
447
- studioPages: {
448
- path: pagesBasePath,
448
+ studioPageNew: {
449
+ exact: true,
450
+ path: `${pagesBasePath}/new`,
449
451
  Component: {
450
- exportName: "AdminStudioPagesListView",
452
+ exportName: "AdminStudioNewPageView",
451
453
  path: clientPath,
452
454
  clientProps: {
453
455
  ...studioNavClientProps,
@@ -456,6 +458,7 @@ function configureAdmin(config) {
456
458
  }
457
459
  },
458
460
  studioPageEditor: {
461
+ exact: true,
459
462
  path: `${pagesBasePath}/:id`,
460
463
  Component: {
461
464
  exportName: "AdminStudioPageEditView",
@@ -466,10 +469,11 @@ function configureAdmin(config) {
466
469
  }
467
470
  }
468
471
  },
469
- studioPageNew: {
470
- path: `${pagesBasePath}/new`,
472
+ studioPages: {
473
+ exact: true,
474
+ path: pagesBasePath,
471
475
  Component: {
472
- exportName: "AdminStudioNewPageView",
476
+ exportName: "AdminStudioPagesListView",
473
477
  path: clientPath,
474
478
  clientProps: {
475
479
  ...studioNavClientProps,
@@ -478,6 +482,7 @@ function configureAdmin(config) {
478
482
  }
479
483
  },
480
484
  studioContactForm: {
485
+ exact: true,
481
486
  path: contactFormStudioPath,
482
487
  Component: {
483
488
  exportName: "AdminStudioContactFormView",
@@ -490,20 +495,8 @@ function configureAdmin(config) {
490
495
  }
491
496
  },
492
497
  ...formsEnabled ? {
493
- studioForms: {
494
- path: formsBasePath,
495
- Component: {
496
- exportName: "AdminStudioFormsView",
497
- path: clientPath,
498
- clientProps: {
499
- ...studioNavClientProps,
500
- formsCollectionSlug,
501
- formSubmissionsCollectionSlug,
502
- formUploadsCollectionSlug
503
- }
504
- }
505
- },
506
498
  studioFormSubmission: {
499
+ exact: true,
507
500
  path: `${formsBasePath}/submissions/:id`,
508
501
  Component: {
509
502
  exportName: "AdminStudioFormSubmissionView",
@@ -517,6 +510,7 @@ function configureAdmin(config) {
517
510
  }
518
511
  },
519
512
  studioFormUpload: {
513
+ exact: true,
520
514
  path: `${formsBasePath}/uploads/:id`,
521
515
  Component: {
522
516
  exportName: "AdminStudioFormUploadView",
@@ -528,6 +522,7 @@ function configureAdmin(config) {
528
522
  }
529
523
  },
530
524
  studioFormDetail: {
525
+ exact: true,
531
526
  path: `${formsBasePath}/:id`,
532
527
  Component: {
533
528
  exportName: "AdminStudioFormDetailView",
@@ -538,12 +533,27 @@ function configureAdmin(config) {
538
533
  formSubmissionsCollectionSlug
539
534
  }
540
535
  }
536
+ },
537
+ studioForms: {
538
+ exact: true,
539
+ path: formsBasePath,
540
+ Component: {
541
+ exportName: "AdminStudioFormsView",
542
+ path: clientPath,
543
+ clientProps: {
544
+ ...studioNavClientProps,
545
+ formsCollectionSlug,
546
+ formSubmissionsCollectionSlug,
547
+ formUploadsCollectionSlug
548
+ }
549
+ }
541
550
  }
542
551
  } : {},
543
- studioMedia: {
544
- path: mediaBasePath,
552
+ studioMediaItem: {
553
+ exact: true,
554
+ path: `${mediaBasePath}/:id`,
545
555
  Component: {
546
- exportName: "AdminStudioMediaView",
556
+ exportName: "AdminStudioMediaItemView",
547
557
  path: clientPath,
548
558
  clientProps: {
549
559
  ...studioNavClientProps,
@@ -551,10 +561,11 @@ function configureAdmin(config) {
551
561
  }
552
562
  }
553
563
  },
554
- studioMediaItem: {
555
- path: `${mediaBasePath}/:id`,
564
+ studioMedia: {
565
+ exact: true,
566
+ path: mediaBasePath,
556
567
  Component: {
557
- exportName: "AdminStudioMediaItemView",
568
+ exportName: "AdminStudioMediaView",
558
569
  path: clientPath,
559
570
  clientProps: {
560
571
  ...studioNavClientProps,
@@ -563,6 +574,7 @@ function configureAdmin(config) {
563
574
  }
564
575
  },
565
576
  studioTools: {
577
+ exact: true,
566
578
  path: toolsBasePath,
567
579
  Component: {
568
580
  exportName: "AdminStudioToolsView",
@@ -3681,7 +3693,9 @@ var defaultBuilderBlockSettingsV2 = {
3681
3693
  },
3682
3694
  typography: {
3683
3695
  bodyAlign: "left",
3696
+ bodySizePt: null,
3684
3697
  headingAlign: "left",
3698
+ headingSizePt: null,
3685
3699
  letterSpacingPreset: "normal",
3686
3700
  lineHeightPreset: "normal",
3687
3701
  maxTextWidth: "auto"
@@ -3710,7 +3724,9 @@ var defaultBuilderItemSettingsV2 = {
3710
3724
  },
3711
3725
  typography: {
3712
3726
  bodyAlign: "left",
3727
+ bodySizePt: null,
3713
3728
  headingAlign: "left",
3729
+ headingSizePt: null,
3714
3730
  letterSpacingPreset: "normal",
3715
3731
  lineHeightPreset: "normal",
3716
3732
  maxTextWidth: "auto"
@@ -3740,6 +3756,7 @@ var defaultBuilderThemeTokens = {
3740
3756
 
3741
3757
  // src/studio-pages/builder/adapters/settingsV2.ts
3742
3758
  var isRecord3 = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
3759
+ var isTextAlign = (value) => value === "left" || value === "center" || value === "right" || value === "justify";
3743
3760
  var parsePercent = (value) => {
3744
3761
  if (typeof value === "number" && Number.isFinite(value)) {
3745
3762
  return Math.max(0, Math.min(100, value));
@@ -3764,6 +3781,18 @@ var parsePixel = (value) => {
3764
3781
  }
3765
3782
  return null;
3766
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
+ };
3767
3796
  var mergeSettings = (defaults, input) => {
3768
3797
  if (!isRecord3(input)) {
3769
3798
  return structuredClone(defaults);
@@ -3782,6 +3811,10 @@ var mergeSettings = (defaults, input) => {
3782
3811
  };
3783
3812
  var legacyBlockToV2Settings = (block) => {
3784
3813
  const current = structuredClone(defaultBuilderBlockSettingsV2);
3814
+ if (block.blockType === "hero" && block.variant === "centered") {
3815
+ current.typography.headingAlign = "center";
3816
+ current.typography.bodyAlign = "center";
3817
+ }
3785
3818
  current.layout.contentWidth = block.contentWidth === "narrow" || block.contentWidth === "content" || block.contentWidth === "wide" || block.contentWidth === "full" || block.contentWidth === "inherit" ? block.contentWidth : current.layout.contentWidth;
3786
3819
  current.layout.sectionPaddingX = block.sectionPaddingX === "none" || block.sectionPaddingX === "sm" || block.sectionPaddingX === "md" || block.sectionPaddingX === "lg" || block.sectionPaddingX === "inherit" ? block.sectionPaddingX : current.layout.sectionPaddingX;
3787
3820
  current.layout.sectionPaddingY = block.sectionPaddingY === "none" || block.sectionPaddingY === "sm" || block.sectionPaddingY === "lg" ? block.sectionPaddingY : current.layout.sectionPaddingY;
@@ -3818,15 +3851,28 @@ var legacyBlockToV2Settings = (block) => {
3818
3851
  current.media.positionX = parsePercent(block.imagePositionX ?? block.backgroundImagePositionX);
3819
3852
  current.media.positionY = parsePercent(block.imagePositionY ?? block.backgroundImagePositionY);
3820
3853
  current.media.height = parsePixel(block.imageHeight);
3821
- current.typography.headingAlign = block.textHeadingAlign === "left" || block.textHeadingAlign === "center" || block.textHeadingAlign === "right" || block.textHeadingAlign === "justify" ? block.textHeadingAlign : current.typography.headingAlign;
3822
- 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);
3823
3858
  current.typography.maxTextWidth = block.textMaxWidth === "auto" || block.textMaxWidth === "sm" || block.textMaxWidth === "md" || block.textMaxWidth === "lg" || block.textMaxWidth === "full" ? block.textMaxWidth : current.typography.maxTextWidth;
3824
3859
  current.typography.lineHeightPreset = block.textLineHeightPreset === "tight" || block.textLineHeightPreset === "normal" || block.textLineHeightPreset === "relaxed" ? block.textLineHeightPreset : current.typography.lineHeightPreset;
3825
3860
  current.typography.letterSpacingPreset = block.textLetterSpacingPreset === "tight" || block.textLetterSpacingPreset === "normal" || block.textLetterSpacingPreset === "relaxed" ? block.textLetterSpacingPreset : current.typography.letterSpacingPreset;
3826
3861
  current.advanced.editCopyInPanel = Boolean(block.editCopyInPanel ?? current.advanced.editCopyInPanel);
3827
3862
  current.advanced.customClassName = typeof block.customClassName === "string" ? block.customClassName : current.advanced.customClassName;
3828
3863
  current.advanced.hideOnMobile = Boolean(block.hideOnMobile ?? current.advanced.hideOnMobile);
3829
- 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;
3830
3876
  };
3831
3877
  var v2SettingsToLegacyBlock = (blockWithSettings) => {
3832
3878
  const settings = legacyBlockToV2Settings(blockWithSettings);
@@ -3852,6 +3898,8 @@ var v2SettingsToLegacyBlock = (blockWithSettings) => {
3852
3898
  next.contentGradientAngle = settings.appearance.contentGradientAngle;
3853
3899
  next.textHeadingAlign = settings.typography.headingAlign;
3854
3900
  next.textBodyAlign = settings.typography.bodyAlign;
3901
+ next.textHeadingSizePt = settings.typography.headingSizePt;
3902
+ next.textBodySizePt = settings.typography.bodySizePt;
3855
3903
  next.textMaxWidth = settings.typography.maxTextWidth;
3856
3904
  next.textLineHeightPreset = settings.typography.lineHeightPreset;
3857
3905
  next.textLetterSpacingPreset = settings.typography.letterSpacingPreset;
@@ -4275,8 +4323,52 @@ var alignOptions = [
4275
4323
  { label: "Right", value: "right" },
4276
4324
  { label: "Justify", value: "justify" }
4277
4325
  ];
4278
- 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
+ ];
4279
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
+ },
4280
4372
  {
4281
4373
  group: "typography",
4282
4374
  key: "settings.typography.headingAlign",
@@ -4493,6 +4585,13 @@ var inspectorDefinitionByBlockType = {
4493
4585
  { group: "basics", inlineEditable: true, key: "kicker", label: "Kicker", type: "text" },
4494
4586
  { group: "basics", inlineEditable: true, key: "headline", label: "Headline", type: "text" },
4495
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
+ },
4496
4595
  {
4497
4596
  group: "basics",
4498
4597
  key: "variant",
package/dist/index.mjs CHANGED
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  admin_exports
3
- } from "./chunk-3AHBR7RI.mjs";
3
+ } from "./chunk-KHK6RTGC.mjs";
4
4
  import {
5
- admin_app_exports
6
- } from "./chunk-RKTIFEUY.mjs";
7
- import "./chunk-W2UOCJDX.mjs";
5
+ nextjs_exports
6
+ } from "./chunk-ZADL33R6.mjs";
7
+ import "./chunk-ZTXJG4K5.mjs";
8
8
  import {
9
9
  blocks_exports
10
10
  } from "./chunk-JQAHXYAM.mjs";
11
- import {
12
- nextjs_exports
13
- } from "./chunk-OTHERBGX.mjs";
14
- import "./chunk-ZTXJG4K5.mjs";
15
11
  import {
16
12
  studio_pages_exports
17
- } from "./chunk-XKUTZ7IU.mjs";
13
+ } from "./chunk-276KAPGM.mjs";
14
+ import "./chunk-7ZMXZRBP.mjs";
18
15
  import "./chunk-OQSEJXC4.mjs";
19
- import "./chunk-PF3EBZXF.mjs";
20
16
  import {
21
17
  studio_exports
22
18
  } from "./chunk-ADIIWIYL.mjs";
19
+ import {
20
+ admin_app_exports
21
+ } from "./chunk-RKTIFEUY.mjs";
22
+ import "./chunk-W2UOCJDX.mjs";
23
23
  import "./chunk-6BWS3CLP.mjs";
24
24
  export {
25
25
  admin_exports as admin,
@@ -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;