← Retour au site

Design System

Documentation vivante du système de design utilisé sur marcponroy.com — couleurs, typographies, composants et tokens.

Couleurs

Palette principale via CSS custom properties.

Tokens globaux

#0a0a0b

Background

var(--background)

#fafafa

Foreground

var(--foreground)

#22d3ee

Accent

var(--accent)

#0891b2

Accent Dim

var(--accent-dim)

#71717a

Muted

var(--muted)

#18181b

Card

var(--card)

#27272a

Border

var(--border)

Fonds de section (scroll-driven)

Le background du body change dynamiquement au scroll via interpolation linéaire.

Herorgb(0, 0, 0)
Expertisergb(249, 250, 251)
Quotergb(255, 255, 255)
Contactrgb(24, 24, 27)

Dégradé animé

Utilisé sur le titre hero "expériences qui vendent" — animation de 12s.

Cyan

#22d3ee

Violet

#a78bfa

Pink

#f472b6

Aa

Typographie

4 polices, chacune avec un rôle précis.

--font-bebas · Display

Hero titles

Bebas Neue

ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789

--font-outfit · Headings

Section titles & cards

Outfit

Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz

--font-poppins · Logo

Navbar brand

Marc Ponroy

Semi-bold · Uppercase · Letter-spacing 0.2em · 12px

--font-geist-sans · Body

Paragraphes & UI

Geist Sans

Développeur expert UX/UI. Design systems, interfaces haute performance et parcours utilisateur pensés pour convertir — sans sacrifier l'émotion.

--font-geist-mono · Mono

Labels & tags

Geist Mono

UX/UI · Product · Code

Échelle typographique

96pxDesign System
72pxDesign System
60pxDesign System
48pxDesign System
36pxDesign System
30pxDesign System
24pxDesign System
20pxDesign System
18pxDesign System
16pxDesign System
14pxDesign System
12pxDesign System

Composants

Tous les composants réutilisables avec leurs props.

<Button />

Bouton multi-variantes. Rend un <a> si href est fourni, sinon un <button>.

PropTypeDéfautDescription
childrenReactNodeContenu du bouton
variant"primary" | "solid" | "outline" | "link""primary"Style visuel du bouton
size"sm" | "md" | "lg""md"Taille du bouton
hrefstringURL — transforme en <a>
darkbooleantrueAdapte les couleurs pour fond sombre ou clair
classNamestring""Classes CSS additionnelles

Variants

Sizes

Dark mode

<Card />

Carte service avec icône, titre et description.

PropTypeDéfautDescription
iconstringIcône affichée en haut (caractère ou emoji)
titlestringTitre de la carte (Outfit font)
descriptionstringTexte descriptif
classNamestring""Classes CSS additionnelles

UX & parcours

Recherche utilisateur, wireframes, parcours et tests pour des produits qui convertissent.

UI & design systems

Interfaces cohérentes, accessibles et évolutives. Figma, tokens, composants réutilisables.

Front & performance

React, Next.js, Tailwind. Code propre, rapide et maintenable.

<SectionTitle />

Bloc titre de section avec tag mono, heading Outfit et description optionnelle.

PropTypeDéfautDescription
tagstringLabel mono uppercase au-dessus du titre (ex: 'Expertise')
titlestringTitre principal (Outfit font)
descriptionReactNodeParagraphe sous le titre
darkbooleanfalseMode sombre (texte blanc)
classNamestring""Classes CSS additionnelles

Expertise

De l'intention au pixel.

Design d'interface, systèmes de design, prototypage et implémentation front.

Contact

Prêt à collaborer ?

Un produit à lancer, une refonte UX/UI ou une équipe à renforcer.

<GradientText />

Texte avec dégradé animé cyan → violet → pink.

PropTypeDéfautDescription
childrenReactNodeContenu texte
as"span" | "p" | "h1" | "h2""span"Élément HTML rendu
classNamestring""Classes CSS additionnelles

expériences qui vendent.

<GridPattern />

Grille de carreaux en fond. Se positionne en absolute dans son parent.

PropTypeDéfautDescription
sizenumber32Taille des carreaux en px
opacitynumber0.4Opacité de la grille (0–1)
colorstring"var(--border)"Couleur des lignes
classNamestring""Classes CSS additionnelles
size=32 opacity=0.4
size=16
size=64 color=accent

<NoiseOverlay />

Texture bruit SVG en overlay. Fixed par défaut pour couvrir toute la page.

PropTypeDéfautDescription
opacitynumber0.03Opacité du bruit (0–1)
fixedbooleantruePosition fixed (true) ou absolute (false)
classNamestring""Classes CSS additionnelles
opacity=0.3
opacity=0.08

<NavBrand />

Logo texte du header. Disparaît en slide-left au scroll.

PropTypeDéfautDescription
namestring"Marc Ponroy"Texte affiché
visiblebooleantrueContrôle la visibilité (slide + opacity)
darkbooleantrueTexte blanc (true) ou noir (false)
classNamestring""Classes CSS additionnelles
Marc Ponroy
Marc Ponroy

<CTACard />

Carte d'appel à l'action pour fond sombre. Accepte des enfants pour les boutons.

PropTypeDéfautDescription
titlestringTitre principal (Outfit font)
descriptionstringSous-titre
childrenReactNodeContenu additionnel (boutons, etc.)
classNamestring""Classes CSS additionnelles

Prêt à passer au niveau supérieur ?

Un produit à lancer, une refonte UX/UI ou une équipe à renforcer.

hello@example.com

<CodeBlock />

Bloc de code avec bouton copier. Client component.

PropTypeDéfautDescription
codestringCode source à afficher
labelstringLabel affiché dans le header (ex: 'JSX', 'CSS')
collapsiblebooleanfalseMasque le code par défaut avec un bouton pour l'afficher

<Input />

Champ texte avec label, bordure arrondie, icônes, états erreur/hint.

PropTypeDéfautDescription
labelstringTexte du label (obligatoire)
errorstringMessage d'erreur (active le style rouge)
hintstringTexte d'aide sous le champ
leadingIconReactNodeIcône à gauche du champ
trailingIconReactNodeIcône à droite du champ
disabledbooleanfalseDésactive le champ
...restInputHTMLAttributesToutes les props HTML standard (type, name, value, onChange, etc.)

Basique

Avec icônes

⌘K

États

Ton adresse pro de préférence.

Adresse email invalide.

<Textarea />

Zone de texte avec label, bordure arrondie, compteur de caractères et états erreur/hint.

PropTypeDéfautDescription
labelstringTexte du label flottant (obligatoire)
errorstringMessage d'erreur (active le style rouge)
hintstringTexte d'aide sous le champ
maxLengthnumberNombre max de caractères
showCountbooleanfalseAffiche le compteur de caractères
disabledbooleanfalseDésactive le champ
...restTextareaHTMLAttributesToutes les props HTML standard (name, value, onChange, rows, etc.)

Variantes

Projet, budget, délais, stack…

29 / 500

Le message doit contenir au moins 20 caractères.

Animations

Gradient shift

background-position 0%→100%→0% · 12s · ease-in-out · infinite

expériences qui vendent.

Background scroll interpolation

lerp() via requestAnimationFrame — mise à jour directe du DOM.

Hero #000Expertise #f9fafbQuote #fffContact #18181b