import React, { Dispatch, SetStateAction, useEffect } from "react"; import useLocalSettingsStore from "@/store/localSettings"; import { ViewMode } from "@/types/global"; import { dropdownTriggerer } from "@/lib/client/utils"; import { useTranslation } from "next-i18next"; type Props = { viewMode: ViewMode; setViewMode: Dispatch>; }; export default function ViewDropdown({ viewMode, setViewMode }: Props) { const { settings, updateSettings } = useLocalSettingsStore((state) => state); const { t } = useTranslation(); useEffect(() => { updateSettings({ viewMode }); }, [viewMode, updateSettings]); const onChangeViewMode = (mode: ViewMode) => { setViewMode(mode); updateSettings({ viewMode }); }; const toggleShowSetting = (setting: keyof typeof settings.show) => { const newShowSettings = { ...settings.show, [setting]: !settings.show[setting], }; updateSettings({ show: newShowSettings }); }; const onColumnsChange = (e: React.ChangeEvent) => { updateSettings({ columns: Number(e.target.value) }); }; return (
{viewMode === ViewMode.Card ? ( ) : viewMode === ViewMode.Masonry ? ( ) : ( )}

    {t("view")}

    {t("show")}

    {Object.entries(settings.show) .filter((e) => settings.viewMode === ViewMode.List // Hide tags, image, and description checkboxes in list view ? e[0] !== "tags" && e[0] !== "image" && e[0] !== "description" : settings.viewMode === ViewMode.Card // Hide tags and description checkboxes in card view ? e[0] !== "tags" && e[0] !== "description" : true ) .map(([key, value]) => (
  • ))} {settings.viewMode !== ViewMode.List && ( <>

    {t("columns")}:{" "} {settings.columns === 0 ? t("default") : settings.columns}

    onColumnsChange(e)} className="range range-xs range-primary" step="1" />
    | | | | | | | | |
    )}
); }