{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "table-with-checkbox", "type": "registry:block", "title": "table-with-checkbox", "registryDependencies": [ "https://retroui.dev/r/table.json" ], "files": [ { "path": "preview/components/table-with-checkbox.tsx", "content": "import { Badge, Checkbox } from \"@/components/retroui\"\nimport {\n Table,\n} from \"@/components/retroui/Table\"\nimport { useState } from \"react\"\n\nconst employees = [\n {\n id: \"1\",\n name: \"Alice Johnson\",\n department: \"Engineering\",\n status: \"Active\",\n salary: \"85,000\",\n },\n {\n id: \"2\",\n name: \"Bob Smith\",\n department: \"Product\",\n status: \"Active\",\n salary: \"95,000\",\n },\n {\n id: \"3\",\n name: \"Carol Williams\",\n department: \"Design\",\n status: \"On Leave\",\n salary: \"70,000\",\n },\n {\n id: \"4\",\n name: \"David Brown\",\n department: \"Engineering\",\n status: \"Active\",\n salary: \"90,000\",\n },\n {\n id: \"5\",\n name: \"Eve Davis\",\n department: \"Engineering\",\n status: \"Active\",\n salary: \"75,000\",\n },\n {\n id: \"6\",\n name: \"Frank Wilson\",\n department: \"Marketing\",\n status: \"Inactive\",\n salary: \"80,000\",\n },\n]\n\nexport default function TableWithCheckbox() {\n const [selectedEmployees, setSelectedEmployees] = useState>(new Set())\n\n const handleSelectAll = (checked: boolean) => {\n if (checked) {\n setSelectedEmployees(new Set(employees.map(emp => emp.id)))\n } else {\n setSelectedEmployees(new Set())\n }\n }\n\n const handleSelectEmployee = (employeeId: string, checked: boolean) => {\n const newSelected = new Set(selectedEmployees)\n if (checked) {\n newSelected.add(employeeId)\n } else {\n newSelected.delete(employeeId)\n }\n setSelectedEmployees(newSelected)\n }\n\n const isAllSelected = selectedEmployees.size === employees.length\n\n return (\n \n \n \n \n \n \n Name\n Department\n Status\n Salary\n \n \n \n {employees.map((employee) => (\n \n \n handleSelectEmployee(employee.id, Boolean(checked))}\n />\n \n {employee.name}\n {employee.department}\n \n \n {employee.status}\n \n \n $ {employee.salary}\n \n ))}\n \n \n \n Selected: {selectedEmployees.size} / {employees.length}\n $ {employees.reduce((total, employee) => total + Number(employee.salary.replace(',', '')), 0)}\n \n \n
\n )\n}", "type": "registry:block", "target": "components/retroui/preview/table-with-checkbox.tsx" } ] }