Files
websitedev/proto/src/components/Footer.tsx
T
Do Siki d908f6b1b4
CI Pipeline with Test Management / 🧪 Run Tests & Generate Reports (push) Waiting to run
CI Pipeline with Test Management / 🐳 Docker Integration Tests (push) Blocked by required conditions
CI Pipeline with Test Management / 🏗️ Build Docker Image (push) Blocked by required conditions
CI Pipeline with Test Management / 📊 Generate Test Summary (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / 🧪 Run Tests & Generate Reports (push) Waiting to run
Test Reporting & Gherkin Analysis / 📊 Analyze Test Coverage (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / 🔄 Sync with Linear (push) Blocked by required conditions
Test Reporting & Gherkin Analysis / ⚡ Performance Monitoring (push) Blocked by required conditions
chore(quality): type-check and lint gates in pre-deploy, clean lint/tsc
- pre-deploy suite now runs tsc --noEmit and eslint; any failure aborts
  the release
- fix all TypeScript errors (FooterConfig.copyright removed after the CMS
  move; test guards/casts)
- fix all ESLint errors: <a>→<Link> and <img>→<Image> in Header/Footer,
  remove unused imports and explicit any in src
- eslint config relaxes no-explicit-any/no-require-imports/no-unused-vars
  for test and CommonJS config files (legitimate usage)

Closes MITHOME-81
2026-08-22 12:37:22 +02:00

182 lines
6.8 KiB
TypeScript
Executable File

'use client'
import { siteConfig } from '@/config/site'
import { content } from '@/content'
import Link from 'next/link'
export default function Footer() {
return (
<footer
className="border-t"
style={{
background: 'var(--color-background-secondary)',
borderColor: 'var(--color-border)'
}}
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
<div className="grid grid-cols-1 md:grid-cols-4 gap-8 lg:gap-12">
{/* Company Info */}
<div className="md:col-span-2">
<Link
href="/"
className="inline-flex items-center gap-2 text-xl font-bold mb-4 transition-colors duration-200"
style={{ color: 'var(--color-primary-600)' }}
>
{siteConfig.general.name}
<span
className="inline-block w-2 h-2 rounded-full animate-pulse-slow"
style={{ background: 'var(--color-success-500)' }}
/>
</Link>
<p
className="mb-6 max-w-md leading-relaxed"
style={{ color: 'var(--color-foreground-muted)' }}
>
{siteConfig.general.description}
</p>
<div className="space-y-2 text-sm" style={{ color: 'var(--color-foreground-muted)' }}>
<a
href={`mailto:${siteConfig.contact.email}`}
className="flex items-center gap-2 group transition-colors duration-200 hover:text-blue-600"
style={{ color: 'var(--color-foreground-secondary)' }}
>
<span
className="flex-shrink-0 w-8 h-8 rounded-lg flex items-center justify-center transition-all duration-200 group-hover:scale-110"
style={{ background: 'var(--color-primary-100)' }}
>
✉️
</span>
<span>{siteConfig.contact.email}</span>
</a>
<div
className="flex items-center gap-2"
style={{ color: 'var(--color-foreground-secondary)' }}
>
<span
className="flex-shrink-0 w-8 h-8 rounded-lg flex items-center justify-center"
style={{ background: 'var(--color-primary-100)' }}
>
🏢
</span>
<span>{content.common.footer.address}</span>
</div>
</div>
</div>
{/* Navigation Links */}
<div>
<h3
className="text-sm font-semibold uppercase tracking-wider mb-4"
style={{ color: 'var(--color-foreground)' }}
>
Navigáció
</h3>
<ul className="space-y-3">
{siteConfig.navigation.footer.map((item) => (
<li key={item.href}>
<a
href={item.href}
className="group flex items-center gap-2 text-sm transition-all duration-200"
style={{ color: 'var(--color-foreground-muted)' }}
onMouseEnter={(e) => {
e.currentTarget.style.color = 'var(--color-primary-600)'
}}
onMouseLeave={(e) => {
e.currentTarget.style.color = 'var(--color-foreground-muted)'
}}
>
<span
className="w-1.5 h-1.5 rounded-full transition-all duration-200 group-hover:scale-150"
style={{ background: 'var(--color-primary-500)' }}
/>
{item.label}
</a>
</li>
))}
</ul>
</div>
{/* Services */}
<div>
<h3
className="text-sm font-semibold uppercase tracking-wider mb-4"
style={{ color: 'var(--color-foreground)' }}
>
Szolgáltatások
</h3>
<ul className="space-y-3">
{content.pages.home.services.items.map((service) => (
<li
key={service.id}
className="flex items-center gap-2 text-sm"
style={{ color: 'var(--color-foreground-muted)' }}
>
<span className="text-base">{service.icon}</span>
{service.title}
</li>
))}
<li
className="flex items-center gap-2 text-sm"
style={{ color: 'var(--color-foreground-muted)' }}
>
<span className="text-base">🛠️</span>
Műszaki támogatás
</li>
</ul>
</div>
</div>
{/* Bottom section */}
<div
className="border-t pt-8 mt-8"
style={{ borderColor: 'var(--color-border)' }}
>
<div className="flex flex-col sm:flex-row justify-between items-center gap-4">
<p
className="text-sm"
style={{ color: 'var(--color-foreground-muted)' }}
>
{/* Copyright text is CMS-editable (common.json); {year} resolves to the current year */}
{content.common.footer.copyright.replace('{year}', String(new Date().getFullYear()))}
</p>
<div className="flex items-center gap-6">
{siteConfig.footer.links.map((link) => (
<a
key={link.href}
href={link.href}
className="text-sm transition-all duration-200 link-underline relative"
style={{ color: 'var(--color-foreground-muted)' }}
onMouseEnter={(e) => {
e.currentTarget.style.color = 'var(--color-primary-600)'
}}
onMouseLeave={(e) => {
e.currentTarget.style.color = 'var(--color-foreground-muted)'
}}
>
{link.label}
</a>
))}
</div>
</div>
</div>
{/* Tech badge */}
<div className="mt-8 flex justify-center">
<div
className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full text-xs"
style={{
background: 'var(--color-background-tertiary)',
color: 'var(--color-foreground-muted)'
}}
>
<span>Powered by</span>
<span className="font-medium" style={{ color: 'var(--color-foreground)' }}>Next.js</span>
<span></span>
<span className="font-medium" style={{ color: 'var(--color-foreground)' }}>Tailwind CSS</span>
</div>
</div>
</div>
</footer>
)
}