@orion-studios/payload-studio 0.6.0-beta.46 → 0.6.0-beta.48

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.
@@ -190,6 +190,18 @@ var parseAttributes = (value) => {
190
190
  if (name === "data-orion-component" || name === "data-orion-id") {
191
191
  continue;
192
192
  }
193
+ if (name === "data-orion-props") {
194
+ const decoded = decodeHtmlAttribute(rawValue);
195
+ try {
196
+ const parsed = JSON.parse(decoded);
197
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
198
+ Object.assign(props, parsed);
199
+ }
200
+ } catch {
201
+ props.propsJson = decoded;
202
+ }
203
+ continue;
204
+ }
193
205
  const propName = name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
194
206
  props[propName] = decodeHtmlAttribute(rawValue);
195
207
  }
@@ -256,6 +268,7 @@ var allowedIframeHosts = [
256
268
  "calendar.google.com",
257
269
  "calendly.com",
258
270
  "player.vimeo.com",
271
+ "www.google.com",
259
272
  "www.youtube.com",
260
273
  "youtube.com"
261
274
  ];
@@ -576,6 +589,31 @@ var normalizeDefinition = (type, value) => {
576
589
  type: value.type || type
577
590
  };
578
591
  };
592
+ var decodeHtmlAttribute2 = (value) => typeof value === "string" ? value.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">") : "";
593
+ var attrToPropName = (name) => name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
594
+ var propsFromAttributes = (attributes = {}) => {
595
+ const props = {};
596
+ Object.keys(attributes).forEach((name) => {
597
+ if (!name.startsWith("data-") || name === "data-orion-component" || name === "data-orion-id") {
598
+ return;
599
+ }
600
+ const value = decodeHtmlAttribute2(attributes[name]);
601
+ if (name === "data-orion-props") {
602
+ try {
603
+ const parsed = JSON.parse(value);
604
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
605
+ Object.assign(props, parsed);
606
+ }
607
+ } catch {
608
+ props.propsJson = value;
609
+ }
610
+ return;
611
+ }
612
+ props[attrToPropName(name)] = value;
613
+ });
614
+ return props;
615
+ };
616
+ var previewForDefinition = (definition, props) => definition.editorPreview?.(props) || `<div class="orion-builder-v2-dynamic-placeholder"><strong>${definition.label}</strong></div>`;
579
617
  var registerProjectDynamicComponents = (editor, adapter) => {
580
618
  const components = adapter?.components || {};
581
619
  Object.keys(components).forEach((type) => {
@@ -608,6 +646,16 @@ var registerProjectDynamicComponents = (editor, adapter) => {
608
646
  }))
609
647
  ]
610
648
  }
649
+ },
650
+ view: {
651
+ init() {
652
+ this.listenTo(this.model, "change:attributes", this.renderPreview);
653
+ },
654
+ renderPreview() {
655
+ const attributes = this.model.getAttributes?.() || {};
656
+ const props = propsFromAttributes(attributes);
657
+ this.model.components(previewForDefinition(definition, props));
658
+ }
611
659
  }
612
660
  });
