@orion-studios/payload-studio 0.6.0-beta.141 → 0.6.0-beta.143

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.
@@ -1125,7 +1125,8 @@ var registerProjectDynamicComponents = (editor, adapter) => {
1125
1125
  name: `data-orion-${trait.name.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`)}`,
1126
1126
  options: trait.options,
1127
1127
  placeholder: trait.placeholder,
1128
- type: trait.type
1128
+ type: trait.type,
1129
+ ...trait.type === "checkbox" ? { valueFalse: "false", valueTrue: "true" } : {}
1129
1130
  }))
1130
1131
  ]
1131
1132
  }
@@ -1463,11 +1464,31 @@ var decorateStylePanelTabOrder = () => {
1463
1464
  true
1464
1465
  );
1465
1466
  };
1467
+ var decorateBuilderTraitToggles = () => {
1468
+ const traitsRoot = document.getElementById("orion-builder-v2-traits");
1469
+ if (!traitsRoot) {
1470
+ return;
1471
+ }
1472
+ traitsRoot.querySelectorAll('input[type="checkbox"]').forEach((input) => {
1473
+ const trait = input.closest(".gjs-trt-trait");
1474
+ trait?.classList.add("has-orion-builder-toggle-trait");
1475
+ input.setAttribute("role", "switch");
1476
+ input.setAttribute("aria-checked", input.checked ? "true" : "false");
1477
+ if (input.dataset.orionToggleBound === "true") {
1478
+ return;
1479
+ }
1480
+ input.dataset.orionToggleBound = "true";
1481
+ input.addEventListener("change", () => {
1482
+ input.setAttribute("aria-checked", input.checked ? "true" : "false");
1483
+ });
1484
+ });
1485
+ };
1466
1486
  var decorateBuilderControls = (root = document) => {
1467
1487
  decorateBuilderSettingHelp(root);
1468
1488
  decorateBuilderColorEyeDroppers(root);
1469
1489
  decorateBuilderNumericSteppers(root);
1470
1490
  decorateStylePanelTabOrder();
1491
+ decorateBuilderTraitToggles();
1471
1492
  };
1472
1493
  var closeBuilderHelpPopovers = (except) => {
1473
1494
  document.querySelectorAll(".is-builder-help-open").forEach((element) => {
@@ -1490,10 +1511,17 @@ var openBuilderHelpPopover = (trigger, wrapper, isOpen) => {
1490
1511
  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
1491
1512
  const tooltipHalfWidth = 140;
1492
1513
  const viewportGutter = 18;
1514
+ const inspector = trigger.closest(".orion-builder-v2-sidebar, .orion-builder-v2-inspector");
1515
+ const inspectorRect = inspector?.getBoundingClientRect();
1516
+ const leftBoundary = inspectorRect ? Math.max(viewportGutter, inspectorRect.left + 12) : viewportGutter;
1517
+ const rightBoundary = inspectorRect ? Math.min(viewportWidth - viewportGutter, inspectorRect.right - 12) : viewportWidth - viewportGutter;
1493
1518
  const triggerCenter = triggerRect.left + triggerRect.width / 2;
1494
- if (triggerCenter - tooltipHalfWidth < viewportGutter) {
1519
+ const clampedCenter = Math.min(Math.max(triggerCenter, leftBoundary + tooltipHalfWidth), rightBoundary - tooltipHalfWidth);
1520
+ wrapper.style.setProperty("--builder-v2-help-left", `${clampedCenter}px`);
1521
+ wrapper.style.setProperty("--builder-v2-help-top", `${triggerRect.bottom + 8}px`);
1522
+ if (clampedCenter - tooltipHalfWidth <= leftBoundary) {
1495
1523
  wrapper.classList.add("is-builder-help-left");
1496
- } else if (triggerCenter + tooltipHalfWidth > viewportWidth - viewportGutter) {
1524
+ } else if (clampedCenter + tooltipHalfWidth >= rightBoundary) {
1497
1525
  wrapper.classList.add("is-builder-help-right");
1498
1526
  } else {
1499
1527
  wrapper.classList.add("is-builder-help-center");
@@ -1001,7 +1001,8 @@ var registerProjectDynamicComponents = (editor, adapter) => {
1001
1001
  name: `data-orion-${trait.name.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`)}`,
1002
1002
  options: trait.options,
1003
1003
  placeholder: trait.placeholder,
1004
- type: trait.type
1004
+ type: trait.type,
1005
+ ...trait.type === "checkbox" ? { valueFalse: "false", valueTrue: "true" } : {}
1005
1006
  }))
