import { config, collection, fields } from '@keystatic/core';

export default config({
  storage: {
    kind: 'local',
  },
  ui: {
    brand: {
      name: 'Admin Renacer',
    },
  },
  collections: {
    programas: collection({
      label: 'Programas',
      slugField: 'nombre',
      path: 'src/content/programas/*',
      format: { data: 'yaml' },
      schema: {
        nombre: fields.slug({
          name: { label: 'Nombre del programa' },
          slug: { label: 'Slug (URL)' },
        }),

        // ── Tarjeta en el landing ─────────────────────────────────────
        estado: fields.select({
          label: 'Estado',
          options: [
            { label: 'Activo', value: 'Activo' },
            { label: 'Vacaciones', value: 'Vacaciones' },
            { label: 'Anual', value: 'Anual' },
            { label: 'Temporada', value: 'Temporada' },
            { label: 'En planificación', value: 'En planificación' },
          ],
          defaultValue: 'Activo',
        }),
        bajada: fields.text({
          label: 'Resumen corto (opcional)',
          description: 'Campo editorial secundario. Ya no se muestra en la tarjeta pública.',
        }),
        detalle: fields.text({
          label: 'Descripción breve',
          description: 'Texto que sí aparece en la tarjeta del landing, bajo el título.',
          multiline: true,
          validation: { isRequired: true },
        }),
        icono: fields.select({
          label: 'Icono de la tarjeta',
          description: 'Se muestra dentro del círculo de la tarjeta del programa.',
          options: [
            { label: 'Manos y apoyo', value: 'HeartHandshake' },
            { label: 'Alimentación', value: 'UtensilsCrossed' },
            { label: 'Canasta / apoyo', value: 'Package' },
            { label: 'Vestimenta', value: 'Shirt' },
            { label: 'Naturaleza', value: 'Sprout' },
            { label: 'Regalo / campaña', value: 'Gift' },
            { label: 'Juego e infancia', value: 'Puzzle' },
            { label: 'Comunidad', value: 'Users' },
            { label: 'Inclusión', value: 'HandHelping' },
          ],
          defaultValue: 'HeartHandshake',
        }),
        orden: fields.integer({
          label: 'Orden en landing',
          description: 'Número de posición (menor = primero). Ej: 1, 2, 3…',
          defaultValue: 99,
          validation: { isRequired: true },
        }),

        // ── Configuración de página ───────────────────────────────────
        tienePagina: fields.checkbox({
          label: '¿Tiene página propia?',
          description: 'Desmarcar para programas en planificación sin página',
          defaultValue: true,
        }),
        externalHref: fields.text({
          label: 'URL externa o personalizada (opcional)',
          description: 'Déjalo vacío para usar automáticamente /programas/slug/.',
        }),

        // ── Contenido de la página ────────────────────────────────────
        kicker: fields.text({
          label: 'Kicker (nombre corto para la página)',
          description: 'Aparece sobre el título principal',
        }),
        titulo: fields.text({
          label: 'Título de la página',
          description: 'Título largo y descriptivo',
        }),
        lead: fields.text({
          label: 'Párrafo introductorio (lead)',
          description: 'Párrafo destacado que aparece bajo el título',
          multiline: true,
        }),
        parrafos: fields.array(
          fields.text({ label: 'Párrafo', multiline: true }),
          {
            label: 'Párrafos del cuerpo',
            description: 'Agrega los párrafos del contenido principal',
            itemLabel: (props) => {
              const val = props.value ?? '';
              return val.length > 60 ? val.slice(0, 60) + '…' : val || 'Párrafo vacío';
            },
          }
        ),
        stats: fields.array(
          fields.object({
            valor: fields.text({ label: 'Valor o cifra' }),
            etiqueta: fields.text({ label: 'Descripción' }),
          }),
          {
            label: 'Estadísticas (idealmente 4)',
            description: 'Datos clave del programa en formato cifra + descripción',
            itemLabel: (props) => props.fields.valor.value || 'Estadística',
          }
        ),
        textoApoyo: fields.text({
          label: 'Texto de apoyo / cómo colaborar',
          description: 'Texto que aparece en la sección final de la página',
          multiline: true,
        }),
        imagen: fields.image({
          label: 'Imagen principal (opcional)',
          description: 'Portada del hero para la página del programa',
          directory: 'public/uploads/programas',
          publicPath: '/uploads/programas/',
        }),
        galeria: fields.array(
          fields.image({
            label: 'Imagen de galería',
            directory: 'public/uploads/programas',
            publicPath: '/uploads/programas/',
          }),
          {
            label: 'Galería (opcional)',
            description: 'Imágenes secundarias para mostrar debajo del contenido',
            itemLabel: (props) => props.value?.split('/').pop() ?? 'Imagen',
          }
        ),
      },
    }),
  },
});
