File size: 1,922 Bytes
6bda4a6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import React from 'react';
/**
* Composant de basculement du mode sombre (version standalone)
*/
const DarkModeToggle = ({ darkMode, onToggle, onResetToSystem }) => {
const handleClick = (e) => {
if (e.detail === 2) {
// Double-clic pour réinitialiser aux préférences système
e.preventDefault();
if (onResetToSystem) {
onResetToSystem();
}
} else {
// Clic simple pour basculer
onToggle();
}
};
const handleContextMenu = (e) => {
e.preventDefault();
if (onResetToSystem) {
onResetToSystem();
}
};
return (
<div className="dark-mode-toggle">
<button
className="toggle-btn"
onClick={handleClick}
onContextMenu={handleContextMenu}
title={`${darkMode ? 'Light mode' : 'Dark mode'} (Double-clic ou clic droit pour réinitialiser aux préférences système)`}
>
{darkMode ? (
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<circle cx="12" cy="12" r="5"/>
<line x1="12" y1="1" x2="12" y2="3"/>
<line x1="12" y1="21" x2="12" y2="23"/>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
<line x1="1" y1="12" x2="3" y2="12"/>
<line x1="21" y1="12" x2="23" y2="12"/>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
</svg>
) : (
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
</svg>
)}
</button>
</div>
);
};
export default DarkModeToggle;
|