PromucFlow_constructor/app/client/src/IDE/Components/HeaderEditorSwitcher.tsx

74 lines
1.9 KiB
TypeScript
Raw Normal View History

import { Flex, Icon, Text } from "design-system";
import React from "react";
import styled from "styled-components";
interface HeaderEditorSwitcherProps {
prefix: string;
title?: string;
titleTestId: string;
active: boolean;
onClick?: React.MouseEventHandler<HTMLDivElement>;
className?: string;
}
const SwitchTrigger = styled.div<{ active: boolean }>`
border-radius: var(--ads-v2-border-radius);
background-color: ${(props) =>
props.active ? `var(--ads-v2-color-bg-subtle)` : "unset"};
cursor: pointer;
padding: var(--ads-v2-spaces-2);
:hover {
background-color: var(--ads-v2-color-bg-subtle);
}
`;
const HeaderEditorSwitcher = React.forwardRef(
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(props: HeaderEditorSwitcherProps, ref: any) => {
const { active, className, prefix, title, titleTestId, ...rest } = props;
const separator = title ? " /" : "";
return (
<SwitchTrigger
active={active}
className={`flex align-center items-center justify-center ${className}`}
ref={ref}
{...rest}
>
<Text
color="var(--ads-v2-colors-content-label-inactive-fg)"
kind="body-m"
>
{prefix + separator}
</Text>
<Flex
alignItems="center"
className={titleTestId}
data-active={active}
gap="spaces-1"
height="100%"
justifyContent="center"
paddingLeft="spaces-2"
>
<Text isBold kind="body-m">
{title}
</Text>
<Icon
color={
title
? undefined
: "var(--ads-v2-colors-content-label-inactive-fg)"
}
name={active ? "arrow-up-s-line" : "arrow-down-s-line"}
size="md"
/>
</Flex>
</SwitchTrigger>
);
},
);
export default HeaderEditorSwitcher;