Installation
Prérequis
- React
^18.0.0ou^19.0.0 - TypeScript
>= 5.0(facultatif, mais recommandé)
La seule dépendance à l'exécution de @lh-ui/react est @lh-ui/share — la couche partagée de la famille, indépendante du framework (logique des composants, styles, thèmes, textes). Les peer dependencies sont react et react-dom.
Installation via un gestionnaire de paquets
pnpm add @lh-ui/react
npm install @lh-ui/react
yarn add @lh-ui/react
bun add @lh-ui/react
Importer les styles
@lh-ui/react adopte une stratégie d'import à la demande (alignée sur @lh-ui/vue2) : l'entrée du paquet n'injecte aucun style ; les variables de thème et les styles de composants sont importés séparément.
// Variables de thème (requis) : contient les jetons de conception et les variables sombres
import '@lh-ui/react/theme.css'
// Styles de composants (à la demande) : un import par composant utilisé
import '@lh-ui/react/style/button'
import '@lh-ui/react/style/input'
Les noms de classe du CSS de thème et du CSS de composants sont strictement identiques, vous pouvez donc également importer la même source SCSS depuis @lh-ui/share et la compiler vous-même :
@use '@lh-ui/share/styles/theme/common/var.scss';
@use '@lh-ui/share/styles/button';
L'import à la demande est la pratique dominante de l'écosystème React, et un effet de bord avec l'intégralité des styles rompt le tree-shaking. En laissant à l'utilisateur le soin d'importer les styles, le bundler peut élaguer avec précision les styles des composants inutilisés.
Mode sombre
Les variables sombres se trouvent dans theme-dark.css, mutuellement exclusif avec theme.css (un des deux au choix), ou basculées à l'exécution via useLhTheme / useLhPresetTheme :
import { useLhTheme } from '@lh-ui/react'
function App() {
const { theme, toggleTheme } = useLhTheme()
return <button onClick={toggleTheme}>{theme === 'dark' ? 'Passer au mode clair' : 'Passer au mode sombre'}</button>
}
Support des navigateurs
Navigateurs modernes (Chrome / Edge / Firefox / Safari, les deux dernières versions stabilisées). Les composants utilisent massivement des propriétés personnalisées CSS (var(--lh-*)), non prises en charge par IE.