393f6b0dc3
- Arista Pro Alternate Regular self-hosted (font corporativa) - Toggle theme con CSS variables y @custom-variant dark - 6 servicios en 3 categorías (Hosting & Correo / Diseño & Contenido / Infraestructura) - 3 planes destacados (Básico USD 59, Institucional USD 129, E-commerce USD 219) - Datacenters en 4 países (Canadá, USA, Alemania, Uruguay) sin ciudades en el sitio - Sede operativa en Maldonado, Uruguay - i18n es/en con contenido duplicado en Keystatic - Endpoint PHP para form de contacto con PHPMailer + reCAPTCHA v3 + honeypot + rate limit - WorldMap con animación SVG de los 4 países - 29 páginas generadas, 0 JS por default - Sitemap auto + robots.txt - JSON-LD Organization + ProfessionalService con areaServed
98 lines
3.6 KiB
TypeScript
98 lines
3.6 KiB
TypeScript
import { defineConfig, collection, fields, singleton } from '@keystatic/core';
|
|
|
|
export default defineConfig({
|
|
storage: {
|
|
kind: 'local',
|
|
},
|
|
collections: {
|
|
services: collection({
|
|
label: 'Servicios',
|
|
slugField: 'slug',
|
|
path: 'src/content/services/*',
|
|
schema: {
|
|
slug: fields.text({
|
|
label: 'Slug (URL)',
|
|
validation: { length: { min: 1, max: 80 } },
|
|
}),
|
|
category: fields.select({
|
|
label: 'Categoría',
|
|
options: [
|
|
{ label: 'Hosting & Correo', value: 'hosting' },
|
|
{ label: 'Diseño & Contenido', value: 'diseno' },
|
|
{ label: 'Infraestructura', value: 'infraestructura' },
|
|
],
|
|
defaultValue: 'hosting',
|
|
}),
|
|
icon: fields.text({
|
|
label: 'Ícono (MailIcon, WordpressIcon, CodeIcon, ShopIcon, TranslateIcon, ServerIcon)',
|
|
}),
|
|
order: fields.number({
|
|
label: 'Orden',
|
|
defaultValue: 0,
|
|
}),
|
|
name_es: fields.text({ label: 'Nombre (ES)' }),
|
|
name_en: fields.text({ label: 'Nombre (EN)' }),
|
|
shortDescription_es: fields.text({ label: 'Descripción corta (ES)', multiline: true }),
|
|
shortDescription_en: fields.text({ label: 'Descripción corta (EN)', multiline: true }),
|
|
body_es: fields.mdx({ label: 'Descripción completa (ES)' }),
|
|
body_en: fields.mdx({ label: 'Descripción completa (EN)' }),
|
|
features_es: fields.array(fields.text({ label: 'Feature' }), {
|
|
label: 'Features (ES)',
|
|
itemLabel: (props) => props.value,
|
|
}),
|
|
features_en: fields.array(fields.text({ label: 'Feature' }), {
|
|
label: 'Features (EN)',
|
|
itemLabel: (props) => props.value,
|
|
}),
|
|
},
|
|
}),
|
|
|
|
tutorials: collection({
|
|
label: 'Instructivos',
|
|
slugField: 'slug',
|
|
path: 'src/content/tutorials/*',
|
|
schema: {
|
|
slug: fields.text({
|
|
label: 'Slug (URL)',
|
|
validation: { length: { min: 1, max: 80 } },
|
|
}),
|
|
category: fields.select({
|
|
label: 'Categoría',
|
|
options: [
|
|
{ label: 'Correo', value: 'correo' },
|
|
{ label: 'WordPress', value: 'wordpress' },
|
|
{ label: 'Dominios', value: 'dominios' },
|
|
{ label: 'cPanel', value: 'cpanel' },
|
|
{ label: 'SSL', value: 'ssl' },
|
|
{ label: 'Backups', value: 'backups' },
|
|
],
|
|
}),
|
|
updatedAt: fields.date({
|
|
label: 'Última actualización',
|
|
}),
|
|
title_es: fields.text({ label: 'Título (ES)' }),
|
|
title_en: fields.text({ label: 'Título (EN)' }),
|
|
summary_es: fields.text({ label: 'Resumen (ES)', multiline: true }),
|
|
summary_en: fields.text({ label: 'Resumen (EN)', multiline: true }),
|
|
content_es: fields.mdx({ label: 'Contenido (ES)' }),
|
|
content_en: fields.mdx({ label: 'Contenido (EN)' }),
|
|
},
|
|
}),
|
|
},
|
|
singletons: {
|
|
siteSettings: singleton({
|
|
label: 'Configuración del sitio',
|
|
path: 'src/content/settings/site',
|
|
schema: {
|
|
contactEmail: fields.text({ label: 'Email de contacto' }),
|
|
whatsappNumber: fields.text({ label: 'WhatsApp (con código país, sin +)' }),
|
|
whatsappDefaultMessage_es: fields.text({ label: 'Mensaje inicial WhatsApp (ES)' }),
|
|
whatsappDefaultMessage_en: fields.text({ label: 'Mensaje inicial WhatsApp (EN)' }),
|
|
addressLine: fields.text({ label: 'Dirección (línea corta)' }),
|
|
socialLinkedin: fields.url({ label: 'LinkedIn URL' }),
|
|
socialGithub: fields.url({ label: 'GitHub URL' }),
|
|
},
|
|
}),
|
|
},
|
|
});
|