613
661
  editor.Blocks.add(`orion-dynamic-${type}`, {
@@ -750,6 +798,7 @@ function GrapesPageEditor({
750
798
  const [saving, setSaving] = (0, import_react.useState)(null);
751
799
  const [saveMessage, setSaveMessage] = (0, import_react.useState)("");
752
800
  const [validationIssues, setValidationIssues] = (0, import_react.useState)([]);
801
+ const pageTree = initialData?.meta?.pageTree || [];
753
802
  const updateHistoryState = (editor) => {
754
803
  const next = {
755
804
  canRedo: editor.UndoManager.hasRedo(),
@@ -1064,6 +1113,13 @@ function GrapesPageEditor({
1064
1113
  ] })
1065
1114
  ] }),
1066
1115
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("aside", { className: "orion-builder-v2-sidebar", children: [
1116
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "orion-builder-v2-panel", children: [
1117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { children: "Pages" }),
1118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "orion-builder-v2-page-tree", children: pageTree.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "No pages loaded." }) : pageTree.map((page) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("a", { className: "orion-builder-v2-page-link", href: `#page-${page.id}`, children: [
1119
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: page.title }),
1120
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("small", { children: page.path })
1121
+ ] }, page.id)) })
1122
+ ] }),
1067
1123
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "orion-builder-v2-panel", children: [
1068
1124
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { children: "Blocks" }),
1069
1125
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Drag sections into the page. Dynamic blocks render through the project adapter." }),
@@ -66,6 +66,18 @@ var parseAttributes = (value) => {
66
66
  if (name === "data-orion-component" || name === "data-orion-id") {
67
67
  continue;
68
68
  }
69
+ if (name === "data-orion-props") {
70
+ const decoded = decodeHtmlAttribute(rawValue);
71
+ try {
72
+ const parsed = JSON.parse(decoded);
73
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
74
+ Object.assign(props, parsed);
75
+ }
76
+ } catch {
77
+ props.propsJson = decoded;
78
+ }
79
+ continue;
80
+ }
69
81
  const propName = name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
70
82
  props[propName] = decodeHtmlAttribute(rawValue);
71
83
  }
@@ -132,6 +144,7 @@ var allowedIframeHosts = [
132
144
  "calendar.google.com",
133
145
  "calendly.com",
134
146
  "player.vimeo.com",
147
+ "www.google.com",
135
148
  "www.youtube.com",
136
149
  "youtube.com"
137
150
  ];
@@ -452,6 +465,31 @@ var normalizeDefinition = (type, value) => {
452
465
  type: value.type || type
453
466
  };
454
467
  };
468
+ var decodeHtmlAttribute2 = (value) => typeof value === "string" ? value.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">") : "";
469
+ var attrToPropName = (name) => name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
470
+ var propsFromAttributes = (attributes = {}) => {
471
+ const props = {};
472
+ Object.keys(attributes).forEach((name) => {
473
+ if (!name.startsWith("data-") || name === "data-orion-component" || name === "data-orion-id") {
474
+ return;
475
+ }
476
+ const value = decodeHtmlAttribute2(attributes[name]);
477
+ if (name === "data-orion-props") {
478
+ try {
479
+ const parsed = JSON.parse(value);
480
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
481
+ Object.assign(props, parsed);
482
+ }
483
+ } catch {
484
+ props.propsJson = value;
485
+ }
486
+ return;
487
+ }
488
+ props[attrToPropName(name)] = value;
489
+ });
490
+ return props;
491
+ };
492
+ var previewForDefinition = (definition, props) => definition.editorPreview?.(props) || `<div class="orion-builder-v2-dynamic-placeholder"><strong>${definition.label}</strong></div>`;
455
493
  var registerProjectDynamicComponents = (editor, adapter) => {
456
494
  const components = adapter?.components || {};
457
495
  Object.keys(components).forEach((type) => {
@@ -484,6 +522,16 @@ var registerProjectDynamicComponents = (editor, adapter) => {
484
522
  }))
485
523
  ]
486
524
  }
525
+ },
526
+ view: {
527
+ init() {
528
+ this.listenTo(this.model, "change:attributes", this.renderPreview);
529
+ },
530
+ renderPreview() {
531
+ const attributes = this.model.getAttributes?.() || {};
532
+ const props = propsFromAttributes(attributes);
533
+ this.model.components(previewForDefinition(definition, props));
534
+ }
487
535
  }
488
536
  });
