@orion-studios/payload-studio 0.5.0-beta.40 → 0.5.0-beta.41

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.
@@ -491,11 +491,43 @@ var FeatureGridBlock = {
491
491
  name: "description",
492
492
  type: "textarea"
493
493
  },
494
+ {
495
+ name: "iconType",
496
+ type: "select",
497
+ defaultValue: "badge",
498
+ options: [
499
+ { label: "Badge Text", value: "badge" },
500
+ { label: "Icon", value: "lucide" }
501
+ ],
502
+ admin: {
503
+ description: "Choose whether this item uses a short badge label or an icon."
504
+ }
505
+ },
494
506
  {
495
507
  name: "icon",
496
508
  type: "text",
497
509
  admin: {
498
- description: 'Optional short icon label (e.g. "01", "Leaf", "Star").'
510
+ description: 'Optional short icon label (e.g. "01", "Leaf", "Star").',
511
+ condition: (_, siblingData) => siblingData?.iconType !== "lucide"
512
+ }
513
+ },
514
+ {
515
+ name: "iconLucide",
516
+ type: "select",
517
+ options: [
518
+ { label: "Shield Check", value: "ShieldCheck" },
519
+ { label: "Clock", value: "Clock" },
520
+ { label: "Leaf", value: "Leaf" },
521
+ { label: "Dollar Sign", value: "DollarSign" },
522
+ { label: "Hard Hat", value: "HardHat" },
523
+ { label: "Sparkles", value: "Sparkles" },
524
+ { label: "Tree Pine", value: "TreePine" },
525
+ { label: "Badge Check", value: "BadgeCheck" },
526
+ { label: "Calendar Clock", value: "CalendarClock" }
527
+ ],
528
+ admin: {
529
+ description: "Select an icon for this item.",
530
+ condition: (_, siblingData) => siblingData?.iconType === "lucide"
499
531
  }
500
532
  },
501
533
  {
@@ -17,7 +17,7 @@ import {
17
17
  defaultPageLayoutBlocks,
18
18
  sectionPresets,
19
19
  templateStarterPresets
20
- } from "../chunk-I4NH636V.mjs";
20
+ } from "../chunk-XQYJXB46.mjs";
21
21
  import "../chunk-SIL2J5MF.mjs";
22
22
  import "../chunk-6BWS3CLP.mjs";
23
23
  export {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-N67KVM2S.mjs";
4
4
  import {
5
5
  studioDocumentToLayout
6
- } from "./chunk-34J4T7X3.mjs";
6
+ } from "./chunk-LB72FZZ3.mjs";
7
7
  import {
8
8
  __export
9
9
  } from "./chunk-6BWS3CLP.mjs";
