feat: CMS com limites de caracteres, traduções auto e painel de notificações

This commit is contained in:
Erik
2025-11-27 12:05:23 -03:00
parent ea0c4ac5a6
commit 6e32ffdc95
40 changed files with 3665 additions and 278 deletions

View File

@@ -1,11 +1,13 @@
"use client";
import Link from 'next/link';
import { useLanguage } from '@/contexts/LanguageContext';
import { T } from '@/components/TranslatedText';
import { useLocale } from '@/contexts/LocaleContext';
export default function Footer() {
const { t } = useLanguage();
const { locale, t } = useLocale();
// Prefixo para links
const prefix = locale === 'pt' ? '' : `/${locale}`;
return (
<footer className="bg-secondary text-white pt-16 pb-8">
@@ -21,12 +23,12 @@ export default function Footer() {
</div>
</div>
<p className="text-gray-400 mb-6">
<T>Soluções em engenharia mecânica e segurança para movimentação de carga.</T>
{t('footer.description')}
</p>
<div className="inline-flex items-center gap-2 bg-white/5 border border-white/10 rounded-lg px-3 py-2 mb-6">
<i className="ri-verified-badge-fill text-primary"></i>
<span className="text-xs font-bold text-gray-300 uppercase tracking-wide"><T>Prestador Oficial</T> <span className="text-primary">Coca-Cola</span></span>
<span className="text-xs font-bold text-gray-300 uppercase tracking-wide">{t('home.officialProvider')} <span className="text-primary">Coca-Cola</span></span>
</div>
<div className="flex gap-4">
@@ -44,30 +46,30 @@ export default function Footer() {
{/* Links */}
<div>
<h3 className="text-lg font-bold font-headline mb-6"><T>Links Rápidos</T></h3>
<h3 className="text-lg font-bold font-headline mb-6">{t('footer.quickLinks')}</h3>
<ul className="space-y-4">
<li><Link href="/" className="text-gray-400 hover:text-primary transition-colors"><T>{t('nav.home')}</T></Link></li>
<li><Link href="/sobre" className="text-gray-400 hover:text-primary transition-colors"><T>{t('nav.about')}</T></Link></li>
<li><Link href="/servicos" className="text-gray-400 hover:text-primary transition-colors"><T>{t('nav.services')}</T></Link></li>
<li><Link href="/projetos" className="text-gray-400 hover:text-primary transition-colors"><T>{t('nav.projects')}</T></Link></li>
<li><Link href="/contato" className="text-gray-400 hover:text-primary transition-colors"><T>{t('nav.contact')}</T></Link></li>
<li><Link href={`${prefix}/`} className="text-gray-400 hover:text-primary transition-colors">{t('nav.home')}</Link></li>
<li><Link href={`${prefix}/sobre`} className="text-gray-400 hover:text-primary transition-colors">{t('nav.about')}</Link></li>
<li><Link href={`${prefix}/servicos`} className="text-gray-400 hover:text-primary transition-colors">{t('nav.services')}</Link></li>
<li><Link href={`${prefix}/projetos`} className="text-gray-400 hover:text-primary transition-colors">{t('nav.projects')}</Link></li>
<li><Link href={`${prefix}/contato`} className="text-gray-400 hover:text-primary transition-colors">{t('nav.contact')}</Link></li>
</ul>
</div>
{/* Services */}
<div>
<h3 className="text-lg font-bold font-headline mb-6"><T>{t('services.title')}</T></h3>
<h3 className="text-lg font-bold font-headline mb-6">{t('nav.services')}</h3>
<ul className="space-y-4">
<li className="text-gray-400"><T>Projetos de Dispositivos</T></li>
<li className="text-gray-400"><T>Engenharia de Implementos</T></li>
<li className="text-gray-400"><T>Inspeção de Equipamentos</T></li>
<li className="text-gray-400"><T>Laudos Técnicos (NR-11/12)</T></li>
<li className="text-gray-400">{t('services.deviceProjects')}</li>
<li className="text-gray-400">{t('services.implementEngineering')}</li>
<li className="text-gray-400">{t('services.equipmentInspection')}</li>
<li className="text-gray-400">{t('services.technicalReports')}</li>
</ul>
</div>
{/* Contact */}
<div>
<h3 className="text-lg font-bold font-headline mb-6"><T>{t('nav.contact')}</T></h3>
<h3 className="text-lg font-bold font-headline mb-6">{t('nav.contact')}</h3>
<ul className="space-y-4">
<li className="flex items-start gap-3 text-gray-400">
<i className="ri-map-pin-line mt-1 text-primary"></i>
@@ -87,11 +89,11 @@ export default function Footer() {
<div className="border-t border-white/10 pt-8 flex flex-col md:flex-row justify-between items-center gap-4">
<p className="text-gray-500 text-sm">
© {new Date().getFullYear()} OCCTO Engenharia. <T>{t('footer.rights')}</T>
© {new Date().getFullYear()} OCCTO Engenharia. {t('footer.rights')}
</p>
<div className="flex gap-6 text-sm text-gray-500">
<Link href="/privacidade" className="hover:text-white"><T>Política de Privacidade</T></Link>
<Link href="/termos" className="hover:text-white"><T>Termos de Uso</T></Link>
<Link href={`${prefix}/privacidade`} className="hover:text-white">{t('footer.privacyPolicy')}</Link>
<Link href={`${prefix}/termos`} className="hover:text-white">{t('footer.termsOfUse')}</Link>
</div>
</div>
</div>