feat(primitivas): capa gráfica y de movimiento reutilizable
Diez primitivas que dan a la landing el "gráfico y movimiento" que pidió la dueña, todas con guarda de prefers-reduced-motion: - FondoPuntos / PatronPuntos — el patrón de puntos del manual - TarjetaSpotlight, TextoDesenfoque, ContadorNumero — realce y reveal - Carrusel — deslizable, con contador, autoplay pausable - Icono, SimboloTresLineas, IlustracionInflexion — línea, sin relleno - FondoFoto — duotono azul/dorado sobre foto useAutoStep en lib/motion.ts comparte la forma del autoplay del carrusel para indicadores de paso que no son carrusel. IlustracionInflexion documenta un detalle que muerde: motion.path aplica su propio andamiaje de dasharray aunque no reciba initial/animate, así que la rama de reduced motion renderiza <path> planos en vez de intentar neutralizar los animados. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a9758a92f9
commit
5b400cb161
19 files changed
+881
No files matched your search
@@ -0,0 +1,29 @@
|
||||
// Full-bleed photo background, tinted into the brand's navy/gold duotone via
|
||||
// `mix-blend-mode: luminosity` — the gradient behind supplies the colour, the
|
||||
// photo only contributes its tonal range. Keeps "blanco con azul" even when a
|
||||
// photograph is on screen. Decorative only: aria-hidden, lazy-loaded.
|
||||
export function FondoFoto({
|
||||
src,
|
||||
className = '',
|
||||
imgClassName = '',
|
||||
wash = 'bg-azul-profundo/70',
|
||||
}: {
|
||||
src: string;
|
||||
className?: string;
|
||||
imgClassName?: string;
|
||||
wash?: string;
|
||||
}) {
|
||||
return (
|
||||
<div aria-hidden="true" className={`absolute overflow-hidden pointer-events-none select-none ${className}`}>
|
||||
<div className="absolute inset-0 bg-gradient-to-br from-azul-profundo to-dorado" />
|
||||
{/* eslint-disable-next-line @next/next/no-img-element -- decorative background on a `output: export` site with images.unoptimized */}
|
||||
<img
|
||||
src={src}
|
||||
alt=""
|
||||
loading="lazy"
|
||||
className={`absolute inset-0 w-full h-full object-cover mix-blend-luminosity ${imgClassName}`}
|
||||
/>
|
||||
<div className={`absolute inset-0 ${wash}`} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user