@zekidev/schemas 2.0.0 → 2.1.0

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.
Files changed (3) hide show
  1. package/dist/index.cjs +608 -470
  2. package/dist/index.js +583 -445
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1380,7 +1380,7 @@ var require_react_development = __commonJS({
1380
1380
  var dispatcher = resolveDispatcher();
1381
1381
  return dispatcher.useLayoutEffect(create, deps);
1382
1382
  }
1383
- function useCallback2(callback, deps) {
1383
+ function useCallback3(callback, deps) {
1384
1384
  var dispatcher = resolveDispatcher();
1385
1385
  return dispatcher.useCallback(callback, deps);
1386
1386
  }
@@ -2147,7 +2147,7 @@ var require_react_development = __commonJS({
2147
2147
  exports.memo = memo2;
2148
2148
  exports.startTransition = startTransition;
2149
2149
  exports.unstable_act = act;
2150
- exports.useCallback = useCallback2;
2150
+ exports.useCallback = useCallback3;
2151
2151
  exports.useContext = useContext2;
2152
2152
  exports.useDebugValue = useDebugValue2;
2153
2153
  exports.useDeferredValue = useDeferredValue;
@@ -9513,9 +9513,9 @@ var require_react_dom_development = __commonJS({
9513
9513
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") {
9514
9514
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
9515
9515
  }
9516
- var React6 = require_react();
9516
+ var React7 = require_react();
9517
9517
  var Scheduler = require_scheduler();
9518
- var ReactSharedInternals = React6.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
9518
+ var ReactSharedInternals = React7.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
9519
9519
  var suppressWarning = false;
9520
9520
  function setSuppressWarning(newSuppressWarning) {
9521
9521
  {
@@ -10885,7 +10885,7 @@ var require_react_dom_development = __commonJS({
10885
10885
  if (node.hasOwnProperty(valueField) || typeof descriptor === "undefined" || typeof descriptor.get !== "function" || typeof descriptor.set !== "function") {
10886
10886
  return;
10887
10887
  }
10888
- var get3 = descriptor.get, set3 = descriptor.set;
10888
+ var get3 = descriptor.get, set4 = descriptor.set;
10889
10889
  Object.defineProperty(node, valueField, {
10890
10890
  configurable: true,
10891
10891
  get: function() {
@@ -10896,7 +10896,7 @@ var require_react_dom_development = __commonJS({
10896
10896
  checkFormFieldValueStringCoercion(value);
10897
10897
  }
10898
10898
  currentValue = "" + value;
10899
- set3.call(this, value);
10899
+ set4.call(this, value);
10900
10900
  }
10901
10901
  });
10902
10902
  Object.defineProperty(node, valueField, {
@@ -11122,7 +11122,7 @@ var require_react_dom_development = __commonJS({
11122
11122
  {
11123
11123
  if (props.value == null) {
11124
11124
  if (typeof props.children === "object" && props.children !== null) {
11125
- React6.Children.forEach(props.children, function(child) {
11125
+ React7.Children.forEach(props.children, function(child) {
11126
11126
  if (child == null) {
11127
11127
  return;
11128
11128
  }
@@ -12811,7 +12811,7 @@ var require_react_dom_development = __commonJS({
12811
12811
  function has(key) {
12812
12812
  return key._reactInternals !== void 0;
12813
12813
  }
12814
- function set2(key, value) {
12814
+ function set3(key, value) {
12815
12815
  key._reactInternals = value;
12816
12816
  }
12817
12817
  var NoFlags = (
@@ -13944,14 +13944,14 @@ var require_react_dom_development = __commonJS({
13944
13944
  function includesSomeLane(a, b) {
13945
13945
  return (a & b) !== NoLanes;
13946
13946
  }
13947
- function isSubsetOfLanes(set3, subset) {
13948
- return (set3 & subset) === subset;
13947
+ function isSubsetOfLanes(set4, subset) {
13948
+ return (set4 & subset) === subset;
13949
13949
  }
13950
13950
  function mergeLanes(a, b) {
13951
13951
  return a | b;
13952
13952
  }
13953
- function removeLanes(set3, subset) {
13954
- return set3 & ~subset;
13953
+ function removeLanes(set4, subset) {
13954
+ return set4 & ~subset;
13955
13955
  }
13956
13956
  function intersectLanes(a, b) {
13957
13957
  return a & b;
@@ -18753,9 +18753,9 @@ var require_react_dom_development = __commonJS({
18753
18753
  }
18754
18754
  return maybeStrictRoot;
18755
18755
  };
18756
- var setToSortedString = function(set3) {
18756
+ var setToSortedString = function(set4) {
18757
18757
  var array = [];
18758
- set3.forEach(function(value) {
18758
+ set4.forEach(function(value) {
18759
18759
  array.push(value);
18760
18760
  });
18761
18761
  return array.sort().join(", ");
@@ -22718,7 +22718,7 @@ var require_react_dom_development = __commonJS({
22718
22718
  function adoptClassInstance(workInProgress2, instance) {
22719
22719
  instance.updater = classComponentUpdater;
22720
22720
  workInProgress2.stateNode = instance;
22721
- set2(instance, workInProgress2);
22721
+ set3(instance, workInProgress2);
22722
22722
  {
22723
22723
  instance._reactInternalInstance = fakeInternalInstance;
22724
22724
  }
@@ -30740,7 +30740,7 @@ var ctaButton = defineType({
30740
30740
  });
30741
30741
 
30742
30742
  // ../../apps/studio/schemas/sections/hero.ts
30743
- import { defineField as defineField2, defineType as defineType2 } from "sanity";
30743
+ import { defineField as defineField3, defineType as defineType2 } from "sanity";
30744
30744
 
30745
30745
  // ../../apps/studio/components/tiptap-editor.tsx
30746
30746
  var import_react2 = __toESM(require_react());
@@ -31257,21 +31257,21 @@ var Mark = class _Mark {
31257
31257
  [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,
31258
31258
  those are replaced by this one.
31259
31259
  */
31260
- addToSet(set2) {
31260
+ addToSet(set3) {
31261
31261
  let copy2, placed = false;
31262
- for (let i = 0; i < set2.length; i++) {
31263
- let other = set2[i];
31262
+ for (let i = 0; i < set3.length; i++) {
31263
+ let other = set3[i];
31264
31264
  if (this.eq(other))
31265
- return set2;
31265
+ return set3;
31266
31266
  if (this.type.excludes(other.type)) {
31267
31267
  if (!copy2)
31268
- copy2 = set2.slice(0, i);
31268
+ copy2 = set3.slice(0, i);
31269
31269
  } else if (other.type.excludes(this.type)) {
31270
- return set2;
31270
+ return set3;
31271
31271
  } else {
31272
31272
  if (!placed && other.type.rank > this.type.rank) {
31273
31273
  if (!copy2)
31274
- copy2 = set2.slice(0, i);
31274
+ copy2 = set3.slice(0, i);
31275
31275
  copy2.push(this);
31276
31276
  placed = true;
31277
31277
  }
@@ -31280,7 +31280,7 @@ var Mark = class _Mark {
31280
31280
  }
31281
31281
  }
31282
31282
  if (!copy2)
31283
- copy2 = set2.slice();
31283
+ copy2 = set3.slice();
31284
31284
  if (!placed)
31285
31285
  copy2.push(this);
31286
31286
  return copy2;
@@ -31289,18 +31289,18 @@ var Mark = class _Mark {
31289
31289
  Remove this mark from the given set, returning a new set. If this
31290
31290
  mark is not in the set, the set itself is returned.
31291
31291
  */
31292
- removeFromSet(set2) {
31293
- for (let i = 0; i < set2.length; i++)
31294
- if (this.eq(set2[i]))
31295
- return set2.slice(0, i).concat(set2.slice(i + 1));
31296
- return set2;
31292
+ removeFromSet(set3) {
31293
+ for (let i = 0; i < set3.length; i++)
31294
+ if (this.eq(set3[i]))
31295
+ return set3.slice(0, i).concat(set3.slice(i + 1));
31296
+ return set3;
31297
31297
  }
31298
31298
  /**
31299
31299
  Test whether this mark is in the given set of marks.
31300
31300
  */
31301
- isInSet(set2) {
31302
- for (let i = 0; i < set2.length; i++)
31303
- if (this.eq(set2[i]))
31301
+ isInSet(set3) {
31302
+ for (let i = 0; i < set3.length; i++)
31303
+ if (this.eq(set3[i]))
31304
31304
  return true;
31305
31305
  return false;
31306
31306
  }
@@ -32717,15 +32717,15 @@ function dfa(nfa2) {
32717
32717
  nfa2[node].forEach(({ term, to }) => {
32718
32718
  if (!term)
32719
32719
  return;
32720
- let set2;
32720
+ let set3;
32721
32721
  for (let i = 0; i < out.length; i++)
32722
32722
  if (out[i][0] == term)
32723
- set2 = out[i][1];
32723
+ set3 = out[i][1];
32724
32724
  nullFrom(nfa2, to).forEach((node2) => {
32725
- if (!set2)
32726
- out.push([term, set2 = []]);
32727
- if (set2.indexOf(node2) == -1)
32728
- set2.push(node2);
32725
+ if (!set3)
32726
+ out.push([term, set3 = []]);
32727
+ if (set3.indexOf(node2) == -1)
32728
+ set3.push(node2);
32729
32729
  });
32730
32730
  });
32731
32731
  });
@@ -33053,21 +33053,21 @@ var MarkType = class _MarkType {
33053
33053
  When there is a mark of this type in the given set, a new set
33054
33054
  without it is returned. Otherwise, the input set is returned.
33055
33055
  */
33056
- removeFromSet(set2) {
33057
- for (var i = 0; i < set2.length; i++)
33058
- if (set2[i].type == this) {
33059
- set2 = set2.slice(0, i).concat(set2.slice(i + 1));
33056
+ removeFromSet(set3) {
33057
+ for (var i = 0; i < set3.length; i++)
33058
+ if (set3[i].type == this) {
33059
+ set3 = set3.slice(0, i).concat(set3.slice(i + 1));
33060
33060
  i--;
33061
33061
  }
33062
- return set2;
33062
+ return set3;
33063
33063
  }
33064
33064
  /**
33065
33065
  Tests whether there is a mark of this type in the given set.
33066
33066
  */
33067
- isInSet(set2) {
33068
- for (let i = 0; i < set2.length; i++)
33069
- if (set2[i].type == this)
33070
- return set2[i];
33067
+ isInSet(set3) {
33068
+ for (let i = 0; i < set3.length; i++)
33069
+ if (set3[i].type == this)
33070
+ return set3[i];
33071
33071
  }
33072
33072
  /**
33073
33073
  @internal
@@ -34820,10 +34820,10 @@ function removeMark(tr2, from2, to, mark) {
34820
34820
  step++;
34821
34821
  let toRemove = null;
34822
34822
  if (mark instanceof MarkType) {
34823
- let set2 = node.marks, found2;
34824
- while (found2 = mark.isInSet(set2)) {
34823
+ let set3 = node.marks, found2;
34824
+ while (found2 = mark.isInSet(set3)) {
34825
34825
  (toRemove || (toRemove = [])).push(found2);
34826
- set2 = found2.removeFromSet(set2);
34826
+ set3 = found2.removeFromSet(set3);
34827
34827
  }
34828
34828
  } else if (mark) {
34829
34829
  if (mark.isInSet(node.marks))
@@ -35875,10 +35875,10 @@ var Transform = class {
35875
35875
  if (mark.isInSet(node.marks))
35876
35876
  this.step(new RemoveNodeMarkStep(pos, mark));
35877
35877
  } else {
35878
- let set2 = node.marks, found2, steps = [];
35879
- while (found2 = mark.isInSet(set2)) {
35878
+ let set3 = node.marks, found2, steps = [];
35879
+ while (found2 = mark.isInSet(set3)) {
35880
35880
  steps.push(new RemoveNodeMarkStep(pos, found2));
35881
- set2 = found2.removeFromSet(set2);
35881
+ set3 = found2.removeFromSet(set3);
35882
35882
  }
35883
35883
  for (let i = steps.length - 1; i >= 0; i--)
35884
35884
  this.step(steps[i]);
@@ -40826,16 +40826,16 @@ function moveSpans(spans, offset) {
40826
40826
  return result;
40827
40827
  }
40828
40828
  function mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {
40829
- function gather(set2, oldOffset2) {
40830
- for (let i = 0; i < set2.local.length; i++) {
40831
- let mapped = set2.local[i].map(mapping, offset, oldOffset2);
40829
+ function gather(set3, oldOffset2) {
40830
+ for (let i = 0; i < set3.local.length; i++) {
40831
+ let mapped = set3.local[i].map(mapping, offset, oldOffset2);
40832
40832
  if (mapped)
40833
40833
  decorations.push(mapped);
40834
40834
  else if (options.onRemove)
40835
- options.onRemove(set2.local[i].spec);
40835
+ options.onRemove(set3.local[i].spec);
40836
40836
  }
40837
- for (let i = 0; i < set2.children.length; i += 3)
40838
- gather(set2.children[i + 2], set2.children[i] + oldOffset2 + 1);
40837
+ for (let i = 0; i < set3.children.length; i += 3)
40838
+ gather(set3.children[i + 2], set3.children[i] + oldOffset2 + 1);
40839
40839
  }
40840
40840
  for (let i = 0; i < children.length; i += 3)
40841
40841
  if (children[i + 1] == -1)
@@ -52018,13 +52018,54 @@ function TipTapEditor({ value, onChange, readOnly }) {
52018
52018
  return /* @__PURE__ */ import_react2.default.createElement("div", { className: "tiptap-wrapper" }, /* @__PURE__ */ import_react2.default.createElement(Toolbar, { editor }), /* @__PURE__ */ import_react2.default.createElement("div", { className: "tiptap-content" }, /* @__PURE__ */ import_react2.default.createElement(EditorContent, { editor })));
52019
52019
  }
52020
52020
 
52021
+ // ../../apps/studio/schemas/shared/section-media-fields.ts
52022
+ import { defineField as defineField2 } from "sanity";
52023
+ var sectionMediaFields = [
52024
+ defineField2({
52025
+ name: "backgroundImage",
52026
+ title: "Imagen de fondo",
52027
+ type: "image",
52028
+ options: { hotspot: true },
52029
+ fields: [
52030
+ defineField2({
52031
+ name: "alt",
52032
+ title: "Descripci\xF3n (accesibilidad)",
52033
+ type: "string"
52034
+ })
52035
+ ]
52036
+ }),
52037
+ defineField2({
52038
+ name: "backgroundVideoUrl",
52039
+ title: "Video de fondo (URL .mp4)",
52040
+ type: "string",
52041
+ description: "URL directa a un archivo .mp4. No se reproduce en mobile \u2014 se recomienda agregar tambi\xE9n una imagen de fondo como poster."
52042
+ }),
52043
+ defineField2({
52044
+ name: "backgroundOverlay",
52045
+ title: "Overlay oscurecedor (%)",
52046
+ type: "number",
52047
+ description: "Oscurece el fondo para mejorar la legibilidad del texto sobre im\xE1genes o videos (0 = sin overlay, 80 = muy oscuro).",
52048
+ initialValue: 0,
52049
+ validation: (r) => r.min(0).max(100),
52050
+ hidden: ({ parent }) => !parent?.backgroundImage && !parent?.backgroundVideoUrl
52051
+ }),
52052
+ defineField2({
52053
+ name: "animate",
52054
+ title: "Animaci\xF3n de entrada",
52055
+ type: "boolean",
52056
+ description: "La secci\xF3n aparece con una animaci\xF3n fade-up suave al hacer scroll.",
52057
+ initialValue: false
52058
+ })
52059
+ ];
52060
+
52021
52061
  // ../../apps/studio/schemas/sections/hero.ts
52022
52062
  var heroSection = defineType2({
52023
52063
  name: "hero",
52024
52064
  title: "Hero",
52025
52065
  type: "object",
52026
52066
  fields: [
52027
- defineField2({
52067
+ ...sectionMediaFields,
52068
+ defineField3({
52028
52069
  name: "variant",
52029
52070
  title: "Variante",
52030
52071
  type: "string",
@@ -52043,20 +52084,20 @@ var heroSection = defineType2({
52043
52084
  initialValue: "centered",
52044
52085
  validation: (r) => r.required()
52045
52086
  }),
52046
- defineField2({ name: "badge", title: "Badge / Etiqueta superior", type: "string" }),
52047
- defineField2({ name: "subheading", title: "Subt\xEDtulo", type: "string" }),
52048
- defineField2({ name: "heading", title: "T\xEDtulo principal", type: "string", validation: (r) => r.required() }),
52049
- defineField2({ name: "description", title: "Descripci\xF3n / Texto secundario", type: "text", rows: 3 }),
52050
- defineField2({
52087
+ defineField3({ name: "badge", title: "Badge / Etiqueta superior", type: "string" }),
52088
+ defineField3({ name: "subheading", title: "Subt\xEDtulo", type: "string" }),
52089
+ defineField3({ name: "heading", title: "T\xEDtulo principal", type: "string", validation: (r) => r.required() }),
52090
+ defineField3({ name: "description", title: "Descripci\xF3n / Texto secundario", type: "text", rows: 3 }),
52091
+ defineField3({
52051
52092
  name: "content",
52052
52093
  title: "Contenido",
52053
52094
  type: "text",
52054
52095
  description: "Texto enriquecido opcional que se muestra debajo de la descripci\xF3n.",
52055
52096
  components: { input: TipTapEditor }
52056
52097
  }),
52057
- defineField2({ name: "primaryCTA", title: "Bot\xF3n CTA primario", type: "ctaButton" }),
52058
- defineField2({ name: "secondaryCTA", title: "Bot\xF3n CTA secundario", type: "ctaButton" }),
52059
- defineField2({
52098
+ defineField3({ name: "primaryCTA", title: "Bot\xF3n CTA primario", type: "ctaButton" }),
52099
+ defineField3({ name: "secondaryCTA", title: "Bot\xF3n CTA secundario", type: "ctaButton" }),
52100
+ defineField3({
52060
52101
  name: "image",
52061
52102
  title: "Imagen",
52062
52103
  description: "No se usa cuando la variante es 'Video de fondo'.",
@@ -52064,10 +52105,10 @@ var heroSection = defineType2({
52064
52105
  hidden: ({ parent }) => parent?.variant === "video",
52065
52106
  options: { hotspot: true },
52066
52107
  fields: [
52067
- defineField2({ name: "alt", title: "Texto alternativo", type: "string" })
52108
+ defineField3({ name: "alt", title: "Texto alternativo", type: "string" })
52068
52109
  ]
52069
52110
  }),
52070
- defineField2({
52111
+ defineField3({
52071
52112
  name: "videoPoster",
52072
52113
  title: "Poster del video (miniatura mientras carga)",
52073
52114
  description: "Se muestra antes de que el video comience a reproducirse.",
@@ -52075,11 +52116,11 @@ var heroSection = defineType2({
52075
52116
  hidden: ({ parent }) => parent?.variant !== "video" && parent?.variant !== "card",
52076
52117
  options: { hotspot: true },
52077
52118
  fields: [
52078
- defineField2({ name: "alt", title: "Texto alternativo", type: "string" })
52119
+ defineField3({ name: "alt", title: "Texto alternativo", type: "string" })
52079
52120
  ]
52080
52121
  }),
52081
52122
  /* ── Video: upload a file OR paste an external URL ── */
52082
- defineField2({
52123
+ defineField3({
52083
52124
  name: "videoFile",
52084
52125
  title: "Video \u2014 subir archivo (MP4/WebM)",
52085
52126
  description: "Subir directamente a Sanity. Tiene prioridad sobre la URL externa de abajo.",
@@ -52087,14 +52128,14 @@ var heroSection = defineType2({
52087
52128
  hidden: ({ parent }) => parent?.variant !== "video" && parent?.variant !== "card",
52088
52129
  options: { accept: "video/mp4,video/webm,video/*" }
52089
52130
  }),
52090
- defineField2({
52131
+ defineField3({
52091
52132
  name: "videoUrl",
52092
52133
  title: "Video \u2014 URL externa",
52093
52134
  description: "Peg\xE1 una URL directa de .mp4 / .webm (Cloudinary, S3, Vimeo link directo, etc.). Solo se usa si no hay archivo subido arriba.",
52094
52135
  type: "url",
52095
52136
  hidden: ({ parent }) => parent?.variant !== "video" && parent?.variant !== "card"
52096
52137
  }),
52097
- defineField2({
52138
+ defineField3({
52098
52139
  name: "overlayOpacity",
52099
52140
  title: "Opacidad del overlay de video / imagen %",
52100
52141
  description: "Usado en las variantes de video y fondo. 0 = sin overlay, 100 = completamente opaco.",
@@ -52102,7 +52143,7 @@ var heroSection = defineType2({
52102
52143
  initialValue: 50,
52103
52144
  validation: (r) => r.min(0).max(100)
52104
52145
  }),
52105
- defineField2({
52146
+ defineField3({
52106
52147
  name: "background",
52107
52148
  title: "Fondo",
52108
52149
  type: "string",
@@ -52121,7 +52162,7 @@ var heroSection = defineType2({
52121
52162
  },
52122
52163
  initialValue: "default"
52123
52164
  }),
52124
- defineField2({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52165
+ defineField3({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52125
52166
  ],
52126
52167
  preview: {
52127
52168
  select: { title: "heading", subtitle: "variant" },
@@ -52132,13 +52173,14 @@ var heroSection = defineType2({
52132
52173
  });
52133
52174
 
52134
52175
  // ../../apps/studio/schemas/sections/faq.ts
52135
- import { defineField as defineField3, defineType as defineType3 } from "sanity";
52176
+ import { defineField as defineField4, defineType as defineType3 } from "sanity";
52136
52177
  var faqSection = defineType3({
52137
52178
  name: "faq",
52138
52179
  title: "FAQ",
52139
52180
  type: "object",
52140
52181
  fields: [
52141
- defineField3({
52182
+ ...sectionMediaFields,
52183
+ defineField4({
52142
52184
  name: "variant",
52143
52185
  title: "Variante",
52144
52186
  type: "string",
@@ -52154,17 +52196,17 @@ var faqSection = defineType3({
52154
52196
  initialValue: "accordion",
52155
52197
  validation: (r) => r.required()
52156
52198
  }),
52157
- defineField3({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52158
- defineField3({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52159
- defineField3({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52160
- defineField3({
52199
+ defineField4({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52200
+ defineField4({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52201
+ defineField4({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52202
+ defineField4({
52161
52203
  name: "content",
52162
52204
  title: "Contenido",
52163
52205
  type: "text",
52164
52206
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52165
52207
  components: { input: TipTapEditor }
52166
52208
  }),
52167
- defineField3({
52209
+ defineField4({
52168
52210
  name: "items",
52169
52211
  title: "Elementos FAQ",
52170
52212
  type: "array",
@@ -52172,16 +52214,16 @@ var faqSection = defineType3({
52172
52214
  {
52173
52215
  type: "object",
52174
52216
  fields: [
52175
- defineField3({ name: "question", title: "Pregunta", type: "string", validation: (r) => r.required() }),
52176
- defineField3({ name: "answer", title: "Respuesta", type: "text", rows: 3, validation: (r) => r.required() })
52217
+ defineField4({ name: "question", title: "Pregunta", type: "string", validation: (r) => r.required() }),
52218
+ defineField4({ name: "answer", title: "Respuesta", type: "text", rows: 3, validation: (r) => r.required() })
52177
52219
  ],
52178
52220
  preview: { select: { title: "question" } }
52179
52221
  }
52180
52222
  ],
52181
52223
  validation: (r) => r.required().min(1)
52182
52224
  }),
52183
- defineField3({ name: "cta", title: "Bot\xF3n CTA (opcional)", type: "ctaButton" }),
52184
- defineField3({
52225
+ defineField4({ name: "cta", title: "Bot\xF3n CTA (opcional)", type: "ctaButton" }),
52226
+ defineField4({
52185
52227
  name: "background",
52186
52228
  title: "Fondo",
52187
52229
  type: "string",
@@ -52197,7 +52239,7 @@ var faqSection = defineType3({
52197
52239
  ], layout: "radio" },
52198
52240
  initialValue: "default"
52199
52241
  }),
52200
- defineField3({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52242
+ defineField4({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52201
52243
  ],
52202
52244
  preview: {
52203
52245
  select: { title: "title", subtitle: "variant" },
@@ -52208,13 +52250,14 @@ var faqSection = defineType3({
52208
52250
  });
52209
52251
 
52210
52252
  // ../../apps/studio/schemas/sections/gallery.ts
52211
- import { defineField as defineField4, defineType as defineType4 } from "sanity";
52253
+ import { defineField as defineField5, defineType as defineType4 } from "sanity";
52212
52254
  var gallerySection = defineType4({
52213
52255
  name: "gallery",
52214
52256
  title: "Galer\xEDa",
52215
52257
  type: "object",
52216
52258
  fields: [
52217
- defineField4({
52259
+ ...sectionMediaFields,
52260
+ defineField5({
52218
52261
  name: "variant",
52219
52262
  title: "Variante",
52220
52263
  type: "string",
@@ -52229,17 +52272,17 @@ var gallerySection = defineType4({
52229
52272
  initialValue: "grid",
52230
52273
  validation: (r) => r.required()
52231
52274
  }),
52232
- defineField4({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52233
- defineField4({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52234
- defineField4({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52235
- defineField4({
52275
+ defineField5({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52276
+ defineField5({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52277
+ defineField5({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52278
+ defineField5({
52236
52279
  name: "content",
52237
52280
  title: "Contenido",
52238
52281
  type: "text",
52239
52282
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52240
52283
  components: { input: TipTapEditor }
52241
52284
  }),
52242
- defineField4({
52285
+ defineField5({
52243
52286
  name: "columns",
52244
52287
  title: "Columnas",
52245
52288
  type: "number",
@@ -52253,7 +52296,7 @@ var gallerySection = defineType4({
52253
52296
  },
52254
52297
  initialValue: 3
52255
52298
  }),
52256
- defineField4({
52299
+ defineField5({
52257
52300
  name: "items",
52258
52301
  title: "Im\xE1genes",
52259
52302
  type: "array",
@@ -52261,24 +52304,24 @@ var gallerySection = defineType4({
52261
52304
  {
52262
52305
  type: "object",
52263
52306
  fields: [
52264
- defineField4({
52307
+ defineField5({
52265
52308
  name: "image",
52266
52309
  title: "Imagen",
52267
52310
  type: "image",
52268
52311
  options: { hotspot: true },
52269
52312
  fields: [
52270
- defineField4({ name: "alt", title: "Texto alternativo", type: "string" })
52313
+ defineField5({ name: "alt", title: "Texto alternativo", type: "string" })
52271
52314
  ],
52272
52315
  validation: (r) => r.required()
52273
52316
  }),
52274
- defineField4({ name: "caption", title: "Leyenda", type: "string" })
52317
+ defineField5({ name: "caption", title: "Leyenda", type: "string" })
52275
52318
  ],
52276
52319
  preview: { select: { media: "image", title: "caption" } }
52277
52320
  }
52278
52321
  ],
52279
52322
  validation: (r) => r.required().min(1)
52280
52323
  }),
52281
- defineField4({
52324
+ defineField5({
52282
52325
  name: "background",
52283
52326
  title: "Fondo",
52284
52327
  type: "string",
@@ -52294,7 +52337,7 @@ var gallerySection = defineType4({
52294
52337
  ], layout: "radio" },
52295
52338
  initialValue: "default"
52296
52339
  }),
52297
- defineField4({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52340
+ defineField5({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52298
52341
  ],
52299
52342
  preview: {
52300
52343
  select: { title: "title", subtitle: "variant" },
@@ -52305,13 +52348,14 @@ var gallerySection = defineType4({
52305
52348
  });
52306
52349
 
52307
52350
  // ../../apps/studio/schemas/sections/kpis.ts
52308
- import { defineField as defineField5, defineType as defineType5 } from "sanity";
52351
+ import { defineField as defineField6, defineType as defineType5 } from "sanity";
52309
52352
  var kpisSection = defineType5({
52310
52353
  name: "kpis",
52311
52354
  title: "KPIs / M\xE9tricas",
52312
52355
  type: "object",
52313
52356
  fields: [
52314
- defineField5({
52357
+ ...sectionMediaFields,
52358
+ defineField6({
52315
52359
  name: "variant",
52316
52360
  title: "Variante",
52317
52361
  type: "string",
@@ -52327,17 +52371,17 @@ var kpisSection = defineType5({
52327
52371
  initialValue: "counters",
52328
52372
  validation: (r) => r.required()
52329
52373
  }),
52330
- defineField5({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52331
- defineField5({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52332
- defineField5({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52333
- defineField5({
52374
+ defineField6({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52375
+ defineField6({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52376
+ defineField6({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52377
+ defineField6({
52334
52378
  name: "content",
52335
52379
  title: "Contenido",
52336
52380
  type: "text",
52337
52381
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52338
52382
  components: { input: TipTapEditor }
52339
52383
  }),
52340
- defineField5({
52384
+ defineField6({
52341
52385
  name: "items",
52342
52386
  title: "Elementos KPI",
52343
52387
  type: "array",
@@ -52345,11 +52389,11 @@ var kpisSection = defineType5({
52345
52389
  {
52346
52390
  type: "object",
52347
52391
  fields: [
52348
- defineField5({ name: "value", title: "Valor (ej: 98, 1.2M)", type: "string", validation: (r) => r.required() }),
52349
- defineField5({ name: "label", title: "Etiqueta", type: "string", validation: (r) => r.required() }),
52350
- defineField5({ name: "description", title: "Descripci\xF3n (opcional)", type: "string" }),
52351
- defineField5({ name: "prefix", title: "Prefijo (ej: $, +)", type: "string" }),
52352
- defineField5({ name: "suffix", title: "Sufijo (ej: %, K, M)", type: "string" })
52392
+ defineField6({ name: "value", title: "Valor (ej: 98, 1.2M)", type: "string", validation: (r) => r.required() }),
52393
+ defineField6({ name: "label", title: "Etiqueta", type: "string", validation: (r) => r.required() }),
52394
+ defineField6({ name: "description", title: "Descripci\xF3n (opcional)", type: "string" }),
52395
+ defineField6({ name: "prefix", title: "Prefijo (ej: $, +)", type: "string" }),
52396
+ defineField6({ name: "suffix", title: "Sufijo (ej: %, K, M)", type: "string" })
52353
52397
  ],
52354
52398
  preview: {
52355
52399
  select: { prefix: "prefix", value: "value", suffix: "suffix", title: "label" },
@@ -52361,7 +52405,7 @@ var kpisSection = defineType5({
52361
52405
  ],
52362
52406
  validation: (r) => r.required().min(1)
52363
52407
  }),
52364
- defineField5({
52408
+ defineField6({
52365
52409
  name: "background",
52366
52410
  title: "Fondo",
52367
52411
  type: "string",
@@ -52377,7 +52421,7 @@ var kpisSection = defineType5({
52377
52421
  ], layout: "radio" },
52378
52422
  initialValue: "default"
52379
52423
  }),
52380
- defineField5({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52424
+ defineField6({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52381
52425
  ],
52382
52426
  preview: {
52383
52427
  select: { title: "title", subtitle: "variant" },
@@ -52388,13 +52432,14 @@ var kpisSection = defineType5({
52388
52432
  });
52389
52433
 
52390
52434
  // ../../apps/studio/schemas/sections/cards.ts
52391
- import { defineField as defineField6, defineType as defineType6 } from "sanity";
52435
+ import { defineField as defineField7, defineType as defineType6 } from "sanity";
52392
52436
  var cardsSection = defineType6({
52393
52437
  name: "cards",
52394
52438
  title: "Tarjetas",
52395
52439
  type: "object",
52396
52440
  fields: [
52397
- defineField6({
52441
+ ...sectionMediaFields,
52442
+ defineField7({
52398
52443
  name: "variant",
52399
52444
  title: "Variante",
52400
52445
  type: "string",
@@ -52410,17 +52455,17 @@ var cardsSection = defineType6({
52410
52455
  initialValue: "grid",
52411
52456
  validation: (r) => r.required()
52412
52457
  }),
52413
- defineField6({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52414
- defineField6({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52415
- defineField6({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52416
- defineField6({
52458
+ defineField7({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52459
+ defineField7({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52460
+ defineField7({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52461
+ defineField7({
52417
52462
  name: "content",
52418
52463
  title: "Contenido",
52419
52464
  type: "text",
52420
52465
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52421
52466
  components: { input: TipTapEditor }
52422
52467
  }),
52423
- defineField6({
52468
+ defineField7({
52424
52469
  name: "columns",
52425
52470
  title: "Columnas (variante grilla)",
52426
52471
  type: "number",
@@ -52434,7 +52479,7 @@ var cardsSection = defineType6({
52434
52479
  },
52435
52480
  initialValue: 3
52436
52481
  }),
52437
- defineField6({
52482
+ defineField7({
52438
52483
  name: "items",
52439
52484
  title: "Tarjetas",
52440
52485
  type: "array",
@@ -52442,28 +52487,28 @@ var cardsSection = defineType6({
52442
52487
  {
52443
52488
  type: "object",
52444
52489
  fields: [
52445
- defineField6({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
52446
- defineField6({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
52447
- defineField6({
52490
+ defineField7({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
52491
+ defineField7({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
52492
+ defineField7({
52448
52493
  name: "image",
52449
52494
  title: "Imagen",
52450
52495
  type: "image",
52451
52496
  options: { hotspot: true },
52452
52497
  fields: [
52453
- defineField6({ name: "alt", title: "Texto alternativo", type: "string" })
52498
+ defineField7({ name: "alt", title: "Texto alternativo", type: "string" })
52454
52499
  ]
52455
52500
  }),
52456
- defineField6({ name: "badge", title: "Badge / Etiqueta", type: "string" }),
52457
- defineField6({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
52458
- defineField6({ name: "price", title: "Precio (variante precios)", type: "string" }),
52459
- defineField6({ name: "priceFrequency", title: "Frecuencia de precio (ej: mes)", type: "string" }),
52460
- defineField6({
52501
+ defineField7({ name: "badge", title: "Badge / Etiqueta", type: "string" }),
52502
+ defineField7({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
52503
+ defineField7({ name: "price", title: "Precio (variante precios)", type: "string" }),
52504
+ defineField7({ name: "priceFrequency", title: "Frecuencia de precio (ej: mes)", type: "string" }),
52505
+ defineField7({
52461
52506
  name: "features",
52462
52507
  title: "Lista de caracter\xEDsticas (variante precios)",
52463
52508
  type: "array",
52464
52509
  of: [{ type: "string" }]
52465
52510
  }),
52466
- defineField6({ name: "highlighted", title: "Destacar esta tarjeta (m\xE1s popular)", type: "boolean", initialValue: false })
52511
+ defineField7({ name: "highlighted", title: "Destacar esta tarjeta (m\xE1s popular)", type: "boolean", initialValue: false })
52467
52512
  ],
52468
52513
  preview: {
52469
52514
  select: { title: "title", subtitle: "description" }
@@ -52472,7 +52517,7 @@ var cardsSection = defineType6({
52472
52517
  ],
52473
52518
  validation: (r) => r.required().min(1)
52474
52519
  }),
52475
- defineField6({
52520
+ defineField7({
52476
52521
  name: "background",
52477
52522
  title: "Fondo",
52478
52523
  type: "string",
@@ -52488,7 +52533,7 @@ var cardsSection = defineType6({
52488
52533
  ], layout: "radio" },
52489
52534
  initialValue: "default"
52490
52535
  }),
52491
- defineField6({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52536
+ defineField7({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52492
52537
  ],
52493
52538
  preview: {
52494
52539
  select: { title: "title", subtitle: "variant" },
@@ -52499,13 +52544,14 @@ var cardsSection = defineType6({
52499
52544
  });
52500
52545
 
52501
52546
  // ../../apps/studio/schemas/sections/scrollable.ts
52502
- import { defineField as defineField7, defineType as defineType7 } from "sanity";
52547
+ import { defineField as defineField8, defineType as defineType7 } from "sanity";
52503
52548
  var scrollableSection = defineType7({
52504
52549
  name: "scrollable",
52505
52550
  title: "Secci\xF3n desplazable",
52506
52551
  type: "object",
52507
52552
  fields: [
52508
- defineField7({
52553
+ ...sectionMediaFields,
52554
+ defineField8({
52509
52555
  name: "variant",
52510
52556
  title: "Variante",
52511
52557
  type: "string",
@@ -52521,17 +52567,17 @@ var scrollableSection = defineType7({
52521
52567
  initialValue: "horizontal",
52522
52568
  validation: (r) => r.required()
52523
52569
  }),
52524
- defineField7({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52525
- defineField7({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52526
- defineField7({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52527
- defineField7({
52570
+ defineField8({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52571
+ defineField8({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52572
+ defineField8({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52573
+ defineField8({
52528
52574
  name: "content",
52529
52575
  title: "Contenido",
52530
52576
  type: "text",
52531
52577
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52532
52578
  components: { input: TipTapEditor }
52533
52579
  }),
52534
- defineField7({
52580
+ defineField8({
52535
52581
  name: "speed",
52536
52582
  title: "Velocidad de la marquesina",
52537
52583
  type: "string",
@@ -52546,7 +52592,7 @@ var scrollableSection = defineType7({
52546
52592
  },
52547
52593
  initialValue: "normal"
52548
52594
  }),
52549
- defineField7({
52595
+ defineField8({
52550
52596
  name: "direction",
52551
52597
  title: "Direcci\xF3n de la marquesina",
52552
52598
  type: "string",
@@ -52560,7 +52606,7 @@ var scrollableSection = defineType7({
52560
52606
  },
52561
52607
  initialValue: "left"
52562
52608
  }),
52563
- defineField7({
52609
+ defineField8({
52564
52610
  name: "items",
52565
52611
  title: "Elementos",
52566
52612
  type: "array",
@@ -52568,26 +52614,26 @@ var scrollableSection = defineType7({
52568
52614
  {
52569
52615
  type: "object",
52570
52616
  fields: [
52571
- defineField7({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
52572
- defineField7({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
52573
- defineField7({
52617
+ defineField8({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
52618
+ defineField8({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
52619
+ defineField8({
52574
52620
  name: "image",
52575
52621
  title: "Imagen",
52576
52622
  type: "image",
52577
52623
  options: { hotspot: true },
52578
52624
  fields: [
52579
- defineField7({ name: "alt", title: "Texto alternativo", type: "string" })
52625
+ defineField8({ name: "alt", title: "Texto alternativo", type: "string" })
52580
52626
  ]
52581
52627
  }),
52582
- defineField7({ name: "label", title: "Etiqueta / Tag", type: "string" }),
52583
- defineField7({ name: "date", title: "Fecha (variante l\xEDnea de tiempo)", type: "string" })
52628
+ defineField8({ name: "label", title: "Etiqueta / Tag", type: "string" }),
52629
+ defineField8({ name: "date", title: "Fecha (variante l\xEDnea de tiempo)", type: "string" })
52584
52630
  ],
52585
52631
  preview: { select: { title: "title", subtitle: "label" } }
52586
52632
  }
52587
52633
  ],
52588
52634
  validation: (r) => r.required().min(1)
52589
52635
  }),
52590
- defineField7({
52636
+ defineField8({
52591
52637
  name: "background",
52592
52638
  title: "Fondo",
52593
52639
  type: "string",
@@ -52603,7 +52649,7 @@ var scrollableSection = defineType7({
52603
52649
  ], layout: "radio" },
52604
52650
  initialValue: "default"
52605
52651
  }),
52606
- defineField7({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52652
+ defineField8({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52607
52653
  ],
52608
52654
  preview: {
52609
52655
  select: { title: "title", subtitle: "variant" },
@@ -52614,13 +52660,14 @@ var scrollableSection = defineType7({
52614
52660
  });
52615
52661
 
52616
52662
  // ../../apps/studio/schemas/sections/tabs-section.ts
52617
- import { defineField as defineField8, defineType as defineType8 } from "sanity";
52663
+ import { defineField as defineField9, defineType as defineType8 } from "sanity";
52618
52664
  var tabsSection = defineType8({
52619
52665
  name: "tabsSection",
52620
52666
  title: "Secci\xF3n de pesta\xF1as",
52621
52667
  type: "object",
52622
52668
  fields: [
52623
- defineField8({
52669
+ ...sectionMediaFields,
52670
+ defineField9({
52624
52671
  name: "variant",
52625
52672
  title: "Variante",
52626
52673
  type: "string",
@@ -52636,17 +52683,17 @@ var tabsSection = defineType8({
52636
52683
  initialValue: "standard",
52637
52684
  validation: (r) => r.required()
52638
52685
  }),
52639
- defineField8({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52640
- defineField8({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52641
- defineField8({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52642
- defineField8({
52686
+ defineField9({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52687
+ defineField9({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52688
+ defineField9({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52689
+ defineField9({
52643
52690
  name: "content",
52644
52691
  title: "Contenido",
52645
52692
  type: "text",
52646
52693
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52647
52694
  components: { input: TipTapEditor }
52648
52695
  }),
52649
- defineField8({
52696
+ defineField9({
52650
52697
  name: "items",
52651
52698
  title: "Pesta\xF1as",
52652
52699
  type: "array",
@@ -52654,15 +52701,15 @@ var tabsSection = defineType8({
52654
52701
  {
52655
52702
  type: "object",
52656
52703
  fields: [
52657
- defineField8({ name: "label", title: "Etiqueta de pesta\xF1a", type: "string", validation: (r) => r.required() }),
52658
- defineField8({ name: "content", title: "Contenido", type: "text", rows: 4, validation: (r) => r.required() }),
52659
- defineField8({
52704
+ defineField9({ name: "label", title: "Etiqueta de pesta\xF1a", type: "string", validation: (r) => r.required() }),
52705
+ defineField9({ name: "content", title: "Contenido", type: "text", rows: 4, validation: (r) => r.required() }),
52706
+ defineField9({
52660
52707
  name: "image",
52661
52708
  title: "Imagen",
52662
52709
  type: "image",
52663
52710
  options: { hotspot: true },
52664
52711
  fields: [
52665
- defineField8({ name: "alt", title: "Texto alternativo", type: "string" })
52712
+ defineField9({ name: "alt", title: "Texto alternativo", type: "string" })
52666
52713
  ]
52667
52714
  })
52668
52715
  ],
@@ -52671,7 +52718,7 @@ var tabsSection = defineType8({
52671
52718
  ],
52672
52719
  validation: (r) => r.required().min(1)
52673
52720
  }),
52674
- defineField8({
52721
+ defineField9({
52675
52722
  name: "background",
52676
52723
  title: "Fondo",
52677
52724
  type: "string",
@@ -52687,7 +52734,7 @@ var tabsSection = defineType8({
52687
52734
  ], layout: "radio" },
52688
52735
  initialValue: "default"
52689
52736
  }),
52690
- defineField8({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52737
+ defineField9({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52691
52738
  ],
52692
52739
  preview: {
52693
52740
  select: { title: "title", subtitle: "variant" },
@@ -52698,13 +52745,14 @@ var tabsSection = defineType8({
52698
52745
  });
52699
52746
 
52700
52747
  // ../../apps/studio/schemas/sections/testimonials.ts
52701
- import { defineField as defineField9, defineType as defineType9 } from "sanity";
52748
+ import { defineField as defineField10, defineType as defineType9 } from "sanity";
52702
52749
  var testimonialsSection = defineType9({
52703
52750
  name: "testimonials",
52704
52751
  title: "Testimonios",
52705
52752
  type: "object",
52706
52753
  fields: [
52707
- defineField9({
52754
+ ...sectionMediaFields,
52755
+ defineField10({
52708
52756
  name: "variant",
52709
52757
  title: "Variante",
52710
52758
  type: "string",
@@ -52719,17 +52767,17 @@ var testimonialsSection = defineType9({
52719
52767
  initialValue: "grid",
52720
52768
  validation: (r) => r.required()
52721
52769
  }),
52722
- defineField9({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52723
- defineField9({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52724
- defineField9({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52725
- defineField9({
52770
+ defineField10({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52771
+ defineField10({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52772
+ defineField10({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52773
+ defineField10({
52726
52774
  name: "content",
52727
52775
  title: "Contenido",
52728
52776
  type: "text",
52729
52777
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52730
52778
  components: { input: TipTapEditor }
52731
52779
  }),
52732
- defineField9({
52780
+ defineField10({
52733
52781
  name: "items",
52734
52782
  title: "Testimonios",
52735
52783
  type: "array",
@@ -52737,18 +52785,18 @@ var testimonialsSection = defineType9({
52737
52785
  {
52738
52786
  type: "object",
52739
52787
  fields: [
52740
- defineField9({ name: "quote", title: "Cita", type: "text", rows: 3, validation: (r) => r.required() }),
52741
- defineField9({ name: "author", title: "Nombre del autor", type: "string", validation: (r) => r.required() }),
52742
- defineField9({ name: "role", title: "Rol / T\xEDtulo", type: "string" }),
52743
- defineField9({ name: "company", title: "Empresa", type: "string" }),
52744
- defineField9({
52788
+ defineField10({ name: "quote", title: "Cita", type: "text", rows: 3, validation: (r) => r.required() }),
52789
+ defineField10({ name: "author", title: "Nombre del autor", type: "string", validation: (r) => r.required() }),
52790
+ defineField10({ name: "role", title: "Rol / T\xEDtulo", type: "string" }),
52791
+ defineField10({ name: "company", title: "Empresa", type: "string" }),
52792
+ defineField10({
52745
52793
  name: "avatar",
52746
52794
  title: "Avatar",
52747
52795
  type: "image",
52748
52796
  options: { hotspot: true },
52749
- fields: [defineField9({ name: "alt", title: "Texto alternativo", type: "string" })]
52797
+ fields: [defineField10({ name: "alt", title: "Texto alternativo", type: "string" })]
52750
52798
  }),
52751
- defineField9({
52799
+ defineField10({
52752
52800
  name: "rating",
52753
52801
  title: "Puntuaci\xF3n (1\u20135)",
52754
52802
  type: "number",
@@ -52771,7 +52819,7 @@ var testimonialsSection = defineType9({
52771
52819
  ],
52772
52820
  validation: (r) => r.required().min(1)
52773
52821
  }),
52774
- defineField9({
52822
+ defineField10({
52775
52823
  name: "background",
52776
52824
  title: "Fondo",
52777
52825
  type: "string",
@@ -52787,7 +52835,7 @@ var testimonialsSection = defineType9({
52787
52835
  ], layout: "radio" },
52788
52836
  initialValue: "default"
52789
52837
  }),
52790
- defineField9({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52838
+ defineField10({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52791
52839
  ],
52792
52840
  preview: {
52793
52841
  select: { title: "title", subtitle: "variant" },
@@ -52798,13 +52846,14 @@ var testimonialsSection = defineType9({
52798
52846
  });
52799
52847
 
52800
52848
  // ../../apps/studio/schemas/sections/logos.ts
52801
- import { defineField as defineField10, defineType as defineType10 } from "sanity";
52849
+ import { defineField as defineField11, defineType as defineType10 } from "sanity";
52802
52850
  var logosSection = defineType10({
52803
52851
  name: "logos",
52804
52852
  title: "Logos / Socios",
52805
52853
  type: "object",
52806
52854
  fields: [
52807
- defineField10({
52855
+ ...sectionMediaFields,
52856
+ defineField11({
52808
52857
  name: "variant",
52809
52858
  title: "Variante",
52810
52859
  type: "string",
@@ -52819,17 +52868,17 @@ var logosSection = defineType10({
52819
52868
  initialValue: "grid",
52820
52869
  validation: (r) => r.required()
52821
52870
  }),
52822
- defineField10({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52823
- defineField10({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52824
- defineField10({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52825
- defineField10({
52871
+ defineField11({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52872
+ defineField11({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52873
+ defineField11({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52874
+ defineField11({
52826
52875
  name: "content",
52827
52876
  title: "Contenido",
52828
52877
  type: "text",
52829
52878
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52830
52879
  components: { input: TipTapEditor }
52831
52880
  }),
52832
- defineField10({
52881
+ defineField11({
52833
52882
  name: "items",
52834
52883
  title: "Logos",
52835
52884
  type: "array",
@@ -52837,16 +52886,16 @@ var logosSection = defineType10({
52837
52886
  {
52838
52887
  type: "object",
52839
52888
  fields: [
52840
- defineField10({
52889
+ defineField11({
52841
52890
  name: "image",
52842
52891
  title: "Imagen del logo",
52843
52892
  type: "image",
52844
52893
  options: { hotspot: true },
52845
- fields: [defineField10({ name: "alt", title: "Texto alternativo", type: "string" })],
52894
+ fields: [defineField11({ name: "alt", title: "Texto alternativo", type: "string" })],
52846
52895
  validation: (r) => r.required()
52847
52896
  }),
52848
- defineField10({ name: "name", title: "Nombre de la empresa", type: "string", validation: (r) => r.required() }),
52849
- defineField10({ name: "href", title: "URL del enlace", type: "url" })
52897
+ defineField11({ name: "name", title: "Nombre de la empresa", type: "string", validation: (r) => r.required() }),
52898
+ defineField11({ name: "href", title: "URL del enlace", type: "url" })
52850
52899
  ],
52851
52900
  preview: {
52852
52901
  select: { title: "name", media: "image" }
@@ -52855,7 +52904,7 @@ var logosSection = defineType10({
52855
52904
  ],
52856
52905
  validation: (r) => r.required().min(1)
52857
52906
  }),
52858
- defineField10({
52907
+ defineField11({
52859
52908
  name: "background",
52860
52909
  title: "Fondo",
52861
52910
  type: "string",
@@ -52871,7 +52920,7 @@ var logosSection = defineType10({
52871
52920
  ], layout: "radio" },
52872
52921
  initialValue: "default"
52873
52922
  }),
52874
- defineField10({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52923
+ defineField11({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52875
52924
  ],
52876
52925
  preview: {
52877
52926
  select: { title: "title", subtitle: "variant" },
@@ -52882,13 +52931,14 @@ var logosSection = defineType10({
52882
52931
  });
52883
52932
 
52884
52933
  // ../../apps/studio/schemas/sections/cta.ts
52885
- import { defineField as defineField11, defineType as defineType11 } from "sanity";
52934
+ import { defineField as defineField12, defineType as defineType11 } from "sanity";
52886
52935
  var ctaSection = defineType11({
52887
52936
  name: "cta",
52888
52937
  title: "CTA",
52889
52938
  type: "object",
52890
52939
  fields: [
52891
- defineField11({
52940
+ ...sectionMediaFields,
52941
+ defineField12({
52892
52942
  name: "variant",
52893
52943
  title: "Variante",
52894
52944
  type: "string",
@@ -52903,28 +52953,28 @@ var ctaSection = defineType11({
52903
52953
  initialValue: "centered",
52904
52954
  validation: (r) => r.required()
52905
52955
  }),
52906
- defineField11({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52907
- defineField11({ name: "title", title: "T\xEDtulo de secci\xF3n (arriba)", type: "string" }),
52908
- defineField11({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n (arriba)", type: "text", rows: 2 }),
52909
- defineField11({
52956
+ defineField12({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52957
+ defineField12({ name: "title", title: "T\xEDtulo de secci\xF3n (arriba)", type: "string" }),
52958
+ defineField12({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n (arriba)", type: "text", rows: 2 }),
52959
+ defineField12({
52910
52960
  name: "content",
52911
52961
  title: "Contenido",
52912
52962
  type: "text",
52913
52963
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52914
52964
  components: { input: TipTapEditor }
52915
52965
  }),
52916
- defineField11({ name: "heading", title: "Titular del CTA", type: "string", validation: (r) => r.required() }),
52917
- defineField11({ name: "description", title: "Descripci\xF3n del CTA", type: "text", rows: 2 }),
52918
- defineField11({ name: "primaryCTA", title: "Bot\xF3n primario", type: "ctaButton" }),
52919
- defineField11({ name: "secondaryCTA", title: "Bot\xF3n secundario", type: "ctaButton" }),
52920
- defineField11({
52966
+ defineField12({ name: "heading", title: "Titular del CTA", type: "string", validation: (r) => r.required() }),
52967
+ defineField12({ name: "description", title: "Descripci\xF3n del CTA", type: "text", rows: 2 }),
52968
+ defineField12({ name: "primaryCTA", title: "Bot\xF3n primario", type: "ctaButton" }),
52969
+ defineField12({ name: "secondaryCTA", title: "Bot\xF3n secundario", type: "ctaButton" }),
52970
+ defineField12({
52921
52971
  name: "image",
52922
52972
  title: "Imagen (variante dividida)",
52923
52973
  type: "image",
52924
52974
  options: { hotspot: true },
52925
- fields: [defineField11({ name: "alt", title: "Texto alternativo", type: "string" })]
52975
+ fields: [defineField12({ name: "alt", title: "Texto alternativo", type: "string" })]
52926
52976
  }),
52927
- defineField11({
52977
+ defineField12({
52928
52978
  name: "background",
52929
52979
  title: "Fondo",
52930
52980
  type: "string",
@@ -52940,7 +52990,7 @@ var ctaSection = defineType11({
52940
52990
  ], layout: "radio" },
52941
52991
  initialValue: "default"
52942
52992
  }),
52943
- defineField11({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52993
+ defineField12({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
52944
52994
  ],
52945
52995
  preview: {
52946
52996
  select: { title: "heading", subtitle: "variant" },
@@ -52951,13 +53001,14 @@ var ctaSection = defineType11({
52951
53001
  });
52952
53002
 
52953
53003
  // ../../apps/studio/schemas/sections/features.ts
52954
- import { defineField as defineField12, defineType as defineType12 } from "sanity";
53004
+ import { defineField as defineField13, defineType as defineType12 } from "sanity";
52955
53005
  var featuresSection = defineType12({
52956
53006
  name: "features",
52957
53007
  title: "Caracter\xEDsticas",
52958
53008
  type: "object",
52959
53009
  fields: [
52960
- defineField12({
53010
+ ...sectionMediaFields,
53011
+ defineField13({
52961
53012
  name: "variant",
52962
53013
  title: "Variante",
52963
53014
  type: "string",
@@ -52972,17 +53023,17 @@ var featuresSection = defineType12({
52972
53023
  initialValue: "grid",
52973
53024
  validation: (r) => r.required()
52974
53025
  }),
52975
- defineField12({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
52976
- defineField12({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
52977
- defineField12({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
52978
- defineField12({
53026
+ defineField13({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53027
+ defineField13({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53028
+ defineField13({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53029
+ defineField13({
52979
53030
  name: "content",
52980
53031
  title: "Contenido",
52981
53032
  type: "text",
52982
53033
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
52983
53034
  components: { input: TipTapEditor }
52984
53035
  }),
52985
- defineField12({
53036
+ defineField13({
52986
53037
  name: "columns",
52987
53038
  title: "Columnas (variante grilla)",
52988
53039
  type: "number",
@@ -52996,7 +53047,7 @@ var featuresSection = defineType12({
52996
53047
  },
52997
53048
  initialValue: 3
52998
53049
  }),
52999
- defineField12({
53050
+ defineField13({
53000
53051
  name: "items",
53001
53052
  title: "Caracter\xEDsticas",
53002
53053
  type: "array",
@@ -53004,16 +53055,16 @@ var featuresSection = defineType12({
53004
53055
  {
53005
53056
  type: "object",
53006
53057
  fields: [
53007
- defineField12({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
53008
- defineField12({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53009
- defineField12({ name: "icon", title: "\xCDcono (nombre de Lucide, ej: Zap)", type: "string" }),
53010
- defineField12({ name: "badge", title: "Badge / Etiqueta", type: "string" }),
53011
- defineField12({
53058
+ defineField13({ name: "title", title: "T\xEDtulo", type: "string", validation: (r) => r.required() }),
53059
+ defineField13({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53060
+ defineField13({ name: "icon", title: "\xCDcono (nombre de Lucide, ej: Zap)", type: "string" }),
53061
+ defineField13({ name: "badge", title: "Badge / Etiqueta", type: "string" }),
53062
+ defineField13({
53012
53063
  name: "image",
53013
53064
  title: "Imagen",
53014
53065
  type: "image",
53015
53066
  options: { hotspot: true },
53016
- fields: [defineField12({ name: "alt", title: "Texto alternativo", type: "string" })]
53067
+ fields: [defineField13({ name: "alt", title: "Texto alternativo", type: "string" })]
53017
53068
  })
53018
53069
  ],
53019
53070
  preview: {
@@ -53023,7 +53074,7 @@ var featuresSection = defineType12({
53023
53074
  ],
53024
53075
  validation: (r) => r.required().min(1)
53025
53076
  }),
53026
- defineField12({
53077
+ defineField13({
53027
53078
  name: "background",
53028
53079
  title: "Fondo",
53029
53080
  type: "string",
@@ -53039,7 +53090,7 @@ var featuresSection = defineType12({
53039
53090
  ], layout: "radio" },
53040
53091
  initialValue: "default"
53041
53092
  }),
53042
- defineField12({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53093
+ defineField13({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53043
53094
  ],
53044
53095
  preview: {
53045
53096
  select: { title: "title", subtitle: "variant" },
@@ -53050,13 +53101,14 @@ var featuresSection = defineType12({
53050
53101
  });
53051
53102
 
53052
53103
  // ../../apps/studio/schemas/sections/steps.ts
53053
- import { defineField as defineField13, defineType as defineType13 } from "sanity";
53104
+ import { defineField as defineField14, defineType as defineType13 } from "sanity";
53054
53105
  var stepsSection = defineType13({
53055
53106
  name: "steps",
53056
53107
  title: "Pasos",
53057
53108
  type: "object",
53058
53109
  fields: [
53059
- defineField13({
53110
+ ...sectionMediaFields,
53111
+ defineField14({
53060
53112
  name: "variant",
53061
53113
  title: "Variante",
53062
53114
  type: "string",
@@ -53071,17 +53123,17 @@ var stepsSection = defineType13({
53071
53123
  initialValue: "numbered",
53072
53124
  validation: (r) => r.required()
53073
53125
  }),
53074
- defineField13({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53075
- defineField13({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53076
- defineField13({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53077
- defineField13({
53126
+ defineField14({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53127
+ defineField14({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53128
+ defineField14({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53129
+ defineField14({
53078
53130
  name: "content",
53079
53131
  title: "Contenido",
53080
53132
  type: "text",
53081
53133
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53082
53134
  components: { input: TipTapEditor }
53083
53135
  }),
53084
- defineField13({
53136
+ defineField14({
53085
53137
  name: "items",
53086
53138
  title: "Pasos",
53087
53139
  type: "array",
@@ -53089,15 +53141,15 @@ var stepsSection = defineType13({
53089
53141
  {
53090
53142
  type: "object",
53091
53143
  fields: [
53092
- defineField13({ name: "title", title: "T\xEDtulo del paso", type: "string", validation: (r) => r.required() }),
53093
- defineField13({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53094
- defineField13({ name: "icon", title: "\xCDcono (nombre de Lucide)", type: "string" }),
53095
- defineField13({
53144
+ defineField14({ name: "title", title: "T\xEDtulo del paso", type: "string", validation: (r) => r.required() }),
53145
+ defineField14({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53146
+ defineField14({ name: "icon", title: "\xCDcono (nombre de Lucide)", type: "string" }),
53147
+ defineField14({
53096
53148
  name: "image",
53097
53149
  title: "Imagen",
53098
53150
  type: "image",
53099
53151
  options: { hotspot: true },
53100
- fields: [defineField13({ name: "alt", title: "Texto alternativo", type: "string" })]
53152
+ fields: [defineField14({ name: "alt", title: "Texto alternativo", type: "string" })]
53101
53153
  })
53102
53154
  ],
53103
53155
  preview: {
@@ -53107,7 +53159,7 @@ var stepsSection = defineType13({
53107
53159
  ],
53108
53160
  validation: (r) => r.required().min(1)
53109
53161
  }),
53110
- defineField13({
53162
+ defineField14({
53111
53163
  name: "background",
53112
53164
  title: "Fondo",
53113
53165
  type: "string",
@@ -53123,7 +53175,7 @@ var stepsSection = defineType13({
53123
53175
  ], layout: "radio" },
53124
53176
  initialValue: "default"
53125
53177
  }),
53126
- defineField13({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53178
+ defineField14({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53127
53179
  ],
53128
53180
  preview: {
53129
53181
  select: { title: "title", subtitle: "variant" },
@@ -53134,13 +53186,14 @@ var stepsSection = defineType13({
53134
53186
  });
53135
53187
 
53136
53188
  // ../../apps/studio/schemas/sections/team.ts
53137
- import { defineField as defineField14, defineType as defineType14 } from "sanity";
53189
+ import { defineField as defineField15, defineType as defineType14 } from "sanity";
53138
53190
  var teamSection = defineType14({
53139
53191
  name: "team",
53140
53192
  title: "Equipo",
53141
53193
  type: "object",
53142
53194
  fields: [
53143
- defineField14({
53195
+ ...sectionMediaFields,
53196
+ defineField15({
53144
53197
  name: "variant",
53145
53198
  title: "Variante",
53146
53199
  type: "string",
@@ -53155,17 +53208,17 @@ var teamSection = defineType14({
53155
53208
  initialValue: "grid",
53156
53209
  validation: (r) => r.required()
53157
53210
  }),
53158
- defineField14({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53159
- defineField14({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53160
- defineField14({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53161
- defineField14({
53211
+ defineField15({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53212
+ defineField15({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53213
+ defineField15({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53214
+ defineField15({
53162
53215
  name: "content",
53163
53216
  title: "Contenido",
53164
53217
  type: "text",
53165
53218
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53166
53219
  components: { input: TipTapEditor }
53167
53220
  }),
53168
- defineField14({
53221
+ defineField15({
53169
53222
  name: "columns",
53170
53223
  title: "Columnas (variante grilla)",
53171
53224
  type: "number",
@@ -53179,7 +53232,7 @@ var teamSection = defineType14({
53179
53232
  },
53180
53233
  initialValue: 3
53181
53234
  }),
53182
- defineField14({
53235
+ defineField15({
53183
53236
  name: "items",
53184
53237
  title: "Miembros del equipo",
53185
53238
  type: "array",
@@ -53187,18 +53240,18 @@ var teamSection = defineType14({
53187
53240
  {
53188
53241
  type: "object",
53189
53242
  fields: [
53190
- defineField14({ name: "name", title: "Nombre", type: "string", validation: (r) => r.required() }),
53191
- defineField14({ name: "role", title: "Rol / T\xEDtulo", type: "string" }),
53192
- defineField14({ name: "bio", title: "Biograf\xEDa", type: "text", rows: 3 }),
53193
- defineField14({
53243
+ defineField15({ name: "name", title: "Nombre", type: "string", validation: (r) => r.required() }),
53244
+ defineField15({ name: "role", title: "Rol / T\xEDtulo", type: "string" }),
53245
+ defineField15({ name: "bio", title: "Biograf\xEDa", type: "text", rows: 3 }),
53246
+ defineField15({
53194
53247
  name: "avatar",
53195
53248
  title: "Avatar",
53196
53249
  type: "image",
53197
53250
  options: { hotspot: true },
53198
- fields: [defineField14({ name: "alt", title: "Texto alternativo", type: "string" })]
53251
+ fields: [defineField15({ name: "alt", title: "Texto alternativo", type: "string" })]
53199
53252
  }),
53200
- defineField14({ name: "twitter", title: "URL de Twitter / X", type: "url" }),
53201
- defineField14({ name: "linkedin", title: "URL de LinkedIn", type: "url" })
53253
+ defineField15({ name: "twitter", title: "URL de Twitter / X", type: "url" }),
53254
+ defineField15({ name: "linkedin", title: "URL de LinkedIn", type: "url" })
53202
53255
  ],
53203
53256
  preview: {
53204
53257
  select: { title: "name", subtitle: "role", media: "avatar" }
@@ -53207,7 +53260,7 @@ var teamSection = defineType14({
53207
53260
  ],
53208
53261
  validation: (r) => r.required().min(1)
53209
53262
  }),
53210
- defineField14({
53263
+ defineField15({
53211
53264
  name: "background",
53212
53265
  title: "Fondo",
53213
53266
  type: "string",
@@ -53223,7 +53276,7 @@ var teamSection = defineType14({
53223
53276
  ], layout: "radio" },
53224
53277
  initialValue: "default"
53225
53278
  }),
53226
- defineField14({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53279
+ defineField15({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53227
53280
  ],
53228
53281
  preview: {
53229
53282
  select: { title: "title", subtitle: "variant" },
@@ -53234,13 +53287,14 @@ var teamSection = defineType14({
53234
53287
  });
53235
53288
 
53236
53289
  // ../../apps/studio/schemas/sections/contact.ts
53237
- import { defineField as defineField15, defineType as defineType15 } from "sanity";
53290
+ import { defineField as defineField16, defineType as defineType15 } from "sanity";
53238
53291
  var contactSection = defineType15({
53239
53292
  name: "contact",
53240
53293
  title: "Contacto",
53241
53294
  type: "object",
53242
53295
  fields: [
53243
- defineField15({
53296
+ ...sectionMediaFields,
53297
+ defineField16({
53244
53298
  name: "variant",
53245
53299
  title: "Variante",
53246
53300
  type: "string",
@@ -53254,36 +53308,36 @@ var contactSection = defineType15({
53254
53308
  initialValue: "simple",
53255
53309
  validation: (r) => r.required()
53256
53310
  }),
53257
- defineField15({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53258
- defineField15({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53259
- defineField15({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53260
- defineField15({
53311
+ defineField16({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53312
+ defineField16({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53313
+ defineField16({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53314
+ defineField16({
53261
53315
  name: "content",
53262
53316
  title: "Contenido",
53263
53317
  type: "text",
53264
53318
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53265
53319
  components: { input: TipTapEditor }
53266
53320
  }),
53267
- defineField15({
53321
+ defineField16({
53268
53322
  name: "details",
53269
53323
  title: "Datos de contacto",
53270
53324
  type: "object",
53271
53325
  fields: [
53272
- defineField15({ name: "email", title: "Correo electr\xF3nico", type: "string" }),
53273
- defineField15({ name: "phone", title: "N\xFAmero de tel\xE9fono", type: "string" }),
53274
- defineField15({ name: "address", title: "Direcci\xF3n", type: "text", rows: 2 }),
53275
- defineField15({ name: "hours", title: "Horario de atenci\xF3n", type: "string" })
53326
+ defineField16({ name: "email", title: "Correo electr\xF3nico", type: "string" }),
53327
+ defineField16({ name: "phone", title: "N\xFAmero de tel\xE9fono", type: "string" }),
53328
+ defineField16({ name: "address", title: "Direcci\xF3n", type: "text", rows: 2 }),
53329
+ defineField16({ name: "hours", title: "Horario de atenci\xF3n", type: "string" })
53276
53330
  ]
53277
53331
  }),
53278
- defineField15({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53279
- defineField15({
53332
+ defineField16({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53333
+ defineField16({
53280
53334
  name: "image",
53281
53335
  title: "Imagen (variante dividida)",
53282
53336
  type: "image",
53283
53337
  options: { hotspot: true },
53284
- fields: [defineField15({ name: "alt", title: "Texto alternativo", type: "string" })]
53338
+ fields: [defineField16({ name: "alt", title: "Texto alternativo", type: "string" })]
53285
53339
  }),
53286
- defineField15({
53340
+ defineField16({
53287
53341
  name: "background",
53288
53342
  title: "Fondo",
53289
53343
  type: "string",
@@ -53299,7 +53353,7 @@ var contactSection = defineType15({
53299
53353
  ], layout: "radio" },
53300
53354
  initialValue: "default"
53301
53355
  }),
53302
- defineField15({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53356
+ defineField16({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53303
53357
  ],
53304
53358
  preview: {
53305
53359
  select: { title: "title", subtitle: "variant" },
@@ -53310,13 +53364,14 @@ var contactSection = defineType15({
53310
53364
  });
53311
53365
 
53312
53366
  // ../../apps/studio/schemas/sections/banner.ts
53313
- import { defineField as defineField16, defineType as defineType16 } from "sanity";
53367
+ import { defineField as defineField17, defineType as defineType16 } from "sanity";
53314
53368
  var bannerSection = defineType16({
53315
53369
  name: "banner",
53316
53370
  title: "Banner",
53317
53371
  type: "object",
53318
53372
  fields: [
53319
- defineField16({
53373
+ ...sectionMediaFields,
53374
+ defineField17({
53320
53375
  name: "variant",
53321
53376
  title: "Variante",
53322
53377
  type: "string",
@@ -53330,17 +53385,17 @@ var bannerSection = defineType16({
53330
53385
  initialValue: "simple",
53331
53386
  validation: (r) => r.required()
53332
53387
  }),
53333
- defineField16({ name: "badge", title: "Chip de badge", type: "string" }),
53334
- defineField16({ name: "message", title: "Mensaje", type: "string", validation: (r) => r.required() }),
53335
- defineField16({
53388
+ defineField17({ name: "badge", title: "Chip de badge", type: "string" }),
53389
+ defineField17({ name: "message", title: "Mensaje", type: "string", validation: (r) => r.required() }),
53390
+ defineField17({
53336
53391
  name: "content",
53337
53392
  title: "Contenido adicional",
53338
53393
  type: "text",
53339
53394
  description: "Texto enriquecido opcional para mostrar junto al banner.",
53340
53395
  components: { input: TipTapEditor }
53341
53396
  }),
53342
- defineField16({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53343
- defineField16({
53397
+ defineField17({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53398
+ defineField17({
53344
53399
  name: "background",
53345
53400
  title: "Fondo",
53346
53401
  type: "string",
@@ -53356,7 +53411,7 @@ var bannerSection = defineType16({
53356
53411
  ], layout: "radio" },
53357
53412
  initialValue: "default"
53358
53413
  }),
53359
- defineField16({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53414
+ defineField17({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53360
53415
  ],
53361
53416
  preview: {
53362
53417
  select: { title: "message", subtitle: "variant" },
@@ -53367,13 +53422,14 @@ var bannerSection = defineType16({
53367
53422
  });
53368
53423
 
53369
53424
  // ../../apps/studio/schemas/sections/maps.ts
53370
- import { defineField as defineField17, defineType as defineType17 } from "sanity";
53425
+ import { defineField as defineField18, defineType as defineType17 } from "sanity";
53371
53426
  var mapsSection = defineType17({
53372
53427
  name: "maps",
53373
53428
  title: "Mapa",
53374
53429
  type: "object",
53375
53430
  fields: [
53376
- defineField17({
53431
+ ...sectionMediaFields,
53432
+ defineField18({
53377
53433
  name: "variant",
53378
53434
  title: "Variante",
53379
53435
  type: "string",
@@ -53388,7 +53444,7 @@ var mapsSection = defineType17({
53388
53444
  initialValue: "pins",
53389
53445
  validation: (r) => r.required()
53390
53446
  }),
53391
- defineField17({
53447
+ defineField18({
53392
53448
  name: "mapStyle",
53393
53449
  title: "Estilo del mapa",
53394
53450
  type: "string",
@@ -53406,17 +53462,17 @@ var mapsSection = defineType17({
53406
53462
  },
53407
53463
  initialValue: "standard"
53408
53464
  }),
53409
- defineField17({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53410
- defineField17({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53411
- defineField17({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53412
- defineField17({
53465
+ defineField18({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53466
+ defineField18({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53467
+ defineField18({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53468
+ defineField18({
53413
53469
  name: "content",
53414
53470
  title: "Contenido",
53415
53471
  type: "text",
53416
53472
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53417
53473
  components: { input: TipTapEditor }
53418
53474
  }),
53419
- defineField17({
53475
+ defineField18({
53420
53476
  name: "embedUrl",
53421
53477
  title: "URL de incrustaci\xF3n de Google Maps",
53422
53478
  type: "string",
@@ -53427,7 +53483,7 @@ var mapsSection = defineType17({
53427
53483
  return "Debe ser una URL de incrustaci\xF3n de Google Maps que empiece con https://www.google.com/maps/embed";
53428
53484
  })
53429
53485
  }),
53430
- defineField17({
53486
+ defineField18({
53431
53487
  name: "locations",
53432
53488
  title: "Ubicaciones",
53433
53489
  type: "array",
@@ -53435,18 +53491,18 @@ var mapsSection = defineType17({
53435
53491
  {
53436
53492
  type: "object",
53437
53493
  fields: [
53438
- defineField17({ name: "name", title: "Nombre", type: "string", validation: (r) => r.required() }),
53439
- defineField17({ name: "address", title: "Direcci\xF3n", type: "string" }),
53440
- defineField17({ name: "phone", title: "Tel\xE9fono", type: "string" }),
53441
- defineField17({ name: "hours", title: "Horario", type: "string" }),
53442
- defineField17({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53443
- defineField17({
53494
+ defineField18({ name: "name", title: "Nombre", type: "string", validation: (r) => r.required() }),
53495
+ defineField18({ name: "address", title: "Direcci\xF3n", type: "string" }),
53496
+ defineField18({ name: "phone", title: "Tel\xE9fono", type: "string" }),
53497
+ defineField18({ name: "hours", title: "Horario", type: "string" }),
53498
+ defineField18({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53499
+ defineField18({
53444
53500
  name: "lat",
53445
53501
  title: "Latitud (sobreescritura opcional)",
53446
53502
  type: "number",
53447
53503
  description: "Dejalo vac\xEDo \u2014 la direcci\xF3n se geocodifica autom\xE1ticamente. Solo configur\xE1 esto si necesit\xE1s marcar un punto exacto que no se encuentra por direcci\xF3n (ej: clic derecho en Google Maps \u2192 primer n\xFAmero)."
53448
53504
  }),
53449
- defineField17({
53505
+ defineField18({
53450
53506
  name: "lng",
53451
53507
  title: "Longitud (sobreescritura opcional)",
53452
53508
  type: "number",
@@ -53459,7 +53515,7 @@ var mapsSection = defineType17({
53459
53515
  }
53460
53516
  ]
53461
53517
  }),
53462
- defineField17({
53518
+ defineField18({
53463
53519
  name: "background",
53464
53520
  title: "Fondo",
53465
53521
  type: "string",
@@ -53478,7 +53534,7 @@ var mapsSection = defineType17({
53478
53534
  },
53479
53535
  initialValue: "default"
53480
53536
  }),
53481
- defineField17({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53537
+ defineField18({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53482
53538
  ],
53483
53539
  preview: {
53484
53540
  select: { title: "title", subtitle: "variant" },
@@ -53489,13 +53545,14 @@ var mapsSection = defineType17({
53489
53545
  });
53490
53546
 
53491
53547
  // ../../apps/studio/schemas/sections/iframe.ts
53492
- import { defineField as defineField18, defineType as defineType18 } from "sanity";
53548
+ import { defineField as defineField19, defineType as defineType18 } from "sanity";
53493
53549
  var iframeSection = defineType18({
53494
53550
  name: "iframe",
53495
53551
  title: "Iframe incrustado",
53496
53552
  type: "object",
53497
53553
  fields: [
53498
- defineField18({
53554
+ ...sectionMediaFields,
53555
+ defineField19({
53499
53556
  name: "variant",
53500
53557
  title: "Variante",
53501
53558
  type: "string",
@@ -53510,36 +53567,36 @@ var iframeSection = defineType18({
53510
53567
  initialValue: "simple",
53511
53568
  validation: (r) => r.required()
53512
53569
  }),
53513
- defineField18({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53514
- defineField18({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53515
- defineField18({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53516
- defineField18({
53570
+ defineField19({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53571
+ defineField19({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53572
+ defineField19({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53573
+ defineField19({
53517
53574
  name: "content",
53518
53575
  title: "Contenido",
53519
53576
  type: "text",
53520
53577
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53521
53578
  components: { input: TipTapEditor }
53522
53579
  }),
53523
- defineField18({
53580
+ defineField19({
53524
53581
  name: "src",
53525
53582
  title: "URL de incrustaci\xF3n",
53526
53583
  type: "url",
53527
53584
  description: "\u26A0\uFE0F Si esta URL contiene datos sensibles (tokens, API keys, subdominios privados), no la pegues directamente aqu\xED. Guardala como variable de entorno en .env.local (ej: NEXT_PUBLIC_EMBED_URL=https://...) y referenciala desde el c\xF3digo.",
53528
53585
  validation: (r) => r.required()
53529
53586
  }),
53530
- defineField18({
53587
+ defineField19({
53531
53588
  name: "iframeTitle",
53532
53589
  title: "T\xEDtulo del iframe (accesibilidad)",
53533
53590
  type: "string",
53534
53591
  validation: (r) => r.required()
53535
53592
  }),
53536
- defineField18({
53593
+ defineField19({
53537
53594
  name: "height",
53538
53595
  title: "Alto (px)",
53539
53596
  type: "number",
53540
53597
  initialValue: 500
53541
53598
  }),
53542
- defineField18({
53599
+ defineField19({
53543
53600
  name: "aspectRatio",
53544
53601
  title: "Relaci\xF3n de aspecto (variante responsiva)",
53545
53602
  type: "string",
@@ -53553,7 +53610,7 @@ var iframeSection = defineType18({
53553
53610
  },
53554
53611
  initialValue: "auto"
53555
53612
  }),
53556
- defineField18({
53613
+ defineField19({
53557
53614
  name: "background",
53558
53615
  title: "Fondo",
53559
53616
  type: "string",
@@ -53572,7 +53629,7 @@ var iframeSection = defineType18({
53572
53629
  },
53573
53630
  initialValue: "default"
53574
53631
  }),
53575
- defineField18({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53632
+ defineField19({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53576
53633
  ],
53577
53634
  preview: {
53578
53635
  select: { title: "title", subtitle: "variant" },
@@ -53583,13 +53640,14 @@ var iframeSection = defineType18({
53583
53640
  });
53584
53641
 
53585
53642
  // ../../apps/studio/schemas/sections/comparison.ts
53586
- import { defineField as defineField19, defineType as defineType19 } from "sanity";
53643
+ import { defineField as defineField20, defineType as defineType19 } from "sanity";
53587
53644
  var comparisonSection = defineType19({
53588
53645
  name: "comparison",
53589
53646
  title: "Comparaci\xF3n",
53590
53647
  type: "object",
53591
53648
  fields: [
53592
- defineField19({
53649
+ ...sectionMediaFields,
53650
+ defineField20({
53593
53651
  name: "variant",
53594
53652
  title: "Variante",
53595
53653
  type: "string",
@@ -53604,24 +53662,24 @@ var comparisonSection = defineType19({
53604
53662
  initialValue: "table",
53605
53663
  validation: (r) => r.required()
53606
53664
  }),
53607
- defineField19({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53608
- defineField19({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53609
- defineField19({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53610
- defineField19({
53665
+ defineField20({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53666
+ defineField20({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53667
+ defineField20({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53668
+ defineField20({
53611
53669
  name: "content",
53612
53670
  title: "Contenido",
53613
53671
  type: "text",
53614
53672
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53615
53673
  components: { input: TipTapEditor }
53616
53674
  }),
53617
- defineField19({
53675
+ defineField20({
53618
53676
  name: "allFeatures",
53619
53677
  title: "Todas las caracter\xEDsticas (lista maestra)",
53620
53678
  type: "array",
53621
53679
  of: [{ type: "string" }],
53622
53680
  description: "Lista completa de caracter\xEDsticas a comparar en todos los planes"
53623
53681
  }),
53624
- defineField19({
53682
+ defineField20({
53625
53683
  name: "columns",
53626
53684
  title: "Planes / Columnas",
53627
53685
  type: "array",
@@ -53629,14 +53687,14 @@ var comparisonSection = defineType19({
53629
53687
  {
53630
53688
  type: "object",
53631
53689
  fields: [
53632
- defineField19({ name: "name", title: "Nombre del plan", type: "string", validation: (r) => r.required() }),
53633
- defineField19({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53634
- defineField19({ name: "price", title: "Precio", type: "string" }),
53635
- defineField19({ name: "priceFrequency", title: "Frecuencia de precio (ej: mes)", type: "string" }),
53636
- defineField19({ name: "badge", title: "Badge (ej: M\xE1s popular)", type: "string" }),
53637
- defineField19({ name: "highlighted", title: "Destacar este plan", type: "boolean", initialValue: false }),
53638
- defineField19({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53639
- defineField19({
53690
+ defineField20({ name: "name", title: "Nombre del plan", type: "string", validation: (r) => r.required() }),
53691
+ defineField20({ name: "description", title: "Descripci\xF3n", type: "text", rows: 2 }),
53692
+ defineField20({ name: "price", title: "Precio", type: "string" }),
53693
+ defineField20({ name: "priceFrequency", title: "Frecuencia de precio (ej: mes)", type: "string" }),
53694
+ defineField20({ name: "badge", title: "Badge (ej: M\xE1s popular)", type: "string" }),
53695
+ defineField20({ name: "highlighted", title: "Destacar este plan", type: "boolean", initialValue: false }),
53696
+ defineField20({ name: "cta", title: "Bot\xF3n CTA", type: "ctaButton" }),
53697
+ defineField20({
53640
53698
  name: "cells",
53641
53699
  title: "Valores de celda",
53642
53700
  type: "array",
@@ -53651,7 +53709,7 @@ var comparisonSection = defineType19({
53651
53709
  ],
53652
53710
  validation: (r) => r.required().min(2)
53653
53711
  }),
53654
- defineField19({
53712
+ defineField20({
53655
53713
  name: "background",
53656
53714
  title: "Fondo",
53657
53715
  type: "string",
@@ -53670,7 +53728,7 @@ var comparisonSection = defineType19({
53670
53728
  },
53671
53729
  initialValue: "default"
53672
53730
  }),
53673
- defineField19({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53731
+ defineField20({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53674
53732
  ],
53675
53733
  preview: {
53676
53734
  select: { title: "title", subtitle: "variant" },
@@ -53681,13 +53739,14 @@ var comparisonSection = defineType19({
53681
53739
  });
53682
53740
 
53683
53741
  // ../../apps/studio/schemas/sections/duplex.ts
53684
- import { defineField as defineField20, defineType as defineType20 } from "sanity";
53742
+ import { defineField as defineField21, defineType as defineType20 } from "sanity";
53685
53743
  var duplexSection = defineType20({
53686
53744
  name: "duplex",
53687
53745
  title: "Duplex (Imagen + Texto)",
53688
53746
  type: "object",
53689
53747
  fields: [
53690
- defineField20({
53748
+ ...sectionMediaFields,
53749
+ defineField21({
53691
53750
  name: "variant",
53692
53751
  title: "Variante",
53693
53752
  type: "string",
@@ -53702,45 +53761,45 @@ var duplexSection = defineType20({
53702
53761
  initialValue: "image-left",
53703
53762
  validation: (r) => r.required()
53704
53763
  }),
53705
- defineField20({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53706
- defineField20({
53764
+ defineField21({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53765
+ defineField21({
53707
53766
  name: "heading",
53708
53767
  title: "Titular",
53709
53768
  type: "string",
53710
53769
  validation: (r) => r.required()
53711
53770
  }),
53712
- defineField20({ name: "body", title: "Texto del cuerpo", type: "text", rows: 3 }),
53713
- defineField20({
53771
+ defineField21({ name: "body", title: "Texto del cuerpo", type: "text", rows: 3 }),
53772
+ defineField21({
53714
53773
  name: "content",
53715
53774
  title: "Contenido",
53716
53775
  type: "text",
53717
53776
  description: "Texto enriquecido opcional que se muestra debajo del cuerpo de texto.",
53718
53777
  components: { input: TipTapEditor }
53719
53778
  }),
53720
- defineField20({
53779
+ defineField21({
53721
53780
  name: "image",
53722
53781
  title: "Imagen",
53723
53782
  type: "image",
53724
53783
  options: { hotspot: true },
53725
53784
  fields: [
53726
- defineField20({ name: "alt", title: "Texto alternativo", type: "string" })
53785
+ defineField21({ name: "alt", title: "Texto alternativo", type: "string" })
53727
53786
  ]
53728
53787
  }),
53729
- defineField20({
53788
+ defineField21({
53730
53789
  name: "videoUrl",
53731
53790
  title: "URL de video",
53732
53791
  type: "url",
53733
53792
  description: "Si se proporciona, se mostrar\xE1 un video en lugar de la imagen"
53734
53793
  }),
53735
- defineField20({ name: "primaryCTA", title: "Bot\xF3n CTA primario", type: "ctaButton" }),
53736
- defineField20({ name: "secondaryCTA", title: "Bot\xF3n CTA secundario", type: "ctaButton" }),
53737
- defineField20({
53794
+ defineField21({ name: "primaryCTA", title: "Bot\xF3n CTA primario", type: "ctaButton" }),
53795
+ defineField21({ name: "secondaryCTA", title: "Bot\xF3n CTA secundario", type: "ctaButton" }),
53796
+ defineField21({
53738
53797
  name: "bullets",
53739
53798
  title: "Puntos de lista",
53740
53799
  type: "array",
53741
53800
  of: [{ type: "string" }]
53742
53801
  }),
53743
- defineField20({
53802
+ defineField21({
53744
53803
  name: "background",
53745
53804
  title: "Fondo",
53746
53805
  type: "string",
@@ -53759,7 +53818,7 @@ var duplexSection = defineType20({
53759
53818
  },
53760
53819
  initialValue: "default"
53761
53820
  }),
53762
- defineField20({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53821
+ defineField21({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53763
53822
  ],
53764
53823
  preview: {
53765
53824
  select: { title: "heading", subtitle: "variant" },
@@ -53770,13 +53829,14 @@ var duplexSection = defineType20({
53770
53829
  });
53771
53830
 
53772
53831
  // ../../apps/studio/schemas/sections/richtext.ts
53773
- import { defineField as defineField21, defineType as defineType21 } from "sanity";
53832
+ import { defineField as defineField22, defineType as defineType21 } from "sanity";
53774
53833
  var richtextSection = defineType21({
53775
53834
  name: "richtext",
53776
53835
  title: "Texto enriquecido",
53777
53836
  type: "object",
53778
53837
  fields: [
53779
- defineField21({
53838
+ ...sectionMediaFields,
53839
+ defineField22({
53780
53840
  name: "variant",
53781
53841
  title: "Variante",
53782
53842
  type: "string",
@@ -53791,17 +53851,17 @@ var richtextSection = defineType21({
53791
53851
  initialValue: "centered",
53792
53852
  validation: (r) => r.required()
53793
53853
  }),
53794
- defineField21({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53795
- defineField21({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53796
- defineField21({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53797
- defineField21({
53854
+ defineField22({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53855
+ defineField22({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
53856
+ defineField22({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53857
+ defineField22({
53798
53858
  name: "content",
53799
53859
  title: "Contenido",
53800
53860
  type: "text",
53801
53861
  components: { input: TipTapEditor },
53802
53862
  validation: (r) => r.required()
53803
53863
  }),
53804
- defineField21({
53864
+ defineField22({
53805
53865
  name: "background",
53806
53866
  title: "Fondo",
53807
53867
  type: "string",
@@ -53820,7 +53880,7 @@ var richtextSection = defineType21({
53820
53880
  },
53821
53881
  initialValue: "default"
53822
53882
  }),
53823
- defineField21({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53883
+ defineField22({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53824
53884
  ],
53825
53885
  preview: {
53826
53886
  select: { title: "title", subtitle: "variant" },
@@ -53831,13 +53891,14 @@ var richtextSection = defineType21({
53831
53891
  });
53832
53892
 
53833
53893
  // ../../apps/studio/schemas/sections/video-section.ts
53834
- import { defineField as defineField22, defineType as defineType22 } from "sanity";
53894
+ import { defineField as defineField23, defineType as defineType22 } from "sanity";
53835
53895
  var videoSection = defineType22({
53836
53896
  name: "videoSection",
53837
53897
  title: "Video",
53838
53898
  type: "object",
53839
53899
  fields: [
53840
- defineField22({
53900
+ ...sectionMediaFields,
53901
+ defineField23({
53841
53902
  name: "variant",
53842
53903
  title: "Variante",
53843
53904
  type: "string",
@@ -53852,45 +53913,45 @@ var videoSection = defineType22({
53852
53913
  initialValue: "full",
53853
53914
  validation: (r) => r.required()
53854
53915
  }),
53855
- defineField22({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53856
- defineField22({ name: "title", title: "T\xEDtulo de secci\xF3n / Encabezado", type: "string" }),
53857
- defineField22({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53858
- defineField22({
53916
+ defineField23({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53917
+ defineField23({ name: "title", title: "T\xEDtulo de secci\xF3n / Encabezado", type: "string" }),
53918
+ defineField23({ name: "subtitle", title: "Subt\xEDtulo de secci\xF3n", type: "text", rows: 2 }),
53919
+ defineField23({
53859
53920
  name: "content",
53860
53921
  title: "Contenido",
53861
53922
  type: "text",
53862
53923
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53863
53924
  components: { input: TipTapEditor }
53864
53925
  }),
53865
- defineField22({
53926
+ defineField23({
53866
53927
  name: "videoUrl",
53867
53928
  title: "URL del video",
53868
53929
  type: "url",
53869
53930
  description: "Peg\xE1 una URL de YouTube, Vimeo o sub\xED un archivo de video a Sanity",
53870
53931
  validation: (r) => r.required()
53871
53932
  }),
53872
- defineField22({
53933
+ defineField23({
53873
53934
  name: "poster",
53874
53935
  title: "Imagen de poster",
53875
53936
  type: "image",
53876
53937
  options: { hotspot: true },
53877
53938
  fields: [
53878
- defineField22({ name: "alt", title: "Texto alternativo", type: "string" })
53939
+ defineField23({ name: "alt", title: "Texto alternativo", type: "string" })
53879
53940
  ]
53880
53941
  }),
53881
- defineField22({
53942
+ defineField23({
53882
53943
  name: "autoplay",
53883
53944
  title: "Reproducci\xF3n autom\xE1tica",
53884
53945
  type: "boolean",
53885
53946
  initialValue: false
53886
53947
  }),
53887
- defineField22({
53948
+ defineField23({
53888
53949
  name: "loop",
53889
53950
  title: "Repetir en bucle",
53890
53951
  type: "boolean",
53891
53952
  initialValue: false
53892
53953
  }),
53893
- defineField22({
53954
+ defineField23({
53894
53955
  name: "background",
53895
53956
  title: "Fondo",
53896
53957
  type: "string",
@@ -53909,7 +53970,7 @@ var videoSection = defineType22({
53909
53970
  },
53910
53971
  initialValue: "default"
53911
53972
  }),
53912
- defineField22({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53973
+ defineField23({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
53913
53974
  ],
53914
53975
  preview: {
53915
53976
  select: { title: "title", subtitle: "variant" },
@@ -53921,7 +53982,7 @@ var videoSection = defineType22({
53921
53982
 
53922
53983
  // ../../apps/studio/schemas/sections/event-registration.ts
53923
53984
  var import_react5 = __toESM(require_react());
53924
- import { defineField as defineField23, defineType as defineType23 } from "sanity";
53985
+ import { defineField as defineField24, defineType as defineType23 } from "sanity";
53925
53986
 
53926
53987
  // ../../apps/studio/components/note-input.tsx
53927
53988
  var import_react4 = __toESM(require_react());
@@ -53951,7 +54012,8 @@ var eventRegistrationSection = defineType23({
53951
54012
  title: "Registro de Evento",
53952
54013
  type: "object",
53953
54014
  fields: [
53954
- defineField23({
54015
+ ...sectionMediaFields,
54016
+ defineField24({
53955
54017
  name: "setupNote",
53956
54018
  title: " ",
53957
54019
  type: "string",
@@ -53962,7 +54024,7 @@ var eventRegistrationSection = defineType23({
53962
54024
  })
53963
54025
  }
53964
54026
  }),
53965
- defineField23({
54027
+ defineField24({
53966
54028
  name: "variant",
53967
54029
  title: "Variante",
53968
54030
  type: "string",
@@ -53977,17 +54039,17 @@ var eventRegistrationSection = defineType23({
53977
54039
  initialValue: "card",
53978
54040
  validation: (r) => r.required()
53979
54041
  }),
53980
- defineField23({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
53981
- defineField23({ name: "title", title: "T\xEDtulo", type: "string" }),
53982
- defineField23({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
53983
- defineField23({
54042
+ defineField24({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
54043
+ defineField24({ name: "title", title: "T\xEDtulo", type: "string" }),
54044
+ defineField24({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
54045
+ defineField24({
53984
54046
  name: "content",
53985
54047
  title: "Contenido",
53986
54048
  type: "text",
53987
54049
  description: "Texto enriquecido opcional que se muestra debajo del subt\xEDtulo.",
53988
54050
  components: { input: TipTapEditor }
53989
54051
  }),
53990
- defineField23({
54052
+ defineField24({
53991
54053
  name: "background",
53992
54054
  title: "Fondo",
53993
54055
  type: "string",
@@ -54002,14 +54064,14 @@ var eventRegistrationSection = defineType23({
54002
54064
  },
54003
54065
  initialValue: "default"
54004
54066
  }),
54005
- defineField23({
54067
+ defineField24({
54006
54068
  name: "image",
54007
54069
  title: "Imagen (variante dividida)",
54008
54070
  type: "image",
54009
54071
  options: { hotspot: true },
54010
- fields: [defineField23({ name: "alt", title: "Texto alternativo", type: "string" })]
54072
+ fields: [defineField24({ name: "alt", title: "Texto alternativo", type: "string" })]
54011
54073
  }),
54012
- defineField23({
54074
+ defineField24({
54013
54075
  name: "formId",
54014
54076
  title: "ID del formulario",
54015
54077
  type: "slug",
@@ -54018,7 +54080,7 @@ var eventRegistrationSection = defineType23({
54018
54080
  validation: (r) => r.required()
54019
54081
  }),
54020
54082
  /* ─── Campos del formulario ─── */
54021
- defineField23({
54083
+ defineField24({
54022
54084
  name: "fields",
54023
54085
  title: "Campos del formulario",
54024
54086
  type: "array",
@@ -54029,13 +54091,13 @@ var eventRegistrationSection = defineType23({
54029
54091
  name: "formField",
54030
54092
  title: "Campo",
54031
54093
  fields: [
54032
- defineField23({
54094
+ defineField24({
54033
54095
  name: "label",
54034
54096
  title: "Nombre del campo",
54035
54097
  type: "string",
54036
54098
  validation: (r) => r.required()
54037
54099
  }),
54038
- defineField23({
54100
+ defineField24({
54039
54101
  name: "fieldType",
54040
54102
  title: "Tipo",
54041
54103
  type: "string",
@@ -54055,18 +54117,18 @@ var eventRegistrationSection = defineType23({
54055
54117
  initialValue: "text",
54056
54118
  validation: (r) => r.required()
54057
54119
  }),
54058
- defineField23({
54120
+ defineField24({
54059
54121
  name: "required",
54060
54122
  title: "Obligatorio",
54061
54123
  type: "boolean",
54062
54124
  initialValue: true
54063
54125
  }),
54064
- defineField23({
54126
+ defineField24({
54065
54127
  name: "placeholder",
54066
54128
  title: "Texto de ayuda (placeholder)",
54067
54129
  type: "string"
54068
54130
  }),
54069
- defineField23({
54131
+ defineField24({
54070
54132
  name: "options",
54071
54133
  title: "Opciones (solo para tipo lista)",
54072
54134
  type: "array",
@@ -54097,19 +54159,19 @@ var eventRegistrationSection = defineType23({
54097
54159
  validation: (r) => r.min(1).error("Agreg\xE1 al menos un campo al formulario")
54098
54160
  }),
54099
54161
  /* ─── Textos ─── */
54100
- defineField23({
54162
+ defineField24({
54101
54163
  name: "buttonLabel",
54102
54164
  title: "Texto del bot\xF3n",
54103
54165
  type: "string",
54104
54166
  initialValue: "Enviar"
54105
54167
  }),
54106
- defineField23({
54168
+ defineField24({
54107
54169
  name: "successMessage",
54108
54170
  title: "Mensaje de \xE9xito",
54109
54171
  type: "string",
54110
54172
  initialValue: "\xA1Tu registro fue enviado con \xE9xito!"
54111
54173
  }),
54112
- defineField23({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
54174
+ defineField24({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
54113
54175
  ],
54114
54176
  preview: {
54115
54177
  select: { title: "title", variant: "variant" },
@@ -54121,13 +54183,14 @@ var eventRegistrationSection = defineType23({
54121
54183
 
54122
54184
  // ../../apps/studio/schemas/sections/newsletter.ts
54123
54185
  var import_react6 = __toESM(require_react());
54124
- import { defineField as defineField24, defineType as defineType24 } from "sanity";
54186
+ import { defineField as defineField25, defineType as defineType24 } from "sanity";
54125
54187
  var newsletterSection = defineType24({
54126
54188
  name: "newsletter",
54127
54189
  title: "Newsletter",
54128
54190
  type: "object",
54129
54191
  fields: [
54130
- defineField24({
54192
+ ...sectionMediaFields,
54193
+ defineField25({
54131
54194
  name: "setupNote",
54132
54195
  title: " ",
54133
54196
  type: "string",
@@ -54138,7 +54201,7 @@ var newsletterSection = defineType24({
54138
54201
  })
54139
54202
  }
54140
54203
  }),
54141
- defineField24({
54204
+ defineField25({
54142
54205
  name: "variant",
54143
54206
  title: "Variante",
54144
54207
  type: "string",
@@ -54153,17 +54216,17 @@ var newsletterSection = defineType24({
54153
54216
  initialValue: "centered",
54154
54217
  validation: (r) => r.required()
54155
54218
  }),
54156
- defineField24({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
54157
- defineField24({ name: "title", title: "T\xEDtulo", type: "string" }),
54158
- defineField24({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
54159
- defineField24({
54219
+ defineField25({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
54220
+ defineField25({ name: "title", title: "T\xEDtulo", type: "string" }),
54221
+ defineField25({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
54222
+ defineField25({
54160
54223
  name: "content",
54161
54224
  title: "Contenido",
54162
54225
  type: "text",
54163
54226
  description: "Texto enriquecido que se muestra debajo del subt\xEDtulo.",
54164
54227
  components: { input: TipTapEditor }
54165
54228
  }),
54166
- defineField24({
54229
+ defineField25({
54167
54230
  name: "background",
54168
54231
  title: "Fondo",
54169
54232
  type: "string",
@@ -54178,25 +54241,25 @@ var newsletterSection = defineType24({
54178
54241
  },
54179
54242
  initialValue: "default"
54180
54243
  }),
54181
- defineField24({
54244
+ defineField25({
54182
54245
  name: "placeholder",
54183
54246
  title: "Placeholder del campo email",
54184
54247
  type: "string",
54185
54248
  initialValue: "tu@email.com"
54186
54249
  }),
54187
- defineField24({
54250
+ defineField25({
54188
54251
  name: "buttonLabel",
54189
54252
  title: "Texto del bot\xF3n",
54190
54253
  type: "string",
54191
54254
  initialValue: "Suscribirme"
54192
54255
  }),
54193
- defineField24({
54256
+ defineField25({
54194
54257
  name: "successMessage",
54195
54258
  title: "Mensaje de \xE9xito",
54196
54259
  type: "string",
54197
54260
  initialValue: "\xA1Gracias! Te avisamos cuando haya novedades."
54198
54261
  }),
54199
- defineField24({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
54262
+ defineField25({ name: "id", title: "ID / Anchor", type: "string", description: 'ID de la secci\xF3n para anclas de scroll (ej: "contacto"). Los botones con href="#contacto" scrollear\xE1n aqu\xED.' })
54200
54263
  ],
54201
54264
  preview: {
54202
54265
  select: { title: "title", variant: "variant" },
@@ -54210,13 +54273,14 @@ var newsletterSection = defineType24({
54210
54273
  });
54211
54274
 
54212
54275
  // ../../apps/studio/schemas/sections/downloads.ts
54213
- import { defineField as defineField25, defineType as defineType25 } from "sanity";
54276
+ import { defineField as defineField26, defineType as defineType25 } from "sanity";
54214
54277
  var downloadsSection = defineType25({
54215
54278
  name: "downloads",
54216
54279
  title: "Descargas",
54217
54280
  type: "object",
54218
54281
  fields: [
54219
- defineField25({
54282
+ ...sectionMediaFields,
54283
+ defineField26({
54220
54284
  name: "variant",
54221
54285
  title: "Variante",
54222
54286
  type: "string",
@@ -54231,10 +54295,10 @@ var downloadsSection = defineType25({
54231
54295
  initialValue: "grouped",
54232
54296
  validation: (r) => r.required()
54233
54297
  }),
54234
- defineField25({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
54235
- defineField25({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
54236
- defineField25({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
54237
- defineField25({
54298
+ defineField26({ name: "badge", title: "Etiqueta / Badge", type: "string" }),
54299
+ defineField26({ name: "title", title: "T\xEDtulo de secci\xF3n", type: "string" }),
54300
+ defineField26({ name: "subtitle", title: "Subt\xEDtulo", type: "text", rows: 2 }),
54301
+ defineField26({
54238
54302
  name: "groups",
54239
54303
  title: "Grupos de archivos",
54240
54304
  type: "array",
@@ -54242,14 +54306,14 @@ var downloadsSection = defineType25({
54242
54306
  {
54243
54307
  type: "object",
54244
54308
  fields: [
54245
- defineField25({
54309
+ defineField26({
54246
54310
  name: "title",
54247
54311
  title: "Nombre del grupo",
54248
54312
  type: "string",
54249
54313
  description: 'Ej: "Carrera 1", "Formularios 2024"',
54250
54314
  validation: (r) => r.required()
54251
54315
  }),
54252
- defineField25({
54316
+ defineField26({
54253
54317
  name: "files",
54254
54318
  title: "Archivos",
54255
54319
  type: "array",
@@ -54257,14 +54321,14 @@ var downloadsSection = defineType25({
54257
54321
  {
54258
54322
  type: "object",
54259
54323
  fields: [
54260
- defineField25({
54324
+ defineField26({
54261
54325
  name: "label",
54262
54326
  title: "Etiqueta del archivo",
54263
54327
  type: "string",
54264
54328
  description: "Nombre visible para el usuario",
54265
54329
  validation: (r) => r.required()
54266
54330
  }),
54267
- defineField25({
54331
+ defineField26({
54268
54332
  name: "file",
54269
54333
  title: "Archivo",
54270
54334
  type: "file",
@@ -54299,7 +54363,7 @@ var downloadsSection = defineType25({
54299
54363
  ],
54300
54364
  validation: (r) => r.required().min(1)
54301
54365
  }),
54302
- defineField25({
54366
+ defineField26({
54303
54367
  name: "background",
54304
54368
  title: "Fondo",
54305
54369
  type: "string",
@@ -54318,7 +54382,7 @@ var downloadsSection = defineType25({
54318
54382
  },
54319
54383
  initialValue: "default"
54320
54384
  }),
54321
- defineField25({
54385
+ defineField26({
54322
54386
  name: "id",
54323
54387
  title: "ID / Anchor",
54324
54388
  type: "string",
@@ -54338,29 +54402,89 @@ var downloadsSection = defineType25({
54338
54402
  });
54339
54403
 
54340
54404
  // ../../apps/studio/schemas/documents/site-settings.ts
54341
- import { defineField as defineField26, defineType as defineType26 } from "sanity";
54405
+ import { defineField as defineField27, defineType as defineType26 } from "sanity";
54406
+
54407
+ // ../../apps/studio/components/color-input.tsx
54408
+ var import_react7 = __toESM(require_react());
54409
+ import { set as set2, unset as unset2 } from "sanity";
54410
+ function ColorInput({ value, onChange }) {
54411
+ const handleChange = (0, import_react7.useCallback)(
54412
+ (e) => {
54413
+ const val = e.currentTarget.value;
54414
+ onChange(val ? set2(val) : unset2());
54415
+ },
54416
+ [onChange]
54417
+ );
54418
+ const handleClear = (0, import_react7.useCallback)(() => onChange(unset2()), [onChange]);
54419
+ const raw = value;
54420
+ if (raw !== void 0 && typeof raw !== "string") {
54421
+ return /* @__PURE__ */ import_react7.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } }, /* @__PURE__ */ import_react7.default.createElement("span", { style: { fontSize: 12, color: "var(--card-muted-fg-color, #888)" } }, "Formato incompatible"), /* @__PURE__ */ import_react7.default.createElement(
54422
+ "button",
54423
+ {
54424
+ type: "button",
54425
+ onClick: handleClear,
54426
+ style: {
54427
+ fontSize: 12,
54428
+ padding: "4px 10px",
54429
+ cursor: "pointer",
54430
+ borderRadius: 4,
54431
+ border: "1px solid var(--card-border-color, #e2e2e2)",
54432
+ background: "none",
54433
+ color: "inherit"
54434
+ }
54435
+ },
54436
+ "Limpiar"
54437
+ ));
54438
+ }
54439
+ return /* @__PURE__ */ import_react7.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } }, /* @__PURE__ */ import_react7.default.createElement(
54440
+ "input",
54441
+ {
54442
+ type: "color",
54443
+ value: value || "#000000",
54444
+ onChange: handleChange,
54445
+ style: {
54446
+ width: 44,
54447
+ height: 36,
54448
+ padding: 2,
54449
+ cursor: "pointer",
54450
+ borderRadius: 6,
54451
+ border: "1px solid var(--card-border-color, #e2e2e2)",
54452
+ background: "none",
54453
+ flexShrink: 0
54454
+ }
54455
+ }
54456
+ ), /* @__PURE__ */ import_react7.default.createElement("code", { style: { fontSize: 12, color: "var(--card-muted-fg-color, #888)" } }, value || "\u2014"));
54457
+ }
54458
+
54459
+ // ../../apps/studio/schemas/documents/site-settings.ts
54342
54460
  var siteSettings = defineType26({
54343
54461
  name: "siteSettings",
54344
54462
  title: "Configuraci\xF3n del sitio",
54345
54463
  type: "document",
54346
54464
  fields: [
54347
- defineField26({ name: "siteName", title: "Nombre del sitio", type: "string", validation: (r) => r.required() }),
54348
- defineField26({
54465
+ defineField27({ name: "siteName", title: "Nombre del sitio", type: "string", validation: (r) => r.required() }),
54466
+ defineField27({
54349
54467
  name: "logo",
54350
54468
  title: "Logo",
54351
54469
  type: "image",
54352
54470
  options: { hotspot: true },
54353
54471
  fields: [
54354
- defineField26({ name: "alt", title: "Texto alternativo", type: "string" })
54472
+ defineField27({ name: "alt", title: "Texto alternativo", type: "string" })
54355
54473
  ]
54356
54474
  }),
54475
+ defineField27({
54476
+ name: "favicon",
54477
+ title: "Favicon",
54478
+ description: "\xCDcono que aparece en la pesta\xF1a del navegador. Recomendado: PNG cuadrado de 32\xD732 o 64\xD764 px (o SVG).",
54479
+ type: "image"
54480
+ }),
54357
54481
  /* ─── Theme ─── */
54358
- defineField26({
54482
+ defineField27({
54359
54483
  name: "theme",
54360
54484
  title: "Tema",
54361
54485
  type: "object",
54362
54486
  fields: [
54363
- defineField26({
54487
+ defineField27({
54364
54488
  name: "mode",
54365
54489
  title: "Modo de color",
54366
54490
  type: "string",
@@ -54374,7 +54498,7 @@ var siteSettings = defineType26({
54374
54498
  },
54375
54499
  initialValue: "light"
54376
54500
  }),
54377
- defineField26({
54501
+ defineField27({
54378
54502
  name: "palette",
54379
54503
  title: "Paleta de colores",
54380
54504
  type: "string",
@@ -54394,26 +54518,26 @@ var siteSettings = defineType26({
54394
54518
  },
54395
54519
  initialValue: "default"
54396
54520
  }),
54397
- defineField26({
54521
+ defineField27({
54398
54522
  name: "customPalette",
54399
- title: "Paleta personalizada (valores HSL, ej: 221 83% 53%)",
54523
+ title: "Paleta personalizada",
54400
54524
  type: "object",
54401
54525
  hidden: ({ parent }) => parent?.palette !== "custom",
54402
54526
  fields: [
54403
- defineField26({ name: "primary", title: "Primario (HSL)", type: "string" }),
54404
- defineField26({ name: "primaryForeground", title: "Primer plano primario (HSL)", type: "string" }),
54405
- defineField26({ name: "secondary", title: "Secundario (HSL)", type: "string" }),
54406
- defineField26({ name: "secondaryForeground", title: "Primer plano secundario (HSL)", type: "string" }),
54407
- defineField26({ name: "accent", title: "Acento (HSL)", type: "string" }),
54408
- defineField26({ name: "accentForeground", title: "Primer plano de acento (HSL)", type: "string" }),
54409
- defineField26({ name: "background", title: "Fondo (HSL)", type: "string" }),
54410
- defineField26({ name: "foreground", title: "Primer plano (HSL)", type: "string" }),
54411
- defineField26({ name: "muted", title: "Suave (HSL)", type: "string" }),
54412
- defineField26({ name: "mutedForeground", title: "Primer plano suave (HSL)", type: "string" }),
54413
- defineField26({ name: "border", title: "Borde (HSL)", type: "string" })
54527
+ defineField27({ name: "primary", title: "Primario", type: "string", components: { input: ColorInput } }),
54528
+ defineField27({ name: "primaryForeground", title: "Primer plano primario", type: "string", components: { input: ColorInput } }),
54529
+ defineField27({ name: "secondary", title: "Secundario", type: "string", components: { input: ColorInput } }),
54530
+ defineField27({ name: "secondaryForeground", title: "Primer plano secundario", type: "string", components: { input: ColorInput } }),
54531
+ defineField27({ name: "accent", title: "Acento", type: "string", components: { input: ColorInput } }),
54532
+ defineField27({ name: "accentForeground", title: "Primer plano de acento", type: "string", components: { input: ColorInput } }),
54533
+ defineField27({ name: "background", title: "Fondo", type: "string", components: { input: ColorInput } }),
54534
+ defineField27({ name: "foreground", title: "Primer plano", type: "string", components: { input: ColorInput } }),
54535
+ defineField27({ name: "muted", title: "Suave", type: "string", components: { input: ColorInput } }),
54536
+ defineField27({ name: "mutedForeground", title: "Primer plano suave", type: "string", components: { input: ColorInput } }),
54537
+ defineField27({ name: "border", title: "Borde", type: "string", components: { input: ColorInput } })
54414
54538
  ]
54415
54539
  }),
54416
- defineField26({
54540
+ defineField27({
54417
54541
  name: "radius",
54418
54542
  title: "Radio de borde (rem)",
54419
54543
  description: "0 = anguloso, 0.5 = predeterminado, 1 = muy redondeado",
@@ -54424,7 +54548,7 @@ var siteSettings = defineType26({
54424
54548
  ]
54425
54549
  }),
54426
54550
  /* ─── Layout ─── */
54427
- defineField26({
54551
+ defineField27({
54428
54552
  name: "layoutVariant",
54429
54553
  title: "Dise\xF1o",
54430
54554
  type: "string",
@@ -54441,7 +54565,7 @@ var siteSettings = defineType26({
54441
54565
  },
54442
54566
  initialValue: "default"
54443
54567
  }),
54444
- defineField26({
54568
+ defineField27({
54445
54569
  name: "headerVariant",
54446
54570
  title: "Encabezado",
54447
54571
  type: "string",
@@ -54459,7 +54583,7 @@ var siteSettings = defineType26({
54459
54583
  },
54460
54584
  initialValue: "default"
54461
54585
  }),
54462
- defineField26({
54586
+ defineField27({
54463
54587
  name: "footerVariant",
54464
54588
  title: "Pie de p\xE1gina",
54465
54589
  type: "string",
@@ -54473,13 +54597,27 @@ var siteSettings = defineType26({
54473
54597
  },
54474
54598
  initialValue: "default"
54475
54599
  }),
54600
+ defineField27({
54601
+ name: "notFoundVariant",
54602
+ title: "P\xE1gina 404",
54603
+ type: "string",
54604
+ options: {
54605
+ list: [
54606
+ { title: "Centrado \u2014 gran n\xFAmero 404 centrado en pantalla", value: "centered" },
54607
+ { title: "Dividido \u2014 branding a la izquierda, mensaje a la derecha", value: "split" },
54608
+ { title: "Minimalista \u2014 solo texto, sin decoraci\xF3n", value: "minimal" }
54609
+ ],
54610
+ layout: "radio"
54611
+ },
54612
+ initialValue: "centered"
54613
+ }),
54476
54614
  /* ─── Navigation ─── */
54477
- defineField26({
54615
+ defineField27({
54478
54616
  name: "navigation",
54479
54617
  title: "Navegaci\xF3n",
54480
54618
  type: "object",
54481
54619
  fields: [
54482
- defineField26({
54620
+ defineField27({
54483
54621
  name: "links",
54484
54622
  title: "Enlaces de navegaci\xF3n",
54485
54623
  type: "array",
@@ -54487,8 +54625,8 @@ var siteSettings = defineType26({
54487
54625
  {
54488
54626
  type: "object",
54489
54627
  fields: [
54490
- defineField26({ name: "label", title: "Etiqueta", type: "string" }),
54491
- defineField26({ name: "href", title: "Href", type: "string" })
54628
+ defineField27({ name: "label", title: "Etiqueta", type: "string" }),
54629
+ defineField27({ name: "href", title: "Href", type: "string" })
54492
54630
  ],
54493
54631
  preview: { select: { title: "label", subtitle: "href" } }
54494
54632
  }
@@ -54497,14 +54635,14 @@ var siteSettings = defineType26({
54497
54635
  ]
54498
54636
  }),
54499
54637
  /* ─── Footer ─── */
54500
- defineField26({
54638
+ defineField27({
54501
54639
  name: "footer",
54502
54640
  title: "Pie de p\xE1gina",
54503
54641
  type: "object",
54504
54642
  fields: [
54505
- defineField26({ name: "text", title: "Texto del pie / copyright", type: "string" }),
54506
- defineField26({ name: "description", title: "Descripci\xF3n del pie (variante columnas)", type: "string" }),
54507
- defineField26({
54643
+ defineField27({ name: "text", title: "Texto del pie / copyright", type: "string" }),
54644
+ defineField27({ name: "description", title: "Descripci\xF3n del pie (variante columnas)", type: "string" }),
54645
+ defineField27({
54508
54646
  name: "links",
54509
54647
  title: "Enlaces del pie",
54510
54648
  type: "array",
@@ -54512,14 +54650,14 @@ var siteSettings = defineType26({
54512
54650
  {
54513
54651
  type: "object",
54514
54652
  fields: [
54515
- defineField26({ name: "label", title: "Etiqueta", type: "string" }),
54516
- defineField26({ name: "href", title: "Href", type: "string" })
54653
+ defineField27({ name: "label", title: "Etiqueta", type: "string" }),
54654
+ defineField27({ name: "href", title: "Href", type: "string" })
54517
54655
  ],
54518
54656
  preview: { select: { title: "label", subtitle: "href" } }
54519
54657
  }
54520
54658
  ]
54521
54659
  }),
54522
- defineField26({
54660
+ defineField27({
54523
54661
  name: "columns",
54524
54662
  title: "Columnas de enlaces (variante columnas)",
54525
54663
  type: "array",
@@ -54527,8 +54665,8 @@ var siteSettings = defineType26({
54527
54665
  {
54528
54666
  type: "object",
54529
54667
  fields: [
54530
- defineField26({ name: "title", title: "T\xEDtulo de columna", type: "string" }),
54531
- defineField26({
54668
+ defineField27({ name: "title", title: "T\xEDtulo de columna", type: "string" }),
54669
+ defineField27({
54532
54670
  name: "links",
54533
54671
  title: "Enlaces",
54534
54672
  type: "array",
@@ -54536,8 +54674,8 @@ var siteSettings = defineType26({
54536
54674
  {
54537
54675
  type: "object",
54538
54676
  fields: [
54539
- defineField26({ name: "label", title: "Etiqueta", type: "string" }),
54540
- defineField26({ name: "href", title: "Href", type: "string" })
54677
+ defineField27({ name: "label", title: "Etiqueta", type: "string" }),
54678
+ defineField27({ name: "href", title: "Href", type: "string" })
54541
54679
  ],
54542
54680
  preview: { select: { title: "label", subtitle: "href" } }
54543
54681
  }