@replicated/portal-components 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/metadata/registry.json +83 -2
- package/components/metadata/registry.md +27 -2
- package/dist/actions/index.d.mts +566 -3
- package/dist/actions/index.d.ts +566 -3
- package/dist/actions/index.js +1853 -12
- package/dist/actions/index.js.map +1 -1
- package/dist/airgap-instances.d.mts +26 -0
- package/dist/airgap-instances.d.ts +26 -0
- package/dist/airgap-instances.js +354 -0
- package/dist/airgap-instances.js.map +1 -0
- package/dist/error-page.d.mts +14 -0
- package/dist/error-page.d.ts +14 -0
- package/dist/error-page.js +153 -0
- package/dist/error-page.js.map +1 -0
- package/dist/error.d.mts +15 -0
- package/dist/error.d.ts +15 -0
- package/dist/error.js +144 -0
- package/dist/error.js.map +1 -0
- package/dist/esm/actions/index.js +1816 -13
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/airgap-instances.js +352 -0
- package/dist/esm/airgap-instances.js.map +1 -0
- package/dist/esm/error-page.js +151 -0
- package/dist/esm/error-page.js.map +1 -0
- package/dist/esm/error.js +142 -0
- package/dist/esm/error.js.map +1 -0
- package/dist/esm/helm-install-wizard.js +1007 -0
- package/dist/esm/helm-install-wizard.js.map +1 -0
- package/dist/esm/index.js +2232 -155
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-actions.js +746 -0
- package/dist/esm/install-actions.js.map +1 -0
- package/dist/esm/install-card.js +115 -0
- package/dist/esm/install-card.js.map +1 -0
- package/dist/esm/install-targets.js +48 -0
- package/dist/esm/install-targets.js.map +1 -0
- package/dist/esm/instance-card.js +197 -0
- package/dist/esm/instance-card.js.map +1 -0
- package/dist/esm/join-team.js +218 -0
- package/dist/esm/join-team.js.map +1 -0
- package/dist/esm/license-card.js +131 -0
- package/dist/esm/license-card.js.map +1 -0
- package/dist/esm/license-details.js +667 -0
- package/dist/esm/license-details.js.map +1 -0
- package/dist/esm/linux-install-wizard.js +1083 -0
- package/dist/esm/linux-install-wizard.js.map +1 -0
- package/dist/esm/login.js +261 -0
- package/dist/esm/login.js.map +1 -0
- package/dist/esm/online-instance-list.js +287 -0
- package/dist/esm/online-instance-list.js.map +1 -0
- package/dist/esm/pending-installations.js +235 -0
- package/dist/esm/pending-installations.js.map +1 -0
- package/dist/esm/release-history-panel.js +100 -0
- package/dist/esm/release-history-panel.js.map +1 -0
- package/dist/esm/release-notes-card.js +23 -0
- package/dist/esm/release-notes-card.js.map +1 -0
- package/dist/esm/security-card.js +700 -0
- package/dist/esm/security-card.js.map +1 -0
- package/dist/esm/support-bundle-collection-card.js +170 -0
- package/dist/esm/support-bundle-collection-card.js.map +1 -0
- package/dist/esm/support-bundles-card.js +306 -0
- package/dist/esm/support-bundles-card.js.map +1 -0
- package/dist/esm/support-card.js +305 -0
- package/dist/esm/support-card.js.map +1 -0
- package/dist/esm/team-selection.js +117 -0
- package/dist/esm/team-selection.js.map +1 -0
- package/dist/esm/team-settings-card.js +78 -0
- package/dist/esm/team-settings-card.js.map +1 -0
- package/dist/esm/team-settings.js +136 -0
- package/dist/esm/team-settings.js.map +1 -0
- package/dist/esm/top-nav-user-menu.js +173 -0
- package/dist/esm/top-nav-user-menu.js.map +1 -0
- package/dist/esm/top-nav.js +398 -0
- package/dist/esm/top-nav.js.map +1 -0
- package/dist/esm/update-layout.js +405 -0
- package/dist/esm/update-layout.js.map +1 -0
- package/dist/esm/updates-card.js +85 -0
- package/dist/esm/updates-card.js.map +1 -0
- package/dist/esm/upload-support-bundle-modal.js +143 -0
- package/dist/esm/upload-support-bundle-modal.js.map +1 -0
- package/dist/esm/user-settings-card.js +21 -0
- package/dist/esm/user-settings-card.js.map +1 -0
- package/dist/esm/user-settings.js +368 -0
- package/dist/esm/user-settings.js.map +1 -0
- package/dist/esm/utils/index.js +170 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/helm-install-wizard.d.mts +38 -0
- package/dist/helm-install-wizard.d.ts +38 -0
- package/dist/helm-install-wizard.js +1011 -0
- package/dist/helm-install-wizard.js.map +1 -0
- package/dist/index.d.mts +11 -27
- package/dist/index.d.ts +11 -27
- package/dist/index.js +2258 -154
- package/dist/index.js.map +1 -1
- package/dist/install-B19AaKF_.d.mts +233 -0
- package/dist/install-Bi1qJ8Bu.d.ts +233 -0
- package/dist/install-actions.d.mts +141 -0
- package/dist/install-actions.d.ts +141 -0
- package/dist/install-actions.js +765 -0
- package/dist/install-actions.js.map +1 -0
- package/dist/install-card.d.mts +15 -0
- package/dist/install-card.d.ts +15 -0
- package/dist/install-card.js +117 -0
- package/dist/install-card.js.map +1 -0
- package/dist/install-targets.d.mts +19 -0
- package/dist/install-targets.d.ts +19 -0
- package/dist/install-targets.js +50 -0
- package/dist/install-targets.js.map +1 -0
- package/dist/instance-card.d.mts +22 -0
- package/dist/instance-card.d.ts +22 -0
- package/dist/instance-card.js +199 -0
- package/dist/instance-card.js.map +1 -0
- package/dist/join-team.d.mts +30 -0
- package/dist/join-team.d.ts +30 -0
- package/dist/join-team.js +220 -0
- package/dist/join-team.js.map +1 -0
- package/dist/license-card.d.mts +15 -0
- package/dist/license-card.d.ts +15 -0
- package/dist/license-card.js +133 -0
- package/dist/license-card.js.map +1 -0
- package/dist/license-details.d.mts +10 -0
- package/dist/license-details.d.ts +10 -0
- package/dist/license-details.js +669 -0
- package/dist/license-details.js.map +1 -0
- package/dist/linux-install-wizard.d.mts +66 -0
- package/dist/linux-install-wizard.d.ts +66 -0
- package/dist/linux-install-wizard.js +1093 -0
- package/dist/linux-install-wizard.js.map +1 -0
- package/dist/login.d.mts +37 -0
- package/dist/login.d.ts +37 -0
- package/dist/login.js +263 -0
- package/dist/login.js.map +1 -0
- package/dist/online-instance-list.d.mts +22 -0
- package/dist/online-instance-list.d.ts +22 -0
- package/dist/online-instance-list.js +289 -0
- package/dist/online-instance-list.js.map +1 -0
- package/dist/pending-installations.d.mts +15 -0
- package/dist/pending-installations.d.ts +15 -0
- package/dist/pending-installations.js +237 -0
- package/dist/pending-installations.js.map +1 -0
- package/dist/release-history-panel.d.mts +22 -0
- package/dist/release-history-panel.d.ts +22 -0
- package/dist/release-history-panel.js +102 -0
- package/dist/release-history-panel.js.map +1 -0
- package/dist/release-notes-card.d.mts +13 -0
- package/dist/release-notes-card.d.ts +13 -0
- package/dist/release-notes-card.js +25 -0
- package/dist/release-notes-card.js.map +1 -0
- package/dist/security-card.d.mts +73 -0
- package/dist/security-card.d.ts +73 -0
- package/dist/security-card.js +702 -0
- package/dist/security-card.js.map +1 -0
- package/dist/styles.css +1877 -194
- package/dist/support-bundle-collection-card.d.mts +20 -0
- package/dist/support-bundle-collection-card.d.ts +20 -0
- package/dist/support-bundle-collection-card.js +172 -0
- package/dist/support-bundle-collection-card.js.map +1 -0
- package/dist/support-bundles-card.d.mts +19 -0
- package/dist/support-bundles-card.d.ts +19 -0
- package/dist/support-bundles-card.js +308 -0
- package/dist/support-bundles-card.js.map +1 -0
- package/dist/support-card.d.mts +8 -0
- package/dist/support-card.d.ts +8 -0
- package/dist/support-card.js +307 -0
- package/dist/support-card.js.map +1 -0
- package/dist/team-selection.d.mts +23 -0
- package/dist/team-selection.d.ts +23 -0
- package/dist/team-selection.js +119 -0
- package/dist/team-selection.js.map +1 -0
- package/dist/team-settings-card-Dq1d9b5c.d.mts +14 -0
- package/dist/team-settings-card-Dq1d9b5c.d.ts +14 -0
- package/dist/team-settings-card.d.mts +2 -0
- package/dist/team-settings-card.d.ts +2 -0
- package/dist/team-settings-card.js +80 -0
- package/dist/team-settings-card.js.map +1 -0
- package/dist/team-settings.d.mts +25 -0
- package/dist/team-settings.d.ts +25 -0
- package/dist/team-settings.js +138 -0
- package/dist/team-settings.js.map +1 -0
- package/dist/top-nav-0mb1K_H0.d.mts +32 -0
- package/dist/top-nav-0mb1K_H0.d.ts +32 -0
- package/dist/top-nav-user-menu.d.mts +18 -0
- package/dist/top-nav-user-menu.d.ts +18 -0
- package/dist/top-nav-user-menu.js +175 -0
- package/dist/top-nav-user-menu.js.map +1 -0
- package/dist/top-nav.d.mts +3 -0
- package/dist/top-nav.d.ts +3 -0
- package/dist/top-nav.js +400 -0
- package/dist/top-nav.js.map +1 -0
- package/dist/update-layout.d.mts +12 -0
- package/dist/update-layout.d.ts +12 -0
- package/dist/update-layout.js +407 -0
- package/dist/update-layout.js.map +1 -0
- package/dist/updates-card-BbubBrVR.d.mts +18 -0
- package/dist/updates-card-BbubBrVR.d.ts +18 -0
- package/dist/updates-card.d.mts +2 -0
- package/dist/updates-card.d.ts +2 -0
- package/dist/updates-card.js +87 -0
- package/dist/updates-card.js.map +1 -0
- package/dist/upload-support-bundle-modal.d.mts +19 -0
- package/dist/upload-support-bundle-modal.d.ts +19 -0
- package/dist/upload-support-bundle-modal.js +145 -0
- package/dist/upload-support-bundle-modal.js.map +1 -0
- package/dist/user-settings-card.d.mts +8 -0
- package/dist/user-settings-card.d.ts +8 -0
- package/dist/user-settings-card.js +23 -0
- package/dist/user-settings-card.js.map +1 -0
- package/dist/user-settings.d.mts +47 -0
- package/dist/user-settings.d.ts +47 -0
- package/dist/user-settings.js +370 -0
- package/dist/user-settings.js.map +1 -0
- package/dist/utils/index.d.mts +70 -0
- package/dist/utils/index.d.ts +70 -0
- package/dist/utils/index.js +177 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +163 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/error.tsx","../src/components/error-page.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"error-page.js","sourcesContent":["\"use client\";\n\nimport type { SVGProps } from \"react\";\n\nconst AlertTriangleIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n);\n\nconst ServerIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\" />\n <line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\" />\n </svg>\n);\n\nexport interface ErrorProps {\n code?: number;\n message?: string;\n homeUrl?: string;\n sourceUrl?: string;\n onRetry?: () => void;\n}\n\nconst getErrorContent = (code?: number) => {\n switch (code) {\n case 502:\n return {\n title: \"Service Unavailable\",\n description: \"The service is temporarily unavailable. Please try again in a few moments.\",\n icon: ServerIcon,\n };\n case 503:\n return {\n title: \"Service Unavailable\",\n description: \"The service is currently undergoing maintenance. Please try again later.\",\n icon: ServerIcon,\n };\n case 504:\n return {\n title: \"Gateway Timeout\",\n description: \"The request took too long to process. Please try again.\",\n icon: ServerIcon,\n };\n case 500:\n return {\n title: \"Internal Server Error\",\n description: \"Something went wrong on our end. Please try again later.\",\n icon: AlertTriangleIcon,\n };\n case 404:\n return {\n title: \"Page Not Found\",\n description: \"The page you're looking for doesn't exist or has been moved.\",\n icon: AlertTriangleIcon,\n };\n case 403:\n return {\n title: \"Access Denied\",\n description: \"You don't have permission to access this resource.\",\n icon: AlertTriangleIcon,\n };\n default:\n return {\n title: \"Something Went Wrong\",\n description: \"An unexpected error occurred. Please try again later.\",\n icon: AlertTriangleIcon,\n };\n }\n};\n\nexport const Error = ({ \n code, \n message,\n homeUrl = \"/\",\n sourceUrl,\n onRetry\n}: ErrorProps) => {\n const errorContent = getErrorContent(code);\n const Icon = errorContent.icon;\n\n const handleRetry = () => {\n if (onRetry) {\n onRetry();\n } else if (sourceUrl) {\n window.location.href = sourceUrl;\n } else {\n window.location.reload();\n }\n };\n\n return (\n <div className=\"w-full max-w-md\">\n <div className=\"rounded-3xl border border-gray-200 bg-white p-8 shadow-[0_12px_30px_rgba(17,24,39,0.12)] text-center\">\n <div className=\"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100\">\n <Icon className=\"h-8 w-8 text-red-600\" />\n </div>\n \n {code && (\n <div className=\"mt-6 text-sm font-semibold text-gray-500\">\n Error {code}\n </div>\n )}\n \n <h1 className=\"mt-2 text-2xl font-bold text-gray-900\">\n {errorContent.title}\n </h1>\n \n <p className=\"mt-4 text-sm text-gray-600\">\n {message || errorContent.description}\n </p>\n \n <div className=\"mt-8 flex flex-col gap-3 sm:flex-row sm:justify-center\">\n <a\n href={homeUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-indigo-600 px-6 py-3 text-sm font-semibold text-white shadow-sm transition hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600\"\n >\n Go to Home\n </a>\n <button\n type=\"button\"\n onClick={handleRetry}\n className=\"inline-flex items-center justify-center rounded-lg border border-gray-300 bg-white px-6 py-3 text-sm font-semibold text-gray-700 shadow-sm transition hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600\"\n >\n Try Again\n </button>\n </div>\n \n {code && code >= 500 && (\n <p className=\"mt-6 text-xs text-gray-500\">\n If this problem persists, please contact support.\n </p>\n )}\n </div>\n </div>\n );\n};\n\nError.displayName = \"Error\";\n","\"use client\";\n\nimport { Error } from \"./error\";\n\ninterface ErrorPageProps {\n statusCode?: number;\n message?: string;\n homeUrl?: string;\n sourceUrl?: string;\n}\n\nexport const ErrorPage = ({ \n statusCode, \n message,\n homeUrl = \"/\",\n sourceUrl\n}: ErrorPageProps) => {\n return (\n <div className=\"flex min-h-screen items-center justify-center bg-gray-50 px-4 py-12\">\n <Error code={statusCode} message={message} homeUrl={homeUrl} sourceUrl={sourceUrl} />\n </div>\n );\n};\n\nErrorPage.displayName = \"ErrorPage\";\n"]}
|
package/dist/error.d.mts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ErrorProps {
|
|
4
|
+
code?: number;
|
|
5
|
+
message?: string;
|
|
6
|
+
homeUrl?: string;
|
|
7
|
+
sourceUrl?: string;
|
|
8
|
+
onRetry?: () => void;
|
|
9
|
+
}
|
|
10
|
+
declare const Error: {
|
|
11
|
+
({ code, message, homeUrl, sourceUrl, onRetry }: ErrorProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { Error, type ErrorProps };
|
package/dist/error.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ErrorProps {
|
|
4
|
+
code?: number;
|
|
5
|
+
message?: string;
|
|
6
|
+
homeUrl?: string;
|
|
7
|
+
sourceUrl?: string;
|
|
8
|
+
onRetry?: () => void;
|
|
9
|
+
}
|
|
10
|
+
declare const Error: {
|
|
11
|
+
({ code, message, homeUrl, sourceUrl, onRetry }: ErrorProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { Error, type ErrorProps };
|
package/dist/error.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Enterprise Portal Components
|
|
8
|
+
* This file is generated by tsup. Do not edit manually.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var AlertTriangleIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12
|
+
"svg",
|
|
13
|
+
{
|
|
14
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
15
|
+
viewBox: "0 0 24 24",
|
|
16
|
+
fill: "none",
|
|
17
|
+
stroke: "currentColor",
|
|
18
|
+
strokeWidth: 1.5,
|
|
19
|
+
"aria-hidden": "true",
|
|
20
|
+
...props,
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
var ServerIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29
|
+
"svg",
|
|
30
|
+
{
|
|
31
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
32
|
+
viewBox: "0 0 24 24",
|
|
33
|
+
fill: "none",
|
|
34
|
+
stroke: "currentColor",
|
|
35
|
+
strokeWidth: 1.5,
|
|
36
|
+
"aria-hidden": "true",
|
|
37
|
+
...props,
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "2", width: "20", height: "8", rx: "2", ry: "2" }),
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "14", width: "20", height: "8", rx: "2", ry: "2" }),
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "6.01", y2: "6" }),
|
|
42
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "18", x2: "6.01", y2: "18" })
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
var getErrorContent = (code) => {
|
|
47
|
+
switch (code) {
|
|
48
|
+
case 502:
|
|
49
|
+
return {
|
|
50
|
+
title: "Service Unavailable",
|
|
51
|
+
description: "The service is temporarily unavailable. Please try again in a few moments.",
|
|
52
|
+
icon: ServerIcon
|
|
53
|
+
};
|
|
54
|
+
case 503:
|
|
55
|
+
return {
|
|
56
|
+
title: "Service Unavailable",
|
|
57
|
+
description: "The service is currently undergoing maintenance. Please try again later.",
|
|
58
|
+
icon: ServerIcon
|
|
59
|
+
};
|
|
60
|
+
case 504:
|
|
61
|
+
return {
|
|
62
|
+
title: "Gateway Timeout",
|
|
63
|
+
description: "The request took too long to process. Please try again.",
|
|
64
|
+
icon: ServerIcon
|
|
65
|
+
};
|
|
66
|
+
case 500:
|
|
67
|
+
return {
|
|
68
|
+
title: "Internal Server Error",
|
|
69
|
+
description: "Something went wrong on our end. Please try again later.",
|
|
70
|
+
icon: AlertTriangleIcon
|
|
71
|
+
};
|
|
72
|
+
case 404:
|
|
73
|
+
return {
|
|
74
|
+
title: "Page Not Found",
|
|
75
|
+
description: "The page you're looking for doesn't exist or has been moved.",
|
|
76
|
+
icon: AlertTriangleIcon
|
|
77
|
+
};
|
|
78
|
+
case 403:
|
|
79
|
+
return {
|
|
80
|
+
title: "Access Denied",
|
|
81
|
+
description: "You don't have permission to access this resource.",
|
|
82
|
+
icon: AlertTriangleIcon
|
|
83
|
+
};
|
|
84
|
+
default:
|
|
85
|
+
return {
|
|
86
|
+
title: "Something Went Wrong",
|
|
87
|
+
description: "An unexpected error occurred. Please try again later.",
|
|
88
|
+
icon: AlertTriangleIcon
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
var Error = ({
|
|
93
|
+
code,
|
|
94
|
+
message,
|
|
95
|
+
homeUrl = "/",
|
|
96
|
+
sourceUrl,
|
|
97
|
+
onRetry
|
|
98
|
+
}) => {
|
|
99
|
+
const errorContent = getErrorContent(code);
|
|
100
|
+
const Icon = errorContent.icon;
|
|
101
|
+
const handleRetry = () => {
|
|
102
|
+
if (onRetry) {
|
|
103
|
+
onRetry();
|
|
104
|
+
} else if (sourceUrl) {
|
|
105
|
+
window.location.href = sourceUrl;
|
|
106
|
+
} else {
|
|
107
|
+
window.location.reload();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-3xl border border-gray-200 bg-white p-8 shadow-[0_12px_30px_rgba(17,24,39,0.12)] text-center", children: [
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-8 w-8 text-red-600" }) }),
|
|
112
|
+
code && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 text-sm font-semibold text-gray-500", children: [
|
|
113
|
+
"Error ",
|
|
114
|
+
code
|
|
115
|
+
] }),
|
|
116
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-2 text-2xl font-bold text-gray-900", children: errorContent.title }),
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-sm text-gray-600", children: message || errorContent.description }),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col gap-3 sm:flex-row sm:justify-center", children: [
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
120
|
+
"a",
|
|
121
|
+
{
|
|
122
|
+
href: homeUrl,
|
|
123
|
+
className: "inline-flex items-center justify-center rounded-lg bg-indigo-600 px-6 py-3 text-sm font-semibold text-white shadow-sm transition hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600",
|
|
124
|
+
children: "Go to Home"
|
|
125
|
+
}
|
|
126
|
+
),
|
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
128
|
+
"button",
|
|
129
|
+
{
|
|
130
|
+
type: "button",
|
|
131
|
+
onClick: handleRetry,
|
|
132
|
+
className: "inline-flex items-center justify-center rounded-lg border border-gray-300 bg-white px-6 py-3 text-sm font-semibold text-gray-700 shadow-sm transition hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600",
|
|
133
|
+
children: "Try Again"
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] }),
|
|
137
|
+
code && code >= 500 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-6 text-xs text-gray-500", children: "If this problem persists, please contact support." })
|
|
138
|
+
] }) });
|
|
139
|
+
};
|
|
140
|
+
Error.displayName = "Error";
|
|
141
|
+
|
|
142
|
+
exports.Error = Error;
|
|
143
|
+
//# sourceMappingURL=error.js.map
|
|
144
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/error.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"error.js","sourcesContent":["\"use client\";\n\nimport type { SVGProps } from \"react\";\n\nconst AlertTriangleIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n);\n\nconst ServerIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\" />\n <line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\" />\n </svg>\n);\n\nexport interface ErrorProps {\n code?: number;\n message?: string;\n homeUrl?: string;\n sourceUrl?: string;\n onRetry?: () => void;\n}\n\nconst getErrorContent = (code?: number) => {\n switch (code) {\n case 502:\n return {\n title: \"Service Unavailable\",\n description: \"The service is temporarily unavailable. Please try again in a few moments.\",\n icon: ServerIcon,\n };\n case 503:\n return {\n title: \"Service Unavailable\",\n description: \"The service is currently undergoing maintenance. Please try again later.\",\n icon: ServerIcon,\n };\n case 504:\n return {\n title: \"Gateway Timeout\",\n description: \"The request took too long to process. Please try again.\",\n icon: ServerIcon,\n };\n case 500:\n return {\n title: \"Internal Server Error\",\n description: \"Something went wrong on our end. Please try again later.\",\n icon: AlertTriangleIcon,\n };\n case 404:\n return {\n title: \"Page Not Found\",\n description: \"The page you're looking for doesn't exist or has been moved.\",\n icon: AlertTriangleIcon,\n };\n case 403:\n return {\n title: \"Access Denied\",\n description: \"You don't have permission to access this resource.\",\n icon: AlertTriangleIcon,\n };\n default:\n return {\n title: \"Something Went Wrong\",\n description: \"An unexpected error occurred. Please try again later.\",\n icon: AlertTriangleIcon,\n };\n }\n};\n\nexport const Error = ({ \n code, \n message,\n homeUrl = \"/\",\n sourceUrl,\n onRetry\n}: ErrorProps) => {\n const errorContent = getErrorContent(code);\n const Icon = errorContent.icon;\n\n const handleRetry = () => {\n if (onRetry) {\n onRetry();\n } else if (sourceUrl) {\n window.location.href = sourceUrl;\n } else {\n window.location.reload();\n }\n };\n\n return (\n <div className=\"w-full max-w-md\">\n <div className=\"rounded-3xl border border-gray-200 bg-white p-8 shadow-[0_12px_30px_rgba(17,24,39,0.12)] text-center\">\n <div className=\"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100\">\n <Icon className=\"h-8 w-8 text-red-600\" />\n </div>\n \n {code && (\n <div className=\"mt-6 text-sm font-semibold text-gray-500\">\n Error {code}\n </div>\n )}\n \n <h1 className=\"mt-2 text-2xl font-bold text-gray-900\">\n {errorContent.title}\n </h1>\n \n <p className=\"mt-4 text-sm text-gray-600\">\n {message || errorContent.description}\n </p>\n \n <div className=\"mt-8 flex flex-col gap-3 sm:flex-row sm:justify-center\">\n <a\n href={homeUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-indigo-600 px-6 py-3 text-sm font-semibold text-white shadow-sm transition hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600\"\n >\n Go to Home\n </a>\n <button\n type=\"button\"\n onClick={handleRetry}\n className=\"inline-flex items-center justify-center rounded-lg border border-gray-300 bg-white px-6 py-3 text-sm font-semibold text-gray-700 shadow-sm transition hover:bg-gray-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-600\"\n >\n Try Again\n </button>\n </div>\n \n {code && code >= 500 && (\n <p className=\"mt-6 text-xs text-gray-500\">\n If this problem persists, please contact support.\n </p>\n )}\n </div>\n </div>\n );\n};\n\nError.displayName = \"Error\";\n"]}
|