import styled from '@emotion/styled'; import {Button} from 'sentry/components/button'; import {DropdownMenu, type MenuItemProps} from 'sentry/components/dropdownMenu'; import {IconEllipsis, IconMegaphone} from 'sentry/icons'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import {useFeedbackForm} from 'sentry/utils/useFeedbackForm'; interface DraggableTabMenuButtonProps { menuOptions: MenuItemProps[]; 'aria-label'?: string; hasUnsavedChanges?: boolean; } export function DraggableTabMenuButton({ hasUnsavedChanges = false, menuOptions, ...props }: DraggableTabMenuButtonProps) { return ( {hasUnsavedChanges && ( )} ), style: {width: '18px', height: '16px', borderRadius: '4px'}, }} items={menuOptions} offset={[-10, 5]} menuFooter={} usePortal /> ); } function FeedbackFooter() { const openForm = useFeedbackForm(); if (!openForm) { return null; } return ( ); } const SectionedOverlayFooter = styled('div')` grid-area: footer; display: flex; align-items: center; justify-content: center; padding: ${space(1)}; border-top: 1px solid ${p => p.theme.innerBorder}; `; const StyledDropdownMenu = styled(DropdownMenu)` font-weight: ${p => p.theme.fontWeightNormal}; `; const UnsavedChangesIndicator = styled('div')` width: 7px; height: 7px; border-radius: 50%; background: ${p => p.theme.active}; border: solid 1px ${p => p.theme.background}; position: absolute; top: -3px; right: -3px; `; const ButtonWrapper = styled('div')` width: 18px; height: 16px; border: 1px solid ${p => p.theme.gray200}; border-radius: 4px; `; const TriggerIconWrap = styled('div')` position: relative; display: flex; align-items: center; `;