PromucFlow_constructor/app/client/src/components/ads/IconTabsComponent.tsx
ram-primathon 3b0fb539d5
Property Pane re design (#3057)
Co-authored-by: devrk96 <rohit.kumawat@primathon.in>
Co-authored-by: hetunandu <hetu@appsmith.com>
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: Vicky Bansal <67091118+vicky-primathon@users.noreply.github.com>
Co-authored-by: nandan.anantharamu <nandan.anantharamu@thoughtspot.com>
2021-03-15 17:47:56 +05:30

64 lines
1.6 KiB
TypeScript

import React from "react";
import styled from "styled-components";
import { ControlIcons, ControlIconName } from "icons/ControlIcons";
const ItemWrapper = styled.div<{ selected: boolean }>`
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
background: ${(props) =>
props.selected
? props.theme.colors.propertyPane.activeButtonText
: props.theme.colors.propertyPane.multiDropdownBoxHoverBg};
cursor: pointer;
&&& svg {
path {
fill: ${(props) =>
props.selected
? props.theme.colors.propertyPane.buttonText
: props.theme.colors.propertyPane.jsIconBg} !important;
}
}
`;
const FlexWrapper = styled.div`
display: flex;
`;
export interface IconTabOption {
icon: string;
value: string;
}
interface IconTabsComponentProps {
options: IconTabOption[];
value: string;
selectOption: (value: string) => void;
}
const IconTabsComponent = (props: IconTabsComponentProps) => {
return (
<FlexWrapper>
{props.options.map((option: IconTabOption, index: number) => {
const controlIconName: ControlIconName = option.icon;
const ControlIcon = ControlIcons[controlIconName];
const isSelected = props.value === option.value;
return (
<ItemWrapper
key={index}
selected={isSelected}
onClick={() => props.selectOption(option.value)}
className={`t--icon-tab-${option.value}`}
>
<ControlIcon width={24} height={24} />
</ItemWrapper>
);
})}
</FlexWrapper>
);
};
export default IconTabsComponent;