From 4d9f083e20b15b4b249847d42991763d934bebb8 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Fri, 27 Feb 2026 17:55:35 +0800 Subject: [PATCH] Add Switch component to UI and integrate it into DebugDrawer for tool state management. Update Assistants page to utilize the new Switch for enabling/disabling tools, enhancing user interaction and component functionality. --- web/components/UI.tsx | 31 +++++++++++++++++++++++++++++++ web/pages/Assistants.tsx | 16 ++++++---------- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/web/components/UI.tsx b/web/components/UI.tsx index ffd5767..98c72c9 100644 --- a/web/components/UI.tsx +++ b/web/components/UI.tsx @@ -65,6 +65,37 @@ export const Select: React.FC = ({ className = '', children, ...pro ); }; +interface SwitchProps extends Omit, 'onChange'> { + checked: boolean; + onCheckedChange: (checked: boolean) => void; +} + +export const Switch: React.FC = ({ + checked, + onCheckedChange, + className = '', + disabled, + ...props +}) => { + return ( + + ); +}; + // Card - Glassmorphism style, very subtle border interface CardProps extends React.HTMLAttributes { children: React.ReactNode; diff --git a/web/pages/Assistants.tsx b/web/pages/Assistants.tsx index 08d80af..b5baaf3 100644 --- a/web/pages/Assistants.tsx +++ b/web/pages/Assistants.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect, useMemo, useRef } from 'react'; import { createPortal } from 'react-dom'; import { Plus, Search, Play, Square, Copy, Trash2, Mic, MessageSquare, Save, Video, PhoneOff, Camera, ArrowLeftRight, Send, Phone, Rocket, AlertTriangle, PhoneCall, CameraOff, Image, Images, CloudSun, Calendar, TrendingUp, Coins, Wrench, Globe, Terminal, X, ClipboardCheck, Sparkles, Volume2, Timer, ChevronDown, Database, Server, Zap, ExternalLink, Key, BrainCircuit, Ear, Book, Filter } from 'lucide-react'; -import { Button, Input, Badge, Drawer, Dialog } from '../components/UI'; +import { Button, Input, Badge, Drawer, Dialog, Switch } from '../components/UI'; import { ASRModel, Assistant, KnowledgeBase, LLMModel, TabValue, Tool, Voice } from '../types'; import { createAssistant, deleteAssistant, fetchASRModels, fetchAssistantOpenerAudioPcmBuffer, fetchAssistants, fetchKnowledgeBases, fetchLLMModels, fetchTools, fetchVoices, generateAssistantOpenerAudio, updateAssistant as updateAssistantApi } from '../services/backendApi'; @@ -3642,16 +3642,12 @@ export const DebugDrawer: React.FC<{
{tool.name}
{tool.description}
- + aria-label={`${tool.name} ${enabled ? '开启' : '关闭'}`} + /> ); })}