Composants
Boutons classiques
Boutons avec bordure
Boutons avec arrondi
Boutons avec taille
Boutons désactivés
Boutons en chargement
Boutons avec Icônes Font Awesome
Icônes à gauche
Icônes à droite
Boutons Outline
États Spéciaux avec Icônes
Boutons-Liens
URLs complètes
Ancres (IDs)
Routes Laravel
Différents targets
Style lien classique
Liens classiques avec icônes
Liens classiques - différentes tailles
Exemples de code :
Bouton simple :
<x-ui.button color="primary">Primary</x-ui.button>
Bouton avec bordure :
<x-ui.button color="primary" outline>Primary</x-ui.button>
Bouton avec icône :
<x-ui.button color="primary" icon="fas fa-plus" iconPosition="left">Ajouter</x-ui.button>
Bouton avec taille et arrondi :
<x-ui.button color="primary" size="lg" rounded="full">Large</x-ui.button>
Bouton désactivé :
<x-ui.button color="primary" disabled>Désactivé</x-ui.button>
Bouton en chargement :
<x-ui.button color="primary" loading>Chargement</x-ui.button>
Bouton-lien avec URL complète :
<x-ui.button color="primary" link="https://laravel.com" icon="fas fa-external-link-alt" iconPosition="right">Laravel</x-ui.button>
Bouton-lien avec ancre (ID) :
<x-ui.button color="accent" link="#section1" icon="fas fa-arrow-down" iconPosition="right">Aller à la section 1</x-ui.button>
Bouton-lien avec route Laravel :
<x-ui.button color="primary" link="welcome" icon="fas fa-home" iconPosition="left">Accueil</x-ui.button>
Bouton-lien avec target :
<x-ui.button color="primary" link="https://example.com" target="_blank" icon="fas fa-external-link-alt" iconPosition="right">Nouvel onglet</x-ui.button>
Options target disponibles :
_blank, _self, _parent, _top
Lien avec style classique :
<x-ui.button color="primary" link="https://example.com" link_style>Lien classique</x-ui.button>
Lien classique avec icône :
<x-ui.button color="primary" link="https://example.com" link_style icon="fas fa-external-link-alt" iconPosition="right">Lien externe</x-ui.button>
Lien classique avec target :
<x-ui.button color="primary" link="https://example.com" link_style target="_blank">Nouvel onglet</x-ui.button>
Toutes les couleurs disponibles :
primary, secondary, accent, success, warning, error, info, neutral
Tailles disponibles :
sm, md, lg
Arrondis disponibles :
none, sm, md, lg, full
Fieldset
x-ui.forms.fieldsetComposant pour regrouper logiquement plusieurs champs de formulaire avec un titre et une description, en s’appuyant sur le fieldset daisyUI.
Exemple simple
Code :
<x-ui.forms.fieldset
legend="Informations de base"
description="Ces champs sont requis pour créer l’élément."
>
<x-ui.forms.label text="Titre" for="title">
<x-ui.forms.input name="title" placeholder="Titre…" class="w-full" />
<x-ui.forms.validator hint="Entre 3 et 255 caractères." />
</x-ui.forms.label>
<x-ui.forms.label text="Slug" for="slug">
<x-ui.forms.input name="slug" placeholder="slug-exemple" class="w-full" />
</x-ui.forms.label>
</x-ui.forms.fieldset>
Slots & layout personnalisé
Code :
<x-ui.forms.fieldset
fieldsetClass="w-full"
contentClass="grid md:grid-cols-2 gap-4"
>
<x-slot:legendSlot>
<span class="flex items-center gap-2">
<x-ui.icon name="heroicon-o-user" class="w-4 h-4 text-primary" />
<span>Profil utilisateur</span>
</span>
</x-slot:legendSlot>
<x-slot:descriptionSlot>
<span class="text-sm text-neutral-500">
Regroupe les champs liés à l’identité de l’utilisateur.
</span>
</x-slot:descriptionSlot>
<x-ui.forms.label text="Prénom" for="first_name">
<x-ui.forms.input name="first_name" placeholder="Jane" class="w-full" />
</x-ui.forms.label>
<x-ui.forms.label text="Nom" for="last_name">
<x-ui.forms.input name="last_name" placeholder="Doe" class="w-full" />
</x-ui.forms.label>
<div class="md:col-span-2">
<x-ui.forms.label text="Email" for="email">
<x-ui.forms.input name="email" type="email" placeholder="jane.doe@example.com" class="w-full" />
<x-ui.forms.validator :error="$errors->first('email')" />
</x-ui.forms.label>
</div>
</x-ui.forms.fieldset>
Input
x-ui.forms.input
Champ de saisie texte basé sur le composant input de daisyUI, avec gestion intégrée des tailles,
couleurs, erreurs et accessibilité.
Exemple simple
Code :
<x-ui.forms.label text="Titre" for="title">
<x-ui.forms.input
name="title"
placeholder="Mon super titre"
class="w-full"
/>
</x-ui.forms.label>
Tailles, couleurs & erreurs
Nous ne partagerons jamais votre email.
Adresse email invalide
Code :
<x-ui.forms.label text="Email" for="email">
<x-ui.forms.input
name="email"
type="email"
size="lg"
color="primary"
placeholder="vous@example.com"
class="w-full"
/>
<x-ui.forms.validator name="email" :error="$errors->first('email')" />
</x-ui.forms.label>
Variantes (ghost, couleurs, disabled)
Ce champ est en lecture seule.
Code :
<x-ui.forms.label text="Recherche" for="search">
<x-ui.forms.input name="search" ghost="true" placeholder="Rechercher…" class="w-full" />
</x-ui.forms.label>
<x-ui.forms.label text="Email" for="email">
<x-ui.forms.input name="email" type="email" size="lg" color="primary" class="w-full" />
<x-ui.forms.validator :error="$errors->first('email')" />
</x-ui.forms.label>
Textarea
x-ui.forms.textarea
Zone de texte multi-lignes basée sur le composant textarea de daisyUI, avec support des tailles,
couleurs, erreurs et intégration Livewire.
Exemple simple
Code :
<x-ui.forms.label text="Description" for="description">
<x-ui.forms.textarea
name="description"
rows="4"
placeholder="Décrivez votre demande…"
class="w-full"
></x-ui.forms.textarea>
</x-ui.forms.label>
Tailles, couleurs & erreurs
Astuce : utilise des puces pour structurer.
La description détaillée est requise
Code :
<x-ui.forms.label text="Description" for="description">
<x-ui.forms.textarea
name="description"
rows="6"
placeholder="Détaillez votre feedback…"
class="w-full"
></x-ui.forms.textarea>
<x-ui.forms.validator name="description" :error="$errors->first('description')" />
</x-ui.forms.label>
Variantes (ghost, tailles, info)
Plus il y a de contexte, plus c’est facile à reproduire.
Code :
<x-ui.forms.label text="Commentaire" for="comment">
<x-ui.forms.textarea name="comment" ghost="true" rows="3" class="w-full"></x-ui.forms.textarea>
</x-ui.forms.label>
<x-ui.forms.label text="Description" for="description">
<x-ui.forms.textarea name="description" rows="6" class="w-full"></x-ui.forms.textarea>
<x-ui.forms.validator name="description" :error="$errors->first('description')" />
</x-ui.forms.label>
Select
x-ui.forms.select
Liste déroulante basée sur le composant select de daisyUI, avec support des tailles, couleurs,
erreurs et intégration avec Livewire.
Exemple simple
Code :
<x-ui.forms.label text="Type de feedback" for="type">
<x-ui.forms.select name="type" class="w-full">
<option value="">Sélectionnez un type…</option>
<option value="bug">Bug</option>
<option value="idea">Idée</option>
<option value="question">Question</option>
</x-ui.forms.select>
</x-ui.forms.label>
Tailles, couleurs & erreurs
La sélection est obligatoire
Code :
<x-ui.forms.label text="Priorité" for="priority">
<x-ui.forms.select
name="priority"
size="md"
color="secondary"
class="w-full"
>
<option value="low">Basse</option>
<option value="medium">Moyenne</option>
<option value="high">Haute</option>
</x-ui.forms.select>
</x-ui.forms.label>
Range
x-ui.forms.range
Curseur de sélection numérique basé sur le composant range de daisyUI, avec support des tailles,
couleurs, erreurs et attributs min, max, step.
Exemple simple
Code :
<x-ui.forms.label text="Volume (0–100)" for="volume">
<x-ui.forms.range
name="volume"
min="0"
max="100"
:value="50"
class="w-full"
/>
</x-ui.forms.label>
Tailles, couleurs & erreurs
Veuillez choisir une valeur
Code :
<x-ui.forms.range
name="level"
min="0"
max="10"
step="1"
size="sm"
color="secondary"
:value="5"
class="w-full"
/>
<x-ui.forms.range
name="satisfaction"
min="0"
max="100"
size="lg"
color="accent"
:value="75"
class="w-full"
/>
Toggle
x-ui.forms.toggle
Interrupteur (switch) basé sur <input type="checkbox"> stylé avec le composant toggle de daisyUI.
Compatible wire:model et x-model. Support des tailles (xs, sm, md, lg, xl) et des couleurs.
Exemple simple
Code :
<x-ui.forms.label text="Activer les notifications" for="notif">
<x-ui.forms.toggle name="notif" />
</x-ui.forms.label>
Tailles & couleurs
Code :
<x-ui.forms.toggle name="opt" size="sm" color="primary" />
<x-ui.forms.toggle name="opt" size="md" color="secondary" />
<x-ui.forms.toggle name="opt" size="lg" color="accent" />
Checkbox
x-ui.forms.checkbox
Case à cocher basée sur <input type="checkbox"> stylée avec le composant checkbox de daisyUI.
Compatible wire:model et x-model. Support des tailles (xs, sm, md, lg, xl) et des couleurs.
Exemple simple
Code :
<div class="flex items-center gap-2">
<x-ui.forms.checkbox name="remember" />
<label for="remember" class="cursor-pointer">Se souvenir de moi</label>
</div>
Tailles & couleurs
Code :
<x-ui.forms.checkbox name="opt" size="sm" color="primary" />
<x-ui.forms.checkbox name="opt" size="md" color="secondary" />
<x-ui.forms.checkbox name="opt" size="lg" color="accent" />
Radio
x-ui.forms.radio
Bouton radio basé sur <input type="radio"> stylé avec le composant radio de daisyUI.
Compatible wire:model et x-model. Chaque option doit avoir le même name et un value distinct.
Groupe de choix
Code :
<x-ui.forms.radio name="choice" value="a" />
<label for="choice-a">Option A</label>
<x-ui.forms.radio name="choice" value="b" />
<label for="choice-b">Option B</label>
Tailles & couleurs
sm (primary), md (secondary), lg (accent)
Code :
<x-ui.forms.radio name="size" value="1" size="sm" color="primary" />
<x-ui.forms.radio name="size" value="2" size="md" color="secondary" />
<x-ui.forms.radio name="size" value="3" size="lg" color="accent" />
Mode simple (un seul onglet à la fois)
Mode multiple (plusieurs onglets peuvent être ouverts)
Accordion avec un seul élément
Accordion ouvert par défaut
Accordion multiple ouvert par défaut
Accordion avec différentes couleurs
Couleur Primary
Couleur Success
Couleur Warning
Exemples de code :
Accordion simple :
<x-ui.accordion :items="$items" />
Accordion multiple :
<x-ui.accordion :items="$items" :allowMultiple="true" />
Avec couleur :
<x-ui.accordion :items="$items" color="primary" />
Ouvert par défaut :
<x-ui.accordion :items="$items" :open="true" />
Multiple ouvert par défaut :
<x-ui.accordion :items="$items" :allowMultiple="true" :open="true" />
Structure des données :
$items = [
[
'title' => 'Titre de l\'onglet',
'content' => 'Contenu de l\'onglet',
'customClass' => 'bg-blue-100' // Classes personnalisées ajoutées (optionnel)
],
// ... autres onglets
];
Couleurs disponibles :
primary, secondary, accent, success, warning, error, info, neutral
Avec classes personnalisées :
<x-ui.accordion :items="$items" color="primary" :allowMultiple="true" />
Icones Font Awesome
Exemples de code :
Icône simple :
<x-ui.icon name="fa-home" />
Icône avec type différent :
<x-ui.icon type="fal" name="fa-star" />
Icône avec taille :
<x-ui.icon name="fa-star" size="lg" />
Icône avec couleur prédéfinie :
<x-ui.icon name="fa-heart" color="error" />
Icône avec couleur personnalisée :
<x-ui.icon name="fa-heart" color="red-500" />
Icône avec classe personnalisée :
<x-ui.icon name="fa-user" class="animate-pulse" />
Icône dans un bouton :
<x-ui.button color="primary" icon="fas fa-plus" iconPosition="left">Ajouter</x-ui.button>
Tailles disponibles :
xs, sm, md, lg, xl, 2xl
Types disponibles :
fas (solid), fal (light), far (regular), fab (brands), fad (duotone)
Couleurs disponibles :
primary, secondary, accent, success, warning, error, info, neutral, ou classes Tailwind personnalisées
Dropdown simple
Dropdown avec icône
Exemples de code :
Dropdown simple :
<x-ui.dropdown>
<x-slot:buttonSlot>
Options
</x-slot:buttonSlot>
<a href="#">Profil</a>
<a href="#">Paramètres</a>
</x-ui.dropdown>
Dropdown avec icône :
<x-ui.dropdown icon="fa-user">
<x-slot:buttonSlot>
Menu utilisateur
</x-slot:buttonSlot>
<a href="#">Mon profil</a>
</x-ui.dropdown>
Dropdown avec classes personnalisées :
<x-ui.dropdown
addButtonClasses="bg-primary text-white"
buttonSlot="Actions">
<a href="#">Option 1</a>
</x-ui.dropdown>
Dropdown ouvert par défaut :
<x-ui.dropdown :open="true">
<x-slot:buttonSlot>
Menu
</x-slot:buttonSlot>
<a href="#">Option</a>
</x-ui.dropdown>
Propriétés disponibles :
open: bool (défaut: false)
addButtonClasses: string (classes CSS supplémentaires pour le bouton)
buttonClass: string (classes CSS complètes pour le bouton)
buttonSlot: slot (contenu du bouton)
icon: string (nom de l'icône Font Awesome)
Skeleton par défaut
Skeleton Avatar
Skeleton Ligne
Skeleton Bloc
Skeleton Carte
Skeleton Liste
Skeleton Aléatoire
Le type "random" génère un skeleton de type aléatoire (avatar, line, block, ou card)
Combinaisons
Exemples de code :
Skeleton par défaut :
<x-ui.skeleton />
<x-ui.skeleton width="w-64" />
<x-ui.skeleton width="w-80" height="h-40" />
Skeleton Avatar :
<x-ui.skeleton type="avatar" avatarSize="md" />
<x-ui.skeleton type="avatar" avatarSize="lg" width="w-64" />
Skeleton Ligne :
<x-ui.skeleton type="line" lines="3" width="w-64" />
<x-ui.skeleton type="line" lines="5" width="w-full" />
Skeleton Bloc :
<x-ui.skeleton type="block" width="w-64" />
<x-ui.skeleton type="block" width="w-80" height="h-40" />
<x-ui.skeleton type="block" width="w-96" rounded="false" />
Skeleton Carte :
<x-ui.skeleton type="card" width="w-64" />
<x-ui.skeleton type="card" width="w-80" />
Skeleton Liste :
<x-ui.skeleton type="list" lines="3" width="w-64" />
<x-ui.skeleton type="list" lines="5" width="w-full" />
Skeleton Aléatoire :
<x-ui.skeleton type="random" width="w-64" />
Propriétés disponibles :
type: string (default, avatar, line, block, card, list, random)
lines: int (nombre de lignes pour type 'line' ou 'list', défaut: 3)
width: string (largeur Tailwind, ex: 'w-64', 'w-full', défaut: 'w-52')
height: string (hauteur Tailwind, ex: 'h-32', 'h-40', défaut: null)
avatarSize: string (xs, sm, md, lg, xl pour type 'avatar', défaut: 'md')
rounded: bool (arrondi pour les blocs, défaut: true)
Types disponibles :
- default : Affichage par défaut avec bloc et lignes
- avatar : Avatar circulaire avec texte à côté
- line : Lignes de texte de largeurs variables
- block : Bloc avec image et texte
- card : Carte complète avec image, titre, texte et boutons
- list : Liste d'éléments avec avatar et texte
- random : Type aléatoire parmi avatar, line, block, card
Note :
Le composant skeleton utilise la classe CSS skeleton qui doit être définie dans votre CSS. Cette classe crée une animation de chargement avec un effet de brillance.
Timeline simple
Timeline avec icônes personnalisées
Timeline avec contenu HTML
Exemples de code :
Timeline simple :
<x-ui.timeline :items="[
[
'date' => '2024-01-15',
'title' => 'Titre',
'description' => 'Description'
]
]" />
Timeline avec icône personnalisée :
<x-ui.timeline :items="[
[
'date' => '2024-01-15',
'title' => 'Titre',
'description' => 'Description',
'icon' => '<svg...></svg>'
]
]" />
Timeline avec contenu HTML :
<x-ui.timeline :items="[
[
'date' => '2024-01-15',
'title' => 'Titre',
'description' => 'Description',
'content' => '<div>Contenu HTML</div>'
]
]" />
Propriétés disponibles :
items: array (requis)
- date: string (optionnel)
- title: string (optionnel)
- description: string (optionnel)
- content: string (optionnel, HTML)
- icon: string (optionnel, HTML SVG)
Note :
Le composant timeline est responsive et s'adapte automatiquement sur mobile avec un mode compact. Les éléments alternent entre gauche et droite sur desktop.
Titre simple
Titre principal
Titre avec sous-titre
Titre principal
Sous-titre descriptif
Titre avec couleurs
Titre Primary
Titre Success
Titre Warning
Titre Error
Titre Info
Titre avec différentes tailles
Titre 2xl
Titre xl
Titre lg
Titre md
Titre sm
Titre avec niveaux HTML
H1
H2
H3
H4
Titre avec classes personnalisées
Titre personnalisé
Sous-titre personnalisé
Exemples de code :
Titre simple :
<x-ui.title title="Titre principal" />
Titre avec sous-titre :
<x-ui.title
title="Titre principal"
subtitle="Sous-titre descriptif" />
Titre avec couleur :
<x-ui.title title="Titre" color="primary" />
Titre avec taille personnalisée :
<x-ui.title title="Titre" titleSize="2xl" />
Titre avec niveau HTML :
<x-ui.title title="Titre" levelTitle="1" />
Propriétés disponibles :
title: string (titre principal)
subtitle: string (sous-titre)
levelTitle: int (1-6, défaut: 1)
levelSubtitle: int (1-6, défaut: 2)
color: string (none, primary, secondary, accent, success, warning, error, info, neutral)
colorSubtitle: string (même que color)
titleSize: string (sm, md, lg, xl, 2xl, défaut: xl)
subtitleSize: string (sm, md, lg, xl, 2xl, défaut: lg)
classContainer: string (classes CSS pour le conteneur)
classTitle: string (classes CSS pour le titre)
classSubtitle: string (classes CSS pour le sous-titre)
Datepicker simple
Datepicker avec différentes couleurs
Datepicker avec différents formats
Datepicker avec valeur initiale
Datepicker requis
Datepicker désactivé
Datepicker dans un formulaire
Exemples de code :
Datepicker simple :
<x-ui.datepicker />
Datepicker avec couleur :
<x-ui.datepicker label="Date" color="primary" />
<x-ui.datepicker label="Date" color="secondary" />
Datepicker avec format personnalisé :
<x-ui.datepicker format="DD-MM-YYYY" />
<x-ui.datepicker format="YYYY-MM-DD" />
Datepicker avec valeur initiale :
<x-ui.datepicker value="2024-12-25" />
<x-ui.datepicker :value="\$date" />
Datepicker requis :
<x-ui.datepicker label="Date" required />
Datepicker désactivé :
<x-ui.datepicker disabled value="2024-01-15" />
Datepicker dans un formulaire :
<form method="POST" action="/submit">
<x-ui.datepicker name="date" label="Date" required />
<button type="submit">Envoyer</button>
</form>
Propriétés disponibles :
name: string (nom du champ, défaut: 'date')
value: string|Carbon (valeur initiale, format YYYY-MM-DD)
label: string (label du champ, défaut: 'Select Date')
placeholder: string (placeholder, défaut: 'Select date')
color: string (primary, secondary, accent, success, warning, error, info, neutral, défaut: 'primary')
format: string (M d, Y, MM-DD-YYYY, DD-MM-YYYY, YYYY-MM-DD, D d M, Y, défaut: 'M d, Y')
required: bool (champ requis, défaut: false)
disabled: bool (champ désactivé, défaut: false)
class: string (classes CSS pour le conteneur)
inputClass: string (classes CSS pour l'input)
Formats disponibles :
- M d, Y : Jan 15, 2024
- MM-DD-YYYY : 01-15-2024
- DD-MM-YYYY : 15-01-2024
- YYYY-MM-DD : 2024-01-15
- D d M, Y : Mon 15 Jan, 2024
Note :
Le composant génère automatiquement un champ caché avec le nom spécifié pour la soumission de formulaire. La valeur est au format YYYY-MM-DD pour la compatibilité avec les bases de données.