From: Stas Vilchik Date: Thu, 14 Jun 2018 15:49:14 +0000 (+0200) Subject: SONARCLOUD-62 move /sq page (#373) X-Git-Tag: 7.5~956 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c4803912bda0edfceeb09d9115c1dd2cdf8db96e;p=sonarqube.git SONARCLOUD-62 move /sq page (#373) --- diff --git a/server/sonar-web/public/images/languages/abap.svg b/server/sonar-web/public/images/languages/abap.svg new file mode 100644 index 00000000000..072e0e4cd33 --- /dev/null +++ b/server/sonar-web/public/images/languages/abap.svg @@ -0,0 +1 @@ +abap \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/c-plus.svg b/server/sonar-web/public/images/languages/c-plus.svg new file mode 100644 index 00000000000..ebbafdc83d8 --- /dev/null +++ b/server/sonar-web/public/images/languages/c-plus.svg @@ -0,0 +1 @@ +c-plus \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/c-sharp.svg b/server/sonar-web/public/images/languages/c-sharp.svg new file mode 100644 index 00000000000..78da8f72788 --- /dev/null +++ b/server/sonar-web/public/images/languages/c-sharp.svg @@ -0,0 +1 @@ +c-sharp \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/flex.png b/server/sonar-web/public/images/languages/flex.png new file mode 100644 index 00000000000..755e1e7422e Binary files /dev/null and b/server/sonar-web/public/images/languages/flex.png differ diff --git a/server/sonar-web/public/images/languages/go.svg b/server/sonar-web/public/images/languages/go.svg new file mode 100644 index 00000000000..20c6ec5f3c6 --- /dev/null +++ b/server/sonar-web/public/images/languages/go.svg @@ -0,0 +1 @@ +go \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/html5.svg b/server/sonar-web/public/images/languages/html5.svg new file mode 100644 index 00000000000..bdf63741d0a --- /dev/null +++ b/server/sonar-web/public/images/languages/html5.svg @@ -0,0 +1 @@ +html5 \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/java.svg b/server/sonar-web/public/images/languages/java.svg new file mode 100644 index 00000000000..b3eeb8a6423 --- /dev/null +++ b/server/sonar-web/public/images/languages/java.svg @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/js.svg b/server/sonar-web/public/images/languages/js.svg new file mode 100644 index 00000000000..3059aefbf2c --- /dev/null +++ b/server/sonar-web/public/images/languages/js.svg @@ -0,0 +1 @@ +js \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/obj-c.svg b/server/sonar-web/public/images/languages/obj-c.svg new file mode 100644 index 00000000000..ad3cf129fcf --- /dev/null +++ b/server/sonar-web/public/images/languages/obj-c.svg @@ -0,0 +1 @@ +obj-c \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/php.svg b/server/sonar-web/public/images/languages/php.svg new file mode 100644 index 00000000000..53d741c2d47 --- /dev/null +++ b/server/sonar-web/public/images/languages/php.svg @@ -0,0 +1 @@ +php \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/plsql.svg b/server/sonar-web/public/images/languages/plsql.svg new file mode 100644 index 00000000000..cc0ea3ead7e --- /dev/null +++ b/server/sonar-web/public/images/languages/plsql.svg @@ -0,0 +1 @@ +plsql \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/python.svg b/server/sonar-web/public/images/languages/python.svg new file mode 100644 index 00000000000..cd2f68b06f8 --- /dev/null +++ b/server/sonar-web/public/images/languages/python.svg @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/swift.svg b/server/sonar-web/public/images/languages/swift.svg new file mode 100644 index 00000000000..7a1fce2710f --- /dev/null +++ b/server/sonar-web/public/images/languages/swift.svg @@ -0,0 +1 @@ +swift \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/ts.svg b/server/sonar-web/public/images/languages/ts.svg new file mode 100644 index 00000000000..a1bd7091a11 --- /dev/null +++ b/server/sonar-web/public/images/languages/ts.svg @@ -0,0 +1 @@ +ts \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/tsql.svg b/server/sonar-web/public/images/languages/tsql.svg new file mode 100644 index 00000000000..2cce17e6230 --- /dev/null +++ b/server/sonar-web/public/images/languages/tsql.svg @@ -0,0 +1 @@ +tsql \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/vb.svg b/server/sonar-web/public/images/languages/vb.svg new file mode 100644 index 00000000000..f0f10b9b2d2 --- /dev/null +++ b/server/sonar-web/public/images/languages/vb.svg @@ -0,0 +1 @@ +vb \ No newline at end of file diff --git a/server/sonar-web/public/images/languages/xml.svg b/server/sonar-web/public/images/languages/xml.svg new file mode 100644 index 00000000000..c254525c637 --- /dev/null +++ b/server/sonar-web/public/images/languages/xml.svg @@ -0,0 +1 @@ +xml \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/as-a-service.svg b/server/sonar-web/public/images/sonarcloud/as-a-service.svg new file mode 100644 index 00000000000..74c348aa9d0 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/as-a-service.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/server/sonar-web/public/images/sonarcloud/bitbucket-big.svg b/server/sonar-web/public/images/sonarcloud/bitbucket-big.svg new file mode 100644 index 00000000000..fce30da2d16 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/bitbucket-big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/bitbucket-white.svg b/server/sonar-web/public/images/sonarcloud/bitbucket-white.svg new file mode 100644 index 00000000000..fd609b590c5 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/bitbucket-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/branch-analysis.svg b/server/sonar-web/public/images/sonarcloud/branch-analysis.svg new file mode 100644 index 00000000000..d30b41b0ff3 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/branch-analysis.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/server/sonar-web/public/images/sonarcloud/github-big.svg b/server/sonar-web/public/images/sonarcloud/github-big.svg new file mode 100644 index 00000000000..cb69411ff93 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/github-big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/github-white.svg b/server/sonar-web/public/images/sonarcloud/github-white.svg new file mode 100644 index 00000000000..ec49a934800 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/github-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/sonarlint-integration.svg b/server/sonar-web/public/images/sonarcloud/sonarlint-integration.svg new file mode 100644 index 00000000000..99ab47f7852 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/sonarlint-integration.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + diff --git a/server/sonar-web/public/images/sonarcloud/sq-background.svg b/server/sonar-web/public/images/sonarcloud/sq-background.svg new file mode 100644 index 00000000000..27257f5842d --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/sq-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/sq-homepage.png b/server/sonar-web/public/images/sonarcloud/sq-homepage.png new file mode 100644 index 00000000000..ac8f3387fe2 Binary files /dev/null and b/server/sonar-web/public/images/sonarcloud/sq-homepage.png differ diff --git a/server/sonar-web/public/images/sonarcloud/sq-homepage@2x.png b/server/sonar-web/public/images/sonarcloud/sq-homepage@2x.png new file mode 100644 index 00000000000..b0f27670813 Binary files /dev/null and b/server/sonar-web/public/images/sonarcloud/sq-homepage@2x.png differ diff --git a/server/sonar-web/public/images/sonarcloud/vsts-big.svg b/server/sonar-web/public/images/sonarcloud/vsts-big.svg new file mode 100644 index 00000000000..c1fade97f26 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/vsts-big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/public/images/sonarcloud/windows-white.svg b/server/sonar-web/public/images/sonarcloud/windows-white.svg new file mode 100644 index 00000000000..ccd03f62a41 --- /dev/null +++ b/server/sonar-web/public/images/sonarcloud/windows-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/sonar-web/src/main/js/app/theme.js b/server/sonar-web/src/main/js/app/theme.js index 76560dcf985..75f6dcdc4d1 100644 --- a/server/sonar-web/src/main/js/app/theme.js +++ b/server/sonar-web/src/main/js/app/theme.js @@ -113,7 +113,9 @@ module.exports = { sonarcloudOrangeDark: '#e65c00', sonarcloudFontFamily: "Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif", + sonarcloudBlack200: '#f9f9fb', sonarcloudBlack300: '#cfd3d7', sonarcloudBlack700: '#434447', - sonarcloudBlack800: '#2d3032' + sonarcloudBlack800: '#2d3032', + sonarcloudBlack900: '#070706' }; diff --git a/server/sonar-web/src/main/js/apps/about/routes.ts b/server/sonar-web/src/main/js/apps/about/routes.ts index ad8591fc26a..7758ecaa78e 100644 --- a/server/sonar-web/src/main/js/apps/about/routes.ts +++ b/server/sonar-web/src/main/js/apps/about/routes.ts @@ -27,7 +27,10 @@ const routes = [ () => isSonarCloud() ? import('./sonarcloud/HomeContainer') : import('./components/AboutApp') ) - } + }, + childRoutes: isSonarCloud + ? [{ path: 'sq', component: lazyLoad(() => import('./sonarcloud/SQHomeContainer')) }] + : [] } ]; diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/Home.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/Home.tsx index 5118ad30058..e5d99cc504f 100644 --- a/server/sonar-web/src/main/js/apps/about/sonarcloud/Home.tsx +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/Home.tsx @@ -20,6 +20,8 @@ import * as React from 'react'; import { Link } from 'react-router'; import Footer from './Footer'; +import Pricing from './Pricing'; +import StartUsing from './StartUsing'; import GlobalContainer from '../../../app/components/GlobalContainer'; import { CurrentUser, isLoggedIn } from '../../../app/types'; import ChevronRightIcon from '../../../components/icons-components/ChevronRightcon'; @@ -98,43 +100,9 @@ export default class Home extends React.PureComponent { -
-
-

Open Source Projects

-   - Free -
+ -
-

Private Projects

- 14 days free trial - - From 10€/mo - - - see prices - -
-
- - {!isLoggedIn(this.props.currentUser) && ( -
- - Start using SonarCloud - -
- - Need help? - -
-
- )} + {!isLoggedIn(this.props.currentUser) && }

Explore open source projects on SonarCloud

diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx new file mode 100644 index 00000000000..b6055d50309 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx @@ -0,0 +1,44 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import * as React from 'react'; +import { Link } from 'react-router'; + +export default function Pricing() { + return ( +
+
+

Open Source Projects

+   + Free +
+ +
+

Private Projects

+ 14 days free trial + + From 10€/mo + + + see prices + +
+
+ ); +} diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx new file mode 100644 index 00000000000..80fce789569 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx @@ -0,0 +1,351 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import * as React from 'react'; +import { Link } from 'react-router'; +import Footer from './Footer'; +import Pricing from './Pricing'; +import StartUsing from './StartUsing'; +import GlobalContainer from '../../../app/components/GlobalContainer'; +import { getBaseUrl } from '../../../helpers/urls'; +import './style.css'; +import { CurrentUser, isLoggedIn } from '../../../app/types'; + +interface Props { + currentUser: CurrentUser; + location: { pathname: string }; +} + +export default class SQHome extends React.PureComponent { + componentDidMount() { + document.documentElement.classList.add('white-page'); + document.body.classList.add('white-page'); + } + + componentWillUnmount() { + document.documentElement.classList.remove('white-page'); + document.body.classList.remove('white-page'); + } + + render() { + return ( + } location={this.props.location}> +
+ + +

You use the service, we take care of the rest

+ + {!isLoggedIn(this.props.currentUser) && } + + + + + +
+
+ ); + } +} + +function Jumbotron() { + return ( +
+
+

+ Use SonarQube
+ as a Service +

+
+ {'—'} +
Log in or sign up with +
+
+ + + GitHub + + + + Bitbucket + + + + VSTS + +
+
+
+ SonarCloud project dashboard +
+
+ ); +} + +function Features() { + return ( + <> +

+ The right solution for developers + • +

+
    +
  • + +

    As a Service

    +

    + We provide a fully operated version of SonarQube which is hosted on Amazon AWS in Europe + (Frankfurt, Germany). +

    + + See more + +
  • +
  • + +

    Branch & pull request analysis

    +

    + SonarCloud comes with a built-in feature to automatically analyze project branches and + pull requests as soon as they get created. +

    + + See more + +
  • +
  • + +

    SonarLint integration

    +

    + The full SonarCloud experience can be enhanced with SonarLint, that enables developers + to receive real time information directly in their IDEs. +

    + + See more + +
  • +
+ + ); +} + +function Languages() { + return ( +
+

On 17 programming languages

+
    +
  • + Java +
  • +
  • + JavaScript +
  • +
  • + TypeScript +
  • +
  • + C# +
  • +
  • + C++ +
  • +
  • + Go +
  • +
  • + Python +
  • +
  • + PHP +
  • +
+
    +
  • + VB +
  • +
  • + Flex +
  • +
  • + HTML +
  • +
  • + Swift +
  • +
  • + Objective-C +
  • +
  • + T-SQL +
  • +
  • + PL/SQL +
  • +
  • + ABAP +
  • +
  • + XML +
  • +
+
+ ); +} + +function Integrations() { + return ( +
+

Fully integrated experience with

+
    +
  • +

    GitHub

    + GitHub +
  • +
  • +

    VSTS

    + VSTS +
    + + See more + +
    +
  • +
  • +

    Bitbucket

    + Bitbucket +
  • +
+
+ ); +} + +function BottomNote() { + return ( +
+ • + Includes all features of SonarSource{' '} + + Developer Edition + +
+ ); +} diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHomeContainer.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHomeContainer.tsx new file mode 100644 index 00000000000..33be1be21d8 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHomeContainer.tsx @@ -0,0 +1,28 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import { connect } from 'react-redux'; +import SQHome from './SQHome'; +import { getCurrentUser } from '../../../store/rootReducer'; + +const mapStateToProps = (state: any) => ({ + currentUser: getCurrentUser(state) +}); + +export default connect(mapStateToProps)(SQHome); diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/StartUsing.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/StartUsing.tsx new file mode 100644 index 00000000000..cade5100554 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/StartUsing.tsx @@ -0,0 +1,41 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import * as React from 'react'; +import { Link } from 'react-router'; +import ChevronRightIcon from '../../../components/icons-components/ChevronRightcon'; + +export default function StartUsing() { + return ( +
+ + Start using SonarCloud + + +
+ ); +} diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/style.css b/server/sonar-web/src/main/js/apps/about/sonarcloud/style.css index 711ee61ea32..1c3d8ada395 100644 --- a/server/sonar-web/src/main/js/apps/about/sonarcloud/style.css +++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/style.css @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,700'); +@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700'); .sc-page { font-family: var(--sonarcloudFontFamily); @@ -49,9 +49,16 @@ display: flex; flex-wrap: wrap; justify-content: space-between; + align-items: stretch; + max-width: 1000px; + margin-left: auto; + margin-right: auto; } .sc-feature { + display: flex; + flex-direction: column; + align-items: flex-start; width: 30%; margin-bottom: 30px; } @@ -64,11 +71,24 @@ } .sc-feature-description { + flex: 1 1 auto; line-height: 22px; font-size: 16px; font-weight: 300; } +.sc-feature-link { + margin-top: 16px; + color: var(--sonarcloudOrange) !important; + font-size: 16px; + font-weight: 300; +} + +.sc-feature-link:hover, +.sc-feature-link:focus { + color: var(--sonarcloudOrangeDark) !important; +} + .sc-narrow-container { width: 700px; margin: 40px auto; @@ -102,6 +122,7 @@ .sc-pricing-price { line-height: 72px; + color: var(--sonarcloudBlack800); font-size: 65px; font-weight: 700; } @@ -110,13 +131,13 @@ font-size: 14px; } -.sc-pricing-about { +.sc-arrow-link { position: relative; border: none; color: var(--baseFontColor); } -.sc-pricing-about::after { +.sc-arrow-link::after { content: '→'; position: absolute; top: 0; @@ -124,15 +145,15 @@ transition: left 0.3s ease; } -.sc-pricing-about:hover { +.sc-arrow-link:hover { color: var(--baseFontColor); } -.sc-pricing-about:focus { +.sc-arrow-link:focus { color: var(--sonarcloudOrange); } -.sc-pricing-about:hover::after { +.sc-arrow-link:hover::after { left: calc(100% + 10px); } @@ -264,3 +285,145 @@ top: 30px; right: 20px; } + +.sc-sq-jumbotron { + display: flex; + justify-content: space-between; + max-width: 1160px; + margin: 30px auto 0; + color: var(--sonarcloudBlack800); +} + +.sc-sq-jumbotron-left { + min-width: 500px; +} + +.sc-sq-jumbotron-right { + max-width: 725px; +} + +.sc-sq-jumbotron-right img { + max-width: 100%; + border-radius: 6px; + box-shadow: 0px 15px 50px rgba(0, 0, 0, 0.21); +} + +.sc-sq-jumbotron-title { + line-height: 61px; + margin-top: 90px; + margin-bottom: 20px; + color: var(--sonarcloudBlack800); + font-size: 60px; + font-weight: 700; +} + +.sc-sq-jumbotron-title-orange { + color: var(--sonarcloudOrange); +} + +.sc-sq-jumbotron-login { + line-height: 25px; + font-size: 18px; +} + +.sc-sq-login-button { + display: inline-flex; + align-items: center; + height: 44px; + margin-top: 16px; + margin-right: 16px; + padding: 0 15px; + line-height: 44px; + border: none; + border-radius: 4px; + background-color: var(--sonarcloudBlack800); + color: #fff; + font-size: 18px; + font-weight: 500; +} + +.sc-sq-login-button:hover, +.sc-sq-login-button:focus { + color: #fff; + background-color: var(--sonarcloudBlack900); +} + +.sc-sq-login-button > img { + margin-right: 12px; + margin-bottom: 1px; +} + +.sc-sq-header2 { + margin: 80px 0 40px; + line-height: 45px; + font-size: 32px; + font-weight: 300; + 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 { + display: flex; + justify-content: center; + margin-top: 20px; +} + +.sc-languages-list > li { + margin: 11px 22px; +} + +.sc-integrations { + position: relative; + background-color: var(--sonarcloudBlack200); + padding: 44px 0px; + text-align: center; +} + +.sc-integrations-title { + margin-top: 0; +} + +.sc-integrations-list { + display: flex; + justify-content: center; +} + +.sc-integrations-list > li { + width: 170px; +} + +.sc-integrations-list > li + li { + border-left: 1px solid var(--sonarcloudBlack300); +} + +.sc-bottom-note { + margin: 16px 0; + font-size: 16px; + font-weight: 300; + text-align: center; +} + +.sc-bottom-note > a { + font-weight: 500; +} + +.sc-bottom-note-link:hover, +.sc-bottom-note-link:focus { + border-bottom-color: var(--sonarcloudOrange); + color: var(--sonarcloudOrange); +} + +.sc-sq-page { + background: url(/images/sonarcloud/sq-background.svg) no-repeat top center; + background-size: auto 200vh; +}