change card

This commit is contained in:
2026-04-09 12:02:14 +01:00
parent 07756128d3
commit 8a274e0623
3 changed files with 188 additions and 25 deletions
+21 -18
View File
@@ -105,12 +105,27 @@ const destaques = [
export function TvoneDestaquesCultura() { export function TvoneDestaquesCultura() {
return ( return (
<section className="mx-auto w-full max-w-[1200px] px-4 pb-16"> <section className="mx-auto w-full max-w-[1200px] px-4 pb-16">
<div className="mb-8 flex items-end justify-between"> {/* Cabeçalho Minimalista com Link Azul */}
<h2 className="text-3xl font-bold tracking-tight text-neutral-900">Cultura</h2> <div className="mb-10 flex items-end justify-between border-b border-neutral-100 pb-6">
{/* Optional secondary link style for iOS */} <h2 className="text-3xl font-bold tracking-tight text-neutral-900 md:text-4xl">
<Link href="/cultura" className="hidden text-sm font-medium text-blue-600 hover:underline md:block"> Cultura
Explorar tudo </h2>
</Link>
<Link
href="/negocios"
className="group flex items-center gap-1 text-sm font-semibold text-[#0066CC] transition-colors hover:text-[#004499]"
>
Ver tudo
<svg
className="h-4 w-4 transition-transform group-hover:translate-x-0.5"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2.5}
>
<path strokeLinecap="round" strokeLinejoin="round" d="M9 5l7 7-7 7" />
</svg>
</Link>
</div> </div>
<div className="grid gap-6 sm:grid-cols-2 lg:grid-cols-4"> <div className="grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
@@ -149,18 +164,6 @@ export function TvoneDestaquesCultura() {
))} ))}
</div> </div>
{/* iOS STYLE "SEE MORE" BUTTON */}
<div className="mt-10 flex justify-center">
<Link
href="/cultura"
className="inline-flex items-center justify-center rounded-full bg-neutral-100 px-8 py-3 text-sm font-semibold text-neutral-900 transition-all hover:bg-neutral-200 active:scale-95"
>
Ver mais notícias de Cultura
<svg className="ml-2 h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2.5} d="M9 5l7 7-7 7" />
</svg>
</Link>
</div>
</section> </section>
); );
} }
-6
View File
@@ -37,12 +37,6 @@ function PromoStripSingleSlide({ photo, onRatioLoad }: SlideProps) {
}} }}
/> />
{/* Label Interna - Estilo Premium/iOS */}
<div className="absolute bottom-6 left-6 z-10 md:bottom-10 md:left-10">
<span className=" bg-black/40 backdrop-blur-xl px-4 py-2 text-[10px] font-bold uppercase tracking-[0.2em] text-white border border-white/10 shadow-2xl">
Destaque
</span>
</div>
</div> </div>
); );
} }
+167 -1
View File
@@ -80,7 +80,28 @@ export function TvoneMainColumns1() {
return ( return (
<div className="mx-auto grid w-full max-w-[1200px] gap-10 px-4 pb-12 "> <div className="mx-auto grid w-full max-w-[1200px] gap-10 px-4 pb-12 ">
<section> <section>
<h2 className="mb-7 text-2xl font-bold tracking-tight text-neutral-900 md:text-2xl">Vídeos Mais Recentes</h2> {/* Cabeçalho Minimalista com Link Azul */}
<div className="mb-10 flex items-end justify-between border-b border-neutral-100 pb-6">
<h2 className="text-3xl font-bold tracking-tight text-neutral-900 md:text-4xl">
Vídeos Recentes
</h2>
<Link
href="/negocios"
className="group flex items-center gap-1 text-sm font-semibold text-[#0066CC] transition-colors hover:text-[#004499]"
>
Ver tudo
<svg
className="h-4 w-4 transition-transform group-hover:translate-x-0.5"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2.5}
>
<path strokeLinecap="round" strokeLinejoin="round" d="M9 5l7 7-7 7" />
</svg>
</Link>
</div>
<div className="mx-auto flex w-full max-w-[1200px] flex-col gap-10"> <div className="mx-auto flex w-full max-w-[1200px] flex-col gap-10">
@@ -146,3 +167,148 @@ function AppleIcon({ className }: { className?: string }) {
</svg> </svg>
); );
} }
const entrevistas = [
{
guest: "CEO da Unitel",
title: "O futuro do 5G em Angola e a expansão da conectividade rural",
img: "https://images.unsplash.com/photo-1560250097-0b93528c311a?q=80&w=800&auto=format&fit=crop",
},
{
guest: "Sandra Rodrigues",
title: "Como a inteligência artificial está a mudar o jornalismo digital",
img: "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?q=80&w=800&auto=format&fit=crop",
},
{
guest: "Fundador da Startup X",
title: "O desafio de escalar uma fintech no mercado africano atual",
img: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?q=80&w=800&auto=format&fit=crop",
},
];
const negocios = [
{
category: "Investimento",
title: "Banca nacional regista crescimento de 15% no crédito à produção",
description: "Novas medidas de estímulo económico impulsionam o setor agrícola e industrial neste trimestre.",
readTime: "5",
img: "https://images.unsplash.com/photo-1460925895917-afdab827c52f?q=80&w=800&auto=format&fit=crop",
},
{
category: "Tecnologia",
title: "Hub tecnológico em Luanda atrai investidores estrangeiros",
description: "Empresas de capital de risco olham para o ecossistema de startups angolano com novo otimismo.",
readTime: "4",
img: "https://images.unsplash.com/photo-1559136555-9303baea8ebd?q=80&w=800&auto=format&fit=crop",
},
{
category: "Mercados",
title: "Preço das commodities: O impacto direto na inflação local",
description: "Análise profunda sobre como a volatilidade externa está a moldar os preços no consumidor final.",
readTime: "7",
img: "https://images.unsplash.com/photo-1590283603385-17ffb3a7f29f?q=80&w=800&auto=format&fit=crop",
},
];
export function TvoneEntrevistas() {
return (
<section className="mx-auto w-full max-w-[1200px] px-4 pb-20">
<div className="mb-8">
<h2 className="text-3xl font-bold tracking-tight text-neutral-900 md:text-4xl">Entrevistas</h2>
<p className="mt-2 text-neutral-500">Conversas exclusivas com quem move o mercado e a cultura.</p>
</div>
{/* Grid de 3 colunas para estilo Premium/Apple */}
<div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-3">
{entrevistas.map((item, index) => (
<article key={index} className="group cursor-pointer">
<Link href="#" className="block">
<div className="relative aspect-[4/5] overflow-hidden rounded-[28px] bg-neutral-100 shadow-sm transition-all duration-500 group-hover:shadow-2xl group-hover:shadow-neutral-300">
<Image
src={item.img}
alt={item.title}
fill
className="object-cover transition duration-700 group-hover:scale-105"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent opacity-80 group-hover:opacity-100 transition-opacity" />
<div className="absolute bottom-0 p-8">
<span className="text-xs font-bold uppercase tracking-widest text-blue-400">{item.guest}</span>
<h3 className="mt-2 text-xl font-bold leading-tight text-white md:text-2xl">
"{item.title}"
</h3>
</div>
</div>
</Link>
</article>
))}
</div>
</section>
);
}
export function TvoneNegocios() {
return (
<section className="mx-auto w-full max-w-[1200px] px-4 pb-20">
{/* Cabeçalho Minimalista com Link Azul */}
<div className="mb-10 flex items-end justify-between border-b border-neutral-100 pb-6">
<h2 className="text-3xl font-bold tracking-tight text-neutral-900 md:text-4xl">
Negócios
</h2>
<Link
href="/negocios"
className="group flex items-center gap-1 text-sm font-semibold text-[#0066CC] transition-colors hover:text-[#004499]"
>
Ver tudo
<svg
className="h-4 w-4 transition-transform group-hover:translate-x-0.5"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2.5}
>
<path strokeLinecap="round" strokeLinejoin="round" d="M9 5l7 7-7 7" />
</svg>
</Link>
</div>
<div className="grid gap-10 lg:grid-cols-3">
{negocios.map((item, index) => (
<article key={index} className="group flex flex-col gap-5">
<div className="relative aspect-video overflow-hidden rounded-[24px] bg-neutral-100 shadow-sm transition-all duration-500 group-hover:shadow-md">
<Image
src={item.img}
alt=""
fill
className="object-cover transition-transform duration-700 group-hover:scale-105"
/>
</div>
<div className="px-1">
<span className="text-[10px] font-bold uppercase tracking-wider text-blue-600">
{item.category}
</span>
<h3 className="mt-3 text-xl font-bold leading-snug text-neutral-900 transition-colors group-hover:text-[#0066CC]">
{item.title}
</h3>
<p className="mt-3 line-clamp-2 text-sm leading-relaxed text-neutral-500">
{item.description}
</p>
<div className="mt-5 flex items-center gap-2 border-t border-neutral-50 pt-4">
<div className="h-1 w-1 rounded-full bg-blue-600/40" />
<span className="text-[10px] font-bold uppercase text-neutral-400">
{item.readTime} min de leitura
</span>
</div>
</div>
</article>
))}
</div>
</section>
);
}