"use client"; import { useEffect } from "react"; import type { GraphNode } from "@/lib/types"; interface MobileActionSheetProps { node: GraphNode; onShowDescription?: () => void; onAddComment: () => void; onClaimTask?: () => void; onUnclaimTask?: () => void; onCollapseEpic?: () => void; onUncollapseEpic?: () => void; onFocusEpic?: () => void; onExitFocusEpic?: () => void; onClose: () => void; } export function MobileActionSheet({ node, onShowDescription, onAddComment, onClaimTask, onUnclaimTask, onCollapseEpic, onUncollapseEpic, onFocusEpic, onExitFocusEpic, onClose, }: MobileActionSheetProps) { // Escape key dismissal useEffect(() => { const handler = (e: KeyboardEvent) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); }, [onClose]); return ( <> {/* Backdrop */}
{/* Action sheet */}
{/* Drag handle */}
{/* Node info header */}
{node.id}
{node.title}
{/* Actions */}
{onShowDescription && ( )} {onClaimTask && ( )} {onUnclaimTask && ( )} {onCollapseEpic && ( )} {onUncollapseEpic && ( )} {onFocusEpic && ( )} {onExitFocusEpic && ( )}
{/* Cancel button */}
{/* Safe area padding for phones with home indicator */}
); }