import { NotebookPen, Toolbox } from "lucide-react"; import Image from "next/image"; import { useState } from "react"; import toast from "react-hot-toast"; import LoadingButton from "~/components/custom_ui/loading-button"; import { Textarea } from "~/components/custom_ui/textarea"; import { AdminActions, UserActions, } from "~/components/servizio/annuncio_actions"; import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { useMediaQuery } from "~/hooks/use-media-query"; import { handleConsegna } from "~/lib/annuncio_details"; import { getStorageUrl } from "~/lib/storage_utils"; import { cn, formatCurrency } from "~/lib/utils"; import { useTranslation } from "~/providers/I18nProvider"; import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider"; import type { AnnuncioRicerca } from "~/server/controllers/annunci.controller"; import { api } from "~/utils/api"; import { Button } from "../ui/button"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../ui/collapsible"; import { AnnuncioDettaglio, TipoBadge } from "./annuncio_dettaglio"; export const AnnuncioCard = ({ className }: { className?: string }) => { const { isAdmin } = useServizio(); const { data } = useServizioAnnuncio(); return ( ) : ( ) } /> ); }; export const BasicAnnuncioCard = ({ interactions, className, data, }: { interactions?: React.ReactNode; className?: string; data: AnnuncioRicerca; }) => { const { isAdmin } = useServizio(); return ( Annuncio {data.codice}
{interactions}
{isAdmin && }
); }; const AnnuncioNote = () => { const { servizioId } = useServizio(); const { data } = useServizioAnnuncio(); const [newNote, setNewNote] = useState(data.note || ""); const utils = api.useUtils(); const { mutate, isPending } = api.servizio.updateServizioAnnunci.useMutation({ onSuccess: async () => { toast.success("Note aggiornate"); await utils.servizio.invalidate(); }, onError: () => { toast.error("Errore nell'aggiornamento note"); }, }); const isDesktop = useMediaQuery("(min-width: 40rem)"); return (