diff --git a/src/components/auth/AuthSuccessPanel.tsx b/src/components/auth/AuthSuccessPanel.tsx
index e0b974a..4e76b79 100644
--- a/src/components/auth/AuthSuccessPanel.tsx
+++ b/src/components/auth/AuthSuccessPanel.tsx
@@ -1,10 +1,10 @@
import { useEffect, useRef } from "react";
-import { CircleCheck } from "lucide-react";
import { Button } from "@/components/ui/button";
+import { STATUS_ICON } from "@/lib/status";
/**
* Shared success state for ResetPassword / PasswordChangeRequired: a
- * CircleCheck heading (focus-managed for screen-reader/keyboard users),
+ * success-icon heading (focus-managed for screen-reader/keyboard users),
* body copy, and a single CTA. Not used by ForgotPassword, which shows its
* success state as an InlineNotification instead of this pattern.
*/
@@ -37,10 +37,7 @@ export function AuthSuccessPanel({
tabIndex={-1}
className="flex items-center gap-2 text-base font-semibold leading-6 text-neutral-900 dark:text-neutral-100 outline-none"
>
-
+
{title}
{body}
diff --git a/src/components/dashboard/StatusDot.tsx b/src/components/dashboard/StatusDot.tsx
index a4ce7c6..f62ad29 100644
--- a/src/components/dashboard/StatusDot.tsx
+++ b/src/components/dashboard/StatusDot.tsx
@@ -11,9 +11,9 @@ import { cn } from "@/lib/utils";
export type StatusTone = "success" | "error" | "warning" | "muted";
const TONE_CLASS: Record = {
- success: "bg-green-500",
+ success: "bg-success",
error: "bg-destructive",
- warning: "bg-yellow-500",
+ warning: "bg-warning",
muted: "bg-muted-foreground",
};
diff --git a/src/components/dashboard/StatusHeadline.tsx b/src/components/dashboard/StatusHeadline.tsx
index 3f88742..75122e9 100644
--- a/src/components/dashboard/StatusHeadline.tsx
+++ b/src/components/dashboard/StatusHeadline.tsx
@@ -7,19 +7,23 @@
* `action` are slots the fuller #5847 / default-state content fills in.
*/
-import { Activity, AlertTriangle, Info } from "lucide-react";
+import { Activity, Info } from "lucide-react";
import type { ComponentType, ReactNode } from "react";
import { useIntl } from "react-intl";
import { cn } from "@/lib/utils";
+import { STATUS_ICON } from "@/lib/status";
import type { Severity } from "./homeStates";
import { resolveHeadline, type HeadlineCondition } from "./resolveHeadline";
+// success/info keep their own dashboard-specific glyphs (a pulse for "all
+// active", not a generic checkmark); warning/error consume the shared
+// severity icons so the two no longer render identically.
const SEVERITY_ICON: Record> = {
success: Activity,
info: Info,
- warning: AlertTriangle,
- error: AlertTriangle,
+ warning: STATUS_ICON.warning,
+ error: STATUS_ICON.error,
};
// Severity is conveyed by the icon shape and the message, not by colour: the
diff --git a/src/components/gateways/CreateServerForm.tsx b/src/components/gateways/CreateServerForm.tsx
index fbca0f6..2f1bcfc 100644
--- a/src/components/gateways/CreateServerForm.tsx
+++ b/src/components/gateways/CreateServerForm.tsx
@@ -1,6 +1,6 @@
import { useState, type ReactNode } from "react";
import { useIntl } from "react-intl";
-import { ChevronRight, CircleAlert, Server } from "lucide-react";
+import { ChevronRight, Server } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { TagInput } from "@/components/ui/tag-input";
@@ -15,6 +15,7 @@ import { MAX_TAGS } from "@/utils/tags";
import type { CreateServerDetails } from "@/components/gateways/types";
import type { Visibility } from "@/types/server";
import { VisibilityInfoPopover } from "@/components/common/VisibilityInfoPopover";
+import { STATUS_ICON } from "@/lib/status";
const visibilityOptions: Array<{
value: Visibility;
@@ -111,7 +112,7 @@ export function CreateServerForm({
role="alert"
aria-live="assertive"
>
-
+