@orion-studios/payload-studio 0.6.0-beta.34 → 0.6.0-beta.36

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.
@@ -66,7 +66,33 @@ var alignOptions = [
66
66
  { label: "Right", value: "right" },
67
67
  { label: "Justify", value: "justify" }
68
68
  ];
69
- var layoutFieldSet = [];
69
+ var layoutFieldSet = [
70
+ {
71
+ group: "layout",
72
+ key: "settings.layout.linkVerticalPadding",
73
+ label: "Link Top/Bottom Padding",
74
+ tags: ["spacing", "padding", "vertical"],
75
+ type: "checkbox"
76
+ },
77
+ {
78
+ group: "layout",
79
+ key: "settings.layout.paddingTopPt",
80
+ label: "Top Padding (pt)",
81
+ max: 240,
82
+ min: 0,
83
+ tags: ["spacing", "padding", "top"],
84
+ type: "number"
85
+ },
86
+ {
87
+ group: "layout",
88
+ key: "settings.layout.paddingBottomPt",
89
+ label: "Bottom Padding (pt)",
90
+ max: 240,
91
+ min: 0,
92
+ tags: ["spacing", "padding", "bottom"],
93
+ type: "number"
94
+ }
95
+ ];
70
96
  var typographyFieldSet = [
71
97
  {
72
98
  group: "typography",
@@ -2,7 +2,7 @@ import { S as StudioDocumentV1, a as StudioModuleManifest, b as StudioPageServic
2
2
  import { Payload } from 'payload';
3
3
  import { ComponentType, CSSProperties, ReactNode } from 'react';
4
4
 
5
- type InspectorGroupKey = 'advanced' | 'basics' | 'media' | 'typography';
5
+ type InspectorGroupKey = 'advanced' | 'basics' | 'layout' | 'media' | 'typography';
6
6
  type InspectorFieldType = 'checkbox' | 'color' | 'number' | 'search' | 'select' | 'text' | 'textarea';
7
7
 
8
8
  type BuilderSettingsPanelMode = 'advanced' | 'basic';
@@ -2,7 +2,7 @@ import { S as StudioDocumentV1, a as StudioModuleManifest, b as StudioPageServic
2
2
  import { Payload } from 'payload';
3
3
  import { ComponentType, CSSProperties, ReactNode } from 'react';
4
4
 
5
- type InspectorGroupKey = 'advanced' | 'basics' | 'media' | 'typography';
5
+ type InspectorGroupKey = 'advanced' | 'basics' | 'layout' | 'media' | 'typography';
6
6
  type InspectorFieldType = 'checkbox' | 'color' | 'number' | 'search' | 'select' | 'text' | 'textarea';
7
7
 
8
8
  type BuilderSettingsPanelMode = 'advanced' | 'basic';
package/dist/index.d.mts CHANGED
@@ -3,7 +3,7 @@ export { i as adminApp } from './index-G_uTNffQ.mjs';
3
3
  export { i as blocks } from './index-CluwY0ZQ.mjs';
4
4
  export { i as nextjs } from './index-D8BNfUJb.mjs';
5
5
  export { i as studio } from './index-DWmudwDm.mjs';
6
- export { i as studioPages } from './index-Cv-6qnrw.mjs';
6
+ export { i as studioPages } from './index-DRu4fKxf.mjs';
7
7
  import 'payload';
8
8
  import './sitePreviewTypes-BrJwGzJj.mjs';
9
9
  import './socialMedia-C05Iy-SV.mjs';
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { i as adminApp } from './index-DAdN56fM.js';
3
3
  export { i as blocks } from './index-CluwY0ZQ.js';
4
4
  export { i as nextjs } from './index-DD_E2UfJ.js';
5
5
  export { i as studio } from './index-DWmudwDm.js';
6
- export { i as studioPages } from './index-Crx_MtPw.js';
6
+ export { i as studioPages } from './index-vkEwwsoC.js';
7
7
  import 'payload';
8
8
  import './sitePreviewTypes-BrJwGzJj.js';
9
9
  import './socialMedia-C05Iy-SV.js';
package/dist/index.js CHANGED
@@ -4292,7 +4292,33 @@ var alignOptions = [
4292
4292
  { label: "Right", value: "right" },
4293
4293
  { label: "Justify", value: "justify" }
4294
4294
  ];
4295
- var layoutFieldSet = [];
4295
+ var layoutFieldSet = [
4296
+ {
4297
+ group: "layout",
4298
+ key: "settings.layout.linkVerticalPadding",
4299
+ label: "Link Top/Bottom Padding",
4300
+ tags: ["spacing", "padding", "vertical"],
4301
+ type: "checkbox"
4302
+ },
4303
+ {
4304
+ group: "layout",
4305
+ key: "settings.layout.paddingTopPt",
4306
+ label: "Top Padding (pt)",
4307
+ max: 240,
4308
+ min: 0,
4309
+ tags: ["spacing", "padding", "top"],
4310
+ type: "number"
4311
+ },
4312
+ {
4313
+ group: "layout",
4314
+ key: "settings.layout.paddingBottomPt",
4315
+ label: "Bottom Padding (pt)",
4316
+ max: 240,
4317
+ min: 0,
4318
+ tags: ["spacing", "padding", "bottom"],
4319
+ type: "number"
4320
+ }
4321
+ ];
4296
4322
  var typographyFieldSet = [
4297
4323
  {
4298
4324
  group: "typography",
package/dist/index.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  import "./chunk-ZTXJG4K5.mjs";
15
15
  import {
16
16
  studio_pages_exports
17
- } from "./chunk-EDW7DPXW.mjs";
17
+ } from "./chunk-6PJ5N4FK.mjs";
18
18
  import "./chunk-OQSEJXC4.mjs";
19
19
  import "./chunk-4LSIUED5.mjs";
20
20
  import {
@@ -536,7 +536,33 @@ var alignOptions = [
536
536
  { label: "Right", value: "right" },
537
537
  { label: "Justify", value: "justify" }
538
538
  ];
539
- var layoutFieldSet = [];
539
+ var layoutFieldSet = [
540
+ {
541
+ group: "layout",
542
+ key: "settings.layout.linkVerticalPadding",
543
+ label: "Link Top/Bottom Padding",
544
+ tags: ["spacing", "padding", "vertical"],
545
+ type: "checkbox"
546
+ },
547
+ {
548
+ group: "layout",
549
+ key: "settings.layout.paddingTopPt",
550
+ label: "Top Padding (pt)",
551
+ max: 240,
552
+ min: 0,
553
+ tags: ["spacing", "padding", "top"],
554
+ type: "number"
555
+ },
556
+ {
557
+ group: "layout",
558
+ key: "settings.layout.paddingBottomPt",
559
+ label: "Bottom Padding (pt)",
560
+ max: 240,
561
+ min: 0,
562
+ tags: ["spacing", "padding", "bottom"],
563
+ type: "number"
564
+ }
565
+ ];
540
566
  var typographyFieldSet = [
541
567
  {
542
568
  group: "typography",
@@ -644,6 +670,7 @@ var mediaFieldSet = [
644
670
  ];
645
671
  var commonInspectorGroups = [
646
672
  { key: "basics", label: "Basics" },
673
+ { key: "layout", label: "Layout" },
647
674
  { key: "typography", label: "Typography" },
648
675
  { key: "media", label: "Media" },
649
676
  { key: "advanced", label: "Advanced" }
@@ -929,6 +956,35 @@ var normalizeNumber = (value, fallback) => {
929
956
  }
930
957
  return fallback;
931
958
  };
959
+ var sectionPaddingPointMap = {
960
+ none: 0,
961
+ sm: 17,
962
+ md: 31,
963
+ lg: 41
964
+ };
965
+ var normalizeSectionPaddingY = (value) => value === "none" || value === "sm" || value === "lg" ? value : "md";
966
+ var normalizePaddingPointValue = (value) => {
967
+ if (typeof value === "number" && Number.isFinite(value)) {
968
+ return Math.max(0, Math.min(240, Math.round(value)));
969
+ }
970
+ if (typeof value === "string" && value.trim().length > 0) {
971
+ const parsed = Number(value);
972
+ if (Number.isFinite(parsed)) {
973
+ return Math.max(0, Math.min(240, Math.round(parsed)));
974
+ }
975
+ }
976
+ return null;
977
+ };
978
+ var getEffectiveVerticalPaddingValue = (block, key) => {
979
+ const explicit = normalizePaddingPointValue(getByPath(block, key));
980
+ if (explicit !== null) {
981
+ return explicit;
982
+ }
983
+ const layoutSectionPaddingY = getByPath(block, "settings.layout.sectionPaddingY");
984
+ const legacySectionPaddingY = block.sectionPaddingY;
985
+ const inherited = sectionPaddingPointMap[normalizeSectionPaddingY(layoutSectionPaddingY || legacySectionPaddingY)];
986
+ return inherited;
987
+ };
932
988
  var getRelationID = (value) => {
933
989
  if (typeof value === "number" || typeof value === "string") {
934
990
  return value;
@@ -1173,19 +1229,20 @@ function BlockInspectorRenderer({
1173
1229
  }
1174
1230
  ) : null,
1175
1231
  (hasMediaGroupContent ? group.fields.filter((field) => !(group.key === "media" && field.key.startsWith("settings.media."))) : group.fields).map((field) => {
1176
- if (field.key === "settings.layout.paddingBottomPt" && Boolean(getByPath(block, "settings.layout.linkVerticalPadding"))) {
1232
+ if (field.key === "settings.layout.paddingBottomPt" && getByPath(block, "settings.layout.linkVerticalPadding") !== false) {
1177
1233
  return null;
1178
1234
  }
1179
- if (field.key === "settings.layout.paddingRightPt" && Boolean(getByPath(block, "settings.layout.linkHorizontalPadding"))) {
1235
+ if (field.key === "settings.layout.paddingRightPt" && getByPath(block, "settings.layout.linkHorizontalPadding") !== false) {
1180
1236
  return null;
1181
1237
  }
1182
1238
  const fieldValue = getByPath(block, field.key);
1183
1239
  if (field.type === "checkbox") {
1240
+ const checked = field.key === "settings.layout.linkVerticalPadding" || field.key === "settings.layout.linkHorizontalPadding" ? typeof fieldValue === "boolean" ? fieldValue : true : Boolean(fieldValue);
1184
1241
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { className: "orion-builder-settings-label is-checkbox", children: [
1185
1242
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1186
1243
  "input",
1187
1244
  {
1188
- checked: Boolean(fieldValue),
1245
+ checked,
1189
1246
  onChange: (event) => updateForKey(field.key, event.target.checked),
1190
1247
  type: "checkbox"
1191
1248
  }
@@ -1208,8 +1265,8 @@ function BlockInspectorRenderer({
1208
1265
  ] }, field.key);
1209
1266
  }
1210
1267
  if (field.type === "number") {
1211
- const numberValue = typeof fieldValue === "number" ? fieldValue : typeof fieldValue === "string" && fieldValue.trim().length > 0 ? Number(fieldValue) : null;
1212
- const resolvedValue = typeof numberValue === "number" && Number.isFinite(numberValue) ? numberValue : "";
1268
+ const numberValue = normalizePaddingPointValue(fieldValue);
1269
+ const resolvedValue = numberValue !== null ? numberValue : field.key === "settings.layout.paddingTopPt" || field.key === "settings.layout.paddingBottomPt" ? getEffectiveVerticalPaddingValue(block, field.key) : "";
1213
1270
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { className: "orion-builder-settings-label", children: [
1214
1271
  field.label,
1215
1272
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
@@ -509,7 +509,33 @@ var alignOptions = [
509
509
  { label: "Right", value: "right" },
510
510
  { label: "Justify", value: "justify" }
511
511
  ];
512
- var layoutFieldSet = [];
512
+ var layoutFieldSet = [
513
+ {
514
+ group: "layout",
515
+ key: "settings.layout.linkVerticalPadding",
516
+ label: "Link Top/Bottom Padding",
517
+ tags: ["spacing", "padding", "vertical"],
518
+ type: "checkbox"
519
+ },
520
+ {
521
+ group: "layout",
522
+ key: "settings.layout.paddingTopPt",
523
+ label: "Top Padding (pt)",
524
+ max: 240,
525
+ min: 0,
526
+ tags: ["spacing", "padding", "top"],
527
+ type: "number"
528
+ },
529
+ {
530
+ group: "layout",
531
+ key: "settings.layout.paddingBottomPt",
532
+ label: "Bottom Padding (pt)",
533
+ max: 240,
534
+ min: 0,
535
+ tags: ["spacing", "padding", "bottom"],
536
+ type: "number"
537
+ }
538
+ ];
513
539
  var typographyFieldSet = [
514
540
  {
515
541
  group: "typography",
@@ -617,6 +643,7 @@ var mediaFieldSet = [
617
643
  ];
618
644
  var commonInspectorGroups = [
619
645
  { key: "basics", label: "Basics" },
646
+ { key: "layout", label: "Layout" },
620
647
  { key: "typography", label: "Typography" },
621
648
  { key: "media", label: "Media" },
622
649
  { key: "advanced", label: "Advanced" }
@@ -902,6 +929,35 @@ var normalizeNumber = (value, fallback) => {
902
929
  }
903
930
  return fallback;
904
931
  };
932
+ var sectionPaddingPointMap = {
933
+ none: 0,
934
+ sm: 17,
935
+ md: 31,
936
+ lg: 41
937
+ };
938
+ var normalizeSectionPaddingY = (value) => value === "none" || value === "sm" || value === "lg" ? value : "md";
939
+ var normalizePaddingPointValue = (value) => {
940
+ if (typeof value === "number" && Number.isFinite(value)) {
941
+ return Math.max(0, Math.min(240, Math.round(value)));
942
+ }
943
+ if (typeof value === "string" && value.trim().length > 0) {
944
+ const parsed = Number(value);
945
+ if (Number.isFinite(parsed)) {
946
+ return Math.max(0, Math.min(240, Math.round(parsed)));
947
+ }
948
+ }
949
+ return null;
950
+ };
951
+ var getEffectiveVerticalPaddingValue = (block, key) => {
952
+ const explicit = normalizePaddingPointValue(getByPath(block, key));
953
+ if (explicit !== null) {
954
+ return explicit;
955
+ }
956
+ const layoutSectionPaddingY = getByPath(block, "settings.layout.sectionPaddingY");
957
+ const legacySectionPaddingY = block.sectionPaddingY;
958
+ const inherited = sectionPaddingPointMap[normalizeSectionPaddingY(layoutSectionPaddingY || legacySectionPaddingY)];
959
+ return inherited;
960
+ };
905
961
  var getRelationID = (value) => {
906
962
  if (typeof value === "number" || typeof value === "string") {
907
963
  return value;
@@ -1146,19 +1202,20 @@ function BlockInspectorRenderer({
1146
1202
  }
1147
1203
  ) : null,
1148
1204
  (hasMediaGroupContent ? group.fields.filter((field) => !(group.key === "media" && field.key.startsWith("settings.media."))) : group.fields).map((field) => {
1149
- if (field.key === "settings.layout.paddingBottomPt" && Boolean(getByPath(block, "settings.layout.linkVerticalPadding"))) {
1205
+ if (field.key === "settings.layout.paddingBottomPt" && getByPath(block, "settings.layout.linkVerticalPadding") !== false) {
1150
1206
  return null;
1151
1207
  }
1152
- if (field.key === "settings.layout.paddingRightPt" && Boolean(getByPath(block, "settings.layout.linkHorizontalPadding"))) {
1208
+ if (field.key === "settings.layout.paddingRightPt" && getByPath(block, "settings.layout.linkHorizontalPadding") !== false) {
1153
1209
  return null;
1154
1210
  }
1155
1211
  const fieldValue = getByPath(block, field.key);
1156
1212
  if (field.type === "checkbox") {
1213
+ const checked = field.key === "settings.layout.linkVerticalPadding" || field.key === "settings.layout.linkHorizontalPadding" ? typeof fieldValue === "boolean" ? fieldValue : true : Boolean(fieldValue);
1157
1214
  return /* @__PURE__ */ jsxs3("label", { className: "orion-builder-settings-label is-checkbox", children: [
1158
1215
  /* @__PURE__ */ jsx3(
1159
1216
  "input",
1160
1217
  {
1161
- checked: Boolean(fieldValue),
1218
+ checked,
1162
1219
  onChange: (event) => updateForKey(field.key, event.target.checked),
1163
1220
  type: "checkbox"
1164
1221
  }
@@ -1181,8 +1238,8 @@ function BlockInspectorRenderer({
1181
1238
  ] }, field.key);
1182
1239
  }
1183
1240
  if (field.type === "number") {
1184
- const numberValue = typeof fieldValue === "number" ? fieldValue : typeof fieldValue === "string" && fieldValue.trim().length > 0 ? Number(fieldValue) : null;
1185
- const resolvedValue = typeof numberValue === "number" && Number.isFinite(numberValue) ? numberValue : "";
1241
+ const numberValue = normalizePaddingPointValue(fieldValue);
1242
+ const resolvedValue = numberValue !== null ? numberValue : field.key === "settings.layout.paddingTopPt" || field.key === "settings.layout.paddingBottomPt" ? getEffectiveVerticalPaddingValue(block, field.key) : "";
1186
1243
  return /* @__PURE__ */ jsxs3("label", { className: "orion-builder-settings-label", children: [
1187
1244
  field.label,
1188
1245
  /* @__PURE__ */ jsx3(
@@ -1,4 +1,4 @@
1
- export { B as BuilderBlock, a as BuilderBlockPreviewRenderArgs, b as BuilderBlockPreviewRenderer, c as BuilderBlockSettingsV2, d as BuilderInlineTextComponentProps, e as BuilderPreviewEditingHelpers, f as BuilderPreviewTextFieldOptions, g as BuilderRenderWithSectionShell, h as BuilderSettingsPanelMode, j as BuilderThemeTokenOverrides, k as BuilderThemeTokens, S as SectionPreset, l as createDefaultStudioDocument, m as createStudioPageService, n as defaultBuilderThemeTokens, o as getStudioDocumentFromPage, p as layoutToStudioDocument, q as pageInspectorPanels, r as pageNodeTypes, s as pagePaletteGroups, t as pageStudioModuleManifest, u as resolveBuilderThemeTokens, v as studioDocumentToLayout, w as toEditorInitialDoc } from '../index-Cv-6qnrw.mjs';
1
+ export { B as BuilderBlock, a as BuilderBlockPreviewRenderArgs, b as BuilderBlockPreviewRenderer, c as BuilderBlockSettingsV2, d as BuilderInlineTextComponentProps, e as BuilderPreviewEditingHelpers, f as BuilderPreviewTextFieldOptions, g as BuilderRenderWithSectionShell, h as BuilderSettingsPanelMode, j as BuilderThemeTokenOverrides, k as BuilderThemeTokens, S as SectionPreset, l as createDefaultStudioDocument, m as createStudioPageService, n as defaultBuilderThemeTokens, o as getStudioDocumentFromPage, p as layoutToStudioDocument, q as pageInspectorPanels, r as pageNodeTypes, s as pagePaletteGroups, t as pageStudioModuleManifest, u as resolveBuilderThemeTokens, v as studioDocumentToLayout, w as toEditorInitialDoc } from '../index-DRu4fKxf.mjs';
2
2
  import '../index-DWmudwDm.mjs';
3
3
  import 'payload';
4
4
  import 'react';
@@ -1,4 +1,4 @@
1
- export { B as BuilderBlock, a as BuilderBlockPreviewRenderArgs, b as BuilderBlockPreviewRenderer, c as BuilderBlockSettingsV2, d as BuilderInlineTextComponentProps, e as BuilderPreviewEditingHelpers, f as BuilderPreviewTextFieldOptions, g as BuilderRenderWithSectionShell, h as BuilderSettingsPanelMode, j as BuilderThemeTokenOverrides, k as BuilderThemeTokens, S as SectionPreset, l as createDefaultStudioDocument, m as createStudioPageService, n as defaultBuilderThemeTokens, o as getStudioDocumentFromPage, p as layoutToStudioDocument, q as pageInspectorPanels, r as pageNodeTypes, s as pagePaletteGroups, t as pageStudioModuleManifest, u as resolveBuilderThemeTokens, v as studioDocumentToLayout, w as toEditorInitialDoc } from '../index-Crx_MtPw.js';
1
+ export { B as BuilderBlock, a as BuilderBlockPreviewRenderArgs, b as BuilderBlockPreviewRenderer, c as BuilderBlockSettingsV2, d as BuilderInlineTextComponentProps, e as BuilderPreviewEditingHelpers, f as BuilderPreviewTextFieldOptions, g as BuilderRenderWithSectionShell, h as BuilderSettingsPanelMode, j as BuilderThemeTokenOverrides, k as BuilderThemeTokens, S as SectionPreset, l as createDefaultStudioDocument, m as createStudioPageService, n as defaultBuilderThemeTokens, o as getStudioDocumentFromPage, p as layoutToStudioDocument, q as pageInspectorPanels, r as pageNodeTypes, s as pagePaletteGroups, t as pageStudioModuleManifest, u as resolveBuilderThemeTokens, v as studioDocumentToLayout, w as toEditorInitialDoc } from '../index-vkEwwsoC.js';
2
2
  import '../index-DWmudwDm.js';
3
3
  import 'payload';
4
4
  import 'react';
@@ -369,7 +369,33 @@ var alignOptions = [
369
369
  { label: "Right", value: "right" },
370
370
  { label: "Justify", value: "justify" }
371
371
  ];
372
- var layoutFieldSet = [];
372
+ var layoutFieldSet = [
373
+ {
374
+ group: "layout",
375
+ key: "settings.layout.linkVerticalPadding",
376
+ label: "Link Top/Bottom Padding",
377
+ tags: ["spacing", "padding", "vertical"],
378
+ type: "checkbox"
379
+ },
380
+ {
381
+ group: "layout",
382
+ key: "settings.layout.paddingTopPt",
383
+ label: "Top Padding (pt)",
384
+ max: 240,
385
+ min: 0,
386
+ tags: ["spacing", "padding", "top"],
387
+ type: "number"
388
+ },
389
+ {
390
+ group: "layout",
391
+ key: "settings.layout.paddingBottomPt",
392
+ label: "Bottom Padding (pt)",
393
+ max: 240,
394
+ min: 0,
395
+ tags: ["spacing", "padding", "bottom"],
396
+ type: "number"
397
+ }
398
+ ];
373
399
  var typographyFieldSet = [
374
400
  {
375
401
  group: "typography",
@@ -7,7 +7,7 @@ import {
7
7
  pageStudioModuleManifest,
8
8
  resolveBuilderThemeTokens,
9
9
  toEditorInitialDoc
10
- } from "../chunk-EDW7DPXW.mjs";
10
+ } from "../chunk-6PJ5N4FK.mjs";
11
11
  import "../chunk-OQSEJXC4.mjs";
12
12
  import {
13
13
  createDefaultStudioDocument,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.6.0-beta.34",
3
+ "version": "0.6.0-beta.36",
4
4
  "description": "Base CMS, builder, and custom admin toolkit for Orion Studios websites",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",