diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx index f75edf89e5c..9a4b4122f7b 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx @@ -6,7 +6,8 @@ import { useRouter } from "next/navigation"; // plane package imports import { EUserPermissions, EUserPermissionsLevel, PROJECT_TRACKER_ELEMENTS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; -import { type TabItem, Tabs } from "@plane/ui"; +import { Tabs } from "@plane/propel/tabs"; +import { TAnalyticsTabsBase } from "@plane/types"; // components import AnalyticsFilterActions from "@/components/analytics/analytics-filter-actions"; import { PageHead } from "@/components/core/page-title"; @@ -59,20 +60,11 @@ const AnalyticsPage = observer((props: Props) => { ? t(`workspace_analytics.page_label`, { workspace: currentWorkspace?.name }) : undefined; const ANALYTICS_TABS = useMemo(() => getAnalyticsTabs(t), [t]); - const tabs: TabItem[] = useMemo( - () => - ANALYTICS_TABS.map((tab) => ({ - key: tab.key, - label: tab.label, - content: , - onClick: () => { - router.push(`/${currentWorkspace?.slug}/analytics/${tab.key}`); - }, - disabled: tab.isDisabled, - })), - [ANALYTICS_TABS, router, currentWorkspace?.slug] - ); - const defaultTab = tabId || ANALYTICS_TABS[0].key; + const defaultTab = (tabId as TAnalyticsTabsBase) || ANALYTICS_TABS[0].key; + + const handleTabChange = (value: TAnalyticsTabsBase) => { + router.push(`/${currentWorkspace?.slug}/analytics/${value}`); + }; return ( <> @@ -80,19 +72,25 @@ const AnalyticsPage = observer((props: Props) => { {workspaceProjectIds && ( <> {workspaceProjectIds.length > 0 || loader === "init-loader" ? ( -
- } - /> +
+ +
+ + {ANALYTICS_TABS.map((tab) => ( + + {tab.label} + + ))} + + +
+ + {ANALYTICS_TABS.map((tab) => ( + + + + ))} +
) : ( = observer((props) => { ); return ( - -
- - - - -
-
+
+ + + + +
); }); diff --git a/apps/web/core/components/core/image-picker-popover.tsx b/apps/web/core/components/core/image-picker-popover.tsx index 925e24b895d..7521a37da4d 100644 --- a/apps/web/core/components/core/image-picker-popover.tsx +++ b/apps/web/core/components/core/image-picker-popover.tsx @@ -7,13 +7,13 @@ import { useParams } from "next/navigation"; import { useDropzone } from "react-dropzone"; import { Control, Controller } from "react-hook-form"; import useSWR from "swr"; -import { Tab, Popover } from "@headlessui/react"; +import { Popover } from "@headlessui/react"; // plane imports import { ACCEPTED_COVER_IMAGE_MIME_TYPES_FOR_REACT_DROPZONE, MAX_FILE_SIZE } from "@plane/constants"; import { useOutsideClickDetector } from "@plane/hooks"; +import { Tabs } from "@plane/propel/tabs"; import { EFileAssetType } from "@plane/types"; import { Button, Input, Loader, TOAST_TYPE, setToast } from "@plane/ui"; -// helpers import { getFileURL } from "@plane/utils"; // hooks import { useDropdownKeyDown } from "@/hooks/use-dropdown-key-down"; @@ -179,206 +179,203 @@ export const ImagePickerPopover: React.FC = observer((props) => { >
- - + + {tabOptions.map((tab) => { if (!unsplashImages && unsplashError && tab.key === "unsplash") return null; if (projectCoverImages && projectCoverImages.length === 0 && tab.key === "images") return null; return ( - - `rounded px-4 py-1 text-center text-sm outline-none transition-colors ${ - selected ? "bg-custom-primary text-white" : "text-custom-text-100" - }` - } - > + {tab.title} - + ); })} - - - {(unsplashImages || !unsplashError) && ( - -
- ( - { - if (e.key === "Enter") { - e.preventDefault(); - setSearchParams(formData.search); - } + + + +
+
+ ( + { + if (e.key === "Enter") { + e.preventDefault(); + setSearchParams(value); + } + }} + value={value} + onChange={(e) => { + onChange(e.target.value); + setFormData({ ...formData, search: e.target.value }); + }} + ref={ref} + placeholder="Search for images" + className="w-full text-sm" + /> + )} + /> + +
+ {unsplashImages ? ( + unsplashImages.length > 0 ? ( +
+ {unsplashImages.map((image) => ( +
{ + setIsOpen(false); + onChange(image.urls.regular); }} - value={value} - onChange={(e) => setFormData({ ...formData, search: e.target.value })} - ref={ref} - placeholder="Search for images" - className="w-full text-sm" - /> - )} - /> - -
- {unsplashImages ? ( - unsplashImages.length > 0 ? ( -
- {unsplashImages.map((image) => ( -
{ - setIsOpen(false); - onChange(image.urls.regular); - }} - > - {image.alt_description} -
- ))} -
- ) : ( -

No images found.

- ) - ) : ( - - - - - - - - - - - )} - - )} - {(!projectCoverImages || projectCoverImages.length !== 0) && ( - - {projectCoverImages ? ( - projectCoverImages.length > 0 ? ( -
- {projectCoverImages.map((image, index) => ( -
{ - setIsOpen(false); - onChange(image); - }} - > - {`Default -
- ))} -
- ) : ( -

No images found.

- ) - ) : ( - - - - - - - - - - - )} -
- )} - -
-
-
- - {image !== null || (value && value !== "") ? ( - <> - image + {image.alt_description} - - ) : ( -
- - {isDragActive ? "Drop image here to upload" : "Drag & drop image here"} -
- )} - - + ))}
-
- {fileRejections.length > 0 && ( -

- {fileRejections[0].errors[0].code === "file-too-large" - ? "The image size cannot exceed 5 MB." - : "Please upload a file in a valid format."} -

- )} + ) : ( +

No images found.

+ ) + ) : ( + + + + + + + + + + + )} +
+ -

File formats supported- .jpeg, .jpg, .png, .webp

+ {(!projectCoverImages || projectCoverImages.length !== 0) && ( + + {projectCoverImages ? ( + projectCoverImages.length > 0 ? ( +
+ {projectCoverImages.map((image, index) => ( +
{ + setIsOpen(false); + onChange(image); + }} + > + {`Project +
+ ))} +
+ ) : ( +

No images found.

+ ) + ) : ( + + + + + + + + + + + )} +
+ )} -
- - + Edit + + {image !== null || (value && value !== "") ? ( + <> + image + + ) : ( +
+ + {isDragActive ? "Drop image here to upload" : "Drag & drop image here"} + +
+ )} + +
- - - + {fileRejections.length > 0 && ( +

+ {fileRejections[0].errors[0].code === "file-too-large" + ? "The image size cannot exceed 5 MB." + : "Please upload a file in a valid format."} +

+ )} + +

File formats supported- .jpeg, .jpg, .png, .webp

+ +
+ + +
+
+
+
)} diff --git a/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx b/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx index 0a8bfa3ff9a..3d3c32c506e 100644 --- a/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx +++ b/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx @@ -4,17 +4,16 @@ import { FC, Fragment, useCallback, useRef, useState } from "react"; import isEmpty from "lodash/isEmpty"; import { observer } from "mobx-react"; import { CalendarCheck } from "lucide-react"; -// headless ui -import { Tab } from "@headlessui/react"; // plane imports import { useTranslation } from "@plane/i18n"; import { PriorityIcon } from "@plane/propel/icons"; +import { Tabs } from "@plane/propel/tabs"; import { Tooltip } from "@plane/propel/tooltip"; import { TWorkItemFilterCondition } from "@plane/shared-state"; import { EIssuesStoreType, ICycle } from "@plane/types"; // ui import { Loader, Avatar } from "@plane/ui"; -import { cn, renderFormattedDate, renderFormattedDateWithoutYear, getFileURL } from "@plane/utils"; +import { renderFormattedDate, renderFormattedDateWithoutYear, getFileURL } from "@plane/utils"; // components import { SingleProgressStats } from "@/components/core/sidebar/single-progress-stats"; import { StateDropdown } from "@/components/dropdowns/state/dropdown"; @@ -40,10 +39,12 @@ export type ActiveCycleStatsProps = { cycleIssueDetails: ActiveCycleIssueDetails; }; +export type TActiveCycleStatsTab = "Priority-Issues" | "Assignees" | "Labels"; + export const ActiveCycleStats: FC = observer((props) => { const { workspaceSlug, projectId, cycle, cycleId, handleFiltersUpdate, cycleIssueDetails } = props; // local storage - const { storedValue: tab, setValue: setTab } = useLocalStorage("activeCycleTab", "Assignees"); + const { storedValue: tab, setValue: setTab } = useLocalStorage("activeCycleTab", "Assignees"); // refs const issuesContainerRef = useRef(null); // states @@ -55,18 +56,6 @@ export const ActiveCycleStats: FC = observer((props) => { const assigneesResolvedPath = useResolvedAssetPath({ basePath: "/empty-state/active-cycle/assignee" }); const labelsResolvedPath = useResolvedAssetPath({ basePath: "/empty-state/active-cycle/label" }); - const currentValue = (tab: string | null) => { - switch (tab) { - case "Priority-Issues": - return 0; - case "Assignees": - return 1; - case "Labels": - return 2; - default: - return 0; - } - }; const { issues: { fetchNextActiveCycleIssues }, } = useIssues(EIssuesStoreType.CYCLE); @@ -74,6 +63,7 @@ export const ActiveCycleStats: FC = observer((props) => { issue: { getIssueById }, setPeekIssue, } = useIssueDetail(); + const loadMoreIssues = useCallback(() => { if (!cycleId) return; fetchNextActiveCycleIssues(workspaceSlug, projectId, cycleId); @@ -90,78 +80,27 @@ export const ActiveCycleStats: FC = observer((props) => { ); + const handleTabChange = (value: TActiveCycleStatsTab) => { + setTab(value); + }; + return cycleId ? (
- { - switch (i) { - case 0: - return setTab("Priority-Issues"); - case 1: - return setTab("Assignees"); - case 2: - return setTab("Labels"); - - default: - return setTab("Priority-Issues"); - } - }} - > - - - cn( - "relative z-[1] font-semibold text-xs rounded-[3px] py-1.5 text-custom-text-400 focus:outline-none transition duration-500", - { - "text-custom-text-300 bg-custom-background-100": selected, - "hover:text-custom-text-300": !selected, - } - ) - } - > + + + {t("project_cycles.active_cycle.priority_issue")} - - - cn( - "relative z-[1] font-semibold text-xs rounded-[3px] py-1.5 text-custom-text-400 focus:outline-none transition duration-500", - { - "text-custom-text-300 bg-custom-background-100": selected, - "hover:text-custom-text-300": !selected, - } - ) - } - > + + {t("project_cycles.active_cycle.assignees")} - - - cn( - "relative z-[1] font-semibold text-xs rounded-[3px] py-1.5 text-custom-text-400 focus:outline-none transition duration-500", - { - "text-custom-text-300 bg-custom-background-100": selected, - "hover:text-custom-text-300": !selected, - } - ) - } - > + + {t("project_cycles.active_cycle.labels")} - - + + - - + +
= observer((props) => { loaders )}
- +
+
- + +
{cycle && !isEmpty(cycle.distribution) ? ( cycle?.distribution?.assignees && cycle.distribution.assignees.length > 0 ? ( cycle.distribution?.assignees?.map((assignee, index) => { @@ -313,12 +251,11 @@ export const ActiveCycleStats: FC = observer((props) => { ) : ( loaders )} - +
+
- + +
{cycle && !isEmpty(cycle.distribution) ? ( cycle?.distribution?.labels && cycle.distribution.labels.length > 0 ? ( cycle.distribution.labels?.map((label, index) => ( @@ -356,9 +293,9 @@ export const ActiveCycleStats: FC = observer((props) => { ) : ( loaders )} - - - +
+
+
) : ( diff --git a/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx b/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx index fbea2e7be31..f2735b2dfcd 100644 --- a/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx +++ b/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx @@ -145,9 +145,7 @@ export const CycleAnalyticsProgress: FC = observer((pro cycleId )} isEditable={Boolean(!peekCycle) && cycleFilter !== undefined} - noBackground={false} plotType={plotType} - roundedTab={false} selectedFilters={{ assignees: selectedAssignees, labels: selectedLabels, diff --git a/apps/web/core/components/cycles/analytics-sidebar/progress-stats.tsx b/apps/web/core/components/cycles/analytics-sidebar/progress-stats.tsx index eaa60b6bd4b..0f64dd51c87 100644 --- a/apps/web/core/components/cycles/analytics-sidebar/progress-stats.tsx +++ b/apps/web/core/components/cycles/analytics-sidebar/progress-stats.tsx @@ -2,12 +2,12 @@ import { FC } from "react"; import { observer } from "mobx-react"; -import { Tab } from "@headlessui/react"; // plane imports import { useTranslation } from "@plane/i18n"; +import { Tabs } from "@plane/propel/tabs"; import { TWorkItemFilterCondition } from "@plane/shared-state"; import { TCycleDistribution, TCycleEstimateDistribution, TCyclePlotType } from "@plane/types"; -import { cn, toFilterArray } from "@plane/utils"; +import { toFilterArray } from "@plane/utils"; // components import { AssigneeStatComponent, TAssigneeData } from "@/components/core/sidebar/progress-stats/assignee"; import { LabelStatComponent, TLabelData } from "@/components/core/sidebar/progress-stats/label"; @@ -27,9 +27,7 @@ type TCycleProgressStats = { groupedIssues: Record; handleFiltersUpdate: (condition: TWorkItemFilterCondition) => void; isEditable?: boolean; - noBackground?: boolean; plotType: TCyclePlotType; - roundedTab?: boolean; selectedFilters: TSelectedFilterProgressStats; size?: "xs" | "sm"; totalIssuesCount: number; @@ -42,9 +40,7 @@ export const CycleProgressStats: FC = observer((props) => { groupedIssues, handleFiltersUpdate, isEditable = false, - noBackground = false, plotType, - roundedTab = false, selectedFilters, size = "sm", totalIssuesCount, @@ -57,7 +53,6 @@ export const CycleProgressStats: FC = observer((props) => { "stat-assignees" ); // derived values - const currentTabIndex = (tab: string): number => PROGRESS_STATS.findIndex((stat) => stat.key === tab); const currentDistribution = distribution as TCycleDistribution; const currentEstimateDistribution = distribution as TCycleEstimateDistribution; const selectedAssigneeIds = toFilterArray(selectedFilters?.assignees?.value || []) as string[]; @@ -118,60 +113,43 @@ export const CycleProgressStats: FC = observer((props) => { return (
- - + + {PROGRESS_STATS.map((stat) => ( - setCycleTab(stat.key)} - > + {t(stat.i18n_title)} - + ))} - - - - - - - - - - - - - + + + + + + + + + + + + + +
); }); diff --git a/apps/web/core/components/license/modal/card/base-paid-plan-card.tsx b/apps/web/core/components/license/modal/card/base-paid-plan-card.tsx index 340042427b6..f96f2091e60 100644 --- a/apps/web/core/components/license/modal/card/base-paid-plan-card.tsx +++ b/apps/web/core/components/license/modal/card/base-paid-plan-card.tsx @@ -3,8 +3,8 @@ import { FC, useState } from "react"; import { observer } from "mobx-react"; import { CheckCircle } from "lucide-react"; -import { Tab } from "@headlessui/react"; // plane imports +import { Tabs } from "@plane/propel/tabs"; // helpers import { EProductSubscriptionEnum, TBillingFrequency, TSubscriptionPrice } from "@plane/types"; import { getSubscriptionBackgroundColor, getUpgradeCardVariantStyle } from "@plane/ui"; @@ -40,59 +40,46 @@ export const BasePaidPlanCard: FC = observer((props) => return (
- -
- +
+ + {prices.map((price: TSubscriptionPrice) => ( - - cn( - "w-full rounded py-1 text-sm font-medium leading-5", - selected - ? "bg-custom-background-100 text-custom-text-100 shadow" - : "text-custom-text-300 hover:text-custom-text-200" - ) - } - onClick={() => setSelectedPlan(price.recurring)} - > + {renderPriceContent(price)} - + ))} - -
- + + {prices.map((price: TSubscriptionPrice) => ( - -
+ +
Plane {planeName}
{renderActionButton(price)}
-
-
{`Everything in ${basePlan} +`}
-
    - {features.map((feature) => ( -
  • -

    - - {feature} -

    -
  • - ))} -
- {extraFeatures &&
{extraFeatures}
} -
- +
+ ))} + +
+ +
+
{`Everything in ${basePlan} +`}
+
    + {features.map((feature) => ( +
  • +

    + + {feature} +

    +
  • ))} - - +
+ {extraFeatures &&
{extraFeatures}
} +
); }); diff --git a/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx b/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx index 7854298c28a..0292c9bc11c 100644 --- a/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx +++ b/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx @@ -207,9 +207,7 @@ export const ModuleAnalyticsProgress: FC = observer((p )} isEditable={Boolean(!peekModule) && moduleFilter !== undefined} moduleId={moduleId} - noBackground={false} plotType={plotType} - roundedTab={false} selectedFilters={{ assignees: selectedAssignees, labels: selectedLabels, diff --git a/apps/web/core/components/modules/analytics-sidebar/progress-stats.tsx b/apps/web/core/components/modules/analytics-sidebar/progress-stats.tsx index ceb11e3ea1c..2e26b776f27 100644 --- a/apps/web/core/components/modules/analytics-sidebar/progress-stats.tsx +++ b/apps/web/core/components/modules/analytics-sidebar/progress-stats.tsx @@ -2,8 +2,8 @@ import { FC } from "react"; import { observer } from "mobx-react"; -import { Tab } from "@headlessui/react"; import { useTranslation } from "@plane/i18n"; +import { Tabs } from "@plane/propel/tabs"; import { TWorkItemFilterCondition } from "@plane/shared-state"; import { TModuleDistribution, TModuleEstimateDistribution, TModulePlotType } from "@plane/types"; import { cn, toFilterArray } from "@plane/utils"; @@ -40,9 +40,7 @@ export const ModuleProgressStats: FC = observer((props) => handleFiltersUpdate, isEditable = false, moduleId, - noBackground = false, plotType, - roundedTab = false, selectedFilters, size = "sm", totalIssuesCount, @@ -55,7 +53,6 @@ export const ModuleProgressStats: FC = observer((props) => "stat-assignees" ); // derived values - const currentTabIndex = (tab: string): number => PROGRESS_STATS.findIndex((stat) => stat.key === tab); const currentDistribution = distribution as TModuleDistribution; const currentEstimateDistribution = distribution as TModuleEstimateDistribution; const selectedAssigneeIds = toFilterArray(selectedFilters?.assignees?.value || []) as string[]; @@ -116,60 +113,42 @@ export const ModuleProgressStats: FC = observer((props) => return (
- - + + {PROGRESS_STATS.map((stat) => ( - setModuleTab(stat.key)} - > + {t(stat.i18n_title)} - + ))} - - - - - - - - - - - - - + + + + + + + + + + + + +
); }); diff --git a/apps/web/core/components/pages/navigation-pane/root.tsx b/apps/web/core/components/pages/navigation-pane/root.tsx index 9a0884b8bc6..a4daa6832d4 100644 --- a/apps/web/core/components/pages/navigation-pane/root.tsx +++ b/apps/web/core/components/pages/navigation-pane/root.tsx @@ -2,9 +2,9 @@ import React, { useCallback } from "react"; import { observer } from "mobx-react"; import { useRouter, useSearchParams } from "next/navigation"; import { ArrowRightCircle } from "lucide-react"; -import { Tab } from "@headlessui/react"; -// plane imports import { useTranslation } from "@plane/i18n"; +import { Tabs, TabsList, TabsTrigger, TabsContent } from "@plane/propel/tabs"; +// plane imports import { Tooltip } from "@plane/propel/tooltip"; // hooks import { useQueryParams } from "@/hooks/use-query-params"; @@ -49,7 +49,6 @@ export const PageNavigationPaneRoot: React.FC = observer((props) => { PAGE_NAVIGATION_PANE_TABS_QUERY_PARAM ) as TPageNavigationPaneTab | null; const activeTab: TPageNavigationPaneTab = navigationPaneQueryParam || "outline"; - const selectedIndex = PAGE_NAVIGATION_PANE_TAB_KEYS.indexOf(activeTab); // Check if any extension is currently active based on query parameters const ActiveExtension = extensions.find((extension) => { @@ -69,8 +68,8 @@ export const PageNavigationPaneRoot: React.FC = observer((props) => { const { t } = useTranslation(); const handleTabChange = useCallback( - (index: number) => { - const updatedTab = PAGE_NAVIGATION_PANE_TAB_KEYS[index]; + (value: TPageNavigationPaneTab) => { + const updatedTab = value; const isUpdatedTabInfo = updatedTab === "info"; const updatedRoute = updateQueryParams({ paramsToAdd: { [PAGE_NAVIGATION_PANE_TABS_QUERY_PARAM]: updatedTab }, @@ -106,10 +105,14 @@ export const PageNavigationPaneRoot: React.FC = observer((props) => { {ActiveExtension ? ( ) : showNavigationTabs ? ( - + - + ) : null}
diff --git a/apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx b/apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx index f551f07c613..2da1bed8ed1 100644 --- a/apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx +++ b/apps/web/core/components/pages/navigation-pane/tab-panels/assets.tsx @@ -107,13 +107,13 @@ export const PageNavigationPaneAssetsTabPanel: React.FC = observer((props editor: { assetsList }, } = page; - if (assetsList.length === 0) return ; - return ( -
- {assetsList?.map((asset) => ( - - ))} +
+ {assetsList?.length === 0 ? ( + + ) : ( + assetsList?.map((asset) => ) + )}
); }); diff --git a/apps/web/core/components/pages/navigation-pane/tab-panels/root.tsx b/apps/web/core/components/pages/navigation-pane/tab-panels/root.tsx index 6c4b4f28c14..f88c31bdde7 100644 --- a/apps/web/core/components/pages/navigation-pane/tab-panels/root.tsx +++ b/apps/web/core/components/pages/navigation-pane/tab-panels/root.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Tab } from "@headlessui/react"; +import { Tabs } from "@plane/propel/tabs"; // components import type { TPageRootHandlers } from "@/components/pages/editor/page-root"; // plane web imports @@ -21,19 +21,15 @@ export const PageNavigationPaneTabPanelsRoot: React.FC = (props) => { const { page, versionHistory } = props; return ( - + <> {ORDERED_PAGE_NAVIGATION_TABS_LIST.map((tab) => ( - + {tab.key === "outline" && } {tab.key === "info" && } {tab.key === "assets" && } - + ))} - + ); }; diff --git a/apps/web/core/components/pages/navigation-pane/tabs-list.tsx b/apps/web/core/components/pages/navigation-pane/tabs-list.tsx index bf438321683..c4e201e9f47 100644 --- a/apps/web/core/components/pages/navigation-pane/tabs-list.tsx +++ b/apps/web/core/components/pages/navigation-pane/tabs-list.tsx @@ -1,6 +1,6 @@ -import { Tab } from "@headlessui/react"; -// plane imports import { useTranslation } from "@plane/i18n"; +import { Tabs } from "@plane/propel/tabs"; +// plane imports // plane web components import { ORDERED_PAGE_NAVIGATION_TABS_LIST } from "@/plane-web/components/pages/navigation-pane"; @@ -9,29 +9,12 @@ export const PageNavigationPaneTabsList = () => { const { t } = useTranslation(); return ( - - {({ selectedIndex }) => ( - <> - {ORDERED_PAGE_NAVIGATION_TABS_LIST.map((tab) => ( - - {t(tab.i18n_label)} - - ))} - {/* active tab indicator */} -
- - )} - + + {ORDERED_PAGE_NAVIGATION_TABS_LIST.map((tab) => ( + + {t(tab.i18n_label)} + + ))} + ); }; diff --git a/apps/web/core/components/pages/version/editor.tsx b/apps/web/core/components/pages/version/editor.tsx index d001072dbbe..c484a4ee5cb 100644 --- a/apps/web/core/components/pages/version/editor.tsx +++ b/apps/web/core/components/pages/version/editor.tsx @@ -3,8 +3,8 @@ import { useParams } from "next/navigation"; // plane imports import type { TDisplayConfig } from "@plane/editor"; import type { JSONContent, TPageVersion } from "@plane/types"; -import { isJSONContentEmpty } from "@plane/utils"; import { Loader } from "@plane/ui"; +import { isJSONContentEmpty } from "@plane/utils"; // components import { DocumentEditor } from "@/components/editor/document/editor"; // hooks diff --git a/packages/propel/package.json b/packages/propel/package.json index 6650905bb26..a4155131eee 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -79,4 +79,4 @@ "tsdown": "catalog:", "typescript": "catalog:" } -} +} \ No newline at end of file