@@ -58,9 +58,9 @@ var defaultNodeData = {
58
58
  featureGrid: {
59
59
  ...withSectionStyleDefaults({}),
60
60
  items: [
61
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
62
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
63
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
61
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
62
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
63
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
64
64
  ],
65
65
  title: "Section Title",
66
66
  variant: "cards"
@@ -327,11 +327,43 @@ var FeatureGridBlock = {
327
327
  name: "description",
328
328
  type: "textarea"
329
329
  },
330
+ {
331
+ name: "iconType",
332
+ type: "select",
333
+ defaultValue: "badge",
334
+ options: [
335
+ { label: "Badge Text", value: "badge" },
336
+ { label: "Icon", value: "lucide" }
337
+ ],
338
+ admin: {
339
+ description: "Choose whether this item uses a short badge label or an icon."
340
+ }
341
+ },
330
342
  {
331
343
  name: "icon",
332
344
  type: "text",
333
345
  admin: {
334
- description: 'Optional short icon label (e.g. "01", "Leaf", "Star").'
346
+ description: 'Optional short icon label (e.g. "01", "Leaf", "Star").',
347
+ condition: (_, siblingData) => siblingData?.iconType !== "lucide"
348
+ }
349
+ },
350
+ {
351
+ name: "iconLucide",
352
+ type: "select",
353
+ options: [
354
+ { label: "Shield Check", value: "ShieldCheck" },
355
+ { label: "Clock", value: "Clock" },
356
+ { label: "Leaf", value: "Leaf" },
357
+ { label: "Dollar Sign", value: "DollarSign" },
358
+ { label: "Hard Hat", value: "HardHat" },
359
+ { label: "Sparkles", value: "Sparkles" },
360
+ { label: "Tree Pine", value: "TreePine" },
361
+ { label: "Badge Check", value: "BadgeCheck" },
362
+ { label: "Calendar Clock", value: "CalendarClock" }
363
+ ],
364
+ admin: {
365
+ description: "Select an icon for this item.",
366
+ condition: (_, siblingData) => siblingData?.iconType === "lucide"
335
367
  }
336
368
  },
337
369
  {
package/dist/index.js CHANGED
@@ -1032,11 +1032,43 @@ var FeatureGridBlock = {
1032
1032
  name: "description",
1033
1033
  type: "textarea"
1034
1034
  },
1035
+ {
1036
+ name: "iconType",
1037
+ type: "select",
1038
+ defaultValue: "badge",
1039
+ options: [
1040
+ { label: "Badge Text", value: "badge" },
1041
+ { label: "Icon", value: "lucide" }
1042
+ ],
1043
+ admin: {
1044
+ description: "Choose whether this item uses a short badge label or an icon."
1045
+ }
1046
+ },
1035
1047
  {
1036
1048
  name: "icon",
1037
1049
  type: "text",
1038
1050
  admin: {
1039
- description: 'Optional short icon label (e.g. "01", "Leaf", "Star").'
1051
+ description: 'Optional short icon label (e.g. "01", "Leaf", "Star").',
1052
+ condition: (_, siblingData) => siblingData?.iconType !== "lucide"
1053
+ }
1054
+ },
1055
+ {
1056
+ name: "iconLucide",
1057
+ type: "select",
1058
+ options: [
1059
+ { label: "Shield Check", value: "ShieldCheck" },
1060
+ { label: "Clock", value: "Clock" },
1061
+ { label: "Leaf", value: "Leaf" },
1062
+ { label: "Dollar Sign", value: "DollarSign" },
1063
+ { label: "Hard Hat", value: "HardHat" },
1064
+ { label: "Sparkles", value: "Sparkles" },
1065
+ { label: "Tree Pine", value: "TreePine" },
1066
+ { label: "Badge Check", value: "BadgeCheck" },
1067
+ { label: "Calendar Clock", value: "CalendarClock" }
1068
+ ],
1069
+ admin: {
1070
+ description: "Select an icon for this item.",
1071
+ condition: (_, siblingData) => siblingData?.iconType === "lucide"
1040
1072
  }
1041
1073
  },
1042
1074
  {
@@ -2324,9 +2356,9 @@ var defaultNodeData = {
2324
2356
  featureGrid: {
2325
2357
  ...withSectionStyleDefaults({}),
2326
2358
  items: [
2327
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
2328
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
2329
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
2359
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
2360
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
2361
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
2330
2362
  ],
2331
2363
  title: "Section Title",
2332
2364
  variant: "cards"
package/dist/index.mjs CHANGED
@@ -1,21 +1,21 @@
1
- import {
2
- admin_exports
3
- } from "./chunk-7IGLXLUB.mjs";
4
1
  import {
5
2
  admin_app_exports
6
3
  } from "./chunk-XVH5SCBD.mjs";
4
+ import {
5
+ admin_exports
6
+ } from "./chunk-7IGLXLUB.mjs";
7
7
  import {
8
8
  blocks_exports
9
- } from "./chunk-I4NH636V.mjs";
9
+ } from "./chunk-XQYJXB46.mjs";
10
10
  import {
11
11
  nextjs_exports
12
- } from "./chunk-RXXPFQWL.mjs";
12
+ } from "./chunk-GNYOAC5N.mjs";
13
13
  import {
14
14
  studio_exports
15
15
  } from "./chunk-N67KVM2S.mjs";
16
16
  import {
17
17
  studio_pages_exports
18
- } from "./chunk-34J4T7X3.mjs";
18
+ } from "./chunk-LB72FZZ3.mjs";
19
19
  import "./chunk-SIL2J5MF.mjs";
20
20
  import "./chunk-6BWS3CLP.mjs";
21
21
  export {
@@ -147,9 +147,9 @@ var defaultNodeData = {
147
147
  featureGrid: {
148
148
  ...withSectionStyleDefaults({}),
149
149
  items: [
150
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
151
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
152
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
150
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
151
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
152
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
153
153
  ],
154
154
  title: "Section Title",
155
155
  variant: "cards"
@@ -4,9 +4,9 @@ import {
4
4
  createPayloadClient,
5
5
  createSiteQueries,
6
6
  resolveMedia
7
- } from "../chunk-RXXPFQWL.mjs";
7
+ } from "../chunk-GNYOAC5N.mjs";
8
8
  import "../chunk-N67KVM2S.mjs";
9
- import "../chunk-34J4T7X3.mjs";
9
+ import "../chunk-LB72FZZ3.mjs";
10
10
  import "../chunk-SIL2J5MF.mjs";
11
11
  import "../chunk-6BWS3CLP.mjs";
12
12
  export {
@@ -96,9 +96,9 @@ var defaultNodeData = {
96
96
  featureGrid: {
97
97
  ...withSectionStyleDefaults({}),
98
98
  items: [
99
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
100
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
101
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
99
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
100
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
101
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
102
102
  ],
103
103
  title: "Section Title",
104
104
  variant: "cards"
@@ -2357,6 +2357,9 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2357
2357
  const itemRecord = item;
2358
2358
  const itemMedia = resolveMedia(itemRecord?.media);
2359
2359
  const itemImageHeight = parsePixelNumber(itemRecord?.imageHeight, 120);
2360
+ const iconType = normalizeText(itemRecord?.iconType, "badge");
2361
+ const iconBadge = normalizeText(itemRecord?.icon);
2362
+ const iconLucide = normalizeText(itemRecord?.iconLucide);
2360
2363
  const itemPositionX = parseOptionalPercentNumber(itemRecord?.imagePositionX);
2361
2364
  const itemPositionY = parseOptionalPercentNumber(itemRecord?.imagePositionY);
2362
2365
  const itemImageStyle = getImagePresentationStyle({
@@ -2388,14 +2391,13 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2388
2391
  style: { ...itemImageStyle, height: itemImageHeight }
2389
2392
  }
2390
2393
  )
2391
- ) : null,
2392
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "feature-icon", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2394
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "feature-icon", children: iconType === "lucide" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: iconLucide || "Icon" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2393
2395
  InlineText,
2394
2396
  {
2395
2397
  as: "span",
2396
2398
  onCommit: (value) => updateArrayItemField(index, "items", itemIndex, "icon", value),
2397
2399
  placeholder: "01",
2398
- value: normalizeText(itemRecord?.icon)
2400
+ value: iconBadge
2399
2401
  }
2400
2402
  ) }),
2401
2403
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -2455,6 +2457,9 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2455
2457
  const itemRecord = item;
2456
2458
  const itemMedia = resolveMedia(itemRecord?.media);
2457
2459
  const itemImageHeight = parsePixelNumber(itemRecord?.imageHeight, 120);
2460
+ const iconType = normalizeText(itemRecord?.iconType, "badge");
2461
+ const iconBadge = normalizeText(itemRecord?.icon);
2462
+ const iconLucide = normalizeText(itemRecord?.iconLucide);
2458
2463
  const itemPositionX = parseOptionalPercentNumber(itemRecord?.imagePositionX);
2459
2464
  const itemPositionY = parseOptionalPercentNumber(itemRecord?.imagePositionY);
2460
2465
  const itemImageStyle = getImagePresentationStyle({
@@ -2486,14 +2491,13 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2486
2491
  style: { ...itemImageStyle, height: itemImageHeight }
2487
2492
  }
2488
2493
  )
2489
- ) : null,
2490
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "service-tag", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2494
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "service-tag", children: iconType === "lucide" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: iconLucide || "Icon" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
2491
2495
  InlineText,
2492
2496
  {
2493
2497
  as: "span",
2494
2498
  onCommit: (value) => updateArrayItemField(index, "items", itemIndex, "icon", value),
2495
2499
  placeholder: "01",
2496
- value: normalizeText(itemRecord?.icon)
2500
+ value: iconBadge
2497
2501
  }
2498
2502
  ) }),
