Files
sesp-site/src/routes/+page.svelte

144 lines
5.1 KiB
Svelte

<script lang="ts">
import NewsCarousel from '$lib/components/NewsCarousel.svelte';
import ProgramMiniCard from '$lib/components/ProgramMiniCard.svelte';
import { featuredNews, news } from '$lib/data/news';
import { programs } from '$lib/data/programs';
</script>
<svelte:head>
<title>Secretaria de Esportes de Pernambuco</title>
<meta
name="description"
content="Página institucional da Secretaria de Esportes de Pernambuco (SESP-PE) com notícias e acesso aos programas Bolsa Atleta, Bolsa Técnico e Time Pernambuco."
/>
</svelte:head>
<div class="min-h-dvh bg-(--page-bg)">
<header class="border-b border-black/5 bg-white/70 backdrop-blur">
<div class="mx-auto flex w-full max-w-6xl items-center justify-between px-4 py-5 sm:px-6">
<div class="flex min-w-0 items-center gap-4">
<img
src="/brand/gov-pe.png"
alt="Governo de Pernambuco"
class="h-10 w-auto object-contain"
loading="eager"
decoding="async"
/>
<div class="min-w-0">
<p class="text-xs font-semibold uppercase tracking-widest text-(--text-muted)">
Governo de Pernambuco
</p>
<h1 class="mt-1 text-xl font-extrabold tracking-tight text-(--text-strong) sm:text-2xl">
Secretaria de Esportes de Pernambuco
</h1>
</div>
</div>
<div class="flex items-center gap-3">
<a
href="/ouvidoria"
class="inline-flex items-center rounded-lg bg-white/80 px-3 py-2 text-xs font-extrabold tracking-wide text-(--text-strong) ring-1 ring-black/10 transition hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--focus-ring)"
>
OUVIDORIA
</a>
<span
class="hidden rounded-lg bg-(--surface-muted) px-3 py-1 text-xs font-semibold text-(--text-muted) ring-1 ring-black/5 sm:inline-flex"
>
SESP-PE
</span>
</div>
</div>
</header>
<main class="mx-auto w-full max-w-6xl px-4 pb-14 pt-10 sm:px-6 sm:pt-14">
<div class="grid gap-8 lg:grid-cols-[1fr_360px]">
<section class="space-y-8">
<NewsCarousel items={featuredNews} title="Notícias em destaque" />
<section class="rounded-lg bg-white/80 p-6 shadow-sm ring-1 ring-black/5 sm:p-8">
<div class="flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between">
<div>
<h2 class="text-lg font-extrabold tracking-tight text-(--text-strong)">Notícias</h2>
<p class="mt-1 text-sm text-(--text)">
Acompanhe comunicados, resultados e novidades.
</p>
</div>
<span class="pill">Atualizado</span>
</div>
<div class="mt-6 space-y-3">
{#each news as item (item.slug)}
<a
href={`/noticias/${item.slug}`}
class="group block rounded-lg bg-white/80 p-5 shadow-sm ring-1 ring-black/5 transition hover:bg-white hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--focus-ring)"
aria-label={`Abrir notícia: ${item.title}`}
>
<div class="flex flex-wrap items-center gap-2">
<span
class="rounded-lg bg-(--surface-muted) px-3 py-1 text-xs font-semibold text-(--text-muted) ring-1 ring-black/5"
>
{item.category}
</span>
<span
class="rounded-lg bg-white/80 px-3 py-1 text-xs font-semibold text-(--text-muted) ring-1 ring-black/5"
>
{new Date(item.date).toLocaleDateString('pt-BR')}
</span>
</div>
<p class="mt-3 text-base font-extrabold tracking-tight text-(--text-strong)">
{item.title}
</p>
<p class="mt-1 text-sm leading-relaxed text-(--text)">{item.dek}</p>
<div class="mt-3 inline-flex items-center gap-2 text-sm font-semibold text-(--link)">
<span class="underline-offset-4 group-hover:underline">Ler</span>
<span aria-hidden="true" class="transition group-hover:translate-x-0.5"></span>
</div>
</a>
{/each}
</div>
</section>
</section>
<aside class="space-y-6">
<section class="rounded-lg bg-white/80 p-6 shadow-sm ring-1 ring-black/5 sm:p-8">
<h2 class="text-lg font-extrabold tracking-tight text-(--text-strong)">Programas</h2>
<p class="mt-1 text-sm text-(--text)">
Acesso rápido aos links oficiais de inscrição e edital.
</p>
<div class="mt-5 space-y-3">
{#each programs as program (program.id)}
<ProgramMiniCard {program} />
{/each}
</div>
</section>
</aside>
</div>
</main>
<footer class="border-t border-black/5 bg-white/70 backdrop-blur">
<div
class="mx-auto flex w-full max-w-6xl flex-col gap-6 px-4 py-10 sm:px-6 md:flex-row md:items-center md:justify-between"
>
<div class="flex items-center gap-4">
<img
src="/brand/gov-pe.png"
alt="Logomarca do Governo de Pernambuco"
class="h-12 w-auto object-contain"
loading="lazy"
decoding="async"
/>
<div>
<p class="text-sm font-bold text-(--text-strong)">Secretaria de Esportes de Pernambuco</p>
<p class="text-xs text-(--text-muted)">Página institucional • Notícias e programas</p>
</div>
</div>
<p class="text-xs text-(--text-muted)">© {new Date().getFullYear()} Governo de Pernambuco — SESP-PE.</p>
</div>
</footer>
</div>