36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
// * Packages
|
|
import { AlertCircle } from "lucide-react";
|
|
import { usePage } from "@inertiajs/react";
|
|
// * Other
|
|
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
|
|
import useTrans from "@/hooks/use-translations";
|
|
|
|
export default function InputError({
|
|
all,
|
|
message,
|
|
}: {
|
|
all?: boolean;
|
|
message?: string;
|
|
}) {
|
|
const { errors } = usePage().props;
|
|
const errorsTrans = useTrans("back.errors");
|
|
let messages = {} as Array<string>;
|
|
if (message) {
|
|
messages = Object.values([message]);
|
|
} else if (Object.values(errors).length && all) {
|
|
messages = Object.values(errors);
|
|
}
|
|
if (messages.length) {
|
|
return (
|
|
<Alert variant="destructive" className="text-left mb-4">
|
|
<AlertCircle className="h-4 w-4" />
|
|
{all && <AlertTitle>{errorsTrans}</AlertTitle>}
|
|
<AlertDescription>
|
|
{messages.map((errorMessage) => {
|
|
return <p>{errorMessage}</p>;
|
|
})}
|
|
</AlertDescription>
|
|
</Alert>
|
|
);
|
|
}
|
|
}
|