diff --git a/frontend/src/component/feature/FeatureView/FeatureView.tsx b/frontend/src/component/feature/FeatureView/FeatureView.tsx
index b666ca9890..c1f14ffc0f 100644
--- a/frontend/src/component/feature/FeatureView/FeatureView.tsx
+++ b/frontend/src/component/feature/FeatureView/FeatureView.tsx
@@ -1,18 +1,24 @@
-import { useState } from 'react';
+import { type PropsWithChildren, useState, type FC } from 'react';
import {
IconButton,
styled,
Tab,
Tabs,
Tooltip,
+ Typography,
useMediaQuery,
} from '@mui/material';
import Archive from '@mui/icons-material/Archive';
+import ArchiveOutlined from '@mui/icons-material/ArchiveOutlined';
import FileCopy from '@mui/icons-material/FileCopy';
+import FileCopyOutlined from '@mui/icons-material/FileCopyOutlined';
import Label from '@mui/icons-material/Label';
import WatchLater from '@mui/icons-material/WatchLater';
+import WatchLaterOutlined from '@mui/icons-material/WatchLaterOutlined';
import LibraryAdd from '@mui/icons-material/LibraryAdd';
+import LibraryAddOutlined from '@mui/icons-material/LibraryAddOutlined';
import Check from '@mui/icons-material/Check';
+import Star from '@mui/icons-material/Star';
import {
Link,
Route,
@@ -49,6 +55,46 @@ import useToast from 'hooks/useToast';
import { useUiFlag } from 'hooks/useUiFlag';
import type { IFeatureToggle } from 'interfaces/featureToggle';
import { Collaborators } from './Collaborators';
+import StarBorder from '@mui/icons-material/StarBorder';
+import { TooltipResolver } from 'component/common/TooltipResolver/TooltipResolver';
+
+const NewStyledHeader = styled('div')(({ theme }) => ({
+ backgroundColor: 'none',
+ marginBottom: theme.spacing(2),
+ borderBottom: `1px solid ${theme.palette.divider}`,
+}));
+
+const LowerHeaderRow = styled('div')(({ theme }) => ({
+ display: 'flex',
+ flexFlow: 'row nowrap',
+ justifyContent: 'space-between',
+ gap: theme.spacing(4),
+}));
+
+const HeaderActions = styled('div')(({ theme }) => ({
+ display: 'flex',
+ flexFlow: 'row nowrap',
+ alignItems: 'center',
+}));
+
+const IconButtonWithTooltip: FC<
+ PropsWithChildren<{
+ onClick: () => void;
+ label: string;
+ }>
+> = ({ children, label, onClick }) => {
+ return (
+ e.preventDefault()}
+ >
+
+ {children}
+
+
+ );
+};
const StyledHeader = styled('div')(({ theme }) => ({
backgroundColor: theme.palette.background.paper,
@@ -139,6 +185,7 @@ const useLegacyVariants = (environments: IFeatureToggle['environments']) => {
export const FeatureView = () => {
const projectId = useRequiredPathParam('projectId');
const featureId = useRequiredPathParam('featureId');
+ const flagOverviewRedesign = useUiFlag('flagOverviewRedesign');
const { favorite, unfavorite } = useFavoriteFeaturesApi();
const { refetchFeature } = useFeature(projectId, featureId);
const { setToastData, setToastApiError } = useToast();
@@ -231,144 +278,228 @@ export const FeatureView = () => {
return (
-
-
-
-
-
-
-
- {feature.name}{' '}
-
-
-
+ {feature.name}
+
+
+ {tabData.map((tab) => (
+ navigate(tab.path)}
+ data-testid={`TAB-${tab.title}`}
+ />
+ ))}
+
+
+
+ {feature?.favorite ? : }
+
+
+
+ {isFeatureNameCopied ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+ setShowDelDialog(true)}
+ >
+
+
+ setOpenStaleDialog(true)}
+ permission={UPDATE_FEATURE}
+ projectId={projectId}
+ tooltipProps={{
+ title: 'Toggle stale state',
+ }}
+ data-loading
+ >
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
+
+ {feature.name}{' '}
+
+
- {isFeatureNameCopied ? (
-
- ) : (
-
+ {isFeatureNameCopied ? (
+
+ ) : (
+
+ )}
+
+
+
- )}
-
-
+ }
+ />
+
0}
show={
-
+
+ Has parent:
+
+ {
+ feature?.dependencies[0]
+ ?.feature
+ }
+
+
}
/>
-
- 0}
- show={
-
- Has parent:
-
- {feature?.dependencies[0]?.feature}
-
-
- }
- />
- 0}
- show={
-
- Has children:
-
-
- }
- />
-
-
+ 0}
+ show={
+
+ Has children:
+
+
+ }
+ />
+
+
-
-
+
+
+
+ setShowDelDialog(true)}
+ >
+
+
+ setOpenStaleDialog(true)}
+ permission={UPDATE_FEATURE}
+ projectId={projectId}
+ tooltipProps={{
+ title: 'Toggle stale state',
+ }}
+ data-loading
+ >
+
+
+ setOpenTagDialog(true)}
+ permission={UPDATE_FEATURE}
+ projectId={projectId}
+ tooltipProps={{ title: 'Add tag' }}
+ data-loading
+ >
+
+
+
+
+
+
+
-
-
- setShowDelDialog(true)}
- >
-
-
- setOpenStaleDialog(true)}
- permission={UPDATE_FEATURE}
- projectId={projectId}
- tooltipProps={{
- title: 'Toggle stale state',
- }}
- data-loading
- >
-
-
- setOpenTagDialog(true)}
- permission={UPDATE_FEATURE}
- projectId={projectId}
- tooltipProps={{ title: 'Add tag' }}
- data-loading
- >
-
-
-
-
-
-
-
- {tabData.map((tab) => (
- navigate(tab.path)}
- data-testid={`TAB-${tab.title}`}
- />
- ))}
-
-
-
-
+ {tabData.map((tab) => (
+
navigate(tab.path)}
+ data-testid={`TAB-${tab.title}`}
+ />
+ ))}
+
+
+
+
+ )}
} />
} />
diff --git a/src/server-dev.ts b/src/server-dev.ts
index 3643164c97..378e154a9d 100644
--- a/src/server-dev.ts
+++ b/src/server-dev.ts
@@ -52,7 +52,7 @@ process.nextTick(async () => {
releasePlans: false,
releasePlanChangeRequests: false,
showUserDeviceCount: true,
- flagOverviewRedesign: false,
+ flagOverviewRedesign: true,
granularAdminPermissions: true,
deltaApi: true,
uniqueSdkTracking: true,