"use client"; import * as React from "react"; import { cn } from "@/lib/utils"; import { useIsMobile } from "@/hooks/use-is-mobile"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet"; export interface ResponsiveSheetProps { /** Controlled open state. */ open: boolean; /** Open-state setter forwarded to the underlying Sheet / Dialog root. */ onOpenChange: (open: boolean) => void; /** * Required accessible title. Rendered inside the sheet / dialog * header so screen-readers always announce the surface, even when * the visual header is empty. */ title: React.ReactNode; /** Optional short description rendered beneath the title. */ description?: React.ReactNode; /** * Hide the visual header (title + description). The title remains * mounted in an `sr-only` block so the accessible name is still * announced. Use when the consumer renders its own header inside * the body. */ hideHeader?: boolean; /** * Footer slot. Pass the action `