/
githubmirror
/
traefik
Обзор
Документация
Войти
/
githubmirror
/
traefik
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
webui/src/components/Tooltip.tsx
47 строк
1 KB
Murat Aslan
Display server weight in service detail view
30 мар 2026, 17:58
Не верифицирован
30 мар 2026, 17:58
9a8ff96
Код
Авторство
О чём код?
import { Button, Flex, Text, Tooltip as FaencyTooltip } from '@traefik-labs/faency' import { MouseEvent, ReactNode, useMemo, useState } from 'react' import { FiCheck, FiCopy } from 'react-icons/fi' type TooltipProps = { action?: 'copy' children: ReactNode label: string } export default function Tooltip({ action, children, label }: TooltipProps) { const [showConfirmation, setShowConfirmation] = useState(false) const actionComponent = useMemo(() => { if (action === 'copy') { return ( <Button css={{ padding: '0 $2 !important' }} onClick={async (e: MouseEvent) => { e.preventDefault() e.stopPropagation() await navigator.clipboard.writeText(label) setShowConfirmation(true) setTimeout(() => setShowConfirmation(false), 1500) }} > {showConfirmation ? <FiCheck size={16} /> : <FiCopy size={16} />} </Button> ) } return null }, [action, label, showConfirmation]) return ( <FaencyTooltip content={ <Flex align="center" gap={2} css={{ px: '$1' }}> <Text css={{ maxWidth: '240px !important', color: '$contrast', wordBreak: 'break-word' }}>{label}</Text>{' '} {actionComponent} </Flex> } > {children} </FaencyTooltip> ) }