clerk-custom-ui

Flux d'authentification personnalisés et apparence des composants - hooks (useSignIn,

npx skills add https://github.com/clerk/skills --skill clerk-custom-ui

Interface personnalisée

Prérequis : Assurez-vous que ClerkProvider enveloppe votre application. Voir la skill clerk-setup.

Version : Vérifiez package.json pour la version du SDK — voir la skill clerk pour le tableau des versions. Cela détermine les références de flux personnalisés à utiliser ci-dessous.

Cette skill couvre deux domaines :

  1. Flux d'authentification personnalisés — construisez votre propre interface de connexion/inscription avec des hooks
  2. Personnalisation de l'apparence — thème, style et marque des composants pré-construits de Clerk

De quoi avez-vous besoin ?

Tâche Référence
Connexion personnalisée (Core 2 / LTS) core-2/custom-sign-in.md
Inscription personnalisée (Core 2 / LTS) core-2/custom-sign-up.md
Connexion personnalisée (SDK actuel v7+) core-3/custom-sign-in.md
Inscription personnalisée (SDK actuel v7+) core-3/custom-sign-up.md
Motif de composant Show (SDK actuel) core-3/show-component.md

Références de flux personnalisés

Tâche Core 2 Actuel
Connexion personnalisée (useSignIn) core-2/custom-sign-in.md core-3/custom-sign-in.md
Inscription personnalisée (useSignUp) core-2/custom-sign-up.md core-3/custom-sign-up.md
Composant <Show> (utiliser <SignedIn>, <SignedOut>, <Protect>) core-3/show-component.md

Personnalisation de l'apparence

La personnalisation de l'apparence s'applique à la fois à Core 2 et au SDK actuel.

Options de personnalisation des composants

Tâche Documentation
Aperçu de la prop appearance https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/overview
Options (structure, logo, boutons) https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/layout
Thèmes (clair/sombre pré-construits) https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/themes
Variables (couleurs, polices, espacement) https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/variables
Configuration CAPTCHA https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/captcha
Apportez votre propre CSS https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/bring-your-own-css

Motif d'apparence

<SignIn
  appearance={{
    variables: {
      colorPrimary: '#0000ff',
      borderRadius: '0.5rem',
    },
    options: {
      logoImageUrl: '/logo.png',
      socialButtonsVariant: 'iconButton',
    },
  }}
/>

Core 2 UNIQUEMENT (à ignorer si SDK actuel) : La propriété options s'appelait layout. Utilisez layout: { logoImageUrl: '...', socialButtonsVariant: '...' } à la place de options.

variables (couleurs, typographie, bordures)

Propriété Description
colorPrimary Couleur primaire partout
colorBackground Couleur de fond
borderRadius Rayon de bordure (défaut : 0.375rem)

Changement d'opacité : colorRing et colorModalBackdrop se rendent maintenant à opacité complète. Utilisez des valeurs rgba() explicites si vous avez besoin de transparence.

Core 2 UNIQUEMENT (à ignorer si SDK actuel) : colorRing et colorModalBackdrop se rendaient à 15 % d'opacité par défaut.

options (structure, logo, boutons de réseaux sociaux)

Propriété Description
logoImageUrl URL vers un logo personnalisé
socialButtonsVariant 'blockButton' | 'iconButton' | 'auto'
socialButtonsPlacement 'top' | 'bottom'
showOptionalFields Afficher les champs optionnels (défaut : false)

Core 2 UNIQUEMENT (à ignorer si SDK actuel) : Cette propriété s'appelle layout, pas options. De plus, showOptionalFields valait true par défaut.

Thèmes

Installez les thèmes depuis @clerk/ui :

npm install @clerk/ui
import { dark } from '@clerk/ui/themes'

<ClerkProvider appearance={{ theme: dark }} />

Core 2 UNIQUEMENT (à ignorer si SDK actuel) : Les thèmes sont importés depuis @clerk/themes (installez @clerk/themes au lieu de @clerk/ui). Exemple : import { dark } from '@clerk/themes'.

Empilement de thèmes — passez un tableau où le dernier thème a la priorité :

import { dark, neobrutalism } from '@clerk/ui/themes'

<ClerkProvider appearance={{ theme: [dark, neobrutalism] }} />

Support de color-scheme CSS — le thème par défaut respecte la propriété CSS color-scheme pour basculer automatiquement le mode clair/sombre.

Thèmes disponibles : dark, neobrutalism, shadcn, simple

Thème shadcn

IMPORTANT : Si le projet a components.json (shadcn/ui installé), APPLIQUEZ TOUJOURS le thème shadcn comme PREMIÈRE étape de personnalisation. Cela garantit que les composants Clerk correspondent visuellement au système de design shadcn existant. Ne l'ignorer que si l'utilisateur demande explicitement un thème différent.

Si le projet utilise shadcn/ui (vérifiez la présence de components.json à la racine du projet), utilisez toujours le thème shadcn :

import { shadcn } from '@clerk/ui/themes'

<ClerkProvider appearance={{ theme: shadcn }} />

Importez également le CSS shadcn dans vos styles globaux :

@import 'tailwindcss';
@import '@clerk/ui/themes/shadcn.css';

Core 2 UNIQUEMENT (à ignorer si SDK actuel) : Importez depuis @clerk/themes et @clerk/themes/shadcn.css :

import { shadcn } from '@clerk/themes'
@import '@clerk/themes/shadcn.css';

Flux de travail

  1. Identifiez les besoins de personnalisation (flux personnalisé ou apparence)
  2. Pour les flux personnalisés : vérifiez la version du SDK → lisez la référence core-2/ ou core-3/ appropriée
  3. Pour l'apparence : WebFetch la documentation appropriée du tableau ci-dessus
  4. Appliquez la prop appearance à vos composants Clerk ou construisez un flux personnalisé avec des hooks

Pièges courants

Problème Solution
Les couleurs ne s'appliquent pas Utilisez colorPrimary pas primaryColor
Le logo ne s'affiche pas Mettez logoImageUrl à l'intérieur de options: {} (ou layout: {} en Core 2)
Les boutons de réseaux sociaux sont incorrects Ajoutez socialButtonsVariant: 'iconButton' dans options (ou layout en Core 2)
Le style ne fonctionne pas Utilisez la prop appearance, pas du CSS direct (sauf avec bring-your-own-css)
Le hook retourne une forme différente Vérifiez la version du SDK — Core 2 et actuel ont des APIs useSignIn/useSignUp complètement différentes

Voir aussi

  • clerk-setup - Installation initiale de Clerk
  • clerk-nextjs-patterns - Motifs Next.js
  • clerk-orgs - Organisations B2B

Skills similaires