@orion-studios/payload-studio 0.6.0-beta.142 → 0.6.0-beta.144

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.
@@ -1126,7 +1126,11 @@ var registerProjectDynamicComponents = (editor, adapter) => {
1126
1126
  options: trait.options,
1127
1127
  placeholder: trait.placeholder,
1128
1128
  type: trait.type,
1129
- ...trait.type === "checkbox" ? { valueFalse: "false", valueTrue: "true" } : {}
1129
+ ...trait.type === "checkbox" ? {
1130
+ attributes: trait.description ? { "data-orion-trait-description": trait.description } : void 0,
1131
+ valueFalse: "false",
1132
+ valueTrue: "true"
1133
+ } : {}
1130
1134
  }))
1131
1135
  ]
1132
1136
  }
@@ -1471,15 +1475,31 @@ var decorateBuilderTraitToggles = () => {
1471
1475
  }
1472
1476
  traitsRoot.querySelectorAll('input[type="checkbox"]').forEach((input) => {
1473
1477
  const trait = input.closest(".gjs-trt-trait");
1474
- trait?.classList.add("has-orion-builder-toggle-trait");
1478
+ trait?.classList.add("has-orion-builder-toggle-trait", "orion-builder-v2-toggle");
1479
+ trait?.setAttribute("aria-pressed", input.checked ? "true" : "false");
1475
1480
  input.setAttribute("role", "switch");
1476
1481
  input.setAttribute("aria-checked", input.checked ? "true" : "false");
1482
+ const description = input.dataset.orionTraitDescription;
1483
+ const labelWrapper = trait?.querySelector(".gjs-label-wrp");
1484
+ if (description && labelWrapper && !labelWrapper.querySelector(":scope > small")) {
1485
+ const small = document.createElement("small");
1486
+ small.textContent = description;
1487
+ labelWrapper.appendChild(small);
1488
+ }
1477
1489
  if (input.dataset.orionToggleBound === "true") {
1478
1490
  return;
1479
1491
  }
1480
1492
  input.dataset.orionToggleBound = "true";
1493
+ trait?.addEventListener("click", (event) => {
1494
+ if (event.target === input) {
1495
+ return;
1496
+ }
1497
+ event.preventDefault();
1498
+ input.click();
1499
+ });
1481
1500
  input.addEventListener("change", () => {
1482
1501
  input.setAttribute("aria-checked", input.checked ? "true" : "false");
1502
+ trait?.setAttribute("aria-pressed", input.checked ? "true" : "false");
1483
1503
  });
1484
1504
  });
1485
1505
  };
@@ -1511,10 +1531,17 @@ var openBuilderHelpPopover = (trigger, wrapper, isOpen) => {
1511
1531
  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
1512
1532
  const tooltipHalfWidth = 140;
1513
1533
  const viewportGutter = 18;
1534
+ const inspector = trigger.closest(".orion-builder-v2-sidebar, .orion-builder-v2-inspector");
1535
+ const inspectorRect = inspector?.getBoundingClientRect();
1536
+ const leftBoundary = inspectorRect ? Math.max(viewportGutter, inspectorRect.left + 12) : viewportGutter;
1537
+ const rightBoundary = inspectorRect ? Math.min(viewportWidth - viewportGutter, inspectorRect.right - 12) : viewportWidth - viewportGutter;
1514
1538
  const triggerCenter = triggerRect.left + triggerRect.width / 2;
1515
- if (triggerCenter - tooltipHalfWidth < viewportGutter) {
1539
+ const clampedCenter = Math.min(Math.max(triggerCenter, leftBoundary + tooltipHalfWidth), rightBoundary - tooltipHalfWidth);
1540
+ wrapper.style.setProperty("--builder-v2-help-left", `${clampedCenter}px`);
1541
+ wrapper.style.setProperty("--builder-v2-help-top", `${triggerRect.bottom + 8}px`);
1542
+ if (clampedCenter - tooltipHalfWidth <= leftBoundary) {
1516
1543
  wrapper.classList.add("is-builder-help-left");
1517
- } else if (triggerCenter + tooltipHalfWidth > viewportWidth - viewportGutter) {
1544
+ } else if (clampedCenter + tooltipHalfWidth >= rightBoundary) {
1518
1545
  wrapper.classList.add("is-builder-help-right");
1519
1546
  } else {
1520
1547
  wrapper.classList.add("is-builder-help-center");
@@ -1002,7 +1002,11 @@ var registerProjectDynamicComponents = (editor, adapter) => {
1002
1002
  options: trait.options,
1003
1003
  placeholder: trait.placeholder,
1004
1004
  type: trait.type,
1005
- ...trait.type === "checkbox" ? { valueFalse: "false", valueTrue: "true" } : {}
1005
+ ...trait.type === "checkbox" ? {
1006
+ attributes: trait.description ? { "data-orion-trait-description": trait.description } : void 0,
1007
+ valueFalse: "false",
1008
+ valueTrue: "true"
1009
+ } : {}
1006
1010
  }))
1007
1011
  ]
1008
1012
  }
@@ -1347,15 +1351,31 @@ var decorateBuilderTraitToggles = () => {
1347
1351
  }
