'use client'; import {Globe2, MoreHorizontal, Pencil, ShieldCheck, Trash2, Users} from 'lucide-react'; import {Badge} from '@/components/ui/badge'; import {Button} from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import {Table, TableBody, TableCell, TableHead, TableHeader, TableRow,} from '@/components/ui/table'; import type {WAFRuleGroup} from '@/lib/services/openflare'; import {formatDateTime} from '@/lib/utils'; import {countRuleEntries} from './helpers'; interface RuleGroupsTableProps { groups: WAFRuleGroup[]; onEdit: (group: WAFRuleGroup) => void; onDelete: (group: WAFRuleGroup) => void; onBindSites: (group: WAFRuleGroup) => void; } export function RuleGroupsTable({ groups, onEdit, onDelete, onBindSites, }: RuleGroupsTableProps) { return ( 名称 类型 状态 规则数 应用范围 更新时间 操作 {groups.map((group) => (
{group.is_global ? ( ) : ( )} {group.name}
{group.is_global ? '全局' : '自定义'} {group.enabled ? '启用' : '停用'} {countRuleEntries(group)} {group.is_global ? '全部网站' : `${group.applied_site_count} 个网站`} {group.updated_at ? formatDateTime(group.updated_at) : '—'} onEdit(group)}> 编辑 {!group.is_global ? ( onBindSites(group)}> 绑定网站 ) : null} {!group.is_global ? ( <> onDelete(group)} > 删除 ) : null}
))}
); }