/** * Copyright (c) 2026-present, Goldman Sachs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { observer } from 'mobx-react-lite'; import { CheckIcon, clsx, ViewHeadlineIcon, WindowIcon, } from '@finos/legend-art'; import { FormControl, IconButton, MenuItem, Select } from '@mui/material'; import { DataProductSort, SearchResultsViewMode, } from '../../stores/lakehouse/LegendMarketplaceSearchResultsStore.js'; /** The sort dropdown's placeholder option is not itself a sort value. */ type SortSelectValue = DataProductSort | 'Sort'; /** * The tile/list view toggle plus the sort dropdown, shared by the DataSpaces and * Lakehouse Access search pages. Telemetry and store mutation stay with the caller * (via the click/change callbacks) so this component has no dependency on which * store — or which page's telemetry event — is involved. */ export const SearchResultsSortControls: React.FC<{ viewMode: SearchResultsViewMode; onTileViewClick: () => void; onListViewClick: () => void; sort: DataProductSort; onSortChange: (sort: DataProductSort) => void; }> = observer( ({ viewMode, onTileViewClick, onListViewClick, sort, onSortChange }) => (