1006
1007
  ]
1007
1008
  }
@@ -1339,11 +1340,31 @@ var decorateStylePanelTabOrder = () => {
1339
1340
  true
1340
1341
  );
1341
1342
  };
1343
+ var decorateBuilderTraitToggles = () => {
1344
+ const traitsRoot = document.getElementById("orion-builder-v2-traits");
1345
+ if (!traitsRoot) {
1346
+ return;
1347
+ }
1348
+ traitsRoot.querySelectorAll('input[type="checkbox"]').forEach((input) => {
1349
+ const trait = input.closest(".gjs-trt-trait");
1350
+ trait?.classList.add("has-orion-builder-toggle-trait");
1351
+ input.setAttribute("role", "switch");
1352
+ input.setAttribute("aria-checked", input.checked ? "true" : "false");
1353
+ if (input.dataset.orionToggleBound === "true") {
1354
+ return;
1355
+ }
1356
+ input.dataset.orionToggleBound = "true";
1357
+ input.addEventListener("change", () => {
1358
+ input.setAttribute("aria-checked", input.checked ? "true" : "false");
1359
+ });
1360
+ });
1361
+ };
1342
1362
  var decorateBuilderControls = (root = document) => {
1343
1363
  decorateBuilderSettingHelp(root);
1344
1364
  decorateBuilderColorEyeDroppers(root);
1345
1365
  decorateBuilderNumericSteppers(root);
1346
1366
  decorateStylePanelTabOrder();
1367
+ decorateBuilderTraitToggles();
1347
1368
  };
