import styled from '@emotion/styled'; import TextArea from 'sentry/components/forms/controls/textarea'; import Panel from 'sentry/components/panels/panel'; import PanelBody from 'sentry/components/panels/panelBody'; import PanelHeader from 'sentry/components/panels/panelHeader'; import TimeSince from 'sentry/components/timeSince'; import {IconGithub, IconGitlab, IconSentry} from 'sentry/icons'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; type Props = { dateUpdated: string | null; raw: string; type: 'codeowners' | 'issueowners'; controls?: React.ReactNode[]; 'data-test-id'?: string; placeholder?: string; provider?: string; repoName?: string; }; function RulesPanel({ raw, dateUpdated, provider, repoName, type, placeholder, controls, ['data-test-id']: dataTestId, }: Props) { function renderIcon() { switch (provider ?? '') { case 'github': return ; case 'gitlab': return ; default: return ; } } function renderTitle() { switch (type) { case 'codeowners': return 'CODEOWNERS'; case 'issueowners': return 'Ownership Rules'; default: return null; } } return ( {renderIcon()} {renderTitle()} {repoName &&
{`- ${repoName}`}
}
{dateUpdated && ( {t('Last %s', type === 'codeowners' ? t('synced') : t('edited'))}{' '} )} {controls}
); } export default RulesPanel; const Container = styled('div')` display: flex; align-items: center; gap: ${space(0.75)}; `; const InnerPanelBody = styled(PanelBody)` height: auto; `; const StyledTextArea = styled(TextArea)` height: 350px !important; overflow: auto; outline: 0; width: 100%; resize: none; margin: 0; word-break: break-all; white-space: pre-wrap; line-height: ${space(3)}; border: none; box-shadow: none; color: transparent; text-shadow: 0 0 0 #9386a0; &:hover, &:focus, &:active { border: none; box-shadow: none; } `; const SyncDate = styled('div')` font-weight: ${p => p.theme.fontWeightNormal}; text-transform: none; `;