kafka-ui/kafka-ui-react-app/src/components/common/Dropdown/Dropdown.styled.ts
David Bejanyan 1b2827fb2f
FE: Add KC quick actions into the sandwich menu (#3660)
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
2023-04-24 10:50:08 +00:00

88 lines
2.1 KiB
TypeScript

import styled, { css, keyframes } from 'styled-components';
import { ControlledMenu } from '@szhsin/react-menu';
import { menuSelector, menuItemSelector } from '@szhsin/react-menu/style-utils';
import '@szhsin/react-menu/dist/core.css';
const menuShow = keyframes`
from {
opacity: 0;
}
`;
const menuHide = keyframes`
to {
opacity: 0;
}
`;
export const Dropdown = styled(ControlledMenu)(
({ theme: { dropdown } }) => css`
// container for the menu items
${menuSelector.name} {
border: 1px solid ${dropdown.borderColor};
box-shadow: 0 4px 16px ${dropdown.shadow};
padding: 8px 0;
border-radius: 4px;
font-size: 14px;
background-color: ${dropdown.backgroundColor};
text-align: left;
}
${menuSelector.stateOpening} {
animation: ${menuShow} 0.15s ease-out;
}
// NOTE: animation-fill-mode: forwards is required to
// prevent flickering with React 18 createRoot()
${menuSelector.stateClosing} {
animation: ${menuHide} 0.2s ease-out forwards;
}
${menuItemSelector.name} {
padding: 6px 16px;
min-width: 150px;
background-color: ${dropdown.item.backgroundColor.default};
white-space: nowrap;
}
${menuItemSelector.hover} {
background-color: ${dropdown.item.backgroundColor.hover};
}
${menuItemSelector.disabled} {
cursor: not-allowed;
opacity: 0.5;
}
`
);
export const DropdownButton = styled.button`
background-color: transparent;
border: none;
display: flex;
cursor: pointer;
align-self: center;
&:disabled {
opacity: 0.5;
cursor: not-allowed;
}
`;
export const DangerItem = styled.div`
color: ${({ theme: { dropdown } }) => dropdown.item.color.danger};
`;
export const DropdownItemHint = styled.div`
color: ${({ theme }) => theme.topicMetaData.color.label};
font-size: 12px;
line-height: 1.4;
margin-top: 5px;
`;
export const Wrapper = styled.div`
display: inline-flex;
align-items: center;
justify-content: end;
color: ${({ theme: { dropdown } }) => dropdown.item.color.normal};
`;