{"version":3,"file":"index-F9BA3dKE.cjs","sources":["../src/schemas/templates/menu.ts","../src/schemas/templates/hero-beneficios.ts","../src/schemas/templates/home-page-v1.ts","../src/schemas/templates/index.ts"],"sourcesContent":["import type { LandingPageTemplate } from '../types';\n\n/**\n * Template: Menu\n *\n * Template para menús de restaurante con secciones, items y combos.\n * Ideal para menús navideños o especiales con estructura compleja.\n */\nexport const menuTemplate: LandingPageTemplate = {\n  name: 'Menú de comida',\n  slug: 'menu',\n  schema: {\n    fields: [\n      {\n        name: 'imageUrl',\n        label: 'URL del logo/imagen (opcional)',\n        type: 'string',\n        required: false,\n      },\n      {\n        name: 'headerTitle',\n        label: 'Título del encabezado',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'headerSubtitle',\n        label: 'Subtítulo del encabezado',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'headerText',\n        label: 'Texto del encabezado',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'menuSectionTitle',\n        label: 'Título de la sección de menú',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'combosTitle',\n        label: 'Título de la sección de combos',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'menuSections',\n        label: 'Secciones del Menú',\n        type: 'array_object',\n        required: true,\n        objectFields: [\n          {\n            name: 'title',\n            label: 'Título de sección',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'items',\n            label: 'Items de la sección',\n            type: 'array_object',\n            required: true,\n            objectFields: [\n              {\n                name: 'name',\n                label: 'Nombre del plato',\n                type: 'string',\n                required: true,\n              },\n              {\n                name: 'details',\n                label: 'Detalles del plato',\n                type: 'string',\n                required: false,\n              },\n              {\n                name: 'priceSmall',\n                label: 'Precio pequeño',\n                type: 'string',\n                required: false,\n              },\n              {\n                name: 'priceLarge',\n                label: 'Precio grande',\n                type: 'string',\n                required: false,\n              },\n              {\n                name: 'price',\n                label: 'Precio',\n                type: 'string',\n                required: false,\n              },\n            ],\n          },\n        ],\n      },\n      {\n        name: 'combos',\n        label: 'Combos',\n        type: 'array_object',\n        required: false,\n        objectFields: [\n          {\n            name: 'name',\n            label: 'Nombre del combo',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'price',\n            label: 'Precio del combo',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'items',\n            label: 'Items del combo',\n            type: 'array_string',\n            required: true,\n          },\n        ],\n      },\n      {\n        name: 'footerTitle',\n        label: 'Título del footer',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'footerItems',\n        label: 'Items del footer',\n        type: 'array_object',\n        required: true,\n        objectFields: [\n          {\n            name: 'title',\n            label: 'Título',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'titleStrong',\n            label: 'Título destacado',\n            type: 'string',\n            required: true,\n          },\n        ],\n      },\n      {\n        name: 'footerCtaButtons',\n        label: 'Botones de acción del footer',\n        type: 'array_object',\n        required: true,\n        objectFields: [\n          {\n            name: 'text',\n            label: 'Texto del botón',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'href',\n            label: 'URL o acción',\n            type: 'string',\n            required: true,\n          },\n        ],\n      },\n      {\n        name: 'footerText',\n        label: 'Texto del footer',\n        type: 'string',\n        required: true,\n      },\n    ],\n  },\n};\n\n/**\n * TypeScript types para el content del template Menu\n * Estos tipos se generan automáticamente basándose en el schema\n */\n\nexport interface MenuItem {\n  name: string;\n  details?: string;\n  priceSmall?: string;\n  priceLarge?: string;\n  price?: string;\n}\n\nexport interface MenuSection {\n  title: string;\n  items: MenuItem[];\n}\n\nexport interface Combo {\n  name: string;\n  price: string;\n  items: string[];\n}\n\nexport interface FooterItem {\n  title: string;\n  titleStrong: string;\n}\n\nexport interface CTAButton {\n  text: string;\n  href: string;\n}\n\nexport interface MenuTemplateContent {\n  imageUrl?: string;\n  headerTitle: string;\n  headerSubtitle: string;\n  headerText: string;\n  menuSectionTitle: string;\n  combosTitle: string;\n  menuSections: MenuSection[];\n  combos?: Combo[];\n  footerTitle: string;\n  footerItems: FooterItem[];\n  footerCtaButtons: CTAButton[];\n  footerText: string;\n}\n","import type { LandingPageTemplate } from '../types';\n\n/**\n * Template: Hero con Beneficios\n *\n * Template ideal para páginas de servicios que quieren mostrar\n * un título principal con un listado de ventajas o beneficios.\n */\nexport const heroBeneficiosTemplate: LandingPageTemplate = {\n  name: 'Hero con Beneficios',\n  slug: 'servicios-hero-beneficios',\n  schema: {\n    fields: [\n      {\n        name: 'title',\n        label: 'Título principal',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'titleP',\n        label: 'Párrafo del título',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'subtitle',\n        label: 'Subtítulo',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'subtitleP',\n        label: 'Párrafo del subtítulo',\n        type: 'string',\n        required: false,\n      },\n      {\n        name: 'ventajas',\n        label: 'Ventajas',\n        type: 'array_string',\n        required: false,\n      },\n      {\n        name: 'ctas',\n        label: 'Llamados a la acción',\n        type: 'array_object',\n        required: false,\n        objectFields: [\n          {\n            name: 'text',\n            label: 'Texto del botón',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'url',\n            label: 'URL o acción',\n            type: 'string',\n            required: false,\n          },\n        ],\n      },\n    ],\n  },\n};\n\n/**\n * TypeScript types para el content del template Hero con Beneficios\n */\nexport interface HeroConBeneficiosContent {\n  title: string;\n  titleP: string;\n  subtitle: string;\n  subtitleP?: string;\n  ventajas?: string[];\n  ctas?: Array<{\n    text: string;\n    url?: string;\n  }>;\n}\n","import type { LandingPageTemplate } from '../types';\n\n/**\n * Template para Home Page V1\n *\n * Estructura:\n * - Hero Section: Título grande + subtítulo + CTA button\n * - Second Section: Título + subtítulo + 3 bloques de navegación\n *\n * Los 3 bloques llevan a:\n * - Servicios (/servicios)\n * - Blog (/blog)\n * - Agendar Cita (/agendar-cita)\n */\nexport const homePageV1Template: LandingPageTemplate = {\n  name: 'Crea tu homepage',\n  slug: 'home-page-v1',\n  schema: {\n    fields: [\n      // === HERO SECTION ===\n      {\n        name: 'heroTitle',\n        label: 'Hero - Título principal',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'heroSubtitle',\n        label: 'Hero - Subtítulo',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'heroCtaText',\n        label: 'Hero - Texto del botón CTA',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'heroCtaUrl',\n        label: 'Hero - URL del botón CTA',\n        type: 'string',\n        required: false,\n      },\n\n      // === SECOND SECTION ===\n      {\n        name: 'secondTitle',\n        label: 'Segunda sección - Título',\n        type: 'string',\n        required: true,\n      },\n      {\n        name: 'secondSubtitle',\n        label: 'Segunda sección - Subtítulo',\n        type: 'string',\n        required: true,\n      },\n\n      // === 3 BLOQUES DE NAVEGACIÓN ===\n      {\n        name: 'navigationBlocks',\n        label: 'Bloques de navegación (3 bloques)',\n        type: 'array_object',\n        required: true,\n        objectFields: [\n          {\n            name: 'title',\n            label: 'Título del bloque',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'subtitle',\n            label: 'Subtítulo del bloque',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'linkUrl',\n            label: 'URL del enlace',\n            type: 'string',\n            required: true,\n          },\n          {\n            name: 'linkText',\n            label: 'Texto del enlace',\n            type: 'string',\n            required: false,\n          },\n        ],\n      },\n    ],\n  },\n};\n\n/**\n * TypeScript types para el content del template Home Page V1\n */\nexport interface HomePageV1Content {\n  // === HERO SECTION ===\n  heroTitle: string;\n  heroSubtitle: string;\n  heroCtaText: string;\n  heroCtaUrl?: string;\n\n  // === SECOND SECTION ===\n  secondTitle: string;\n  secondSubtitle: string;\n\n  // === 3 BLOQUES DE NAVEGACIÓN ===\n  navigationBlocks: Array<{\n    title: string;\n    subtitle: string;\n    linkUrl: string;\n    linkText?: string;\n  }>;\n}\n","/**\n * Exporta todos los templates disponibles\n */\n\nexport * from './menu';\nexport * from './hero-beneficios';\nexport * from './home-page-v1';\n\nimport { menuTemplate } from './menu';\nimport { heroBeneficiosTemplate } from './hero-beneficios';\nimport { homePageV1Template } from './home-page-v1';\nimport type { LandingPageTemplate } from '../types';\n\n/**\n * Array con todos los templates disponibles\n * Útil para iterar sobre todos los templates (ej: en seeds del backend)\n */\nexport const allTemplates: LandingPageTemplate[] = [\n  menuTemplate,\n  heroBeneficiosTemplate,\n  homePageV1Template,\n];\n\n/**\n * Mapa de templates por slug\n * Útil para obtener un template específico por su slug\n */\nexport const templatesBySlug: Record<string, LandingPageTemplate> = {\n  [menuTemplate.slug]: menuTemplate,\n  [heroBeneficiosTemplate.slug]: heroBeneficiosTemplate,\n  [homePageV1Template.slug]: homePageV1Template,\n};\n"],"names":["menuTemplate","heroBeneficiosTemplate","homePageV1Template","allTemplates","templatesBySlug"],"mappings":"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"}