J'utilise NextJS v14 et PicoCSS ( https://picocss.com/ )
Dans mon header et ma nav j'ai un menu en ul li qui affiche des boutons stylisés grâce à picocss.
J'ai ajouté le support jour/nuit avec Toggle.dev https://toggles.dev/ et un ThemeToggle.js :
Code :
- import React, { useState, useEffect } from 'react';
- import { Expand } from "@theme-toggles/react";
- import "@theme-toggles/react/css/Expand.css";
- const ThemeToggle = () => {
- const [isMounted, setIsMounted] = useState(false);
- const [isDark, setIsDark] = useState(false);
- useEffect(() => {
- setIsMounted(true);
- const theme = localStorage.getItem('theme') || 'light';
- setIsDark(theme === 'dark');
- document.documentElement.setAttribute('data-theme', theme);
- }, []);
- const toggleTheme = () => {
- const newTheme = isDark ? 'light' : 'dark';
- setIsDark(!isDark);
- localStorage.setItem('theme', newTheme);
- document.documentElement.setAttribute('data-theme', newTheme);
- };
- if (!isMounted) {
- return null;
- }
- return (
- <Expand
- duration={750}
- toggled={isDark}
- toggle={toggleTheme}
- style={{ padding: 0, margin: 0 }}
- />
- );
- };
- export default ThemeToggle;
|
Et pour mon buton de menu:
Code :
- <li>
- <button className="secondary" data-tooltip="Jour, nuit ?" data-placement="bottom">
- <ThemeToggle />
- </button>
- </li>
|
ça marche plutôt pas trop mal, j'ai eu des mouises de style avec les bouttons qui partent en couilles et je comprend maintenant :
Expand semble utiliser button quelque part, puis je met button expand dans un button.
Dans la console nav j'ai
hydration-error-info.js:63 Warning: validateDOMNesting(...): <button> cannot appear as a descendant of <button>. |
Suivi de tout le chemin pour remonter.
Donc soit je demande à un LLM de me génerer le code en reprenant la partie HTML et import CSS de toggle.dev soit je trouve comment remonter le style button "secondary" à Expand.
Une ou plusieurs solutions ?
---------------
"Xat le punk à chien facho raciste. C'est complexe comme personnage." caudacien 05/10/2020