2499
2503
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -4314,6 +4318,7 @@ function BuilderPageEditor({ initialDoc, pageID }) {
4314
4318
  {
4315
4319
  onClick: () => appendItemToSelected("items", {
4316
4320
  description: "Describe this feature.",
4321
+ iconType: "badge",
4317
4322
  icon: "04",
4318
4323
  imageCornerStyle: "rounded",
4319
4324
  imageFit: "cover",
@@ -4377,11 +4382,54 @@ function BuilderPageEditor({ initialDoc, pageID }) {
4377
4382
  value: normalizeText(item.title)
4378
4383
  }
4379
4384
  ),
4380
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4385
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { style: { ...sidebarLabelStyle, margin: 0 }, children: [
4386
+ "Icon Type",
4387
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4388
+ "select",
4389
+ {
4390
+ onChange: (event) => updateArrayItemField(selectedIndex ?? 0, "items", itemIndex, "iconType", event.target.value),
4391
+ style: sidebarInputStyle,
4392
+ value: normalizeText(item.iconType, "badge"),
4393
+ children: [
4394
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "badge", children: "Badge Text" }),
4395
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "lucide", children: "Icon" })
4396
+ ]
4397
+ }
4398
+ )
4399
+ ] }),
4400
+ normalizeText(item.iconType, "badge") === "lucide" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { style: { ...sidebarLabelStyle, margin: 0 }, children: [
4401
+ "Icon",
4402
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4403
+ "select",
4404
+ {
4405
+ onChange: (event) => updateArrayItemField(
4406
+ selectedIndex ?? 0,
4407
+ "items",
4408
+ itemIndex,
4409
+ "iconLucide",
4410
+ event.target.value
4411
+ ),
4412
+ style: sidebarInputStyle,
4413
+ value: normalizeText(item.iconLucide),
4414
+ children: [
4415
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "", children: "Select an icon" }),
4416
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "ShieldCheck", children: "Shield Check" }),
4417
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "Clock", children: "Clock" }),
4418
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "Leaf", children: "Leaf" }),
4419
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "DollarSign", children: "Dollar Sign" }),
4420
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "HardHat", children: "Hard Hat" }),
4421
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "Sparkles", children: "Sparkles" }),
4422
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "TreePine", children: "Tree Pine" }),
4423
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "BadgeCheck", children: "Badge Check" }),
4424
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "CalendarClock", children: "Calendar Clock" })
4425
+ ]
4426
+ }
4427
+ )
4428
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4381
4429
  "input",
