import { observer } from "mobx-react"; import { useTheme } from "next-themes"; import { Disclosure } from "@headlessui/react"; // plane imports import { useTranslation } from "@plane/i18n"; import type { ICycle } from "@plane/types"; import { Row } from "@plane/ui"; // assets import darkActiveCycleAsset from "@/app/assets/empty-state/cycle/active-dark.webp?url"; import lightActiveCycleAsset from "@/app/assets/empty-state/cycle/active-light.webp?url"; // components import { ActiveCycleStats } from "@/components/cycles/active-cycle/cycle-stats"; import { ActiveCycleProductivity } from "@/components/cycles/active-cycle/productivity"; import { ActiveCycleProgress } from "@/components/cycles/active-cycle/progress"; import useCyclesDetails from "@/components/cycles/active-cycle/use-cycles-details"; import { CycleListGroupHeader } from "@/components/cycles/list/cycle-list-group-header"; import { CyclesListItem } from "@/components/cycles/list/cycles-list-item"; import { DetailedEmptyState } from "@/components/empty-state/detailed-empty-state-root"; // hooks import { useCycle } from "@/hooks/store/use-cycle"; import type { ActiveCycleIssueDetails } from "@/store/issue/cycle"; interface IActiveCycleDetails { workspaceSlug: string; projectId: string; cycleId?: string; showHeader?: boolean; } type ActiveCyclesComponentProps = { cycleId: string | null | undefined; activeCycle: ICycle | null; activeCycleResolvedPath: string; workspaceSlug: string; projectId: string; handleFiltersUpdate: (filters: any) => void; cycleIssueDetails?: ActiveCycleIssueDetails | { nextPageResults: boolean }; }; const ActiveCyclesComponent = observer(function ActiveCyclesComponent({ cycleId, activeCycle, activeCycleResolvedPath, workspaceSlug, projectId, handleFiltersUpdate, cycleIssueDetails, }: ActiveCyclesComponentProps) { const { t } = useTranslation(); if (!cycleId || !activeCycle) { return ( ); } return (
); }); export const ActiveCycleRoot = observer(function ActiveCycleRoot(props: IActiveCycleDetails) { const { workspaceSlug, projectId, cycleId: propsCycleId, showHeader = true } = props; // theme hook const { resolvedTheme } = useTheme(); // plane hooks const { t } = useTranslation(); // store hooks const { currentProjectActiveCycleId } = useCycle(); // derived values const cycleId = propsCycleId ?? currentProjectActiveCycleId; const activeCycleResolvedPath = resolvedTheme === "light" ? lightActiveCycleAsset : darkActiveCycleAsset; // fetch cycle details const { handleFiltersUpdate, cycle: activeCycle, cycleIssueDetails, } = useCyclesDetails({ workspaceSlug, projectId, cycleId }); return ( <> {showHeader ? ( {({ open }) => ( <> )} ) : ( )} ); });