import { List, ShowButton, useTable, EditButton, TagField, } from "@refinedev/antd"; import type { BaseRecord } from "@refinedev/core"; import { Space, Table, Tag, Badge, Typography, Input, Select, Button } from "antd"; import { SearchOutlined, FilterOutlined } from '@ant-design/icons'; import { useState } from "react"; const { Title } = Typography; export const SupportTickets = () => { const [searchText, setSearchText] = useState(""); const [priorityFilter, setPriorityFilter] = useState("all"); const [statusFilter, setStatusFilter] = useState("all"); const { tableProps } = useTable({ syncWithLocation: true, filters: { // Add server-side filters based on local state if API supports it } }); // Simulate client-side filtering for demo purposes // In a real app, this would be done on server side const filteredData = tableProps?.dataSource?.filter((ticket: any) => { let matches = true; if (searchText) { const searchLower = searchText.toLowerCase(); matches = matches && ( ticket?.title?.toLowerCase().includes(searchLower) || ticket?.description?.toLowerCase().includes(searchLower) ); } if (priorityFilter !== "all") { matches = matches && ticket?.priority === priorityFilter; } if (statusFilter !== "all") { matches = matches && ticket?.status === statusFilter; } return matches; }); const priorityColors = { low: 'blue', medium: 'orange', high: 'red', critical: 'purple' }; const statusColors = { open: 'green', 'in-progress': 'blue', resolved: 'gray', closed: 'black' }; return ( <>