@@ -21,7 +21,6 @@ import { Command, CommandGroup, CommandItem, CommandList } from "@/components/ui
2121import {
2222 Dialog ,
2323 DialogContent ,
24- DialogDescription ,
2524 DialogFooter ,
2625 DialogHeader ,
2726 DialogTitle ,
@@ -31,6 +30,8 @@ import {
3130 DropdownMenuContent ,
3231 DropdownMenuItem ,
3332 DropdownMenuPortal ,
33+ DropdownMenuRadioGroup ,
34+ DropdownMenuRadioItem ,
3435 DropdownMenuSub ,
3536 DropdownMenuSubContent ,
3637 DropdownMenuSubTrigger ,
@@ -536,13 +537,10 @@ export default function CreateDefaultTaskDialog({
536537 }
537538
538539 return (
539- < Dialog open = { open } onOpenChange = { onOpenChange } >
540+ < Dialog open = { open } onOpenChange = { onOpenChange } >
540541 < DialogContent className = "max-h-[90vh] overflow-y-auto sm:max-w-2xl" >
541542 < DialogHeader >
542- < DialogTitle > 新建空项目</ DialogTitle >
543- < DialogDescription >
544- 先完成与任务页一致的选择交互,后续再接实际任务创建。
545- </ DialogDescription >
543+ < DialogTitle > 创建任务</ DialogTitle >
546544 </ DialogHeader >
547545
548546 < div className = "space-y-4" >
@@ -560,10 +558,10 @@ export default function CreateDefaultTaskDialog({
560558 className = "min-h-36 resize-none"
561559 />
562560
563- < div className = "flex flex-wrap gap-2" >
561+ < div className = "flex flex-wrap items-center gap-2" >
564562 < Popover open = { taskTypePopoverOpen } onOpenChange = { setTaskTypePopoverOpen } >
565563 < PopoverTrigger asChild >
566- < Button size = "sm" variant = "outline" className = "rounded-full text-primary hover:text-primary" >
564+ < Button size = "sm" variant = "outline" className = "rounded-md text-primary hover:text-primary" >
567565 { taskType === ConstsTaskType . TaskTypeDevelop && < > < IconTerminal2 /> < span > 开发</ span > </ > }
568566 { taskType === ConstsTaskType . TaskTypeDesign && < > < IconVocabulary /> < span > 设计</ span > </ > }
569567 { taskType === ConstsTaskType . TaskTypeReview && < > < IconBug /> < span > 审查</ span > </ > }
@@ -645,7 +643,7 @@ export default function CreateDefaultTaskDialog({
645643 size = "sm"
646644 variant = "outline"
647645 className = { cn (
648- "max-w-[240px] rounded-full " ,
646+ "max-w-[240px] rounded-md " ,
649647 selectedRepo && "text-primary hover:text-primary"
650648 ) }
651649 >
@@ -862,7 +860,7 @@ export default function CreateDefaultTaskDialog({
862860 size = "sm"
863861 variant = "outline"
864862 className = { cn (
865- "rounded-full " ,
863+ "rounded-md " ,
866864 selectedSkill . length > 0 && "text-primary hover:text-primary"
867865 ) }
868866 >
@@ -912,41 +910,57 @@ export default function CreateDefaultTaskDialog({
912910 </ Tabs >
913911 </ PopoverContent >
914912 </ Popover >
915- </ div >
916-
917- < Separator />
918913
919- < div className = "space-y-4" >
920- < Field >
921- < FieldLabel > 大模型</ FieldLabel >
922- < FieldContent >
923- < Select value = { selectedModelId } onValueChange = { setSelectedModelId } >
924- < SelectTrigger className = "w-full" >
925- < SelectValue placeholder = "选择大模型" />
926- </ SelectTrigger >
927- < SelectContent >
928- { models . map ( ( model ) => (
929- < SelectItem
930- key = { model . id }
931- value = { model . id || "" }
932- disabled = { ! canUseModelBySubscription ( model , subscription ) }
933- >
914+ < DropdownMenu >
915+ < DropdownMenuTrigger asChild >
916+ < Button
917+ size = "sm"
918+ variant = "outline"
919+ className = "ml-auto max-w-[220px] rounded-md"
920+ >
921+ { selectedModel ? (
922+ < >
923+ < Icon name = { getBrandFromModelName ( selectedModel . model || "" ) } className = "size-4" />
924+ < span className = "truncate" > { selectedModel . model } </ span >
925+ </ >
926+ ) : (
927+ < span className = "truncate" > 大模型</ span >
928+ ) }
929+ < IconChevronDown className = "size-3.5 text-muted-foreground" />
930+ </ Button >
931+ </ DropdownMenuTrigger >
932+ < DropdownMenuContent align = "end" className = "min-w-[320px]" >
933+ < DropdownMenuRadioGroup value = { selectedModelId } onValueChange = { setSelectedModelId } >
934+ { models . map ( ( model ) => (
935+ < DropdownMenuRadioItem
936+ key = { model . id }
937+ value = { model . id || "" }
938+ disabled = { ! canUseModelBySubscription ( model , subscription ) }
939+ className = "w-full justify-between gap-3 pr-2 [&>[data-slot=dropdown-menu-radio-item-indicator]]:hidden"
940+ >
941+ < div className = "flex min-w-0 items-center gap-2" >
934942 < Icon name = { getBrandFromModelName ( model . model || "" ) } className = "size-4" />
935- { model . model }
943+ < span className = "truncate" > { model . model } </ span >
944+ </ div >
945+ < div className = "flex shrink-0 items-center justify-end gap-1.5" >
936946 { model . owner ?. type !== ConstsOwnerType . OwnerTypePublic && getOwnerTypeBadge ( model . owner ) }
937947 { model . owner ?. type === ConstsOwnerType . OwnerTypePublic && model . is_free === true && (
938948 < Badge className = "!text-primary-foreground" > 免费</ Badge >
939949 ) }
940950 { model . owner ?. type === ConstsOwnerType . OwnerTypePublic && model . access_level === "pro" && (
941951 < Badge variant = "secondary" > 专业版</ Badge >
942952 ) }
943- </ SelectItem >
944- ) ) }
945- </ SelectContent >
946- </ Select >
947- </ FieldContent >
948- </ Field >
953+ </ div >
954+ </ DropdownMenuRadioItem >
955+ ) ) }
956+ </ DropdownMenuRadioGroup >
957+ </ DropdownMenuContent >
958+ </ DropdownMenu >
959+ </ div >
949960
961+ < Separator />
962+
963+ < div className = "space-y-4" >
950964 < Collapsible
951965 open = { advancedOptionsOpen }
952966 onOpenChange = { setAdvancedOptionsOpen }
0 commit comments