import type { FC } from "react"; import { observer } from "mobx-react"; import Image from "next/image"; // components import { useTranslation } from "@plane/i18n"; import { CyclesList } from "@/components/cycles/list"; // ui import { CycleModuleListLayoutLoader } from "@/components/ui/loader/cycle-module-list-loader"; // hooks import { useCycle } from "@/hooks/store/use-cycle"; import { useCycleFilter } from "@/hooks/store/use-cycle-filter"; // assets import AllFiltersImage from "@/public/empty-state/cycle/all-filters.svg"; import NameFilterImage from "@/public/empty-state/cycle/name-filter.svg"; export interface ICyclesView { workspaceSlug: string; projectId: string; } export const CyclesView: FC = observer((props) => { const { workspaceSlug, projectId } = props; // store hooks const { getFilteredCycleIds, getFilteredCompletedCycleIds, loader, currentProjectActiveCycleId } = useCycle(); const { searchQuery } = useCycleFilter(); const { t } = useTranslation(); // derived values const filteredCycleIds = getFilteredCycleIds(projectId, false); const filteredCompletedCycleIds = getFilteredCompletedCycleIds(projectId); const filteredUpcomingCycleIds = (filteredCycleIds ?? []).filter( (cycleId) => cycleId !== currentProjectActiveCycleId ); if (loader || !filteredCycleIds) return ; if (filteredCycleIds.length === 0 && filteredCompletedCycleIds?.length === 0) return (
No matching cycles
{t("project_cycles.no_matching_cycles")}

{searchQuery.trim() === "" ? t("project_cycles.remove_filters_to_see_all_cycles") : t("project_cycles.remove_search_criteria_to_see_all_cycles")}

); return ( ); });