import { ExternalLink, UnfoldVertical } from "lucide-react";
import Link from "next/link";
import {
Credenza,
CredenzaBody,
CredenzaClose,
CredenzaContent,
CredenzaDescription,
CredenzaFooter,
CredenzaHeader,
CredenzaTitle,
CredenzaTrigger,
} from "~/components/custom_ui/credenza";
import { ImageFlbk } from "~/components/ImageWithFallback";
import { AnnuncioActions } from "~/components/servizio/annuncio_actions";
import { Interactions } from "~/components/servizio/interactions";
import { Button } from "~/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card";
import {
Carousel,
CarouselContent,
CarouselItem,
CarouselNext,
CarouselPrevious,
} from "~/components/ui/carousel";
import { handleConsegna } from "~/lib/annuncio_details";
import { replaceWithBr } from "~/lib/newlineToBr";
import { cn, formatCurrency } from "~/lib/utils";
import { useTranslation } from "~/providers/I18nProvider";
import { useServizioAnnuncio } from "~/providers/ServizioProvider";
import type { Annunci } from "~/schemas/public/Annunci";
export const AnnuncioCard = ({ className }: { className?: string }) => {
const { data } = useServizioAnnuncio();
return (
}
className={className}
data={data}
interactions={}
/>
);
};
export const BasicAnnuncioCard = ({
actions,
interactions,
className,
data,
}: {
actions?: React.ReactNode;
interactions?: React.ReactNode;
className?: string;
data: Pick<
Annunci,
| "id"
| "codice"
| "prezzo"
| "desc_en"
| "desc_it"
| "url_immagini"
| "titolo_en"
| "titolo_it"
| "tipo"
| "consegna"
| "stato"
| "web"
>;
}) => {
const { t } = useTranslation();
return (
Codice: {data.codice}
{actions}
{interactions}
{handleConsegna({
aggiornamento: t.card.in_aggiornamento,
consegna: data.consegna,
consegna_da: t.card.consegna_da,
mesi: t.preferenze.mesi,
subito: t.card.consegna_subito,
})}
{formatCurrency(data.prezzo / 1e2)}
{data.titolo_it || data.codice}
{data.stato !== "Sospeso" && data.web && (
)}
);
};
const TipoBadge = ({ tipo }: { tipo: Annunci["tipo"] }) => {
return (
);
};
const AnnuncioDettaglio = ({
data,
}: {
data: Pick<
Annunci,
| "id"
| "codice"
| "prezzo"
| "desc_en"
| "desc_it"
| "url_immagini"
| "titolo_en"
| "titolo_it"
| "tipo"
| "consegna"
| "stato"
| "web"
>;
}) => {
const { locale, t } = useTranslation();
return (
Annuncio {data.codice}
Annuncio {data.codice}
{data?.url_immagini?.map((img, idx) => (
))}
e.preventDefault()}
onKeyDown={(e) => e.stopPropagation()}
role="button"
tabIndex={0}
>
{t.card.codice}
Cod: {data.codice}
{t.card.prezzo}
{formatCurrency(data.prezzo / 1e2)}
{t.card.titolo}
{locale === "it" ? data.titolo_it : data.titolo_en}
);
};