+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 65.6 63.3"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="62.16" y1="735.29" x2="32.81" y2="755.16" gradientTransform="translate(0 -702)"><stop offset=".07" stop-color="#fff" stop-opacity=".4"/><stop offset="1" stop-color="#fff"/></linearGradient><path d="M59.7 25.1H40.9l-3.2 18.4h-13L9.4 61.7c.5.4 1.1.7 1.8.7h40.7c1 0 1.8-.7 2-1.7l5.8-35.6z" fill="url(#a)"/><path d="M2 6.3c-1.1 0-2 .9-2 2v.3l8.5 51.5c.1.6.4 1.2.9 1.6.5.4 1.1.7 1.8.7L27 43.5h-2.2l-3.5-18.4h38.4l2.7-16.5c.2-1.1-.6-2.1-1.7-2.3H2z" fill="#fff"/></svg>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-361.924 -3545.014 58.441 52.551">
+ <defs>
+ <linearGradient id="a" x1="1.086" x2=".469" y1=".138" y2=".788" gradientUnits="objectBoundingBox">
+ <stop offset=".18" stop-color="#0052cc"/>
+ <stop offset="1" stop-color="#2684ff"/>
+ </linearGradient>
+ </defs>
+ <path fill="#2684ff" d="M-360.027-3545.013a1.872 1.872 0 0 0-1.871 2.172l7.947 48.253a2.547 2.547 0 0 0 2.49 2.125h38.133a1.872 1.872 0 0 0 1.872-1.573l7.949-48.8a1.872 1.872 0 0 0-1.872-2.172zm33.47 34.875h-12.171l-3.3-17.217h18.42z"/>
+ <path fill="url(#a)" d="M56.464 25.12H38.891l-2.949 17.217H23.771L9.4 59.4a2.537 2.537 0 0 0 1.638.618H49.18a1.872 1.872 0 0 0 1.872-1.573z" transform="translate(-362.499 -3552.476)"/>
+</svg>
\ No newline at end of file
+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1096.695 -5028.598 25.874 25.241"><path data-name="Tracé 10275" d="M-1072.556-5022.155a12.881 12.881 0 0 0-4.708-4.708 12.654 12.654 0 0 0-6.494-1.735 12.655 12.655 0 0 0-6.494 1.735 12.879 12.879 0 0 0-4.708 4.708 12.655 12.655 0 0 0-1.735 6.492 12.573 12.573 0 0 0 2.468 7.605 12.67 12.67 0 0 0 6.376 4.674.754.754 0 0 0 .674-.118.659.659 0 0 0 .219-.505l-.008-.91q-.008-.859-.008-1.5l-.387.067a4.943 4.943 0 0 1-.935.059 7.123 7.123 0 0 1-1.171-.118 2.616 2.616 0 0 1-1.129-.5 2.137 2.137 0 0 1-.741-1.036l-.168-.388a4.209 4.209 0 0 0-.531-.859 2.033 2.033 0 0 0-.733-.64l-.118-.084a1.237 1.237 0 0 1-.219-.2.924.924 0 0 1-.152-.236q-.051-.118.084-.194a1.092 1.092 0 0 1 .489-.075l.337.05a2.459 2.459 0 0 1 .834.4 2.719 2.719 0 0 1 .819.877 2.969 2.969 0 0 0 .935 1.053 1.983 1.983 0 0 0 1.1.362 4.79 4.79 0 0 0 .96-.084 3.35 3.35 0 0 0 .758-.253 2.729 2.729 0 0 1 .825-1.735 11.534 11.534 0 0 1-1.727-.3 6.875 6.875 0 0 1-1.583-.657 4.535 4.535 0 0 1-1.356-1.128 5.424 5.424 0 0 1-.884-1.769 8.411 8.411 0 0 1-.345-2.527 4.913 4.913 0 0 1 1.331-3.47 4.528 4.528 0 0 1 .118-3.436 2.36 2.36 0 0 1 1.449.227 10.129 10.129 0 0 1 1.407.649q.447.269.716.455a12.166 12.166 0 0 1 6.469 0l.64-.4a9.066 9.066 0 0 1 1.549-.741 2.208 2.208 0 0 1 1.365-.185 4.485 4.485 0 0 1 .134 3.436 4.914 4.914 0 0 1 1.331 3.47 8.505 8.505 0 0 1-.345 2.535 5.213 5.213 0 0 1-.892 1.769 4.709 4.709 0 0 1-1.365 1.12 6.888 6.888 0 0 1-1.584.657 11.523 11.523 0 0 1-1.727.3 3 3 0 0 1 .876 2.392v3.554a.671.671 0 0 0 .211.505.732.732 0 0 0 .665.118 12.669 12.669 0 0 0 6.376-4.674 12.575 12.575 0 0 0 2.467-7.612 12.665 12.665 0 0 0-1.735-6.492z" fill="#fff"/></svg>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.601 -3545.014 54.017 52.551">
+ <path fill="#191717" fill-rule="evenodd" d="M-711.675-3545.014a26.975 26.975 0 0 0-8.59 52.53c1.322.165 1.817-.661 1.817-1.322v-4.625c-7.433 1.652-9.085-3.634-9.085-3.634-1.156-3.139-2.973-3.965-2.973-3.965-2.478-1.652.165-1.652.165-1.652 2.643.165 4.13 2.808 4.13 2.808 2.478 4.13 6.277 2.973 7.764 2.313a5.752 5.752 0 0 1 1.646-3.634c-5.947-.661-12.224-2.973-12.224-13.38a10.24 10.24 0 0 1 2.808-7.268 9.781 9.781 0 0 1 .33-6.938s2.313-.661 7.433 2.808a23.083 23.083 0 0 1 6.773-.826 30.4 30.4 0 0 1 6.773.826c5.121-3.469 7.433-2.808 7.433-2.808a10.343 10.343 0 0 1 .33 7.1 10.684 10.684 0 0 1 2.815 7.267c0 10.407-6.277 12.554-12.224 13.215.991.826 1.817 2.478 1.817 4.956v7.433c0 .661.5 1.487 1.817 1.322a26.976 26.976 0 0 0-8.755-52.526z"/>
+</svg>
\ No newline at end of file
+++ /dev/null
-<svg id="Calque_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"><style>.st0{fill:#fff}</style><g id="Groupe_5913" transform="translate(-1246 -5477)"><path id="Rectangle_6108" class="st0" d="M1248.1 5479.1h8.2v8.2h-8.2z"/><path id="Rectangle_6109" class="st0" d="M1248.1 5488.7h8.2v8.2h-8.2z"/><path id="Rectangle_6110" class="st0" d="M1257.7 5479.1h8.2v8.2h-8.2z"/><path id="Rectangle_6111" class="st0" d="M1257.7 5488.7h8.2v8.2h-8.2z"/></g></svg>
\ No newline at end of file
function getWrapper(props = {}, onSonarCloud = false) {
(isSonarCloud as jest.Mock).mockImplementation(() => onSonarCloud);
- return shallow(<GlobalFooter productionDatabase={true} sonarqubeEdition={EditionKey.community} {...props} />);
+ return shallow(
+ <GlobalFooter productionDatabase={true} sonarqubeEdition={EditionKey.community} {...props} />
+ );
}
// different
baseFontFamily: "'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif",
+ systemFontFamily: "-apple-system,'BlinkMacSystemFont','Segoe UI','Helvetica','Arial',sans-serif",
defaultShadow: '0 6px 12px rgba(0, 0, 0, 0.175)',
// z-index
// sonarcloud
sonarcloudOrange: '#f60',
sonarcloudOrangeDark: '#e65c00',
+ sonarcloudBlack100: '#ffffff',
sonarcloudBlack200: '#f9f9fb',
sonarcloudBlack300: '#cfd3d7',
+ sonarcloudBlack500: '#8a8c8f',
sonarcloudBlack700: '#434447',
sonarcloudBlack800: '#2d3032',
sonarcloudBlack900: '#070706',
<strong>
From <span className="sc-pricing-price">10€</span>/mo
</strong>
- <Link className="sc-arrow-link sc-pricing-small" to="/documentation/sonarcloud-pricing">
+ <Link className="sc-news-link" to="/documentation/sonarcloud-pricing">
see prices
</Link>
</div>
</div>
<div>
<a
- className="sc-black-button sc-sq-login-button"
+ className="sc-white-button sc-sq-login-button"
href={`${getBaseUrl()}/sessions/init/github`}>
- <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/github-white.svg`} />
+ <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/github.svg`} />
GitHub
</a>
<a
- className="sc-black-button sc-sq-login-button"
+ className="sc-white-button sc-sq-login-button"
href={`${getBaseUrl()}/sessions/init/bitbucket`}>
- <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/bitbucket-white.svg`} />
+ <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/bitbucket.svg`} />
Bitbucket
</a>
<a
- className="sc-black-button sc-sq-login-button"
+ className="sc-white-button sc-sq-login-button"
href={`${getBaseUrl()}/sessions/init/microsoft`}>
- <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/windows-white.svg`} />
+ <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/windows.svg`} />
VSTS
</a>
</div>
function Features() {
return (
<>
- <h2 className="sc-sq-header2">
- The right solution for developers
- <span className="sc-sq-dot">•</span>
- </h2>
+ <h2 className="sc-sq-header2">The right solution for developers</h2>
<ul className="sc-features-list">
<li className="sc-feature">
<img
function BottomNote() {
return (
<div className="sc-bottom-note">
- <span className="sc-sq-dot spacer-right">•</span>
Includes all features of SonarSource{' '}
<a
className="sc-bottom-note-link link-base-color"
export default function SQTopNav() {
return (
<ul className="sc-top-nav">
- <li className="sc-top-nav-item">
- <Link className="sc-top-nav-link" to="/about/sq">
- Home
- </Link>
- </li>
<li className="sc-top-nav-item">
<Link
activeClassName="sc-top-nav-active"
font-family: var(--sonarcloudFontFamily);
}
+.sc-page p {
+ font-family: var(--systemFontFamily);
+}
+
.sc-page *:focus,
.sc-footer *:focus {
box-shadow: 0 0 0 3px rgba(230, 92, 0, 0.25);
}
+.sc-white-button {
+ display: inline-block;
+ background-color: var(--sonarcloudBlack100);
+ border: 1px solid var(--sonarcloudBlack300);
+ margin: 10px auto;
+ font-size: 18px;
+ font-weight: 500;
+ padding-right: 15px;
+ color: var(--sonarcloudBlack800);
+ border-radius: 4px;
+ height: 50px;
+ line-height: 50px;
+ padding-left: 15px;
+ transition: all 0.1s ease-in;
+ box-shadow: 0 1px 2px rgba(7, 7, 6, 0.1);
+}
+
+.sc-white-button img {
+ height: 25px;
+ padding-top: 12px;
+ margin-bottom: 5px;
+}
+
+.sc-white-button:hover {
+ box-shadow: 0 10px 20px rgba(7, 7, 6, 0.2);
+ transform: translate(0, -2px);
+ color: var(--sonarcloudBlack800);
+}
+
.sc-black-button,
.sc-orange-button {
display: inline-flex;
line-height: 44px;
border: none;
border-radius: 4px;
-
color: #fff;
font-size: 18px;
font-weight: 500;
line-height: 56px;
margin-top: 40px;
margin-bottom: 20px;
- font-size: 40px;
- font-weight: 300;
+ font-size: 50px;
+ font-weight: 700;
text-align: center;
}
.sc-page-subtitle {
- line-height: 28px;
- margin-bottom: 40px;
- font-size: 20px;
+ line-height: 32px;
+ margin-bottom: 50px;
+ font-size: 22px;
font-weight: 300;
text-align: center;
}
flex-direction: column;
align-items: flex-start;
width: 30%;
- margin-bottom: 30px;
+ margin-bottom: 40px;
}
.sc-feature-title {
line-height: 28px;
- margin-bottom: 5px;
- font-size: 20px;
+ margin-bottom: 13px;
+ font-size: 21px;
font-weight: 400;
}
.sc-feature-description {
flex: 1 1 auto;
line-height: 22px;
- font-size: 16px;
- font-weight: 300;
+ font-size: 15px;
}
.sc-feature-description + .sc-feature-description {
- margin-top: 16px;
+ margin-top: 10px;
}
.sc-feature-link {
margin-top: 16px;
color: var(--sonarcloudOrange) !important;
font-size: 16px;
- font-weight: 300;
+ font-weight: 400;
}
.sc-feature-link:hover,
width: 330px;
padding: 20px 20px 30px;
border: 1px solid var(--sonarcloudBlack300);
- border-radius: 10px;
+ border-radius: 6px;
box-sizing: border-box;
line-height: 20px;
font-size: 16px;
.sc-arrow-link {
position: relative;
border: none;
- color: var(--baseFontColor);
+ color: #444;
}
-.sc-arrow-link::after {
- content: '→';
+.sc-arrow-link:after {
+ content: '\2192';
position: absolute;
top: 0;
left: calc(100% + 5px);
.sc-news-link {
border-bottom-color: var(--sonarcloudBlack300);
color: var(--baseFontColor);
+ font-size: 12px;
}
.sc-news-link:hover,
text-align: center;
}
-.sc-sq-dot {
- vertical-align: super;
- color: var(--sonarcloudOrange);
- font-size: 24px;
-}
-
.sc-languages {
margin: 60px 0;
text-align: center;
}
.sc-languages-list > li {
- margin: 11px 22px;
+ margin: 11px 26px;
}
.sc-integrations {
}
.sc-integrations-list > li {
- width: 170px;
+ width: 200px;
}
.sc-integrations-list > li + li {
- border-left: 1px solid var(--sonarcloudBlack300);
+ border-left: 1px solid var(--sonarcloudBorderGray);
}
.sc-bottom-note {
- margin: 26px 0 16px;
+ margin: 36px 0 16px;
font-size: 16px;
font-weight: 300;
text-align: center;
line-height: 30px;
font-size: 21px;
font-weight: 300;
+ font-family: var(--sonarcloudFontFamily);
}
.sc-child-lead-link {
}
.sc-child-feature {
- width: calc(50% - 60px);
+ width: calc(50% - 40px);
}
.sc-child-start-using {
<div className="big-spacer-bottom js-provider-name">
<p className="little-spacer-bottom">
<FormattedMessage
- defaultMessage={translate('sessions.update_login.1')}
- id="sessions.update_login.1"
- values={{ providerName: <strong>{query.providerName}</strong> }}
- />
+ defaultMessage={translate('sessions.update_login.1')}
+ id="sessions.update_login.1"
+ values={{ providerName: <strong>{query.providerName}</strong> }}
+ />
</p>
</div>
<ul className="list-styled">
<li className="spacer-top js-old-organization-key">
<FormattedMessage
- defaultMessage={translate('sessions.update_login.4')}
- id="sessions.update_login.4"
- values={{ organizationKey: <strong>{query.oldOrganizationKey}</strong> }}
- />
+ defaultMessage={translate('sessions.update_login.4')}
+ id="sessions.update_login.4"
+ values={{ organizationKey: <strong>{query.oldOrganizationKey}</strong> }}
+ />
</li>
<li className="spacer-top js-old-login">
<FormattedMessage
- defaultMessage={translate('sessions.update_login.5')}
- id="sessions.update_login.5"
- values={{ login: <strong>{query.oldLogin}</strong> }}
- />
+ defaultMessage={translate('sessions.update_login.5')}
+ id="sessions.update_login.5"
+ values={{ login: <strong>{query.oldLogin}</strong> }}
+ />
</li>
</ul>
</div>