import { useState } from 'react' import { IconChevronRight, IconDotsVertical } from '@tabler/icons-react' import ContextMenu from './ContextMenu.jsx' /** * MobileCardView - компонент для отображения табличных данных в виде карточек на мобильных * Поддерживает swipe gestures для действий */ function MobileCardView({ items, onItemClick, renderContent, // функция для рендера содержимого карточки actions // массив действий { label, icon, onClick, variant } }) { const [swipedItem, setSwipedItem] = useState(null) const [touchStart, setTouchStart] = useState(null) const [touchEnd, setTouchEnd] = useState(null) // минимальная дистанция свайпа в px const minSwipeDistance = 50 const onTouchStart = (e, item) => { setTouchEnd(null) setTouchStart(e.targetTouches[0].clientX) } const onTouchMove = (e, item) => { setTouchEnd(e.targetTouches[0].clientX) } const onTouchEnd = (item) => { if (!touchStart || !touchEnd) return const distance = touchStart - touchEnd const isLeftSwipe = distance > minSwipeDistance const isRightSwipe = distance < -minSwipeDistance if (isLeftSwipe) { setSwipedItem(item) } else if (isRightSwipe) { setSwipedItem(null) } } return (