added neumorphism button card sidebar and created styles folder

This commit is contained in:
2026-07-30 17:34:05 +02:00
parent da332abfcc
commit 7be430ce1a
10 changed files with 226 additions and 92 deletions
+9 -7
View File
@@ -1,13 +1,14 @@
import React from 'react';
import { useNavigate } from 'react-router-dom';
import { Button, type ButtonProps } from '@/components/ui/Button';
import { cn } from '@/utils/utils';
export interface BackButtonProps extends Omit<ButtonProps, 'onClick'> {
/** Route explicite vers laquelle naviguer (ex: "/support"). Si non spécifié, fait un retour arrière navigateur (-1) */
/** Route explicite (ex: "/support"). Si omis, fait un retour arrière dans l'historique (-1) */
to?: string;
/** Texte à afficher à côté de la flèche */
/** Texte par défaut du bouton */
label?: string;
/** Callback optionnel si vous souhaitez intercepter le clic */
/** Fonction personnalisée au clic */
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
}
@@ -15,7 +16,7 @@ export const BackButton: React.FC<BackButtonProps> = ({
to,
label = "Retour",
onClick,
variant = "ghost",
variant = "ghost", // Style par défaut : ultra discret sur la surface Neumorphic
size = "sm",
children,
className,
@@ -23,13 +24,14 @@ export const BackButton: React.FC<BackButtonProps> = ({
}) => {
const navigate = useNavigate();
// Logique du clic (priorité : onClick perso > destination 'to' > retour historique)
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {
if (onClick) {
onClick(e);
} else if (to) {
navigate(to);
} else {
navigate(-1); // Comportement natif "Précédent" dans l'historique
navigate(-1);
}
};
@@ -40,7 +42,7 @@ export const BackButton: React.FC<BackButtonProps> = ({
onClick={handleClick}
leftIcon={
<svg
className="w-4 h-4 transition-transform group-hover:-translate-x-0.5"
className="w-4 h-4 transition-transform duration-200 group-hover:-translate-x-1"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
@@ -48,7 +50,7 @@ export const BackButton: React.FC<BackButtonProps> = ({
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M15 19l-7-7 7-7" />
</svg>
}
className={className}
className={cn("group", className)}
{...props}
>
{children || label}