diff --git a/src/components/auth/AuthSuccessPanel.tsx b/src/components/auth/AuthSuccessPanel.tsx index e0b974a3..4e76b79b 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 a4ce7c6f..f62ad29d 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{displayedSubmitError}
)} diff --git a/src/components/gateways/SourceSelection.tsx b/src/components/gateways/SourceSelection.tsx index bffb59d4..406b2864 100644 --- a/src/components/gateways/SourceSelection.tsx +++ b/src/components/gateways/SourceSelection.tsx @@ -11,7 +11,6 @@ import { Lock, MessageSquareCode, Plus, - TriangleAlert, Users, Wrench, } from "lucide-react"; @@ -24,6 +23,7 @@ import { TruncatedText } from "@/components/ui/truncated-text"; import type { ActionCard } from "@/components/gateways/types"; import { useQuery } from "@/hooks/useQuery"; import { cn } from "@/lib/utils"; +import { STATUS_ICON } from "@/lib/status"; import type { MCPServer, ServerStatus } from "@/types/server"; const MCP_SERVERS_QUERY_PATH = "/gateways?limit=100&include_inactive=true"; @@ -72,13 +72,13 @@ function getStatusConfig(status: ServerStatus) { return { Icon: Activity, labelId: "gateways.source.status.active", - className: "text-emerald-400", + className: "text-success", }; case "warning": return { - Icon: TriangleAlert, + Icon: STATUS_ICON.warning, labelId: "gateways.source.status.warning", - className: "text-amber-400", + className: "text-warning", }; case "offline": return { diff --git a/src/components/mcp-servers/AdvancedSettings.tsx b/src/components/mcp-servers/AdvancedSettings.tsx index bd64c4c3..41b5dceb 100644 --- a/src/components/mcp-servers/AdvancedSettings.tsx +++ b/src/components/mcp-servers/AdvancedSettings.tsx @@ -1,5 +1,5 @@ import { useIntl } from "react-intl"; -import { Info, TriangleAlert } from "lucide-react"; +import { Info } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { Switch } from "@/components/ui/switch"; import { @@ -17,6 +17,7 @@ import { CustomHeadersAuth, type CustomHeader } from "@/components/mcp-servers/C import { OAuth2Auth } from "@/components/mcp-servers/OAuth2Auth"; import { QueryParameterAuth } from "@/components/mcp-servers/QueryParameterAuth"; import { useTeamScope } from "@/hooks/useTeams"; +import { STATUS_ICON } from "@/lib/status"; import type { Visibility } from "@/types/server"; import { VisibilityInfoPopover } from "@/components/common/VisibilityInfoPopover"; import { TeamSelect } from "@/components/common/TeamSelect"; @@ -309,7 +310,7 @@ export function AdvancedSettings({ {oneTimeAuth && ({intl.formatMessage({ id: "mcpServer.advanced.oneTimeAuthWarning" })}
diff --git a/src/components/mcp-servers/MCPServerForm.tsx b/src/components/mcp-servers/MCPServerForm.tsx index aa90bc60..cb329c3c 100644 --- a/src/components/mcp-servers/MCPServerForm.tsx +++ b/src/components/mcp-servers/MCPServerForm.tsx @@ -1,6 +1,6 @@ import { useCallback, useState, type ReactNode } from "react"; import { useIntl } from "react-intl"; -import { ChevronDown, CircleAlert } from "lucide-react"; +import { ChevronDown } from "lucide-react"; import { Button } from "@/components/ui/button"; import { InlineNotification } from "@/components/ui/inline-notification"; import { Input } from "@/components/ui/input"; @@ -10,6 +10,7 @@ import { AdvancedSettings } from "@/components/mcp-servers/AdvancedSettings"; import { ExposeComponentsForm } from "@/components/gateways/ExposeComponentsForm"; import { useRouter } from "@/router"; import { useMCPServerForm, type TransportType } from "@/hooks/useMCPServerForm"; +import { STATUS_ICON } from "@/lib/status"; interface MCPServerFormProps { isOpen: boolean; @@ -193,8 +194,8 @@ export function MCPServerForm({ isOpen, onToggle, serverId, onSuccess }: MCPServ+
{intl.formatMessage({ id: "mcpServer.form.fetchError" }, { error: fetchError })}
+
{errors.name}
)} @@ -268,11 +269,11 @@ export function MCPServerForm({ isOpen, onToggle, serverId, onSuccess }: MCPServ className="inline-flex items-center gap-0.5 text-sm font-medium text-neutral-900 dark:text-neutral-100" > {intl.formatMessage({ id: "mcpServer.form.urlLabel" })} - * + * {intl.formatMessage({ id: "mcpServer.form.required" })} -+
{errors.url}
)} @@ -304,7 +305,7 @@ export function MCPServerForm({ isOpen, onToggle, serverId, onSuccess }: MCPServ aria-describedby={errors.description ? "description-error" : undefined} /> {errors.description && ( -+
{errors.description}
)} @@ -383,8 +384,8 @@ export function MCPServerForm({ isOpen, onToggle, serverId, onSuccess }: MCPServ )} {errors.submit && ( -{errors.submit}
+{errors.submit}
{intl.formatMessage( { id: "mcpServer.auth.query.warning" }, @@ -40,7 +40,7 @@ export function QueryParameterAuth({ className="inline-flex items-center gap-0.5 text-sm font-medium text-neutral-900 dark:text-neutral-100" > {intl.formatMessage({ id: "mcpServer.auth.query.nameLabel" })} - * + * {intl.formatMessage({ id: "mcpServer.form.required" })} {intl.formatMessage({ id: "mcpServer.auth.query.apiKeyLabel" })} - * + * {intl.formatMessage({ id: "mcpServer.form.required" })} - +
{form.errors.submit}
+
{errors.url}
)} @@ -461,7 +462,7 @@ export function TestConnectionPanel({ serverUrl }: TestConnectionPanelProps) { className="bg-transparent dark:bg-transparent" /> {errors.path && ( -+
{errors.path}
)} @@ -515,7 +516,7 @@ export function TestConnectionPanel({ serverUrl }: TestConnectionPanelProps) { } /> {errors.headers && ( -+
{errors.headers}
)} @@ -552,7 +553,7 @@ export function TestConnectionPanel({ serverUrl }: TestConnectionPanelProps) { aria-describedby={errors.body ? "body-error" : undefined} /> {errors.body && ( -+
{errors.body}
)} @@ -614,9 +615,9 @@ export function TestConnectionPanel({ serverUrl }: TestConnectionPanelProps) { )}- {message} -
+ +{message}