diff --git a/almeira-web-deploy.zip b/almeira-web-deploy.zip index 040ad2f..340b3a1 100644 Binary files a/almeira-web-deploy.zip and b/almeira-web-deploy.zip differ diff --git a/src/app/dashboard/[entity]/page.tsx b/src/app/dashboard/[entity]/page.tsx index 831e7b1..defb1c9 100644 --- a/src/app/dashboard/[entity]/page.tsx +++ b/src/app/dashboard/[entity]/page.tsx @@ -126,6 +126,7 @@ export default async function EntityPage({ }); return enriched; }); + documents = JSON.parse(JSON.stringify(documents)); } catch (error) { console.error(`Error fetching entity ${entity}:`, error); } diff --git a/src/components/publications/PublicationLayout.tsx b/src/components/publications/PublicationLayout.tsx index b59546c..b8a4cf7 100644 --- a/src/components/publications/PublicationLayout.tsx +++ b/src/components/publications/PublicationLayout.tsx @@ -110,7 +110,7 @@ export const PublicationLayout: React.FC = ({ useEffect(() => { if (!seoDirty.titulo && titulo) { - setSeoTitulo(titulo.substring(0, 70)); + setSeoTitulo(titulo.substring(0, 60)); } }, [titulo, seoDirty.titulo]); @@ -314,7 +314,7 @@ export const PublicationLayout: React.FC = ({ = ({ setSeoTitulo(e.target.value); setSeoDirty(prev => ({ ...prev, titulo: true })); }} - maxLength={70} + maxLength={60} placeholder="Título para buscadores..." className={inputClass} /> @@ -395,6 +395,8 @@ export const PublicationLayout: React.FC = ({ + + diff --git a/src/lib/validators/publications.ts b/src/lib/validators/publications.ts index 66f6ad3..9cb24f3 100644 --- a/src/lib/validators/publications.ts +++ b/src/lib/validators/publications.ts @@ -36,7 +36,7 @@ export const PostSchema = z.object({ message: 'Estado inválido.', }), - tipo: z.enum(['noticia', 'evento', 'aviso', 'clasificado', 'blog'], { + tipo: z.enum(['noticia', 'evento', 'aviso', 'clasificado', 'blog', 'Display Banner', 'Display Slider'], { message: 'Tipo de contenido inválido.', }), @@ -56,7 +56,7 @@ export const PostSchema = z.object({ url_destino: z.string().url('La URL de destino no es válida.').optional().or(z.literal('')), video_url: z.string().url('La URL de video no es válida.').optional().or(z.literal('')), og_image_url: z.string().url('La OG Image URL no es válida.').optional().or(z.literal('')), - seo_titulo: z.string().max(70, 'El SEO título no puede superar 70 caracteres.').optional(), + seo_titulo: z.string().max(60, 'El SEO título no puede superar 60 caracteres.').optional(), seo_descripcion: z.string().max(160, 'La SEO descripción no puede superar 160 caracteres.').optional(), });