4382
4430
  {
4383
4431
  onChange: (event) => updateArrayItemField(selectedIndex ?? 0, "items", itemIndex, "icon", event.target.value),
4384
- placeholder: "Icon",
4432
+ placeholder: "Badge text (e.g. 01)",
4385
4433
  style: sidebarInputStyle,
4386
4434
  type: "text",
4387
4435
  value: normalizeText(item.icon)
@@ -68,9 +68,9 @@ var defaultNodeData = {
68
68
  featureGrid: {
69
69
  ...withSectionStyleDefaults({}),
70
70
  items: [
71
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
72
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
73
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
71
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
72
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
73
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
74
74
  ],
75
75
  title: "Section Title",
76
76
  variant: "cards"
@@ -2329,6 +2329,9 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2329
2329
  const itemRecord = item;
2330
2330
  const itemMedia = resolveMedia(itemRecord?.media);
2331
2331
  const itemImageHeight = parsePixelNumber(itemRecord?.imageHeight, 120);
2332
+ const iconType = normalizeText(itemRecord?.iconType, "badge");
2333
+ const iconBadge = normalizeText(itemRecord?.icon);
2334
+ const iconLucide = normalizeText(itemRecord?.iconLucide);
2332
2335
  const itemPositionX = parseOptionalPercentNumber(itemRecord?.imagePositionX);
2333
2336
  const itemPositionY = parseOptionalPercentNumber(itemRecord?.imagePositionY);
2334
2337
  const itemImageStyle = getImagePresentationStyle({
@@ -2360,14 +2363,13 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2360
2363
  style: { ...itemImageStyle, height: itemImageHeight }
2361
2364
  }
2362
2365
  )
2363
- ) : null,
2364
- /* @__PURE__ */ jsx("div", { className: "feature-icon", children: /* @__PURE__ */ jsx(
2366
+ ) : /* @__PURE__ */ jsx("div", { className: "feature-icon", children: iconType === "lucide" ? /* @__PURE__ */ jsx("span", { children: iconLucide || "Icon" }) : /* @__PURE__ */ jsx(
2365
2367
  InlineText,
2366
2368
  {
2367
2369
  as: "span",
2368
2370
  onCommit: (value) => updateArrayItemField(index, "items", itemIndex, "icon", value),
2369
2371
  placeholder: "01",
2370
- value: normalizeText(itemRecord?.icon)
2372
+ value: iconBadge
2371
2373
  }
2372
2374
  ) }),
2373
2375
  /* @__PURE__ */ jsx(
@@ -2427,6 +2429,9 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2427
2429
  const itemRecord = item;
2428
2430
  const itemMedia = resolveMedia(itemRecord?.media);
2429
2431
  const itemImageHeight = parsePixelNumber(itemRecord?.imageHeight, 120);
2432
+ const iconType = normalizeText(itemRecord?.iconType, "badge");
2433
+ const iconBadge = normalizeText(itemRecord?.icon);
2434
+ const iconLucide = normalizeText(itemRecord?.iconLucide);
2430
2435
  const itemPositionX = parseOptionalPercentNumber(itemRecord?.imagePositionX);
2431
2436
  const itemPositionY = parseOptionalPercentNumber(itemRecord?.imagePositionY);
2432
2437
  const itemImageStyle = getImagePresentationStyle({
@@ -2458,14 +2463,13 @@ function BuilderPageEditor({ initialDoc, pageID }) {
2458
2463
  style: { ...itemImageStyle, height: itemImageHeight }
2459
2464
  }
2460
2465
  )
2461
- ) : null,
2462
- /* @__PURE__ */ jsx("div", { className: "service-tag", children: /* @__PURE__ */ jsx(
2466
+ ) : /* @__PURE__ */ jsx("div", { className: "service-tag", children: iconType === "lucide" ? /* @__PURE__ */ jsx("span", { children: iconLucide || "Icon" }) : /* @__PURE__ */ jsx(
2463
2467
  InlineText,
2464
2468
  {
2465
2469
  as: "span",
2466
2470
  onCommit: (value) => updateArrayItemField(index, "items", itemIndex, "icon", value),
2467
2471
  placeholder: "01",
2468
- value: normalizeText(itemRecord?.icon)
2472
+ value: iconBadge
2469
2473
  }
2470
2474
  ) }),
2471
2475
  /* @__PURE__ */ jsx(
@@ -4286,6 +4290,7 @@ function BuilderPageEditor({ initialDoc, pageID }) {
4286
4290
  {
4287
4291
  onClick: () => appendItemToSelected("items", {
4288
4292
  description: "Describe this feature.",
4293
+ iconType: "badge",
4289
4294
  icon: "04",
4290
4295
  imageCornerStyle: "rounded",
4291
4296
  imageFit: "cover",
@@ -4349,11 +4354,54 @@ function BuilderPageEditor({ initialDoc, pageID }) {
4349
4354
  value: normalizeText(item.title)
4350
4355
  }
4351
4356
  ),
4352
- /* @__PURE__ */ jsx(
4357
+ /* @__PURE__ */ jsxs("label", { style: { ...sidebarLabelStyle, margin: 0 }, children: [
4358
+ "Icon Type",
4359
+ /* @__PURE__ */ jsxs(
4360
+ "select",
4361
+ {
4362
+ onChange: (event) => updateArrayItemField(selectedIndex ?? 0, "items", itemIndex, "iconType", event.target.value),
4363
+ style: sidebarInputStyle,
4364
+ value: normalizeText(item.iconType, "badge"),
4365
+ children: [
4366
+ /* @__PURE__ */ jsx("option", { value: "badge", children: "Badge Text" }),
4367
+ /* @__PURE__ */ jsx("option", { value: "lucide", children: "Icon" })
4368
+ ]
4369
+ }
4370
+ )
4371
+ ] }),
4372
+ normalizeText(item.iconType, "badge") === "lucide" ? /* @__PURE__ */ jsxs("label", { style: { ...sidebarLabelStyle, margin: 0 }, children: [
4373
+ "Icon",
4374
+ /* @__PURE__ */ jsxs(
4375
+ "select",
4376
+ {
4377
+ onChange: (event) => updateArrayItemField(
4378
+ selectedIndex ?? 0,
4379
+ "items",
4380
+ itemIndex,
4381
+ "iconLucide",
4382
+ event.target.value
4383
+ ),
4384
+ style: sidebarInputStyle,
4385
+ value: normalizeText(item.iconLucide),
4386
+ children: [
4387
+ /* @__PURE__ */ jsx("option", { value: "", children: "Select an icon" }),
4388
+ /* @__PURE__ */ jsx("option", { value: "ShieldCheck", children: "Shield Check" }),
4389
+ /* @__PURE__ */ jsx("option", { value: "Clock", children: "Clock" }),
4390
+ /* @__PURE__ */ jsx("option", { value: "Leaf", children: "Leaf" }),
4391
+ /* @__PURE__ */ jsx("option", { value: "DollarSign", children: "Dollar Sign" }),
4392
+ /* @__PURE__ */ jsx("option", { value: "HardHat", children: "Hard Hat" }),
4393
+ /* @__PURE__ */ jsx("option", { value: "Sparkles", children: "Sparkles" }),
4394
+ /* @__PURE__ */ jsx("option", { value: "TreePine", children: "Tree Pine" }),
4395
+ /* @__PURE__ */ jsx("option", { value: "BadgeCheck", children: "Badge Check" }),
4396
+ /* @__PURE__ */ jsx("option", { value: "CalendarClock", children: "Calendar Clock" })
4397
+ ]
4398
+ }
4399
+ )
4400
+ ] }) : /* @__PURE__ */ jsx(
4353
4401
  "input",
4354
4402
  {
4355
4403
  onChange: (event) => updateArrayItemField(selectedIndex ?? 0, "items", itemIndex, "icon", event.target.value),
4356
- placeholder: "Icon",
4404
+ placeholder: "Badge text (e.g. 01)",
4357
4405
  style: sidebarInputStyle,
4358
4406
  type: "text",
4359
4407
  value: normalizeText(item.icon)
@@ -93,9 +93,9 @@ var defaultNodeData = {
93
93
  featureGrid: {
94
94
  ...withSectionStyleDefaults({}),
95
95
  items: [
96
- { description: "Explain this point.", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
97
- { description: "Explain this point.", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
98
- { description: "Explain this point.", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
96
+ { description: "Explain this point.", iconType: "badge", icon: "01", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature One" },
97
+ { description: "Explain this point.", iconType: "badge", icon: "02", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Two" },
98
+ { description: "Explain this point.", iconType: "badge", icon: "03", imageCornerStyle: "rounded", imageFit: "cover", imagePosition: "center", title: "Feature Three" }
99
99
  ],
100
100
  title: "Section Title",
101
101
  variant: "cards"
@@ -6,7 +6,7 @@ import {
6
6
  pagePaletteGroups,
7
7
  pageStudioModuleManifest,
8
8
  studioDocumentToLayout
9
- } from "../chunk-34J4T7X3.mjs";
9
+ } from "../chunk-LB72FZZ3.mjs";
10
10
  import "../chunk-SIL2J5MF.mjs";
11
11
  import "../chunk-6BWS3CLP.mjs";
12
12
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-studios/payload-studio",
3
- "version": "0.5.0-beta.40",
3
+ "version": "0.5.0-beta.41",
4
4
  "description": "Unified Payload CMS toolkit for Orion Studios",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",