489
537
  editor.Blocks.add(`orion-dynamic-${type}`, {
@@ -626,6 +674,7 @@ function GrapesPageEditor({
626
674
  const [saving, setSaving] = useState(null);
627
675
  const [saveMessage, setSaveMessage] = useState("");
628
676
  const [validationIssues, setValidationIssues] = useState([]);
677
+ const pageTree = initialData?.meta?.pageTree || [];
629
678
  const updateHistoryState = (editor) => {
630
679
  const next = {
631
680
  canRedo: editor.UndoManager.hasRedo(),
@@ -940,6 +989,13 @@ function GrapesPageEditor({
940
989
  ] })
941
990
  ] }),
942
991
  /* @__PURE__ */ jsxs("aside", { className: "orion-builder-v2-sidebar", children: [
992
+ /* @__PURE__ */ jsxs("div", { className: "orion-builder-v2-panel", children: [
993
+ /* @__PURE__ */ jsx("h2", { children: "Pages" }),
994
+ /* @__PURE__ */ jsx("div", { className: "orion-builder-v2-page-tree", children: pageTree.length === 0 ? /* @__PURE__ */ jsx("p", { children: "No pages loaded." }) : pageTree.map((page) => /* @__PURE__ */ jsxs("a", { className: "orion-builder-v2-page-link", href: `#page-${page.id}`, children: [
995
+ /* @__PURE__ */ jsx("span", { children: page.title }),
996
+ /* @__PURE__ */ jsx("small", { children: page.path })
997
+ ] }, page.id)) })
998
+ ] }),
943
999
  /* @__PURE__ */ jsxs("div", { className: "orion-builder-v2-panel", children: [
944
1000
  /* @__PURE__ */ jsx("h2", { children: "Blocks" }),
945
1001
  /* @__PURE__ */ jsx("p", { children: "Drag sections into the page. Dynamic blocks render through the project adapter." }),
@@ -200,6 +200,18 @@ var parseAttributes = (value) => {
200
200
  if (name === "data-orion-component" || name === "data-orion-id") {
201
201
  continue;
202
202
  }
203
+ if (name === "data-orion-props") {
204
+ const decoded = decodeHtmlAttribute(rawValue);
205
+ try {
206
+ const parsed = JSON.parse(decoded);
207
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
208
+ Object.assign(props, parsed);
209
+ }
210
+ } catch {
211
+ props.propsJson = decoded;
212
+ }
213
+ continue;
214
+ }
203
215
  const propName = name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
204
216
  props[propName] = decodeHtmlAttribute(rawValue);
205
217
  }
@@ -295,6 +307,7 @@ var allowedIframeHosts = [
295
307
  "calendar.google.com",
296
308
  "calendly.com",
297
309
  "player.vimeo.com",
310
+ "www.google.com",
298
311
  "www.youtube.com",
299
312
  "youtube.com"
300
313
  ];
@@ -151,6 +151,18 @@ var parseAttributes = (value) => {
151
151
  if (name === "data-orion-component" || name === "data-orion-id") {
152
152
  continue;
153
153
  }
154
+ if (name === "data-orion-props") {
155
+ const decoded = decodeHtmlAttribute(rawValue);
156
+ try {
157
+ const parsed = JSON.parse(decoded);
158
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
159
+ Object.assign(props, parsed);
160
+ }
161
+ } catch {
162
+ props.propsJson = decoded;
163
+ }
164
+ continue;
165
+ }
154
166
  const propName = name.replace(/^data-orion-/, "").replace(/^data-/, "").replace(/-([a-z])/g, (_, char) => char.toUpperCase());
155
167
  props[propName] = decodeHtmlAttribute(rawValue);
156
168
  }
@@ -246,6 +258,7 @@ var allowedIframeHosts = [
246
258
  "calendar.google.com",
247
259
  "calendly.com",
248
260
  "player.vimeo.com",
261
+ "www.google.com",
249
262
  "www.youtube.com",
250
263
  "youtube.com"
251
264
  ];
@@ -1,10 +1,18 @@
1
1
  @import 'grapesjs/dist/css/grapes.min.css';
2
2
 
3
3
  .orion-builder-v2-editor {
4
- background: #eef1f4;
5
- color: #172033;
4
+ --builder-v2-accent: #c7643d;
5
+ --builder-v2-border: #ead7ca;
6
+ --builder-v2-ink: #1f2d4d;
7
+ --builder-v2-muted: #6f624f;
8
+ --builder-v2-panel: #fffdf9;
9
+ --builder-v2-paper: #f8f3eb;
10
+ --builder-v2-soft: #fbf8f3;
11
+ background: var(--builder-v2-paper);
12
+ color: var(--builder-v2-ink);
6
13
  display: grid;
7
- grid-template-columns: minmax(260px, 310px) 1fr;
14
+ font-family: var(--font-xo-sans, var(--font-body, ui-sans-serif, system-ui, sans-serif));
15
+ grid-template-columns: minmax(292px, 336px) 1fr;
8
16
  grid-template-rows: auto minmax(0, 1fr);
9
17
  height: 100dvh;
10
18
  min-height: 640px;
@@ -12,28 +20,30 @@
12
20
 
13
21
  .orion-builder-v2-topbar {
14
22
  align-items: center;
15
- background: #101827;
16
- border-bottom: 1px solid rgba(255, 255, 255, 0.12);
17
- color: #ffffff;
23
+ background: #fffdf9;
24
+ border-bottom: 1px solid var(--builder-v2-border);
25
+ color: var(--builder-v2-ink);
18
26
  display: flex;
19
27
  gap: 20px;
20
28
  grid-column: 1 / -1;
21
29
  justify-content: space-between;
22
30
  min-width: 0;
23
- padding: 12px 16px;
31
+ padding: 12px 18px;
24
32
  }
25
33
 
26
34
  .orion-builder-v2-topbar h1 {
27
- font-size: 1.05rem;
35
+ color: var(--builder-v2-ink);
36
+ font-size: 1.02rem;
37
+ font-weight: 900;
28
38
  line-height: 1.2;
29
39
  margin: 2px 0 0;
30
40
  }
31
41
 
32
42
  .orion-builder-v2-eyebrow {
33
- color: #9fb1c8;
43
+ color: #946a4f;
34
44
  font-size: 0.72rem;
35
45
  font-weight: 900;
36
- letter-spacing: 0.08em;
46
+ letter-spacing: 0.06em;
37
47
  margin: 0;
38
48
  text-transform: uppercase;
39
49
  }
@@ -47,22 +57,25 @@
47
57
  }
48
58
 
49
59
  .orion-builder-v2-tool {
50
- background: rgba(255, 255, 255, 0.08);
51
- border: 1px solid rgba(255, 255, 255, 0.16);
52
- border-radius: 7px;
53
- color: #ffffff;
60
+ background: #fffaf4;
61
+ border: 1px solid #e7cbb9;
62
+ border-radius: 12px;
63
+ box-shadow: 0 1px 0 rgba(31, 45, 77, 0.03);
64
+ color: var(--builder-v2-ink);
54
65
  cursor: pointer;
55
66
  font: inherit;
56
67
  font-size: 0.82rem;
57
68
  font-weight: 800;
58
- padding: 8px 10px;
69
+ min-height: 38px;
70
+ padding: 8px 12px;
59
71
  text-transform: capitalize;
60
72
  }
61
73
 
62
74
  .orion-builder-v2-tool[aria-pressed='true'],
63
75
  .orion-builder-v2-tool:hover {
64
- background: #ffffff;
65
- color: #101827;
76
+ background: var(--builder-v2-ink);
77
+ border-color: var(--builder-v2-ink);
78
+ color: #ffffff;
66
79
  }
67
80
 
68
81
  .orion-builder-v2-tool:disabled {
@@ -71,44 +84,84 @@
71
84
  }
72
85
 
73
86
  .orion-builder-v2-tool.is-primary {
74
- background: #e8eef7;
75
- color: #101827;
87
+ background: #f1e6d9;
88
+ color: var(--builder-v2-ink);
76
89
  }
77
90
 
78
91
  .orion-builder-v2-tool.is-publish {
79
- background: #c35f36;
80
- border-color: #c35f36;
92
+ background: var(--builder-v2-accent);
93
+ border-color: var(--builder-v2-accent);
81
94
  color: #ffffff;
82
95
  }
83
96
 
84
97
  .orion-builder-v2-sidebar {
85
- background: #ffffff;
86
- border-right: 1px solid rgba(23, 32, 51, 0.12);
98
+ background: #fbf7f1;
99
+ border-right: 1px solid var(--builder-v2-border);
87
100
  display: grid;
88
- gap: 12px;
101
+ gap: 14px;
102
+ grid-auto-rows: max-content;
89
103
  overflow: auto;
90
- padding: 12px;
104
+ padding: 14px;
91
105
  }
92
106
 
93
107
  .orion-builder-v2-panel {
108
+ background: var(--builder-v2-panel);
109
+ border: 1px solid var(--builder-v2-border);
110
+ border-radius: 14px;
111
+ box-shadow: 0 16px 36px rgba(80, 52, 30, 0.05);
94
112
  display: grid;
95
113
  gap: 10px;
114
+ overflow: hidden;
115
+ padding: 12px;
96
116
  }
97
117
 
98
118
  .orion-builder-v2-panel p {
99
- color: #526074;
119
+ color: var(--builder-v2-muted);
100
120
  font-size: 0.82rem;
101
121
  line-height: 1.4;
102
122
  margin: 0;
103
123
  }
104
124
 
105
125
  .orion-builder-v2-panel h2 {
126
+ color: var(--builder-v2-ink);
106
127
  font-size: 0.8rem;
107
128
  letter-spacing: 0;
108
129
  margin: 0;
109
130
  text-transform: uppercase;
110
131
  }
111
132
 
133
+ .orion-builder-v2-page-tree {
134
+ display: grid;
135
+ gap: 6px;
136
+ }
137
+
138
+ .orion-builder-v2-page-link {
139
+ background: #fff8ef;
140
+ border: 1px solid transparent;
141
+ border-radius: 10px;
142
+ color: var(--builder-v2-ink);
143
+ display: grid;
144
+ gap: 2px;
145
+ padding: 9px 10px;
146
+ text-decoration: none;
147
+ }
148
+
149
+ .orion-builder-v2-page-link:hover {
150
+ background: #ffffff;
151
+ border-color: #e7cbb9;
152
+ }
153
+
154
+ .orion-builder-v2-page-link span {
155
+ font-size: 0.86rem;
156
+ font-weight: 900;
157
+ }
158
+
159
+ .orion-builder-v2-page-link small {
160
+ color: var(--builder-v2-muted);
161
+ font-size: 0.72rem;
162
+ font-weight: 700;
163
+ }
164
+
112
165
  .orion-builder-v2-main {
113
166
  min-width: 0;
114
167
  position: relative;
@@ -132,7 +185,7 @@
132
185
 
133
186
  .orion-builder-v2-status {
134
187
  background: #ffffff;
135
- border: 1px solid rgba(23, 32, 51, 0.12);
188
+ border: 1px solid var(--builder-v2-border);
136
189
  }
137
190
 
138
191
  .orion-builder-v2-error {
@@ -143,8 +196,8 @@
143
196
 
144
197
  .orion-builder-v2-save-status {
145
198
  background: #ffffff;
146
- border: 1px solid rgba(23, 32, 51, 0.12);
147
- box-shadow: 0 14px 40px rgba(23, 32, 51, 0.12);
199
+ border: 1px solid var(--builder-v2-border);
200
+ box-shadow: 0 14px 40px rgba(80, 52, 30, 0.12);
148
201
  display: grid;
149
202
  gap: 2px;
150
203
  left: auto;
@@ -152,7 +205,7 @@
152
205
  }
153
206
 
154
207
  .orion-builder-v2-save-status span {
155
- color: #526074;
208
+ color: var(--builder-v2-muted);
156
209
  font-size: 0.72rem;
157
210
  font-weight: 700;
158
211
  }
@@ -194,6 +247,89 @@
194
247
  width: 100%;
195
248
  }
196
249
 
250
+ .orion-builder-v2-editor .gjs-one-bg {
251
+ background-color: #fffdf9;
252
+ }
253
+
254
+ .orion-builder-v2-editor .gjs-two-color {
255
+ color: var(--builder-v2-ink);
256
+ }
257
+
258
+ .orion-builder-v2-editor .gjs-three-bg {
259
+ background-color: #f1e6d9;
260
+ color: var(--builder-v2-ink);
261
+ }
262
+
263
+ .orion-builder-v2-editor .gjs-four-color,
264
+ .orion-builder-v2-editor .gjs-four-color-h:hover {
265
+ color: var(--builder-v2-accent);
266
+ }
267
+
268
+ .orion-builder-v2-editor .gjs-cv-canvas {
269
+ background: #ede4d8;
270
+ top: 0;
271
+ }
272
+
273
+ .orion-builder-v2-editor .gjs-frame-wrapper {
274
+ box-shadow: 0 18px 50px rgba(49, 37, 25, 0.16);
275
+ }
276
+
277
+ .orion-builder-v2-editor .gjs-block-category,
278
+ .orion-builder-v2-editor .gjs-layer-title,
279
+ .orion-builder-v2-editor .gjs-sm-sector-title {
280
+ background: #fff7ef;
281
+ border-color: var(--builder-v2-border);
282
+ color: var(--builder-v2-ink);
283
+ font-weight: 900;
284
+ }
285
+
286
+ .orion-builder-v2-editor .gjs-blocks-c {
287
+ display: grid;
288
+ gap: 8px;
289
+ grid-template-columns: repeat(2, minmax(0, 1fr));
290
+ padding: 8px 0 0;
291
+ }
292
+
293
+ .orion-builder-v2-editor .gjs-block {
294
+ background: #fffdf9;
295
+ border: 1px solid #e7cbb9;
296
+ border-radius: 12px;
297
+ box-shadow: none;
298
+ color: var(--builder-v2-ink);
299
+ margin: 0;
300
+ min-height: 74px;
301
+ padding: 10px 8px;
302
+ width: auto;
303
+ }
304
+
305
+ .orion-builder-v2-editor .gjs-block:hover {
306
+ border-color: var(--builder-v2-accent);
307
+ box-shadow: 0 8px 18px rgba(199, 100, 61, 0.12);
308
+ }
309
+
310
+ .orion-builder-v2-editor .gjs-block-label {
311
+ font-size: 0.72rem;
312
+ line-height: 1.25;
313
+ }
314
+
315
+ .orion-builder-v2-editor .gjs-field,
316
+ .orion-builder-v2-editor .gjs-field input,
317
+ .orion-builder-v2-editor .gjs-field select,
318
+ .orion-builder-v2-editor .gjs-field textarea,
319
+ .orion-builder-v2-editor .gjs-sm-field,
320
+ .orion-builder-v2-editor .gjs-trt-trait__wrp {
321
+ background: #fffaf4;
322
+ border-color: #e7cbb9;
323
+ color: var(--builder-v2-ink);
324
+ }
325
+
326
+ .orion-builder-v2-editor .gjs-label,
327
+ .orion-builder-v2-editor .gjs-sm-label,
328
+ .orion-builder-v2-editor .gjs-trt-trait__label {
329
+ color: var(--builder-v2-muted);
330
+ font-weight: 800;
331
+ }
332
+
197
333
  .orion-builder-v2-html-chunk {
198
334
  display: contents;
199
335
  }
@@ -337,6 +473,258 @@
337
473
  padding: 20px;
338
474
  }
339
475
 
476
+ .xo-builder-import {
477
+ background: #fbf7f1;
478
+ color: #302823;
479
+ font-family: var(--font-xo-sans, var(--font-body, ui-sans-serif, system-ui, sans-serif));
480
+ padding: 72px 28px;
481
+ }
482
+
483
+ .xo-builder-import:nth-child(even) {
484
+ background: #fffdf9;
485
+ }
486
+
487
+ .xo-builder-import__inner {
488
+ margin: 0 auto;
489
+ max-width: 1120px;
490
+ }
491
+
492
+ .xo-builder-import__eyebrow {
493
+ color: #9f5f45;
494
+ font-size: 0.75rem;
495
+ font-weight: 900;
496
+ letter-spacing: 0.08em;
497
+ margin: 0 0 10px;
498
+ text-transform: uppercase;
499
+ }
500
+
501
+ .xo-builder-import h1,
502
+ .xo-builder-import h2,
503
+ .xo-builder-import h3 {
504
+ color: #243654;
505
+ letter-spacing: 0;
506
+ line-height: 1.06;
507
+ margin: 0;
508
+ }
509
+
510
+ .xo-builder-import h1 {
511
+ font-size: 5.4rem;
512
+ }
513
+
514
+ .xo-builder-import h2 {
515
+ font-size: 3.2rem;
516
+ }
517
+
518
+ .xo-builder-import h3 {
519
+ font-size: 1.14rem;
520
+ }
521
+
522
+ .xo-builder-import p {
523
+ color: #5f5045;
524
+ font-size: 1rem;
525
+ line-height: 1.7;
526
+ margin: 10px 0 0;
527
+ }
528
+
529
+ .xo-builder-import a {
530
+ color: inherit;
531
+ }
532
+
533
+ .xo-builder-import-hero {
534
+ align-items: end;
535
+ background-color: #243654;
536
+ background-position: center;
537
+ background-size: cover;
538
+ color: #ffffff;
539
+ display: grid;
540
+ min-height: 580px;
541
+ overflow: hidden;
542
+ padding-bottom: 0;
543
+ position: relative;
544
+ }
545
+
546
+ .xo-builder-import-hero::before {
547
+ background: linear-gradient(90deg, rgba(36, 54, 84, 0.78), rgba(36, 54, 84, 0.22));
548
+ content: '';
549
+ inset: 0;
550
+ position: absolute;
551
+ }
552
+
553
+ .xo-builder-import-hero .xo-builder-import__inner {
554
+ padding-bottom: 76px;
555
+ position: relative;
556
+ width: 100%;
557
+ z-index: 1;
558
+ }
559
+
560
+ .xo-builder-import-hero h1,
561
+ .xo-builder-import-hero h2,
562
+ .xo-builder-import-hero p,
563
+ .xo-builder-import-hero .xo-builder-import__eyebrow {
564
+ color: #ffffff;
565
+ }
566
+
567
+ .xo-builder-import-hero h1:empty::before {
568
+ content: 'XO Gift Co.';
569
+ }
570
+
571
+ .xo-builder-import-hero p:empty::before {
572
+ content: 'Warm gifts, local heart, and thoughtful help in Wheat Ridge.';
573
+ }
574
+
575
+ .xo-builder-import__actions {
576
+ display: flex;
577
+ flex-wrap: wrap;
578
+ gap: 10px;
579
+ margin-top: 22px;
580
+ }
581
+
582
+ .xo-builder-import__button {
583
+ align-items: center;
584
+ background: #243654;
585
+ border: 1px solid #243654;
586
+ border-radius: 999px;
587
+ color: #ffffff;
588
+ display: inline-flex;
589
+ font-weight: 900;
590
+ min-height: 42px;
591
+ padding: 10px 18px;
592
+ text-decoration: none;
593
+ }
594
+
595
+ .xo-builder-import-hero .xo-builder-import__button,
596
+ .xo-builder-import-cta .xo-builder-import__button {
597
+ background: #fff7ef;
598
+ border-color: #fff7ef;
599
+ color: #243654;
600
+ }
601
+
602
+ .xo-builder-import__marquee {
603
+ background: rgba(255, 247, 239, 0.92);
604
+ color: #243654;
605
+ display: flex;
606
+ flex-wrap: wrap;
607
+ gap: 8px;
608
+ margin-top: 34px;
609
+ padding: 14px;
610
+ }
611
+
612
+ .xo-builder-import__marquee span {
613
+ background: #ffffff;
614
+ border: 1px solid #ead7ca;
615
+ border-radius: 999px;
616
+ font-size: 0.78rem;
617
+ font-weight: 900;
618
+ padding: 8px 10px;
619
+ }
620
+
621
+ .xo-builder-import-grid {
622
+ display: grid;
623
+ gap: 22px;
624
+ }
625
+
626
+ .xo-builder-import-grid__items {
627
+ display: grid;
628
+ gap: 18px;
629
+ grid-template-columns: repeat(3, minmax(0, 1fr));
630
+ margin-top: 28px;
631
+ }
632
+
633
+ .xo-builder-import-card {
634
+ background: #ffffff;
635
+ border: 1px solid #ead7ca;
636
+ border-radius: 16px;
637
+ box-shadow: 0 18px 42px rgba(80, 52, 30, 0.08);
638
+ overflow: hidden;
639
+ }
640
+
641
+ .xo-builder-import-card img {
642
+ aspect-ratio: 4 / 3;
643
+ display: block;
644
+ object-fit: cover;
645
+ width: 100%;
646
+ }
647
+
648
+ .xo-builder-import-card__body {
649
+ padding: 18px;
650
+ }
651
+
652
+ .xo-builder-import-card__meta {
653
+ color: #9f5f45;
654
+ font-size: 0.76rem;
655
+ font-weight: 900;
656
+ text-transform: uppercase;
657
+ }
658
+
659
+ .xo-builder-import-card ul {
660
+ color: #5f5045;
661
+ line-height: 1.55;
662
+ margin: 12px 0 0;
663
+ padding-left: 18px;
664
+ }
665
+
666
+ .xo-builder-import-cta {
667
+ background: #243654;
668
+ color: #ffffff;
669
+ text-align: center;
670
+ }
671
+
672
+ .xo-builder-import-cta h2,
673
+ .xo-builder-import-cta p,
674
+ .xo-builder-import-cta .xo-builder-import__eyebrow {
675
+ color: #ffffff;
676
+ }
677
+
678
+ .xo-builder-import-quote {
679
+ text-align: center;
680
+ }
681
+
682
+ .xo-builder-import-quote blockquote {
683
+ color: #243654;
684
+ font-size: 3rem;
685
+ font-weight: 900;
686
+ line-height: 1.15;
687
+ margin: 0 auto;
688
+ max-width: 900px;
689
+ }
690
+
691
+ .xo-builder-import-faq__items {
692
+ display: grid;
693
+ gap: 10px;
694
+ margin-top: 28px;
695
+ }
696
+
697
+ .xo-builder-import-faq details {
698
+ background: #ffffff;
699
+ border: 1px solid #ead7ca;
700
+ border-radius: 12px;
701
+ padding: 16px 18px;
702
+ }
703
+
704
+ .xo-builder-import-faq summary {
705
+ color: #243654;
706
+ cursor: pointer;
707
+ font-weight: 900;
708
+ }
709
+
710
+ .xo-builder-import-form {
711
+ background: #fffdf9;
712
+ }
713
+
714
+ .xo-builder-import-form .orion-builder-v2-dynamic-placeholder {
715
+ background-color: #fff8ef;
716
+ margin-top: 28px;
717
+ }
718
+
719
+ .xo-builder-import-map {
720
+ aspect-ratio: 16 / 9;
721
+ border: 0;
722
+ border-radius: 16px;
723
+ margin-top: 16px;
724
+ min-height: 320px;
725
+ width: 100%;
726
+ }
727
+
340
728
  @media (max-width: 800px) {
341
729
  .orion-builder-v2-editor {
342
730
  grid-template-columns: 1fr;
@@ -360,6 +748,30 @@
360
748
  grid-template-columns: repeat(2, minmax(0, 1fr));
361
749
  }
362
750
 
751
+ .xo-builder-import {
752
+ padding: 48px 18px;
753
+ }
754
+
755
+ .xo-builder-import h1 {
756
+ font-size: 2.7rem;
757
+ }
758
+
759
+ .xo-builder-import h2 {
760
+ font-size: 2rem;
761
+ }
762
+
763
+ .xo-builder-import-quote blockquote {
764
+ font-size: 1.8rem;
765
+ }
766
+
767
+ .xo-builder-import-hero {
768
+ min-height: 520px;
769
+ }
770
+
771
+ .xo-builder-import-grid__items {
772
+ grid-template-columns: 1fr;
773
+ }
774
+
363
775
  .orion-builder-v2-nav,
364
776
  .orion-builder-v2-footer {
365
777
  align-items: flex-start;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.6.0-beta.46",
3
+ "version": "0.6.0-beta.48",
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",