// @ts-nocheck import React from "react"; import { createPortal } from "react-dom"; /* ============================================================ ui-kit.jsx Composants haute-fid Gruvbox Seventies. Tout est purement décoratif/interactif côté composant. Effets : transparence (glass), hover glow, click 3D, tooltips. ============================================================ */ const { useState, useRef, useEffect } = React; /* ============================================================ Icônes — Font Awesome 6 Free. Mapping nom logique → classe FA. Le CSS de FA est chargé en CDN dans le . Le composant garde la MÊME API qu'avant (name, size, style) pour ne rien casser ailleurs. ============================================================ */ const ICON_MAP = { cpu: 'microchip', memory: 'memory', disk: 'hard-drive', network: 'network-wired', clock: 'clock', grid: 'table-cells', list: 'list', cog: 'gear', alert: 'triangle-exclamation', bell: 'bell', server: 'server', chart: 'chart-line', bars: 'chart-simple', terminal: 'terminal', refresh: 'arrows-rotate', play: 'play', pause: 'pause', power: 'power-off', sun: 'sun', moon: 'moon', search: 'magnifying-glass', close: 'xmark', chevR: 'chevron-right', chevL: 'chevron-left', chevD: 'chevron-down', chevU: 'chevron-up', plus: 'plus', filter: 'filter', download: 'download', upload: 'upload', database: 'database', trash: 'trash', check: 'check', folder: 'folder', docker: 'boxes-stacked', package: 'box-open', script: 'file-code', shield: 'shield-halved', key: 'key', locked: 'lock', logs: 'file-lines', report: 'clipboard-list', copy: 'copy', collapse: 'down-left-and-up-right-to-center', upgrade: 'cloud-arrow-down', node: 'circle-nodes', user: 'user', }; const Icon = ({ name, size = 16, style }) => { const fa = ICON_MAP[name] || 'circle-question'; return (