1348
1352
  traitsRoot.querySelectorAll('input[type="checkbox"]').forEach((input) => {
1349
1353
  const trait = input.closest(".gjs-trt-trait");
1350
- trait?.classList.add("has-orion-builder-toggle-trait");
1354
+ trait?.classList.add("has-orion-builder-toggle-trait", "orion-builder-v2-toggle");
1355
+ trait?.setAttribute("aria-pressed", input.checked ? "true" : "false");
1351
1356
  input.setAttribute("role", "switch");
1352
1357
  input.setAttribute("aria-checked", input.checked ? "true" : "false");
1358
+ const description = input.dataset.orionTraitDescription;
1359
+ const labelWrapper = trait?.querySelector(".gjs-label-wrp");
1360
+ if (description && labelWrapper && !labelWrapper.querySelector(":scope > small")) {
1361
+ const small = document.createElement("small");
1362
+ small.textContent = description;
1363
+ labelWrapper.appendChild(small);
1364
+ }
1353
1365
  if (input.dataset.orionToggleBound === "true") {
1354
1366
  return;
1355
1367
  }
1356
1368
  input.dataset.orionToggleBound = "true";
1369
+ trait?.addEventListener("click", (event) => {
1370
+ if (event.target === input) {
1371
+ return;
1372
+ }
1373
+ event.preventDefault();
1374
+ input.click();
1375
+ });
1357
1376
  input.addEventListener("change", () => {
1358
1377
  input.setAttribute("aria-checked", input.checked ? "true" : "false");
1378
+ trait?.setAttribute("aria-pressed", input.checked ? "true" : "false");
1359
1379
  });
1360
1380
  });
1361
1381
  };
