import {Fragment} from 'react'; import styled from '@emotion/styled'; import Hook from 'sentry/components/hook'; import ExternalLink from 'sentry/components/links/externalLink'; import {IconSentry} from 'sentry/icons'; import {t} from 'sentry/locale'; import ConfigStore from 'sentry/stores/configStore'; import {useLegacyStore} from 'sentry/stores/useLegacyStore'; import space from 'sentry/styles/space'; import getDynamicText from 'sentry/utils/getDynamicText'; type Props = { className?: string; }; function BaseFooter({className}: Props) { const {isSelfHosted, version, privacyUrl, termsUrl, demoMode} = useLegacyStore(ConfigStore); return ( ); } const LeftLinks = styled('div')` display: grid; grid-auto-flow: column; grid-auto-columns: max-content; align-items: center; justify-self: flex-start; gap: ${space(2)}; `; const RightLinks = styled('div')` display: grid; grid-auto-flow: column; grid-auto-columns: max-content; align-items: center; justify-self: flex-end; gap: ${space(2)}; `; const FooterLink = styled(ExternalLink)` color: ${p => p.theme.subText}; &.focus-visible { outline: none; box-shadow: ${p => p.theme.blue300} 0 2px 0; } `; const LogoLink = styled(props => ( ))` display: flex; align-items: center; margin: 0 auto; color: ${p => p.theme.subText}; `; const Build = styled('span')` font-size: ${p => p.theme.fontSizeRelativeSmall}; color: ${p => p.theme.subText}; font-weight: bold; margin-left: ${space(1)}; `; const Footer = styled(BaseFooter)` display: grid; grid-template-columns: 1fr 1fr 1fr; color: ${p => p.theme.subText}; font-size: ${p => p.theme.fontSizeMedium}; border-top: 1px solid ${p => p.theme.border}; align-content: center; padding: ${space(2)} ${space(4)}; margin-top: auto; /* pushes footer to the bottom of the page when loading */ @media (max-width: ${p => p.theme.breakpoints.medium}) { padding: ${space(2)}; } @media (max-width: ${p => p.theme.breakpoints.small}) { display: none; } `; export default Footer;