Files
users/app/tag-tasks/page.tsx
v0 2408d50cb0 refactor: overhaul UI for streamlined user experience
Redesign navigation, home overview, user portrait, and valuation pages
with improved functionality and responsive design.

Co-authored-by: null <4804959+fnvtk@users.noreply.github.com>
2025-07-18 13:47:12 +00:00

135 lines
5.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client"
import { useState } from "react"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Search, Plus, Filter, Calendar, CheckCircle2, XCircle, PlayCircle } from "lucide-react"
import { TaskList } from "@/components/tag-tasks/task-list"
export default function TagTasksPage() {
const [activeTab, setActiveTab] = useState("all")
const [searchQuery, setSearchQuery] = useState("")
return (
<div className="container mx-auto py-6 space-y-6">
<div className="flex justify-between items-center">
<h1 className="text-3xl font-bold"></h1>
<div className="flex space-x-2">
<Button variant="outline">
<Calendar className="mr-2 h-4 w-4" />
</Button>
<Button>
<Plus className="mr-2 h-4 w-4" />
</Button>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-4 gap-4">
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">128</div>
<p className="text-xs text-muted-foreground mt-1"> 24 </p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<PlayCircle className="h-5 w-5 text-blue-500 mr-2" />
<div className="text-2xl font-bold">12</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 2</p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<CheckCircle2 className="h-5 w-5 text-green-500 mr-2" />
<div className="text-2xl font-bold">98</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 96.2%</p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<XCircle className="h-5 w-5 text-red-500 mr-2" />
<div className="text-2xl font-bold">18</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 3.8%</p>
</CardContent>
</Card>
</div>
<Card>
<CardHeader>
<CardTitle></CardTitle>
<CardDescription></CardDescription>
</CardHeader>
<CardContent>
<Tabs value={activeTab} onValueChange={setActiveTab} className="space-y-4">
<div className="flex justify-between items-center">
<TabsList>
<TabsTrigger value="all"></TabsTrigger>
<TabsTrigger value="running"></TabsTrigger>
<TabsTrigger value="completed"></TabsTrigger>
<TabsTrigger value="failed"></TabsTrigger>
<TabsTrigger value="scheduled"></TabsTrigger>
</TabsList>
<div className="flex space-x-2">
<div className="relative w-64">
<Search className="absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
placeholder="搜索任务..."
className="pl-8"
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>
</div>
<Button variant="outline" size="icon">
<Filter className="h-4 w-4" />
</Button>
</div>
</div>
<TabsContent value="all" className="space-y-4">
<TaskList status="all" searchQuery={searchQuery} />
</TabsContent>
<TabsContent value="running" className="space-y-4">
<TaskList status="running" searchQuery={searchQuery} />
</TabsContent>
<TabsContent value="completed" className="space-y-4">
<TaskList status="completed" searchQuery={searchQuery} />
</TabsContent>
<TabsContent value="failed" className="space-y-4">
<TaskList status="failed" searchQuery={searchQuery} />
</TabsContent>
<TabsContent value="scheduled" className="space-y-4">
<TaskList status="scheduled" searchQuery={searchQuery} />
</TabsContent>
</Tabs>
</CardContent>
</Card>
</div>
)
}