IKHSAN
ENID Baca dalam Bahasa Indonesia

pixies

Public
Branch
master
Latest commit
9b0697f26 October 2026

RouteError.jsx

Open raw
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faExclamationTriangle} from "@fortawesome/free-solid-svg-icons";
import {useNavigate, useRouteError, isRouteErrorResponse} from "react-router-dom";
import {useTranslation} from "react-i18next";
import "./styles.sass";

export const RouteError = () => {
    const error = useRouteError();
    const navigate = useNavigate();
    const {t} = useTranslation();

    const is404 = isRouteErrorResponse(error) && error.status === 404;

    return (
        <div className="route-error-page">
            <div className="route-error-content">
                <div className="route-error-icon">
                    <FontAwesomeIcon icon={faExclamationTriangle} size="4x"/>
                </div>
                <h1 className="route-error-title">
                    {is404 ? "404" : t("route_error.title")}
                </h1>
                <h2 className="route-error-subtitle">
                    {is404 ? t("not_found.title") : t("route_error.subtitle")}
                </h2>
                <p className="route-error-description">
                    {is404 ? t("not_found.description") : t("route_error.description")}
                </p>
                {!is404 && error?.message && (
                    <pre className="route-error-details">{error.message}</pre>
                )}
                <div className="route-error-actions">
                    <button className="dialog-btn" onClick={() => navigate("/")}>
                        {t("not_found.back_home")}
                    </button>
                    {!is404 && (
                        <button className="dialog-btn dialog-secondary" onClick={() => window.location.reload()}>
                            {t("route_error.reload")}
                        </button>
                    )}
                </div>
            </div>
        </div>
    );
};
bytes
1,902
lines
46
Type
jsx
Latest commit
26 October 2026