@@ -1387,10 +1407,17 @@ var openBuilderHelpPopover = (trigger, wrapper, isOpen) => {
1387
1407
  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
1388
1408
  const tooltipHalfWidth = 140;
1389
1409
  const viewportGutter = 18;
1410
+ const inspector = trigger.closest(".orion-builder-v2-sidebar, .orion-builder-v2-inspector");
1411
+ const inspectorRect = inspector?.getBoundingClientRect();
1412
+ const leftBoundary = inspectorRect ? Math.max(viewportGutter, inspectorRect.left + 12) : viewportGutter;
1413
+ const rightBoundary = inspectorRect ? Math.min(viewportWidth - viewportGutter, inspectorRect.right - 12) : viewportWidth - viewportGutter;
1390
1414
  const triggerCenter = triggerRect.left + triggerRect.width / 2;
1391
- if (triggerCenter - tooltipHalfWidth < viewportGutter) {
1415
+ const clampedCenter = Math.min(Math.max(triggerCenter, leftBoundary + tooltipHalfWidth), rightBoundary - tooltipHalfWidth);
1416
+ wrapper.style.setProperty("--builder-v2-help-left", `${clampedCenter}px`);
1417
+ wrapper.style.setProperty("--builder-v2-help-top", `${triggerRect.bottom + 8}px`);
1418
+ if (clampedCenter - tooltipHalfWidth <= leftBoundary) {
1392
1419
  wrapper.classList.add("is-builder-help-left");
1393
- } else if (triggerCenter + tooltipHalfWidth > viewportWidth - viewportGutter) {
1420
+ } else if (clampedCenter + tooltipHalfWidth >= rightBoundary) {
1394
1421
  wrapper.classList.add("is-builder-help-right");
1395
1422
  } else {
1396
1423
  wrapper.classList.add("is-builder-help-center");
@@ -128,6 +128,7 @@ type BuilderV2ProjectComponentDesignControls = {
128
128
  spacing?: boolean;
129
129
  };
130
130
  type BuilderV2TraitDefinition = {
131
+ description?: string;
131
132
  label: string;
132
133
  name: string;
133
134
  options?: Array<{
@@ -128,6 +128,7 @@ type BuilderV2ProjectComponentDesignControls = {
128
128
  spacing?: boolean;
129
129
  };
130
130
  type BuilderV2TraitDefinition = {
131
+ description?: string;
131
132
  label: string;
132
133
  name: string;
133
134
  options?: Array<{
@@ -1181,40 +1181,61 @@
1181
1181
  }
1182
1182
 
1183
1183
  .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait {
1184
- border: 1px solid #e4c6b3;
1185
- border-radius: 8px;
1184
+ display: flex !important;
1186
1185
  margin-bottom: 8px !important;
1187
- min-height: 54px;
1188
- padding: 10px 12px;
1186
+ position: relative;
1187
+ width: 100% !important;
1189
1188
  }
1190
1189
 
1191
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__wrp {
1192
- align-items: center !important;
1193
- display: grid !important;
1194
- gap: 12px !important;
1195
- grid-template-columns: minmax(0, 1fr) auto !important;
1196
- width: 100% !important;
1190
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait:focus-within {
1191
+ outline: 2px solid rgba(35, 54, 84, 0.32);
1192
+ outline-offset: 2px;
1197
1193
  }
1198
1194
 
1199
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label-wrp,
1200
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-field-wrp,
1201
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__cnt {
1202
- display: block !important;
1195
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__wrp,
1196
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__cnt,
1197
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-field-wrp {
1198
+ display: contents !important;
1199
+ }
1200
+
1201
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label-wrp {
1202
+ flex: 1 1 auto !important;
1203
1203
  margin: 0 !important;
1204
+ min-width: 0 !important;
1205
+ padding-right: 12px !important;
1204
1206
  width: auto !important;
1205
1207
  }
1206
1208
 
1207
1209
  .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__label,
1208
1210
  .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label {
1211
+ align-items: center;
1212
+ display: flex !important;
1213
+ font-size: 0.78rem !important;
1214
+ font-weight: 900 !important;
1215
+ gap: 8px;
1216
+ justify-content: flex-start;
1217
+ line-height: 1.2 !important;
1209
1218
  margin: 0 !important;
1219
+ position: relative;
1220
+ width: auto !important;
1210
1221
  white-space: normal !important;
1211
1222
  }
1212
1223
 
1224
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label-wrp small {
1225
+ color: var(--builder-v2-muted);
1226
+ display: block;
1227
+ font-size: 0.68rem;
1228
+ font-weight: 700;
1229
+ line-height: 1.3;
1230
+ margin-top: 2px;
1231
+ }
1232
+
1213
1233
  .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-field {
1214
1234
  background: transparent !important;
1215
1235
  border: 0 !important;
1216
1236
  box-shadow: none !important;
1217
1237
  height: auto !important;
1238
+ flex: 0 0 auto !important;
1218
1239
  min-height: 0 !important;
1219
1240
  overflow: visible !important;
1220
1241
  padding: 0 !important;
@@ -1223,34 +1244,20 @@
1223
1244
 
1224
1245
  .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox'] {
1225
1246
  appearance: none;
1226
- background: radial-gradient(circle at 8px 50%, #ffffff 0 6px, transparent 6.5px), #f1e3d6;
1227
- border: 1px solid #d6b7a1 !important;
1228
- border-radius: 999px;
1229
- box-shadow: none;
1230
- box-sizing: border-box;
1247
+ border: 0 !important;
1248
+ border-radius: 10px;
1231
1249
  cursor: pointer;
1232
1250
  display: block;
1233
- height: 18px !important;
1251
+ inset: 0;
1252
+ height: 100% !important;
1234
1253
  margin: 0 !important;
1235
1254
  max-width: none !important;
1236
1255
  min-height: 0 !important;
1237
1256
  min-width: 0 !important;
1257
+ opacity: 0;
1238
1258
  padding: 0 !important;
1239
- transition:
1240
- background-color 0.15s ease,
1241
- border-color 0.15s ease,
1242
- box-shadow 0.15s ease;
1243
- width: 34px !important;
1244
- }
1245
-
1246
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox']:checked {
1247
- background: radial-gradient(circle at calc(100% - 8px) 50%, #ffffff 0 6px, transparent 6.5px), var(--builder-v2-accent);
1248
- border-color: rgba(255, 255, 255, 0.72) !important;
1249
- }
1250
-
1251
- .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox']:focus-visible {
1252
- outline: 2px solid rgba(35, 54, 84, 0.32) !important;
1253
- outline-offset: 3px;
1259
+ position: absolute;
1260
+ width: 100% !important;
1254
1261
  }
1255
1262
 
1256
1263
  .orion-builder-v2-editor .gjs-sm-sectors {
@@ -1405,7 +1412,6 @@
1405
1412
  .orion-builder-v2-help-trigger::after {
1406
1413
  background: #243654;
1407
1414
  border-radius: 8px;
1408
- bottom: auto;
1409
1415
  box-shadow: 0 14px 34px rgba(36, 54, 84, 0.22);
1410
1416
  box-sizing: border-box;
1411
1417
  color: #ffffff;
@@ -1413,28 +1419,16 @@
1413
1419
  display: none;
1414
1420
  font-size: 0.72rem;
1415
1421
  font-weight: 700;
1416
- left: 50%;
1417
1422
  line-height: 1.35;
1418
1423
  max-width: min(260px, 70vw);
1419
1424
  padding: 8px 10px;
1420
- position: absolute;
1425
+ position: fixed;
1421
1426
  text-transform: none;
1422
- top: calc(100% + 8px);
1427
+ left: var(--builder-v2-help-left, 50vw);
1428
+ top: var(--builder-v2-help-top, 0);
1423
1429
  transform: translateX(-50%);
1424
1430
  width: max-content;
1425
- z-index: 20;
1426
- }
1427
-
1428
- .is-builder-help-left > .orion-builder-v2-help-trigger::after {
1429
- left: 0;
1430
- right: auto;
1431
- transform: none;
1432
- }
1433
-
1434
- .is-builder-help-right > .orion-builder-v2-help-trigger::after {
1435
- left: auto;
1436
- right: 0;
1437
- transform: none;
1431
+ z-index: 10000;
1438
1432
  }
1439
1433
 
1440
1434
  .is-builder-help-open > .orion-builder-v2-help-trigger::after {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.6.0-beta.142",
3
+ "version": "0.6.0-beta.144",
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",