/* * Kyoo - A portable and vast media library solution. * Copyright (c) Kyoo. * * See AUTHORS.md and LICENSE file in the project root for full license information. * * Kyoo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * Kyoo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Kyoo. If not, see . */ import { Chip, HR, Icon, IconButton, Menu, P, PressableFeedback, tooltip, ts, } from "@kyoo/primitives"; import ArrowDownward from "@material-symbols/svg-400/rounded/arrow_downward.svg"; import ArrowUpward from "@material-symbols/svg-400/rounded/arrow_upward.svg"; import GridView from "@material-symbols/svg-400/rounded/grid_view.svg"; import Sort from "@material-symbols/svg-400/rounded/sort.svg"; import Style from "@material-symbols/svg-400/rounded/style.svg"; import ViewList from "@material-symbols/svg-400/rounded/view_list.svg"; import { forwardRef } from "react"; import { useTranslation } from "react-i18next"; import { type PressableProps, View } from "react-native"; import { useYoshiki } from "yoshiki/native"; import { Layout, SearchSort, SortOrd } from "./types"; const SortTrigger = forwardRef(function SortTrigger( { sortKey, ...props }, ref, ) { const { css } = useYoshiki(); const { t } = useTranslation(); return (

{t(`browse.sortkey.${sortKey}` as any)}

); }); export const BrowseSettings = ({ availableSorts, sortKey, sortOrd, setSort, layout, setLayout, }: { availableSorts: string[]; sortKey: string; sortOrd: SortOrd; setSort: (sort: string, ord: SortOrd) => void; layout: Layout; setLayout: (layout: Layout) => void; }) => { const { css, theme } = useYoshiki(); const { t } = useTranslation(); const filters: string[] = []; // TODO: implement filters in the front. return ( {filters.length !== 0 && ( {filters.map((x) => ( ))} )} {availableSorts.map((x) => ( setSort(x, sortKey === x && sortOrd === SortOrd.Asc ? SortOrd.Desc : SortOrd.Asc) } /> ))}
setLayout(Layout.Grid)} color={layout === Layout.Grid ? theme.accent : undefined} {...tooltip(t("browse.switchToGrid"))} {...css({ padding: ts(0.5), marginY: "auto" })} /> setLayout(Layout.List)} color={layout === Layout.List ? theme.accent : undefined} {...tooltip(t("browse.switchToList"))} {...css({ padding: ts(0.5), marginY: "auto" })} />
); };