import React, { JSX, ReactNode } from 'react'; import styled from 'styled-components'; import type { CatalogEntityConfig, EntitiesCatalogConfig } from '@redocly/config'; import type { BffCatalogEntity, BffCatalogRelatedEntity } from '@redocly/theme/core/types'; import { Tabs, TabsSize } from '@redocly/theme/markdoc/components/Tabs/Tabs'; import { EntityTypeIcon } from '@redocly/theme/icons/EntityTypeIcon/EntityTypeIcon'; import { CatalogEntityDefaultRelations } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityDefaultRelations'; import { MoleculesIcon } from '@redocly/theme/icons/MoleculesIcon/MoleculesIcon'; import { NetworkIcon } from '@redocly/theme/icons/NetworkIcon/NetworkIcon'; export type CatalogEntityApiDescriptionRelationsProps = { entity: BffCatalogEntity; catalogConfig: CatalogEntityConfig; entitiesCatalogConfig: EntitiesCatalogConfig; relations: BffCatalogRelatedEntity[]; query: { fetchNextPage: () => void; isFetchingNextPage: boolean; hasNextPage: boolean; }; searchQuery: string; setSearchQuery: (query: string) => void; setFilter: (filter?: string) => void; sortOption: string | null; setSortOption: (sortOption: string | null) => void; handleSortClick: (sortKey: string, direction: 'asc' | 'desc') => void; isColumnSorted: (sortKey: string, direction: 'asc' | 'desc') => boolean; shouldShowLoadMore: boolean; }; export function CatalogEntityApiDescriptionRelations({ entity, relations, query, searchQuery, setSearchQuery, setFilter, entitiesCatalogConfig, catalogConfig, sortOption, setSortOption, handleSortClick, isColumnSorted, shouldShowLoadMore, }: CatalogEntityApiDescriptionRelationsProps): JSX.Element { return ( } onClick={() => setFilter('type:api-operation')} > } onClick={() => setFilter('type:data-schema')} > } onClick={() => setFilter('-type:api-operation,data-schema')} > ); } const TabItem = styled.div<{ label: string; icon?: ReactNode }>` padding: var(--spacing-sm); `; const TabsWrapper = styled.div` --md-tabs-container-margin: none; `;