"use client"; import { ColumnDef } from "@tanstack/react-table"; import { AlertTriangle, Eye, MoreVertical } from "lucide-react"; import { useState } from "react"; import { ActionDropdown, ActionDropdownItem, } from "@/components/shadcn/dropdown"; import { CodeSnippet } from "@/components/ui/code-snippet/code-snippet"; import { EntityInfo } from "@/components/ui/entities"; import { DataTableColumnHeader } from "@/components/ui/table"; import { getGroupLabel } from "@/lib/categories"; import { ProviderType, ResourceProps } from "@/types"; import { ResourceDetail } from "./resource-detail"; const getResourceData = ( row: { original: ResourceProps }, field: keyof ResourceProps["attributes"], ) => { return row.original.attributes?.[field]; }; const getProviderData = ( row: { original: ResourceProps }, field: keyof ResourceProps["relationships"]["provider"]["data"]["attributes"], ) => { return ( row.original.relationships?.provider?.data?.attributes?.[field] ?? `No ${field} found in provider` ); }; // Component for resource name that opens the detail drawer const ResourceNameCell = ({ row }: { row: { original: ResourceProps } }) => { const resourceName = row.original.attributes?.name; const resourceUid = row.original.attributes?.uid; const displayName = typeof resourceName === "string" && resourceName.trim().length > 0 ? resourceName : "Unnamed resource"; // Note: We don't use defaultOpen here because ResourceDetailsSheet (rendered at page level) // already handles opening the drawer when resourceId is in the URL. Using defaultOpen={true} // here would cause duplicate drawers to render. return (
{displayName}
-
; } const displayLabel = getGroupLabel(groups[0]); const extraCount = groups.length - 1; return ({displayLabel}
{extraCount > 0 && ( +{extraCount} )}{typeof type === "string" ? type : "-"}
); }, }, // Region column { accessorKey: "region", header: ({ column }) => ({typeof region === "string" ? region : "-"}
); }, }, // Service column { accessorKey: "service", header: ({ column }) => ({typeof service === "string" ? service : "-"}
); }, }, // Actions column { id: "actions", header: () => , cell: ({ row }) =>