fix: adjust seo_titulo max length to 60, add banner options to tipo enum, and resolve RSC plain object error

This commit is contained in:
Carlos (Almeira) 2026-06-22 11:54:51 -05:00
parent da4fbaa9e8
commit 31bf643d3b
4 changed files with 8 additions and 5 deletions

Binary file not shown.

View File

@ -126,6 +126,7 @@ export default async function EntityPage({
}); });
return enriched; return enriched;
}); });
documents = JSON.parse(JSON.stringify(documents));
} catch (error) { } catch (error) {
console.error(`Error fetching entity ${entity}:`, error); console.error(`Error fetching entity ${entity}:`, error);
} }

View File

@ -110,7 +110,7 @@ export const PublicationLayout: React.FC<PublicationLayoutProps> = ({
useEffect(() => { useEffect(() => {
if (!seoDirty.titulo && titulo) { if (!seoDirty.titulo && titulo) {
setSeoTitulo(titulo.substring(0, 70)); setSeoTitulo(titulo.substring(0, 60));
} }
}, [titulo, seoDirty.titulo]); }, [titulo, seoDirty.titulo]);
@ -314,7 +314,7 @@ export const PublicationLayout: React.FC<PublicationLayoutProps> = ({
<FieldWrapper <FieldWrapper
label="SEO Título" label="SEO Título"
error={validationErrors.seo_titulo} error={validationErrors.seo_titulo}
hint="Máximo 70 caracteres." hint="Máximo 60 caracteres."
> >
<input <input
type="text" type="text"
@ -324,7 +324,7 @@ export const PublicationLayout: React.FC<PublicationLayoutProps> = ({
setSeoTitulo(e.target.value); setSeoTitulo(e.target.value);
setSeoDirty(prev => ({ ...prev, titulo: true })); setSeoDirty(prev => ({ ...prev, titulo: true }));
}} }}
maxLength={70} maxLength={60}
placeholder="Título para buscadores..." placeholder="Título para buscadores..."
className={inputClass} className={inputClass}
/> />
@ -395,6 +395,8 @@ export const PublicationLayout: React.FC<PublicationLayoutProps> = ({
<option value="aviso">Aviso</option> <option value="aviso">Aviso</option>
<option value="clasificado">Clasificado</option> <option value="clasificado">Clasificado</option>
<option value="blog">Blog</option> <option value="blog">Blog</option>
<option value="Display Banner">Display Banner</option>
<option value="Display Slider">Display Slider</option>
</select> </select>
</FieldWrapper> </FieldWrapper>

View File

@ -36,7 +36,7 @@ export const PostSchema = z.object({
message: 'Estado inválido.', 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.', 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('')), 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('')), 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('')), 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(), seo_descripcion: z.string().max(160, 'La SEO descripción no puede superar 160 caracteres.').optional(),
}); });