Retour au catalogue
Download Minimal
Section minimaliste avec un titre et un gros bouton download affichant version et taille.
downloadsimple Both Responsive a11y
minimalsaasuniversalcentered
Theme
"use client";
import { motion } from "framer-motion";
import { Download } from "lucide-react";
interface DownloadMinimalProps {
title?: string;
ctaLabel?: string;
ctaUrl?: string;
fileSize?: string;
version?: string;
note?: string;
}
const EASE = [0.16, 1, 0.3, 1] as const;
export default function DownloadMinimal({
title = "Telecharger l'application",
ctaLabel = "Telecharger",
ctaUrl = "#",
fileSize = "78 Mo",
version = "v2.4.1",
note = "macOS 12+ — Mises a jour automatiques",
}: DownloadMinimalProps) {
return (
<section
style={{
position: "relative",
overflow: "hidden",
paddingTop: "var(--section-padding-y-lg)",
paddingBottom: "var(--section-padding-y-lg)",
background: "var(--color-background)",
display: "flex",
alignItems: "center",
justifyContent: "center",
minHeight: "50vh",
}}
>
<div
style={{
width: "100%",
maxWidth: "var(--container-max-width)",
margin: "0 auto",
padding: "0 var(--container-padding-x)",
textAlign: "center",
}}
>
<motion.h2
initial={{ opacity: 0, y: 16 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.6, ease: EASE }}
style={{
fontFamily: "var(--font-sans)",
fontSize: "clamp(1.75rem, 3.5vw, 2.75rem)",
fontWeight: 700,
lineHeight: 1.15,
letterSpacing: "-0.02em",
color: "var(--color-foreground)",
marginBottom: "2.5rem",
}}
>
{title}
</motion.h2>
{/* Big download button */}
<motion.div
initial={{ opacity: 0, scale: 0.95 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ duration: 0.5, delay: 0.1, ease: EASE }}
>
<a
href={ctaUrl}
style={{
display: "inline-flex",
flexDirection: "column",
alignItems: "center",
gap: "1rem",
padding: "2.5rem 4rem",
borderRadius: "var(--radius-xl)",
background: "var(--color-accent)",
color: "var(--color-foreground)",
textDecoration: "none",
transition: "transform var(--duration-normal) var(--ease-out)",
}}
>
<Download style={{ width: 36, height: 36 }} />
<span style={{ fontWeight: 700, fontSize: "1.25rem" }}>{ctaLabel}</span>
<span
style={{
fontSize: "0.8125rem",
opacity: 0.8,
display: "flex",
alignItems: "center",
gap: "0.5rem",
}}
>
<span>{version}</span>
<span aria-hidden>·</span>
<span>{fileSize}</span>
</span>
</a>
</motion.div>
{note && (
<motion.p
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.4, delay: 0.25, ease: EASE }}
style={{
marginTop: "1.5rem",
fontSize: "0.8125rem",
color: "var(--color-foreground-muted)",
opacity: 0.7,
}}
>
{note}
</motion.p>
)}
</div>
</section>
);
}
Autres variantes download
Download Centered
simple · both
minimalcorporate
Download Comparison Table
complex · both
corporateminimal
Download Platform Grid
medium · both
minimalcorporate
Download Platform Selector
medium · both
minimalcorporate
Download Release Notes
medium · both
minimalcorporate
Download Split
medium · both
minimalcorporate