import styled from '@emotion/styled';
import ExternalLink from 'sentry/components/links/externalLink';
import {t} from 'sentry/locale';
import space from 'sentry/styles/space';
type Props = {
/**
* Content rendered instead the panel item
*/
children?: React.ReactNode;
/**
* The text for the CTA link at the bottom of the panel item
*/
cta?: string;
/**
* Has the item been seen? affects the styling of the panel item
*/
hasSeen?: boolean;
/**
* The URL to use for the CTA
*/
link?: string;
/**
* A message with muted styling which appears above the children content
*/
message?: React.ReactNode;
/**
* The title of the sidebar item
*/
title?: string;
/**
* Actions to the right of the title
*/
titleAction?: React.ReactNode;
};
const SidebarPanelItem = ({
hasSeen,
title,
message,
link,
cta,
titleAction,
children,
}: Props) => (
{title && (
{title}
{titleAction}
)}
{message && {message}}
{children}
{link && (
{cta || t('Read More')}
)}
);
export default SidebarPanelItem;
const SidebarPanelItemRoot = styled('div')`
line-height: 1.5;
border-top: 1px solid ${p => p.theme.innerBorder};
background: ${p => p.theme.background};
font-size: ${p => p.theme.fontSizeMedium};
padding: ${space(3)};
`;
const TitleWrapper = styled('div')`
display: flex;
justify-content: space-between;
gap: ${space(1)};
`;
const Title = styled('div')>`
font-size: ${p => p.theme.fontSizeLarge};
margin-bottom: ${space(1)};
color: ${p => p.theme.textColor};
${p => !p.hasSeen && 'font-weight: 600;'};
.culprit {
font-weight: normal;
}
`;
const Text = styled('div')`
margin: ${space(0.5)} 0;
&:last-child {
margin-bottom: 0;
}
`;
const Message = styled(Text)`
color: ${p => p.theme.subText};
`;