fix: UI/UX improvements for model configuration dialog

- Add gradient header styling with icon badge
- Change Configuration section icon from Key to Settings2
- Add duplicate model detection with warning banner and inline removal
- Filter out already-added models from suggestions dropdown
- Add type-to-confirm for deleting providers with 3+ models
- Enhance delete confirmation dialog with warning icon
- Improve model selector discoverability (show model name + chevron)
- Add truncation for long model names with title tooltip
- Remove AI provider settings from Settings dialog (now in Model Config)
- Extract ValidationButton into reusable component
This commit is contained in:
dayuan.jiang
2025-12-22 21:49:29 +09:00
parent 7cf6d7e7bd
commit 0e8783ccfb
4 changed files with 177 additions and 43 deletions

View File

@@ -1,6 +1,6 @@
"use client"
import { Moon, Settings2, Sun } from "lucide-react"
import { Moon, Sun } from "lucide-react"
import { useEffect, useState } from "react"
import { Button } from "@/components/ui/button"
import {
@@ -19,7 +19,6 @@ interface SettingsDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
onCloseProtectionChange?: (enabled: boolean) => void
onOpenModelConfig: () => void
drawioUi: "min" | "sketch"
onToggleDrawioUi: () => void
darkMode: boolean
@@ -41,7 +40,6 @@ export function SettingsDialog({
open,
onOpenChange,
onCloseProtectionChange,
onOpenModelConfig,
drawioUi,
onToggleDrawioUi,
darkMode,
@@ -178,26 +176,6 @@ export function SettingsDialog({
)}
</div>
)}
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label>{dict.settings.aiProvider}</Label>
<p className="text-[0.8rem] text-muted-foreground">
{dict.settings.aiProviderDescription}
</p>
</div>
<Button
variant="outline"
size="sm"
onClick={() => {
onOpenChange(false)
onOpenModelConfig()
}}
>
<Settings2 className="h-4 w-4 mr-2" />
{dict.modelConfig?.configure || "Configure"}
</Button>
</div>
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<Label htmlFor="theme-toggle">