1348
1369
  var closeBuilderHelpPopovers = (except) => {
1349
1370
  document.querySelectorAll(".is-builder-help-open").forEach((element) => {
@@ -1366,10 +1387,17 @@ var openBuilderHelpPopover = (trigger, wrapper, isOpen) => {
1366
1387
  const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
1367
1388
  const tooltipHalfWidth = 140;
1368
1389
  const viewportGutter = 18;
1390
+ const inspector = trigger.closest(".orion-builder-v2-sidebar, .orion-builder-v2-inspector");
1391
+ const inspectorRect = inspector?.getBoundingClientRect();
1392
+ const leftBoundary = inspectorRect ? Math.max(viewportGutter, inspectorRect.left + 12) : viewportGutter;
1393
+ const rightBoundary = inspectorRect ? Math.min(viewportWidth - viewportGutter, inspectorRect.right - 12) : viewportWidth - viewportGutter;
1369
1394
  const triggerCenter = triggerRect.left + triggerRect.width / 2;
1370
- if (triggerCenter - tooltipHalfWidth < viewportGutter) {
1395
+ const clampedCenter = Math.min(Math.max(triggerCenter, leftBoundary + tooltipHalfWidth), rightBoundary - tooltipHalfWidth);
1396
+ wrapper.style.setProperty("--builder-v2-help-left", `${clampedCenter}px`);
1397
+ wrapper.style.setProperty("--builder-v2-help-top", `${triggerRect.bottom + 8}px`);
1398
+ if (clampedCenter - tooltipHalfWidth <= leftBoundary) {
1371
1399
  wrapper.classList.add("is-builder-help-left");
1372
- } else if (triggerCenter + tooltipHalfWidth > viewportWidth - viewportGutter) {
1400
+ } else if (clampedCenter + tooltipHalfWidth >= rightBoundary) {
1373
1401
  wrapper.classList.add("is-builder-help-right");
1374
1402
  } else {
1375
1403
  wrapper.classList.add("is-builder-help-center");
@@ -1180,6 +1180,97 @@
1180
1180
  resize: vertical;
1181
1181
  }
1182
1182
 
1183
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait {
1184
+ align-items: center;
1185
+ background: #fffdf9;
1186
+ border: 1px solid #e4c6b3;
1187
+ border-radius: 10px;
1188
+ box-sizing: border-box;
1189
+ display: flex !important;
1190
+ justify-content: space-between;
1191
+ margin-bottom: 8px !important;
1192
+ min-height: 54px;
1193
+ padding: 10px 12px;
1194
+ transition:
1195
+ border-color 160ms ease,
1196
+ box-shadow 160ms ease;
1197
+ width: 100% !important;
1198
+ }
1199
+
1200
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait:hover {
1201
+ border-color: rgba(181, 111, 77, 0.8);
1202
+ box-shadow: 0 8px 18px rgba(199, 100, 61, 0.1);
1203
+ }
1204
+
1205
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__wrp,
1206
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__cnt,
1207
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-field-wrp {
1208
+ display: contents !important;
1209
+ }
1210
+
1211
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label-wrp {
1212
+ flex: 1 1 auto !important;
1213
+ margin: 0 !important;
1214
+ min-width: 0 !important;
1215
+ padding-right: 12px !important;
1216
+ width: auto !important;
1217
+ }
1218
+
1219
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-trt-trait__label,
1220
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-label {
1221
+ color: var(--builder-v2-ink);
1222
+ font-size: 0.78rem !important;
1223
+ font-weight: 900 !important;
1224
+ line-height: 1.2 !important;
1225
+ margin: 0 !important;
1226
+ width: auto !important;
1227
+ white-space: normal !important;
1228
+ }
1229
+
1230
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait .gjs-field {
1231
+ background: transparent !important;
1232
+ border: 0 !important;
1233
+ box-shadow: none !important;
1234
+ height: auto !important;
1235
+ flex: 0 0 auto !important;
1236
+ min-height: 0 !important;
1237
+ overflow: visible !important;
1238
+ padding: 0 !important;
1239
+ width: auto !important;
1240
+ }
1241
+
1242
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox'] {
1243
+ appearance: none;
1244
+ background: radial-gradient(circle at 8px 50%, #ffffff 0 6px, transparent 6.5px), #f1e3d6;
1245
+ border: 1px solid #d6b7a1 !important;
1246
+ border-radius: 999px;
1247
+ box-shadow: none;
1248
+ box-sizing: border-box;
1249
+ cursor: pointer;
1250
+ display: block;
1251
+ height: 18px !important;
1252
+ margin: 0 !important;
1253
+ max-width: none !important;
1254
+ min-height: 0 !important;
1255
+ min-width: 0 !important;
1256
+ padding: 0 !important;
1257
+ transition:
1258
+ background-color 0.15s ease,
1259
+ border-color 0.15s ease,
1260
+ box-shadow 0.15s ease;
1261
+ width: 34px !important;
1262
+ }
1263
+
1264
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox']:checked {
1265
+ background: radial-gradient(circle at calc(100% - 8px) 50%, #ffffff 0 6px, transparent 6.5px), var(--builder-v2-accent);
1266
+ border-color: rgba(255, 255, 255, 0.72) !important;
1267
+ }
1268
+
1269
+ .orion-builder-v2-inspector #orion-builder-v2-traits .gjs-trt-trait.has-orion-builder-toggle-trait input[type='checkbox']:focus-visible {
1270
+ outline: 2px solid rgba(35, 54, 84, 0.32) !important;
1271
+ outline-offset: 3px;
1272
+ }
1273
+
1183
1274
  .orion-builder-v2-editor .gjs-sm-sectors {
1184
1275
  display: grid;
1185
1276
  gap: 10px;
@@ -1332,7 +1423,6 @@
1332
1423
  .orion-builder-v2-help-trigger::after {
1333
1424
  background: #243654;
1334
1425
  border-radius: 8px;
1335
- bottom: auto;
1336
1426
  box-shadow: 0 14px 34px rgba(36, 54, 84, 0.22);
1337
1427
  box-sizing: border-box;
1338
1428
  color: #ffffff;
@@ -1340,28 +1430,16 @@
1340
1430
  display: none;
1341
1431
  font-size: 0.72rem;
1342
1432
  font-weight: 700;
1343
- left: 50%;
1344
1433
  line-height: 1.35;
1345
1434
  max-width: min(260px, 70vw);
1346
1435
  padding: 8px 10px;
1347
- position: absolute;
1436
+ position: fixed;
1348
1437
  text-transform: none;
1349
- top: calc(100% + 8px);
1438
+ left: var(--builder-v2-help-left, 50vw);
1439
+ top: var(--builder-v2-help-top, 0);
1350
1440
  transform: translateX(-50%);
1351
1441
  width: max-content;
1352
- z-index: 20;
1353
- }
1354
-
1355
- .is-builder-help-left > .orion-builder-v2-help-trigger::after {
1356
- left: 0;
1357
- right: auto;
1358
- transform: none;
1359
- }
1360
-
1361
- .is-builder-help-right > .orion-builder-v2-help-trigger::after {
1362
- left: auto;
1363
- right: 0;
1364
- transform: none;
1442
+ z-index: 10000;
1365
1443
  }
1366
1444
 
1367
1445
  .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.141",
3
+ "version": "0.6.0-beta.143",
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",