Pour diviser ce code en composants réutilisables avec React et TypeScript, vous pouvez suivre ces étapes: 1. **Créez un composant pour le lien de navigation**: Créez un composant qui représente le lien de navigation avec son icône, texte et flèche. Ce composant prendra des propriétés pour personnaliser ces éléments. Par exemple: ```tsx import React from 'react'; interface NavItemProps { icon: JSX.Element; text: string; submenuId: string; } const NavItem: React.FC<NavItemProps> = ({ icon, text, submenuId }) => { return ( <li className="nav-item has-submenu my-1"> <a className="nav-link submenu-toggle" href="#" data-bs-toggle="collapse" data-bs-target={`#${submenuId}`} aria-expanded="false" aria-controls={submenuId} > <span className="nav-icon">{icon}</span> <span className="nav-link-text">{text}</span> <span className="submenu-arrow"> <svg width="1em" height="1em" viewBox="0 0 16 16" className="bi bi-chevron-down" fill="currentColor" xmlns="http://www.w3.org/2000/svg" > <path d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z" /> </svg> </span> </a> </li> ); }; export default NavItem; ``` 2. **Créez un composant pour le sous-menu**: Créez un composant qui représente le sous-menu. Ce composant prendra en charge la liste des éléments de menu. Par exemple: ```tsx import React, { ReactNode } from 'react'; interface SubmenuProps { id: string; children: ReactNode; } const Submenu: React.FC<SubmenuProps> = ({ id, children }) => { return ( <div id={id} className="collapse submenu submenu-1" data-bs-parent="#menu-accordion"> <ul className="submenu-list list-unstyled">{children}</ul> </div> ); }; export default Submenu; ``` 3. **Créez un composant pour un élément de menu**: Créez un composant qui représente un élément de menu individuel. Vous pouvez personnaliser cet élément en fonction de vos besoins. Par exemple: ```tsx import React from 'react'; interface MenuItemProps { href: string; text: string; } const MenuItem: React.FC<MenuItemProps> = ({ href, text }) => { return ( <li className="submenu-item"> <a className="submenu-link" href={href}> {text} </a> </li> ); }; export default MenuItem; ``` 4. **Utilisez ces composants dans votre application**: Maintenant, vous pouvez utiliser ces composants dans votre application pour créer des éléments de menu de manière réutilisable. Par exemple: ```tsx import React from 'react'; import NavItem from './NavItem'; import Submenu from './Submenu'; import MenuItem from './MenuItem'; const App: React.FC = () => { return ( <ul id="menu-accordion"> <NavItem icon={<YourIconComponent />} text="Gestion Clients" submenuId="submenu-1" /> <Submenu id="submenu-1"> <MenuItem href="manageClients/activeClient.html" text="Clients Actifs" /> <MenuItem href="manageClients/bannedClient.html" text="Clienst Bannis" /> <MenuItem href="manageClients/allClient.html" text="Tous Les Clients" /> <MenuItem href="#" text="Avis à Tous" /> </Submenu> </ul> ); }; export default App; ``` Assurez-vous d'importer correctement les composants et de personnaliser les icônes et les liens selon vos besoins. Cette approche rend votre code plus modulaire et réutilisable.