]> source.dussan.org Git - sonarqube.git/commitdiff
SONARCLOUD-62 move /sq page (#373)
authorStas Vilchik <stas.vilchik@sonarsource.com>
Thu, 14 Jun 2018 15:49:14 +0000 (17:49 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 21 Jun 2018 18:21:28 +0000 (20:21 +0200)
37 files changed:
server/sonar-web/public/images/languages/abap.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/c-plus.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/c-sharp.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/flex.png [new file with mode: 0644]
server/sonar-web/public/images/languages/go.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/html5.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/java.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/js.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/obj-c.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/php.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/plsql.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/python.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/swift.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/ts.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/tsql.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/vb.svg [new file with mode: 0644]
server/sonar-web/public/images/languages/xml.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/as-a-service.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/bitbucket-big.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/bitbucket-white.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/branch-analysis.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/github-big.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/github-white.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/sonarlint-integration.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/sq-background.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/sq-homepage.png [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/sq-homepage@2x.png [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/vsts-big.svg [new file with mode: 0644]
server/sonar-web/public/images/sonarcloud/windows-white.svg [new file with mode: 0644]
server/sonar-web/src/main/js/app/theme.js
server/sonar-web/src/main/js/apps/about/routes.ts
server/sonar-web/src/main/js/apps/about/sonarcloud/Home.tsx
server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx [new file with mode: 0644]
server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx [new file with mode: 0644]
server/sonar-web/src/main/js/apps/about/sonarcloud/SQHomeContainer.tsx [new file with mode: 0644]
server/sonar-web/src/main/js/apps/about/sonarcloud/StartUsing.tsx [new file with mode: 0644]
server/sonar-web/src/main/js/apps/about/sonarcloud/style.css

diff --git a/server/sonar-web/public/images/languages/abap.svg b/server/sonar-web/public/images/languages/abap.svg
new file mode 100644 (file)
index 0000000..072e0e4
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>abap</title><path id="Tracé_10739" data-name="Tracé 10739" class="cls-1" d="M13.69,34.85H8.3l-1,3.08H4L9.56,23h2.85L18,37.93H14.73ZM9.13,32.36h3.73L11,26.77Zm9.42,5.57V23h5.23a6.88,6.88,0,0,1,4.12,1,3.53,3.53,0,0,1,1.4,3.05A3.3,3.3,0,0,1,28.74,29a3.23,3.23,0,0,1-1.57,1.23A3.13,3.13,0,0,1,29,31.41a3.41,3.41,0,0,1,.66,2.13,4,4,0,0,1-1.37,3.26,6.15,6.15,0,0,1-3.91,1.13Zm3.08-6.5v4h2.63a2.53,2.53,0,0,0,1.7-.52,1.74,1.74,0,0,0,.61-1.43,1.87,1.87,0,0,0-1.63-2.09,2,2,0,0,0-.49,0Zm0-2.18H23.9c1.56,0,2.33-.64,2.33-1.85a1.73,1.73,0,0,0-.59-1.46,3.13,3.13,0,0,0-1.86-.45H21.63Zm17.91,5.6H34.15l-1,3.08H29.85L35.41,23h2.85l5.59,14.93H40.58ZM35,32.36h3.73l-1.87-5.59Zm12.5.31v5.26H44.4V23h5.83a6.86,6.86,0,0,1,3,.61,4.61,4.61,0,0,1,2,1.75,5,5,0,0,1,.69,2.58,4.32,4.32,0,0,1-1.5,3.46,6.24,6.24,0,0,1-4.16,1.27Zm0-2.49h2.75a2.67,2.67,0,0,0,1.86-.58A2.08,2.08,0,0,0,52.73,28a2.32,2.32,0,0,0-2.43-2.47H47.48Z"/></svg>
\ 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 (file)
index 0000000..ebbafdc
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#464a4d;}.cls-2{fill:#2d3032;}.cls-3{fill:#3a3e40;}.cls-4{fill:#fff;}</style></defs><title>c-plus</title><g id="c"><path id="Tracé_10199" data-name="Tracé 10199" class="cls-1" d="M52.86,19.82a4.61,4.61,0,0,0-.55-2.24A4.27,4.27,0,0,0,50.68,16q-9-5.17-17.92-10.32a4.41,4.41,0,0,0-4.76,0C25.62,7.13,13.72,14,10.17,16A4.15,4.15,0,0,0,8,19.82V40.59a4.41,4.41,0,0,0,.52,2.2,4.24,4.24,0,0,0,1.65,1.63c3.55,2,15.45,8.87,17.83,10.27a4.41,4.41,0,0,0,4.77,0q9-5.17,17.92-10.32a4.32,4.32,0,0,0,1.64-1.62,4.58,4.58,0,0,0,.53-2.2V19.81"/><path id="Tracé_10200" data-name="Tracé 10200" class="cls-2" d="M30.5,30.14l-22,12.65a4.24,4.24,0,0,0,1.65,1.63c3.55,2,15.45,8.87,17.83,10.27a4.41,4.41,0,0,0,4.77.05L50.69,44.41a4.25,4.25,0,0,0,1.64-1.62L30.5,30.14"/><path id="Tracé_10201" data-name="Tracé 10201" class="cls-2" d="M24,33.89a7.42,7.42,0,0,0,10.12,2.76,7.54,7.54,0,0,0,2.78-2.8l-6.4-3.7L24,33.89"/><path id="Tracé_10202" data-name="Tracé 10202" class="cls-3" d="M52.86,19.82a4.61,4.61,0,0,0-.55-2.24L30.5,30.14,52.33,42.79a4.53,4.53,0,0,0,.53-2.2V19.82"/><path id="Tracé_10203" data-name="Tracé 10203" class="cls-4" d="M51.65,31H50v1.71H48.24V31h-1.7v-1.7h1.7V27.63H50v1.71h1.7V31m-6.22,0H43.72v1.71H42V31H40.31v-1.7H42V27.63h1.7v1.71h1.71V31"/><path id="Tracé_10204" data-name="Tracé 10204" class="cls-4" d="M36.89,33.85a7.43,7.43,0,1,1,0-7.36l6.49-3.74a14.9,14.9,0,1,0,0,14.84l-6.48-3.75"/></g></svg>
\ 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 (file)
index 0000000..78da8f7
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}.cls-2{fill:#464a4d;}.cls-3{fill:#fff;}</style></defs><title>c-sharp</title><g id="csharp"><path id="Tracé_10198" data-name="Tracé 10198" class="cls-1" d="M30.55,5A24.86,24.86,0,1,1,5.69,29.86,24.86,24.86,0,0,1,30.55,5Z"/><path id="Tracé_10195" data-name="Tracé 10195" class="cls-2" d="M13.32,12a24.87,24.87,0,1,0,35.1,35.1Z"/><path id="Tracé_10196" data-name="Tracé 10196" class="cls-3" d="M29.34,38.84A11.64,11.64,0,0,1,23.9,40a8.79,8.79,0,0,1-6.69-2.69,9.91,9.91,0,0,1-2.51-7.06,10.44,10.44,0,0,1,2.83-7.6,9.62,9.62,0,0,1,7.19-2.88,11.56,11.56,0,0,1,4.62.78V23a9.31,9.31,0,0,0-4.67-1.17,7.16,7.16,0,0,0-5.44,2.24,8.57,8.57,0,0,0-2.1,6,8.14,8.14,0,0,0,2,5.7,6.71,6.71,0,0,0,5.15,2.12,9.65,9.65,0,0,0,5.1-1.32Z"/><path id="Tracé_10197" data-name="Tracé 10197" class="cls-3" d="M46.68,25.56,46.37,27H42.8l-.86,4.1h3.84l-.36,1.45H41.66L40.46,38H38.74l1.17-5.44H36.49L35.34,38H33.67l1.15-5.44h-3.6l.27-1.45h3.62L35.94,27H32.15l.28-1.45h3.79l1.15-5.49H39.1L38,25.57h3.44l1.18-5.5h1.68l-1.15,5.5ZM41.11,27H37.67l-.9,4.1h3.47Z"/></g></svg>
\ 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 (file)
index 0000000..755e1e7
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 (file)
index 0000000..20c6ec5
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75.67 60"><defs><style>.cls-1{isolation:isolate;}.cls-2{fill:#2d3032;}.cls-3{fill:#464a4d;}.cls-4{fill:#fff;}.cls-5{fill:#231f20;}</style></defs><title>go</title><g id="Groupe_6151" data-name="Groupe 6151"><g id="GO" class="cls-1"><g class="cls-1"><path class="cls-2" d="M57.65,36.9a13.24,13.24,0,0,1-4.34.78A7.28,7.28,0,0,1,48,35.81a7.29,7.29,0,0,1-2-5.27c0-4.22,2.92-7.31,7.67-7.31a8.81,8.81,0,0,1,3.52.65l-.44,1.49a7.4,7.4,0,0,0-3.13-.61A5.3,5.3,0,0,0,48,30.45c0,3.59,2.17,5.71,5.46,5.71a6,6,0,0,0,2.44-.37V31.57H53V30.1h4.66Z"/><path class="cls-2" d="M71.7,30.31c0,4.87-3,7.45-6.57,7.45s-6.36-2.9-6.36-7.18c0-4.49,2.79-7.43,6.57-7.43S71.7,26.11,71.7,30.31Zm-11,.23c0,3,1.64,5.73,4.51,5.73s4.54-2.67,4.54-5.88c0-2.81-1.47-5.75-4.51-5.75S60.72,27.43,60.72,30.54Z"/></g></g><g id="go-seeklogo.com"><path id="Tracé_10742" data-name="Tracé 10742" class="cls-3" d="M7.41,31.55c.06,1.29,1.35.69,1.92.29s.71-.06.76-.81a10.48,10.48,0,0,0,.07-1.48,3.61,3.61,0,0,0-2.43.62c-.36.25-1,1.07-.32,1.38"/><path id="Tracé_10743" data-name="Tracé 10743" class="cls-3" d="M33,47.36c1,.61,2.8,2.45,1.32,3.35-1.43,1.3-2.23-1.43-3.47-1.81A3.3,3.3,0,0,1,33,47.36Z"/><path id="Tracé_10744" data-name="Tracé 10744" class="cls-3" d="M15.39,49.44c-1.16.17-1.81,1.22-2.79,1.76s-1.26-.18-1.33-.33-.13.06-.35-.16c-.85-1.34.87-2.31,1.77-3,1.25-.25,2,.84,2.7,1.7Z"/><path id="Tracé_10745" data-name="Tracé 10745" class="cls-3" d="M38.51,31.39c-.06,1.29-1.34.69-1.92.29s-.71-.06-.76-.81a12.38,12.38,0,0,1-.06-1.49,3.65,3.65,0,0,1,2.42.63c.35.25,1,1.07.33,1.38"/><path id="Tracé_10746" data-name="Tracé 10746" class="cls-2" d="M35.11,15.71c4.45-1.57,1-7.67-2.91-5-2.55-2.18-6.05-2.58-9.74-2.58-3.6.29-7,.95-9.43,3-3.87-2.5-7.44,3.49-2.9,5-1.27,4.94.18,10,0,15-.19,4.51-1.38,10.57,1.13,14.63,2.14,3.47,6.73,4.7,10.51,4.84,4.83.17,10.69-1,13-5.69,2.25-4.46,1.63-10,1.34-14.82s.25-9.79-1-14.47Z"/><path id="Tracé_10747" data-name="Tracé 10747" d="M38.85,30.63a2.06,2.06,0,0,0-.59-.72,3.83,3.83,0,0,0-2.07-.67c0-.77,0-1.62,0-2.7v-1a56.44,56.44,0,0,0-.22-6.1,24.15,24.15,0,0,0-.65-3.69,3,3,0,0,0,1.93-1.85,3,3,0,0,0-.3-2.39,3.13,3.13,0,0,0-4.25-1.26,2.87,2.87,0,0,0-.43.28A9.41,9.41,0,0,0,29.42,9,19.69,19.69,0,0,0,22.48,8v.13l0-.13a20.35,20.35,0,0,0-7.37,1.67A9.16,9.16,0,0,0,13,11a3.32,3.32,0,0,0-2.77-.44,3.43,3.43,0,0,0-2,1.6,2.83,2.83,0,0,0-.24,2.39A3,3,0,0,0,10,16.26a18.06,18.06,0,0,0-.5,4.07,47.16,47.16,0,0,0,.26,5.18c.17,1.94.23,2.82.25,3.9a3.72,3.72,0,0,0-2.33.65,1.81,1.81,0,0,0-.59.72.61.61,0,0,0,.19.83l0,0c.05.6.38.87.9.82a2.71,2.71,0,0,0,1.21-.51,1.35,1.35,0,0,1,.26-.15l.1,0,.1,0a.31.31,0,0,0,.1,0c0,.58-.07,1.2-.19,2.6-.12,1.57-.18,2.43-.21,3.4-.11,3.57.31,6.16,1.59,8.22a7.9,7.9,0,0,0,1.46,1.75c-.12.07-.59.42-.74.54a3.88,3.88,0,0,0-1.1,1.11,1.35,1.35,0,0,0,0,1.48h0v0c.14.13.21.17.31.17h0s0,0,0,.06a1.63,1.63,0,0,0,.11.17,1,1,0,0,0,1.34.1h0a6.78,6.78,0,0,0,1-.75l0,0a3.28,3.28,0,0,1,1.7-1l.2,0,.24.1a17.86,17.86,0,0,0,5.91,1.17,20,20,0,0,0,7.49-1A13.74,13.74,0,0,0,30.92,49a3.2,3.2,0,0,1,1.13,1,.09.09,0,0,1,0,.05l0,0,.09.1a2.77,2.77,0,0,0,1,.86,1.08,1.08,0,0,0,1.22-.28c.72-.45.77-1.15.3-1.95a5.26,5.26,0,0,0-1.47-1.54A8.53,8.53,0,0,0,34.91,45a18.81,18.81,0,0,0,1.63-8.78c0-1.28-.06-2.39-.2-4.51v-.06a1.18,1.18,0,0,1,.19.11,3,3,0,0,0,1.21.52c.51,0,.85-.23.9-.83h0a.62.62,0,0,0,.22-.85Zm-4-20.36a3,3,0,0,1,1.8,1.43A2.69,2.69,0,0,1,37,13.88a2.72,2.72,0,0,1-1.78,1.67,19.8,19.8,0,0,0-.66-2,.91.91,0,0,0,.25-1.25,1,1,0,0,0-1.3-.45,9.54,9.54,0,0,0-1.06-1.14,3,3,0,0,1,2.46-.47ZM8.27,14.49a2.58,2.58,0,0,1,.22-2.17,3.05,3.05,0,0,1,4.34-1.1,8.31,8.31,0,0,0-1.3,1.48c-.65-.34-1.31-.4-1.69.29s.07,1.2.7,1.55c-.08.21-.17.43-.25.66s-.17.56-.25.85A2.88,2.88,0,0,1,8.27,14.49Zm1.51,17-.09,0-.11.05a1.28,1.28,0,0,0-.3.17,2.35,2.35,0,0,1-1.1.47c-.37,0-.58-.13-.62-.58a.75.75,0,0,0,.47-.3l-.2-.15c-.07.1-.15.14-.37.21h0l0,0c-.2-.12-.23-.29-.12-.54a1.84,1.84,0,0,1,.51-.63,3.5,3.5,0,0,1,2.2-.6c0,.32,0,.63,0,.93a.34.34,0,0,1,0,.1A2.22,2.22,0,0,1,10,31h0c0,.36-.06.41-.2.47Zm3.77,18.84,0,0a5.8,5.8,0,0,1-1,.73c-.47.29-.8.22-1-.05l-.09-.13,0,0h0a1.64,1.64,0,0,1,.34-.73v0a2.56,2.56,0,0,0,.27-.45l-.23-.1a3.38,3.38,0,0,1-.24.41v0a2,2,0,0,0-.37.75h-.05L11,50.64c-.49-.77-.1-1.43,1-2.26.13-.1.6-.42.72-.52s0,0,.07,0a10.43,10.43,0,0,0,2.34,1.49h0l0,0a3.85,3.85,0,0,0-1.61,1Zm21-1.36c.39.65.37,1.17-.11,1.53a2.9,2.9,0,0,1-.12-.28s0,0,0,0a2.17,2.17,0,0,0-.5-.9l-.17.18a2,2,0,0,1,.45.8v0c.06.16.1.26.14.35a.81.81,0,0,1-.92.19,3.16,3.16,0,0,1-.91-.8l-.07-.1,0,0,0,0a4,4,0,0,0-1-1,9.73,9.73,0,0,0,1.88-1.37A5.87,5.87,0,0,1,34.51,49Zm.17-4a9.43,9.43,0,0,1-5.51,4.61,19.77,19.77,0,0,1-7.4,1c-4.58-.16-8.55-1.76-10.41-4.78-1.25-2-1.67-4.57-1.55-8.09,0-1,.08-1.82.21-3.4.14-1.77.17-2.28.21-3.08,0-.57,0-1.16,0-1.79,0-1.1-.08-2-.25-3.93a46.62,46.62,0,0,1-.26-5.15,16.82,16.82,0,0,1,.81-5.08A8.83,8.83,0,0,1,15.2,9.9a20.06,20.06,0,0,1,7.28-1.65,19.47,19.47,0,0,1,6.86.94,8.74,8.74,0,0,1,4.95,4.41,20.81,20.81,0,0,1,1.37,5.88,56.07,56.07,0,0,1,.23,6.08v1c0,1.51,0,2.57.1,3.64,0,.41,0,.58.1,1.57.14,2.12.19,3.22.2,4.49a18.59,18.59,0,0,1-1.61,8.7ZM38.5,31.27h0l0,0a.68.68,0,0,1-.38-.21l-.2.15a.84.84,0,0,0,.48.3c0,.45-.27.61-.63.58a2.63,2.63,0,0,1-1.1-.47,2.14,2.14,0,0,0-.3-.17h0c0-.69,0-.86-.07-1.23l0-.67a3.34,3.34,0,0,1,1.91.61,1.73,1.73,0,0,1,.51.63.32.32,0,0,1,0,.46l-.08.05Z"/><g id="Groupe_6146" data-name="Groupe 6146"><path id="Tracé_10748" data-name="Tracé 10748" class="cls-4" d="M24.35,21a10.39,10.39,0,0,1,0,2c-.18.33-.5.36-.79.49a1.18,1.18,0,0,1-.9-.7,13,13,0,0,1,.07-2.25,3.07,3.07,0,0,1,.9.14,3.11,3.11,0,0,1,.7.31Z"/><path id="Tracé_10749" data-name="Tracé 10749" class="cls-4" d="M20.82,21.07c-.35,1.33.46,3.48,1.8,1.71a12.58,12.58,0,0,1,.05-2.21,8.94,8.94,0,0,0-1.84.5Z"/><path id="Tracé_10750" data-name="Tracé 10750" d="M24.51,21.61c0-.37,0-.52,0-.71v-.09l-.09,0-1.57-.49v-.09l-.16,0h0l-1.77.45-.06,0,0,.06a2.94,2.94,0,0,0,.14,2.27c.4.7,1.05.71,1.71-.09a1.28,1.28,0,0,0,.94.67h.07l.19-.07h0a1,1,0,0,0,.64-.47h0v0a3.59,3.59,0,0,0,.05-.73c0-.19,0-.36,0-.71Zm-2-.46c0,.23,0,.31,0,.44a7.49,7.49,0,0,0,0,1.16c-.58.74-1.05.74-1.36.18a2.67,2.67,0,0,1-.13-2l1.57-.4c0,.16,0,.33,0,.61ZM24.26,23c-.09.15-.2.22-.5.32h0l-.16.06a1,1,0,0,1-.76-.6,6.2,6.2,0,0,1,0-1.14c0-.13,0-.22,0-.44a5.82,5.82,0,0,0,0-.62l1.36.41c0,.16,0,.31,0,.63s0,.52,0,.72a2.76,2.76,0,0,1-.05.64Z"/></g><g id="Groupe_6147" data-name="Groupe 6147"><path id="Tracé_10751" data-name="Tracé 10751" class="cls-4" d="M13.31,15.59c1.15,4.46,8.3,3.32,8-1.17-.33-5.36-9.13-4.33-8,1.17"/><path id="Tracé_10752" data-name="Tracé 10752" d="M21.46,14.41a3.64,3.64,0,0,0-1.59-2.94,4.54,4.54,0,0,0-3.09-.67A4.49,4.49,0,0,0,14,12.24a3.81,3.81,0,0,0-.77,3.34l.11,0-.11,0C14.37,20.18,21.74,19.07,21.46,14.41Zm-8,1.15a3.57,3.57,0,0,1,.73-3.14,4.21,4.21,0,0,1,2.65-1.37,4.26,4.26,0,0,1,2.93.63,3.49,3.49,0,0,1,1.5,2.77c.26,4.36-6.69,5.4-7.8,1.11Z"/><ellipse id="Ellipse_88" data-name="Ellipse 88" cx="15.28" cy="14.85" rx="1.21" ry="1.31"/><ellipse id="Ellipse_89" data-name="Ellipse 89" class="cls-4" cx="15.83" cy="15.15" rx="0.29" ry="0.34"/></g><g id="Groupe_6148" data-name="Groupe 6148"><path id="Tracé_10753" data-name="Tracé 10753" class="cls-4" d="M23.34,14.75c.89,5.13,9.27,3.77,8.06-1.4C30.32,8.71,23,10,23.34,14.75"/><path id="Tracé_10754" data-name="Tracé 10754" d="M31.52,13.33c-1.11-4.78-8.6-3.47-8.3,1.43h0a4,4,0,0,0,4.67,3.32l.28-.06a4.44,4.44,0,0,0,2.7-1.48,3.62,3.62,0,0,0,.65-3.22Zm-.84,3.07a4.25,4.25,0,0,1-2.55,1.4A3.84,3.84,0,0,1,23.5,15c0-.08,0-.16-.05-.24-.27-4.62,6.79-5.86,7.84-1.36A3.36,3.36,0,0,1,30.68,16.4Z"/><ellipse id="Ellipse_90" data-name="Ellipse 90" cx="25.4" cy="14.52" rx="1.19" ry="1.31"/><ellipse id="Ellipse_91" data-name="Ellipse 91" class="cls-4" cx="25.95" cy="14.82" rx="0.28" ry="0.34"/></g><g id="Groupe_6150" data-name="Groupe 6150"><path id="Tracé_10755" data-name="Tracé 10755" class="cls-3" d="M21.08,18.38a1.54,1.54,0,0,0-1.27,2.17c.67,1.22,2.18-.11,3.12,0s2,1.15,2.83.2-.41-2.07-1.5-2.52l-3.18.14Z"/><path id="Tracé_10756" data-name="Tracé 10756" class="cls-5" d="M25.89,19.21a4.19,4.19,0,0,0-1.56-1.07h0l-3.2.12a1.68,1.68,0,0,0-1.5,1.85,1.48,1.48,0,0,0,.13.51,1.06,1.06,0,0,0,.89.59,2.93,2.93,0,0,0,1-.21.64.64,0,0,1,.15,0,2.37,2.37,0,0,1,1.11-.24h0A2.62,2.62,0,0,1,24,21a3.19,3.19,0,0,0,.95.3,1.13,1.13,0,0,0,1-.41,1.15,1.15,0,0,0,0-1.63v0Zm-.22,1.48a.88.88,0,0,1-.76.33,2.67,2.67,0,0,1-.87-.27,2.82,2.82,0,0,0-1.1-.3,2.65,2.65,0,0,0-1.24.25l-.15.05c-.91.31-1.35.29-1.65-.26a1.44,1.44,0,0,1,.76-1.89,1.19,1.19,0,0,1,.42-.11l3.16-.12a3.82,3.82,0,0,1,1.45,1,.9.9,0,0,1,0,1.27l-.06.05Z"/><g id="Groupe_6149" data-name="Groupe 6149"><path id="Tracé_10757" data-name="Tracé 10757" d="M24.51,17.84c-.38-1.42-3.63-1.21-3.55.49.16,1.26,3.93.92,3.55-.49Z"/></g></g></g></g></svg>
\ 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 (file)
index 0000000..bdf6374
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}.cls-2{fill:#464a4d;}.cls-3{fill:#ebebeb;}.cls-4{fill:#fff;}</style></defs><title>html5</title><g id="HTML5_logo_and_wordmark" data-name="HTML5 logo and wordmark"><path id="Tracé_10304" data-name="Tracé 10304" d="M14.37,5h2.29V7.27h2.12V5h2.29v6.88H18.78V9.59h-2.1v2.29H14.37M24.1,7.29h-2V5h6.35V7.29h-2v4.59H24.1M29.44,5h2.4l1.47,2.42L34.79,5h2.4v6.88H34.9V8.47l-1.61,2.47-1.6-2.47v3.41H29.44M38.33,5h2.29V9.61h3.26v2.27H38.33"/><path id="Tracé_10305" data-name="Tracé 10305" class="cls-1" d="M14.29,52,11,15H47.18L43.89,52l-14.83,4.1"/><path id="Tracé_10306" data-name="Tracé 10306" class="cls-2" d="M29.09,52.91V18.06H43.88L41.05,49.57"/><path id="Tracé_10307" data-name="Tracé 10307" class="cls-3" d="M17.72,22.58H29.09v4.53h-6.4l.42,4.63h6v4.52H19m.2,2.27H23.7L24,42.15l5.07,1.36v4.73l-9.29-2.6"/><path id="Tracé_10308" data-name="Tracé 10308" class="cls-4" d="M40.42,22.58H29.07v4.53H40m-.41,4.63H29.07v4.53h5.58l-.53,5.88-5,1.36v4.71l9.27-2.58"/></g></svg>
\ 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 (file)
index 0000000..b3eeb8a
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>java</title><g id="Groupe_6110" data-name="Groupe 6110"><path id="Tracé_10176" data-name="Tracé 10176" class="cls-1" d="M23.25,31.94s-1.52.88,1.07,1.17a22.57,22.57,0,0,0,8.19-.34,14.52,14.52,0,0,0,2.17,1.06c-7.74,3.31-17.51-.19-11.43-1.89Z"/><path id="Tracé_10177" data-name="Tracé 10177" class="cls-1" d="M22.3,27.61s-1.7,1.25.89,1.52a31.82,31.82,0,0,0,10.57-.51,4.51,4.51,0,0,0,1.62,1c-9.36,2.74-19.78.22-13.08-2Z"/><path id="Tracé_10178" data-name="Tracé 10178" class="cls-1" d="M30.27,20.27c1.91,2.19-.5,4.17-.5,4.17s4.84-2.5,2.62-5.63c-2.08-2.92-3.67-4.37,5-9.37,0,0-13.53,3.38-7.07,10.82Z"/><path id="Tracé_10179" data-name="Tracé 10179" class="cls-1" d="M40.51,35.14s1.12.92-1.23,1.63c-4.47,1.35-18.6,1.76-22.52.06-1.41-.62,1.23-1.47,2.07-1.65A5.16,5.16,0,0,1,20.19,35c-1.57-1.11-10.14,2.17-4.35,3.11,15.78,2.55,28.76-1.16,24.67-3Z"/><path id="Tracé_10180" data-name="Tracé 10180" class="cls-1" d="M24,23.12s-7.18,1.71-2.54,2.33a53.83,53.83,0,0,0,9.5-.1c3-.25,6-.79,6-.79a13.08,13.08,0,0,0-1.81,1c-7.3,1.92-21.39,1-17.33-.94A13.69,13.69,0,0,1,24,23.12Z"/><path id="Tracé_10181" data-name="Tracé 10181" class="cls-1" d="M36.86,30.33c7.42-3.86,4-7.56,1.6-7.06a5.2,5.2,0,0,0-.86.23,1.29,1.29,0,0,1,.64-.49c4.73-1.66,8.37,4.91-1.53,7.51a.7.7,0,0,0,.15-.19Z"/><path id="Tracé_10182" data-name="Tracé 10182" class="cls-1" d="M32.39,1.36s4.11,4.11-3.9,10.43c-6.42,5.07-1.46,8,0,11.26-3.74-3.38-6.49-6.35-4.65-9.12C26.55,9.86,34.05,7.89,32.39,1.36Z"/><path id="Tracé_10183" data-name="Tracé 10183" class="cls-1" d="M24.7,40.77c7.12.46,18.06-.25,18.31-3.62,0,0-.49,1.28-5.88,2.29a58.54,58.54,0,0,1-18,.28s.91.76,5.59,1.05Z"/><path id="Tracé_10184" data-name="Tracé 10184" class="cls-1" d="M42.68,46.81h-.21v-.12h.58v.12h-.21v.61h-.16Zm1.17,0h0l-.21.57h-.1l-.21-.57h0v.57h-.15v-.73h.21l.2.52.2-.52H44v.73h-.14v-.57Z"/><path id="Tracé_10185" data-name="Tracé 10185" class="cls-1" d="M23.53,53.64a3.14,3.14,0,0,1-2,.91,1.29,1.29,0,0,1-1.41-1.16,2.35,2.35,0,0,1,0-.26c0-.94.52-1.63,2.63-1.63h.78v2.14Zm1.86,2.09V49.26c0-1.65-.95-2.74-3.22-2.74a8.46,8.46,0,0,0-3.43.74L19,48.41a8.22,8.22,0,0,1,2.65-.53c1.31,0,1.87.53,1.87,1.62v.82h-.65c-3.19,0-4.62,1.23-4.62,3.09,0,1.6.94,2.51,2.73,2.51a4.12,4.12,0,0,0,2.79-1.17l.15,1Z"/><path id="Tracé_10186" data-name="Tracé 10186" class="cls-1" d="M31.57,55.73H29.26l-2.78-9h2l1.72,5.57.39,1.67a35.35,35.35,0,0,0,1.8-7.24h2a36.68,36.68,0,0,1-2.8,9Z"/><path id="Tracé_10187" data-name="Tracé 10187" class="cls-1" d="M40.44,53.64a3.22,3.22,0,0,1-2,.91A1.28,1.28,0,0,1,37,53.39a1.13,1.13,0,0,1,0-.26c0-.94.53-1.63,2.64-1.63h.78v2.14Zm1.86,2.09V49.26c0-1.65-.95-2.74-3.22-2.74a8.47,8.47,0,0,0-3.44.74l.27,1.15a8.33,8.33,0,0,1,2.65-.53c1.31,0,1.88.53,1.88,1.62v.82h-.66c-3.18,0-4.62,1.23-4.62,3.09,0,1.6,1,2.51,2.73,2.51a4.13,4.13,0,0,0,2.8-1.17l.15,1Z"/><path id="Tracé_10188" data-name="Tracé 10188" class="cls-1" d="M16.23,57.27A4.9,4.9,0,0,1,13.92,59L13,57.92a3.82,3.82,0,0,0,1.61-1.5A6,6,0,0,0,15,53.8V43.47h2V53.66c0,2-.16,2.82-.69,3.62Z"/></g></svg>
\ 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 (file)
index 0000000..3059aef
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}.cls-2{fill:#fff;}</style></defs><title>js</title><g id="Unofficial_JavaScript_logo_2" data-name="Unofficial JavaScript logo 2"><rect id="Rectangle_5722" data-name="Rectangle 5722" class="cls-1" x="5" y="5" width="50.54" height="50.54"/><path id="Tracé_10175" data-name="Tracé 10175" class="cls-2" d="M39,44.49a5.17,5.17,0,0,0,4.69,2.88c2,0,3.22-1,3.22-2.34,0-1.63-1.29-2.21-3.46-3.15l-1.18-.51c-3.43-1.46-5.7-3.29-5.7-7.16,0-3.56,2.71-6.27,6.95-6.27a7,7,0,0,1,6.76,3.8l-3.7,2.37a3.22,3.22,0,0,0-3.06-2,2.06,2.06,0,0,0-2.26,1.84,1.28,1.28,0,0,0,0,.19c0,1.43.88,2,2.92,2.88l1.19.51c4,1.73,6.31,3.5,6.31,7.46,0,4.28-3.36,6.62-7.87,6.62s-7.26-2.1-8.66-4.85Zm-16.78.41c.75,1.32,1.43,2.44,3.06,2.44s2.55-.61,2.55-3V28.21h4.75V44.42c0,4.92-2.89,7.16-7.1,7.16a7.38,7.38,0,0,1-7.12-4.34Z"/></g></svg>
\ 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 (file)
index 0000000..ad3cf12
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1,.cls-2{fill:#2d3032;}.cls-2{fill-rule:evenodd;}</style></defs><title>obj-c</title><path id="Tracé_10735" data-name="Tracé 10735" class="cls-1" d="M9.29,53.79a5,5,0,0,1-.39,2,2.9,2.9,0,0,1-1.1,1.3,3,3,0,0,1-4.18-.89,3.23,3.23,0,0,1-.22-.41A4.62,4.62,0,0,1,3,53.86V53.3a4.73,4.73,0,0,1,.39-2,2.9,2.9,0,0,1,2.75-1.78A3.08,3.08,0,0,1,7.79,50a2.89,2.89,0,0,1,1.1,1.32,4.77,4.77,0,0,1,.39,2Zm-1-.5a3.44,3.44,0,0,0-.56-2.14,1.84,1.84,0,0,0-1.56-.75,1.84,1.84,0,0,0-1.54.75A3.42,3.42,0,0,0,4,53.21v.58a3.46,3.46,0,0,0,.56,2.12,2,2,0,0,0,2.79.35A1.57,1.57,0,0,0,7.7,56a3.51,3.51,0,0,0,.56-2.09Zm7.34,1.32A3.48,3.48,0,0,1,15,56.75a2,2,0,0,1-1.65.81,2,2,0,0,1-1.7-.78l-.05.67h-.91V49.2h1v3.08a2,2,0,0,1,1.66-.75,2,2,0,0,1,1.67.8,3.6,3.6,0,0,1,.6,2.19Zm-1-.11a2.71,2.71,0,0,0-.4-1.57,1.26,1.26,0,0,0-1.12-.55,1.46,1.46,0,0,0-1.42.91V55.8a1.5,1.5,0,0,0,1.43.91,1.28,1.28,0,0,0,1.11-.55,2.86,2.86,0,0,0,.4-1.67Zm3.27-2.86v6.48c0,1.12-.51,1.68-1.52,1.68a1.81,1.81,0,0,1-.61-.1v-.8a1.73,1.73,0,0,0,.45.05.68.68,0,0,0,.51-.18.89.89,0,0,0,.17-.63v-6.5Zm-1.1-1.54a.6.6,0,0,1,.14-.41.56.56,0,0,1,.44-.17.57.57,0,0,1,.44.17.61.61,0,0,1,.15.41.59.59,0,0,1-.15.4.68.68,0,0,1-.88,0,.66.66,0,0,1-.14-.41Zm5.1,7.46A2.53,2.53,0,0,1,20,56.78a2.86,2.86,0,0,1-.74-2.07v-.19A3.42,3.42,0,0,1,19.55,53a2.52,2.52,0,0,1,.92-1.07,2.37,2.37,0,0,1,1.29-.38,2.16,2.16,0,0,1,1.76.75,3.19,3.19,0,0,1,.63,2.13v.42H20.22a2.08,2.08,0,0,0,.5,1.39,1.62,1.62,0,0,0,1.22.53,1.73,1.73,0,0,0,.89-.22,2.19,2.19,0,0,0,.64-.57l.61.47a2.41,2.41,0,0,1-2.19,1.12Zm-.11-5.21a1.28,1.28,0,0,0-1,.44,2,2,0,0,0-.5,1.22h2.91v-.08a1.91,1.91,0,0,0-.41-1.17A1.25,1.25,0,0,0,21.77,52.35Zm5.87,4.4a1.47,1.47,0,0,0,.92-.32,1.11,1.11,0,0,0,.44-.81h.94a1.82,1.82,0,0,1-.34,1,2.28,2.28,0,0,1-.85.72,2.57,2.57,0,0,1-3-.52,3.12,3.12,0,0,1-.7-2.17v-.17a3.41,3.41,0,0,1,.31-1.51,2.4,2.4,0,0,1,.89-1,2.52,2.52,0,0,1,1.39-.36,2.36,2.36,0,0,1,1.62.58A2.1,2.1,0,0,1,30,53.63H29a1.35,1.35,0,0,0-.43-.92,1.3,1.3,0,0,0-.94-.36,1.39,1.39,0,0,0-1.18.54,2.59,2.59,0,0,0-.41,1.58v.19a2.47,2.47,0,0,0,.41,1.54A1.4,1.4,0,0,0,27.64,56.75Zm4.77-6.52v1.41H33.5v.76H32.41V56a.84.84,0,0,0,.15.53.6.6,0,0,0,.49.17,1.84,1.84,0,0,0,.47-.06v.81a2.73,2.73,0,0,1-.76.1,1.23,1.23,0,0,1-1-.4A1.77,1.77,0,0,1,31.42,56v-3.6H30.36v-.77h1.06V50.23Zm3.33,7.22h-1V51.64h1Zm-1.08-7.36a.59.59,0,0,1,.15-.4.55.55,0,0,1,.44-.17.57.57,0,0,1,.44.17.59.59,0,0,1,.15.4.61.61,0,0,1-1,.4A.59.59,0,0,1,34.66,50.09Zm4.58,6,1.44-4.46h1l-2.09,5.82h-.75l-2.11-5.81h1ZM45,57.55a2.53,2.53,0,0,1-1.93-.78,2.85,2.85,0,0,1-.73-2.07v-.18A3.42,3.42,0,0,1,42.67,53a2.52,2.52,0,0,1,.92-1.07,2.35,2.35,0,0,1,1.29-.38,2.16,2.16,0,0,1,1.76.75,3.25,3.25,0,0,1,.63,2.13v.42H43.33a2,2,0,0,0,.5,1.39,1.6,1.6,0,0,0,1.22.53,1.73,1.73,0,0,0,.89-.22,2.32,2.32,0,0,0,.64-.57l.61.47A2.43,2.43,0,0,1,45,57.55Zm-.13-5.2a1.31,1.31,0,0,0-1,.44,2.11,2.11,0,0,0-.5,1.22h2.91v-.08a1.9,1.9,0,0,0-.4-1.17A1.27,1.27,0,0,0,44.87,52.35Zm5.61,2.18H47.86v-.81h2.62Zm6.87.44a2.9,2.9,0,0,1-.91,1.91,3,3,0,0,1-2,.67,2.7,2.7,0,0,1-2.22-1,4,4,0,0,1-.83-2.66v-.75a4.37,4.37,0,0,1,.38-1.92A3,3,0,0,1,52.82,50a3.13,3.13,0,0,1,1.66-.44,2.78,2.78,0,0,1,2,.7,2.9,2.9,0,0,1,.87,1.92h-1a2.26,2.26,0,0,0-.58-1.35,1.76,1.76,0,0,0-1.26-.42,1.85,1.85,0,0,0-1.55.73,3.33,3.33,0,0,0-.56,2.08v.75a3.44,3.44,0,0,0,.53,2,1.74,1.74,0,0,0,1.49.75,2,2,0,0,0,1.32-.39A2.14,2.14,0,0,0,56.32,55Z"/><path class="cls-2" d="M31.64,4.13A7.72,7.72,0,0,1,37.29,1a7.7,7.7,0,0,1-1.86,5.76c-2.51,3-5.36,2.52-5.36,2.52A6.68,6.68,0,0,1,31.64,4.13Z"/><path class="cls-2" d="M30.37,11.33c1.22,0,3.47-1.67,6.41-1.67a8,8,0,0,1,7.06,3.6,7.82,7.82,0,0,0-3.9,6.82,8,8,0,0,0,4.85,7.33S41.4,37,36.82,37c-2.1,0-3.74-1.42-5.95-1.42s-4.5,1.48-6,1.48c-4.19,0-9.47-9.06-9.47-16.34S19.91,9.76,24.11,9.76C26.83,9.76,29,11.33,30.37,11.33Z"/></svg>
\ 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 (file)
index 0000000..53d741c
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 63 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>php</title><g id="_4c69e694f411fe8138a5242020efdc8d" data-name=" 4c69e694f411fe8138a5242020efdc8d"><path id="Tracé_10232" data-name="Tracé 10232" class="cls-1" d="M19.49,26.77h-3l-1.25,6.41H18s3.45.08,3.61-4.16A2,2,0,0,0,20,26.78,1.57,1.57,0,0,0,19.49,26.77Z"/><path id="Tracé_10233" data-name="Tracé 10233" class="cls-1" d="M45.37,26.77h-3l-1.25,6.41h2.83s3.45.08,3.61-4.16a2,2,0,0,0-1.62-2.24A1.63,1.63,0,0,0,45.37,26.77Z"/><path id="Tracé_10234" data-name="Tracé 10234" class="cls-1" d="M30.79,16C14.89,16,2,22.79,2,31.17S14.89,46.33,30.79,46.33s28.79-6.79,28.79-15.16S46.69,16,30.79,16ZM17.9,35.56l-3.07,0-.86,4H10.68l3-15.16s4.2.05,7,0,5.48,1.9,4.21,6.32C23.29,36,17.9,35.56,17.9,35.56Zm14.77,0s.78-3.53,1.13-6c.14-1,.76-2.72-.88-2.72H29.49l-1.74,8.7H24.5l3-15.24h3.33L30,24.39h3.44s4.54-.35,4,3.4-1.55,7.77-1.55,7.77Zm18-4.84c-1.52,5.27-6.92,4.84-6.92,4.84l-3.06,0-.87,4H36.57l3-15.16s4.21.05,7,0S52,26.29,50.7,30.72Z"/></g></svg>
\ 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 (file)
index 0000000..cc0ea3e
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 79 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>plsql</title><path id="Tracé_10740" data-name="Tracé 10740" class="cls-1" d="M11.08,32.86v5.26H8V23.19h5.82a6.83,6.83,0,0,1,3,.61,4.63,4.63,0,0,1,2,1.75,4.87,4.87,0,0,1,.68,2.58,4.29,4.29,0,0,1-1.5,3.46,6.24,6.24,0,0,1-4.16,1.27Zm0-2.49h2.75a2.72,2.72,0,0,0,1.86-.58,2.08,2.08,0,0,0,.64-1.64,2.42,2.42,0,0,0-.65-1.77,2.37,2.37,0,0,0-1.78-.7H11.08Zm12.7,5.28h6.53v2.47h-9.6V23.19h3.07ZM32,39.4h-2.2l5.5-16.21h2.2Zm14-5.2a1.59,1.59,0,0,0-.61-1.34,7.87,7.87,0,0,0-2.22-1,16.32,16.32,0,0,1-2.53-1,4.14,4.14,0,0,1-2.54-3.7A3.62,3.62,0,0,1,38.76,25a4.42,4.42,0,0,1,2-1.48A7.19,7.19,0,0,1,43.58,23a6.83,6.83,0,0,1,2.86.57,4.61,4.61,0,0,1,1.94,1.64,4.33,4.33,0,0,1,.69,2.4H46a2,2,0,0,0-.64-1.6,2.71,2.71,0,0,0-1.82-.57,2.85,2.85,0,0,0-1.75.48,1.5,1.5,0,0,0-.63,1.26,1.44,1.44,0,0,0,.74,1.22,8,8,0,0,0,2.15.92,9.45,9.45,0,0,1,3.83,2,3.89,3.89,0,0,1,1.2,2.91,3.58,3.58,0,0,1-1.47,3,6.35,6.35,0,0,1-3.94,1.1,7.7,7.7,0,0,1-3.14-.63A5,5,0,0,1,38.36,36a4.41,4.41,0,0,1-.74-2.54H40.7c0,1.65,1,2.47,3,2.47a2.88,2.88,0,0,0,1.71-.45A1.44,1.44,0,0,0,46,34.2ZM62.56,31a9.27,9.27,0,0,1-.68,3.64A6.18,6.18,0,0,1,60,37.1l2.48,1.95-1.95,1.73-3.18-2.55a7.17,7.17,0,0,1-1.13.09,6.19,6.19,0,0,1-3.31-.89,5.94,5.94,0,0,1-2.26-2.55,8.76,8.76,0,0,1-.81-3.81v-.73a9,9,0,0,1,.79-3.89,5.9,5.9,0,0,1,2.25-2.57,6.56,6.56,0,0,1,6.63,0,5.9,5.9,0,0,1,2.25,2.57,9.09,9.09,0,0,1,.8,3.88Zm-3.12-.67a6.36,6.36,0,0,0-.84-3.57,3,3,0,0,0-4.15-.65,2.78,2.78,0,0,0-.64.64A6.14,6.14,0,0,0,53,30.27V31a6.28,6.28,0,0,0,.84,3.54,2.94,2.94,0,0,0,4.1.74,3.05,3.05,0,0,0,.7-.69,6.36,6.36,0,0,0,.84-3.54Zm7.61,5.33h6.53v2.47H64V23.19h3.08Z"/></svg>
\ 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 (file)
index 0000000..cd2f68b
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{isolation:isolate;}.cls-2{fill:#2d3032;}.cls-3{fill:#464a4d;}</style></defs><title>python</title><g class="cls-1"><path class="cls-2" d="M16.6,54.3v3.1h-1V49.6h2.9a2.58,2.58,0,0,1,2,.7,2.06,2.06,0,0,1,.7,1.7,2.27,2.27,0,0,1-.7,1.8,3.17,3.17,0,0,1-2,.6H16.6Zm0-.8h1.9a1.7,1.7,0,0,0,1.3-.4,1.71,1.71,0,0,0,0-2.2,1.59,1.59,0,0,0-1.2-.4H16.7v3Z"/><path class="cls-2" d="M24.3,55.9l1.4-4.4h1.1l-2.3,6.7c-.4,1-.9,1.5-1.7,1.5h-.2l-.4-.1v-.8h.3a1.88,1.88,0,0,0,.8-.2c.2-.1.3-.4.5-.7l.2-.6-2.1-5.7H23Z"/><path class="cls-2" d="M29,50.1v1.4h1.1v.8H29v3.6a.75.75,0,0,0,.1.5.76.76,0,0,0,.5.2,1.09,1.09,0,0,0,.5-.1v.8a2.2,2.2,0,0,1-.8.1,1.16,1.16,0,0,1-1-.4,2,2,0,0,1-.3-1.1V52.3H26.9v-.8H28V50.1Z"/><path class="cls-2" d="M32.2,52.2a2.14,2.14,0,0,1,1.7-.8c1.2,0,1.8.7,1.9,2.1v3.8h-1V53.5a1.06,1.06,0,0,0-1.2-1.2,1.14,1.14,0,0,0-.8.3,4.35,4.35,0,0,0-.6.7v4.1h-1V49.2h1v3Z"/><path class="cls-2" d="M37,54.4a3.34,3.34,0,0,1,.3-1.5,2.44,2.44,0,0,1,.9-1.1,3.26,3.26,0,0,1,1.4-.4,2.56,2.56,0,0,1,1.9.8,3.07,3.07,0,0,1,.7,2.2v.1a3.34,3.34,0,0,1-.3,1.5,2.19,2.19,0,0,1-.9,1,2.3,2.3,0,0,1-1.4.4,2.56,2.56,0,0,1-1.9-.8,3.39,3.39,0,0,1-.7-2.2Zm1,.1a2.73,2.73,0,0,0,.4,1.6,1.5,1.5,0,0,0,2.4,0,2.86,2.86,0,0,0,.4-1.7,2.25,2.25,0,0,0-.5-1.5,1.74,1.74,0,0,0-1.2-.6,1.43,1.43,0,0,0-1.2.6A5,5,0,0,0,38,54.5Z"/><path class="cls-2" d="M44.5,51.5v.7a1.88,1.88,0,0,1,1.7-.8c1.2,0,1.8.7,1.9,2.1v3.8h-1V53.5a1.06,1.06,0,0,0-1.2-1.2,1.14,1.14,0,0,0-.8.3,4.35,4.35,0,0,0-.6.7v4.1h-1V51.6h1Z"/></g><g id="python-logo-generic"><path id="path1948" class="cls-2" d="M31.64,2a18.4,18.4,0,0,0-4.1.4c-3.7.6-4.3,2-4.3,4.5v3.3h8.6v1.1H19.94a5.47,5.47,0,0,0-5.4,4.4,16.43,16.43,0,0,0,0,8.8c.6,2.6,2.1,4.4,4.6,4.4h3V25a5.58,5.58,0,0,1,5.4-5.4h8.6a4.35,4.35,0,0,0,4.3-4.4h0V7a4.9,4.9,0,0,0-4.3-4.5A17.26,17.26,0,0,0,31.64,2Zm-4.7,2.6a1.65,1.65,0,1,1-1.6,1.7h0A1.67,1.67,0,0,1,26.94,4.62Z"/><path id="path1950" class="cls-3" d="M41.54,11.22V15a5.53,5.53,0,0,1-5.4,5.5h-8.6a4.35,4.35,0,0,0-4.3,4.4v8.2c0,2.3,2,3.7,4.3,4.4a14,14,0,0,0,8.6,0c2.2-.6,4.3-1.9,4.3-4.4v-3.3h-8.6v-1.1h12.9c2.5,0,3.4-1.7,4.3-4.4a14.68,14.68,0,0,0,0-8.8c-.6-2.5-1.8-4.4-4.3-4.4ZM36.64,32a1.65,1.65,0,1,1-1.6,1.7h0a1.61,1.61,0,0,1,1.6-1.7Z"/></g></svg>
\ 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 (file)
index 0000000..7a1fce2
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}.cls-2{fill:#121415;}.cls-3{fill:#fff;}</style></defs><title>swift</title><path id="Tracé_10736" data-name="Tracé 10736" class="cls-1" d="M20.79,54.08a4.77,4.77,0,0,1-1.92-.93,1.77,1.77,0,0,1-.6-1.38A1.83,1.83,0,0,1,19,50.25a2.86,2.86,0,0,1,1.92-.6,3.1,3.1,0,0,1,1.43.31,2.33,2.33,0,0,1,1,.86,2.19,2.19,0,0,1,.35,1.2h-1a1.44,1.44,0,0,0-.45-1.12,1.83,1.83,0,0,0-1.27-.41,1.79,1.79,0,0,0-1.19.34,1.09,1.09,0,0,0-.43.93,1,1,0,0,0,.4.81,4.14,4.14,0,0,0,1.38.6,5.94,5.94,0,0,1,1.53.6,2.32,2.32,0,0,1,.82.77,2,2,0,0,1,.26,1A1.83,1.83,0,0,1,23,57.1a3.13,3.13,0,0,1-2,.57,3.66,3.66,0,0,1-1.5-.3,2.51,2.51,0,0,1-1.08-.85A2,2,0,0,1,18,55.3h1a1.32,1.32,0,0,0,.52,1.12,2.18,2.18,0,0,0,1.4.41,2,2,0,0,0,1.25-.33,1.1,1.1,0,0,0,.43-.91,1.07,1.07,0,0,0-.4-.89A4.6,4.6,0,0,0,20.79,54.08ZM30,56.2l1.12-4.44h1l-1.69,5.81h-.8l-1.42-4.4-1.37,4.4H26l-1.68-5.81h1l1.15,4.35,1.35-4.35h.8Zm4.2,1.37h-1V51.76h1Zm-1.07-7.35a.61.61,0,0,1,.15-.41.55.55,0,0,1,.44-.17.57.57,0,0,1,.44.17.59.59,0,0,1,.15.41.54.54,0,0,1-.59.56.57.57,0,0,1-.44-.16A.6.6,0,0,1,33.13,50.22Zm3.15,7.35v-5h-.91v-.77h.91v-.6a2,2,0,0,1,.5-1.45,1.89,1.89,0,0,1,1.42-.51,2.59,2.59,0,0,1,.68.09l-.06.81a3.07,3.07,0,0,0-.53-.05,1,1,0,0,0-.75.28,1.15,1.15,0,0,0-.26.81v.61h1.24v.77H37.28v5ZM41,50.35v1.41h1.08v.76H41v3.6a.76.76,0,0,0,.14.53.6.6,0,0,0,.49.17,2,2,0,0,0,.48-.06v.81a3.33,3.33,0,0,1-.77.11,1.3,1.3,0,0,1-1-.4A1.7,1.7,0,0,1,40,56.13v-3.6H38.91v-.77H40V50.35Z"/><g id="Groupe_6112" data-name="Groupe 6112"><path id="Tracé_10237" data-name="Tracé 10237" class="cls-1" d="M18.72,1H40.58a8.69,8.69,0,0,1,8.69,8.69V31.55a8.69,8.69,0,0,1-8.69,8.69H18.72A8.69,8.69,0,0,1,10,31.55V9.69A8.69,8.69,0,0,1,18.72,1Z"/><path id="Tracé_10238" data-name="Tracé 10238" class="cls-2" d="M43.15,33.1s-1.52-2.54-4.07-2.54-3.9,2.54-8.84,2.54c-11,0-16.17-9.11-16.21-9.19h0l-4-4.33V9.69A8.69,8.69,0,0,1,18.69,1h7.76l5.73,5.82h0c13,8.8,8.77,18.5,8.77,18.5S44.63,29.47,43.15,33.1Z"/><path id="Tracé_10239" data-name="Tracé 10239" class="cls-3" d="M32.22,6.82c13,8.8,8.76,18.5,8.76,18.5s3.68,4.15,2.2,7.79c0,0-1.52-2.54-4.07-2.54s-3.89,2.54-8.84,2.54c-11,0-16.21-9.19-16.21-9.19,9.91,6.54,16.67,1.9,16.67,1.9-4.47-2.6-14-15-14-15,8.28,7,11.86,8.89,11.86,8.89C26.48,18,20.49,9.36,20.49,9.36,25.28,14.21,34.79,21,34.79,21,37.52,13.5,32.22,6.82,32.22,6.82Z"/></g></svg>
\ 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 (file)
index 0000000..a1bd709
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 91.67 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>ts</title><g id="Groupe_6111" data-name="Groupe 6111"><path id="Tracé_10235" data-name="Tracé 10235" class="cls-1" d="M13.42,22.83H9.09V36.22H7.33V22.83H3v-1.6H13.38v1.6Z"/><path id="Tracé_10236" data-name="Tracé 10236" class="cls-1" d="M21.74,25.53,16.82,37.94c-.9,2.23-2.11,3.32-3.71,3.32A4.3,4.3,0,0,1,12,41.14V39.62a3.18,3.18,0,0,0,1,.2,2.08,2.08,0,0,0,1.95-1.56l.86-2-4.17-10.7h1.91l2.89,8.24c0,.11.11.39.23.82h.08c0-.16.12-.43.2-.79l3-8.27Zm2.89,9.17h0v6.48H22.87V25.57h1.72v1.87h0a4.11,4.11,0,0,1,3.7-2.15,3.92,3.92,0,0,1,3.24,1.45,5.9,5.9,0,0,1,1.18,3.86,6.69,6.69,0,0,1-1.29,4.3,4.4,4.4,0,0,1-3.59,1.6A3.61,3.61,0,0,1,24.63,34.7Zm0-4.33v1.48a3.11,3.11,0,0,0,.86,2.26,2.82,2.82,0,0,0,2.18.94,2.88,2.88,0,0,0,2.46-1.21,5.27,5.27,0,0,0,.9-3.32,4.36,4.36,0,0,0-.82-2.81,2.72,2.72,0,0,0-2.22-1,3,3,0,0,0-2.42,1.05,3.76,3.76,0,0,0-.94,2.62Zm18.73.93H35.75a4.08,4.08,0,0,0,1,2.78,3.28,3.28,0,0,0,2.53,1,5,5,0,0,0,3.32-1.21v1.6a6.06,6.06,0,0,1-3.74,1A4.44,4.44,0,0,1,35.28,35,6,6,0,0,1,34,30.91a5.81,5.81,0,0,1,1.4-4.06,4.51,4.51,0,0,1,3.51-1.56,4,4,0,0,1,3.24,1.37,5.55,5.55,0,0,1,1.14,3.78v.86Zm-1.75-1.44a3.45,3.45,0,0,0-.7-2.3,2.45,2.45,0,0,0-1.95-.82,2.75,2.75,0,0,0-2.07.86,4.28,4.28,0,0,0-1.06,2.26Zm2.69,5.86V34.54a5.83,5.83,0,0,0,3.28,1,4,4,0,0,0,2.65-.74,2.36,2.36,0,0,0,.9-2A2.58,2.58,0,0,0,50.47,31a11,11,0,0,0-2.66-1.87,9.75,9.75,0,0,1-2.88-2.22,3.76,3.76,0,0,1-.63-2.07,3.55,3.55,0,0,1,1.25-2.7A4.71,4.71,0,0,1,48.83,21a8,8,0,0,1,2.69.47v1.09A6.8,6.8,0,0,0,48.71,22a3.53,3.53,0,0,0-2.42.78,2.49,2.49,0,0,0-.9,1.95A2.54,2.54,0,0,0,46,26.54a11.09,11.09,0,0,0,2.66,1.84,9.07,9.07,0,0,1,2.81,2.11,3.43,3.43,0,0,1,.7,2.14A3.62,3.62,0,0,1,51,35.44a4.74,4.74,0,0,1-3.4,1.1,8.38,8.38,0,0,1-1.8-.24,10.34,10.34,0,0,1-1.52-.58Zm17,0a5.48,5.48,0,0,1-2.85.75A4.55,4.55,0,0,1,54.88,35a5.66,5.66,0,0,1-1.33-3.94,5.9,5.9,0,0,1,1.52-4.18,5.06,5.06,0,0,1,3.87-1.64,5.75,5.75,0,0,1,2.38.51v1.09a4.9,4.9,0,0,0-2.54-.7,3.85,3.85,0,0,0-3,1.37A5.16,5.16,0,0,0,54.57,31a5.09,5.09,0,0,0,1,3.36,3.43,3.43,0,0,0,2.81,1.25,4.71,4.71,0,0,0,2.81-.86v1Zm6.48-9.21a1.83,1.83,0,0,0-1.13-.35,2.46,2.46,0,0,0-2.11,1.29,6.65,6.65,0,0,0-.86,3.71v5h-.93V25.52h.94V27.9h0A3.8,3.8,0,0,1,64.83,26a2.64,2.64,0,0,1,1.84-.66,2.88,2.88,0,0,1,1,.2v1Zm1.64-3.71a.74.74,0,0,1-.54-.23.77.77,0,0,1-.24-.59.64.64,0,0,1,.24-.54.71.71,0,0,1,.54-.2,1,1,0,0,1,.59.2.7.7,0,0,1,.23.54.8.8,0,0,1-.23.59.92.92,0,0,1-.59.24Zm-.47,13.43V25.56h1v10.7Zm4.34-1.91h0v6.83h-1V25.57h1v2.22h0a4.27,4.27,0,0,1,4-2.46,3.91,3.91,0,0,1,3.2,1.41,5.75,5.75,0,0,1,1.13,3.82,6.64,6.64,0,0,1-1.33,4.34,4.22,4.22,0,0,1-3.47,1.64A3.85,3.85,0,0,1,73.23,34.35Zm0-4v1.36a4.11,4.11,0,0,0,1,2.78,3.37,3.37,0,0,0,2.66,1.17,3.14,3.14,0,0,0,2.65-1.41,6.31,6.31,0,0,0,1-3.71,5,5,0,0,0-.94-3.2,3.1,3.1,0,0,0-2.5-1.17,3.54,3.54,0,0,0-2.89,1.25,4.6,4.6,0,0,0-1,2.93Zm14.32,5.74a3.53,3.53,0,0,1-1.4.35c-1.6,0-2.38-.94-2.38-2.85V26.43H81.81v-.9h1.92V22.75l.46-.15c.16,0,.32-.12.47-.16v3.12h2.81v.9H84.66v7.07a2.87,2.87,0,0,0,.35,1.6,1.41,1.41,0,0,0,1.17.51,2.63,2.63,0,0,0,1.29-.39v.86Z"/></g></svg>
\ 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 (file)
index 0000000..2cce17e
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>tsql</title><path id="Tracé_10741" data-name="Tracé 10741" class="cls-1" d="M17.16,25.68H12.59V38.12H9.51V25.68H5V23.19H17.16Zm3.69,7.24H15.08V30.53h5.77Zm9.48,1.28a1.57,1.57,0,0,0-.62-1.34,7.82,7.82,0,0,0-2.21-1,16.32,16.32,0,0,1-2.53-1,4.15,4.15,0,0,1-2.55-3.7A3.62,3.62,0,0,1,23.1,25a4.53,4.53,0,0,1,2-1.48A7.24,7.24,0,0,1,27.93,23a6.82,6.82,0,0,1,2.85.57,4.55,4.55,0,0,1,1.94,1.64,4.17,4.17,0,0,1,.69,2.4H30.33a2,2,0,0,0-.64-1.6,2.64,2.64,0,0,0-1.82-.56,2.86,2.86,0,0,0-1.75.47,1.49,1.49,0,0,0-.62,1.26,1.44,1.44,0,0,0,.73,1.22,8.08,8.08,0,0,0,2.16.92,9.34,9.34,0,0,1,3.82,2,3.9,3.9,0,0,1,1.2,2.91,3.59,3.59,0,0,1-1.46,3A6.38,6.38,0,0,1,28,38.32a7.54,7.54,0,0,1-3.14-.63A5,5,0,0,1,22.7,36,4.41,4.41,0,0,1,22,33.42h3.09c0,1.65,1,2.47,2.95,2.47a2.81,2.81,0,0,0,1.71-.45,1.45,1.45,0,0,0,.62-1.24ZM46.9,31a8.92,8.92,0,0,1-.68,3.64,6.16,6.16,0,0,1-1.87,2.47l2.48,1.95-2,1.73-3.18-2.55a7.08,7.08,0,0,1-1.13.09,6.24,6.24,0,0,1-3.31-.89A6,6,0,0,1,35,34.88a8.91,8.91,0,0,1-.81-3.81v-.73a9.13,9.13,0,0,1,.8-3.89,5.9,5.9,0,0,1,2.25-2.57,6.56,6.56,0,0,1,6.63,0,5.82,5.82,0,0,1,2.24,2.57,8.8,8.8,0,0,1,.8,3.88Zm-3.12-.67a6.28,6.28,0,0,0-.84-3.57,3,3,0,0,0-4.79,0,6.22,6.22,0,0,0-.85,3.53V31a6.36,6.36,0,0,0,.84,3.54,2.94,2.94,0,0,0,4.1.74,2.87,2.87,0,0,0,.7-.69,6.28,6.28,0,0,0,.84-3.54Zm7.61,5.33h6.53v2.47h-9.6V23.19h3.07Z"/></svg>
\ 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 (file)
index 0000000..f0f10b9
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60"><defs><style>.cls-1{fill:#2d3032;}.cls-2{fill:#464a4d;}.cls-3{fill:#fff;}</style></defs><title>vb</title><g id="vb"><circle id="Ellipse_65" data-name="Ellipse 65" class="cls-1" cx="31.13" cy="29.45" r="24.45"/><path id="Tracé_10244" data-name="Tracé 10244" class="cls-2" d="M14.19,11.88A24.45,24.45,0,1,0,48.71,46.4Z"/><path id="Tracé_10245" data-name="Tracé 10245" class="cls-3" d="M32.12,19.82,25,39.08H22.51l-7-19.26H18l5.34,15.29a8.22,8.22,0,0,1,.39,1.7h.06a8.75,8.75,0,0,1,.42-1.75l5.44-15.28Z"/><path id="Tracé_10246" data-name="Tracé 10246" class="cls-3" d="M34.89,39.08V19.83h5.48a6,6,0,0,1,4,1.22,4,4,0,0,1,1.47,3.19,4.69,4.69,0,0,1-3.36,4.56v.05a4.9,4.9,0,0,1,3.12,1.47,4.52,4.52,0,0,1,1.17,3.23,5.08,5.08,0,0,1-1.77,4,6.65,6.65,0,0,1-4.48,1.53Zm2.29-17.22v6.22h2.29a4.4,4.4,0,0,0,2.9-.92,3.07,3.07,0,0,0,1.06-2.52q0-2.8-3.69-2.8Zm0,8.24V37h3.06a4.62,4.62,0,0,0,3.06-.94,3.25,3.25,0,0,0,1.09-2.58q0-3.41-4.65-3.41Z"/></g></svg>
\ 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 (file)
index 0000000..c254525
--- /dev/null
@@ -0,0 +1 @@
+<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.67 60"><defs><style>.cls-1{fill:#2d3032;}</style></defs><title>xml</title><path id="Tracé_10738" data-name="Tracé 10738" class="cls-1" d="M8,31.58l5.85,2.06v2.87L5,32.77V30.35l8.83-3.75v2.87Zm13-3.45L23.77,23H27.3L23,30.38l4.46,7.53H23.84L21,32.68,18.1,37.91H14.52L19,30.39,14.63,23h3.54ZM32.14,23,36,33.81,39.79,23h4V37.91H40.75V33.83l.31-7L37,37.91H34.91l-4-11.11.31,7v4.08H28.12V23ZM48.76,35.44h6.53v2.47H45.68V23h3.08ZM57,39.2h-2.2L60.24,23h2.2Zm12.12-7.65-6-2.09V26.61L72,30.36v2.41l-8.93,3.75V33.66Z"/></svg>
\ 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 (file)
index 0000000..74c348a
--- /dev/null
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1045.352 -4278.348 41.911 37.021">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #434447;
+      }
+
+      .cls-2 {
+        fill: #f60;
+      }
+    </style>
+  </defs>
+  <g id="cloud-computing" transform="translate(-1045.352 -4278.348)">
+    <path id="Tracé_10173" data-name="Tracé 10173" class="cls-1" d="M35.607,14.812A11.96,11.96,0,0,0,23.808,3.5a12.313,12.313,0,0,0-9.742,4.9c-.052-.027-.108-.046-.161-.072-.137-.066-.275-.129-.417-.186-.082-.033-.166-.062-.25-.092-.138-.048-.277-.091-.419-.129-.084-.022-.167-.045-.251-.065-.154-.035-.31-.061-.468-.085-.073-.011-.146-.025-.22-.034a6.155,6.155,0,0,0-.7-.043A6.294,6.294,0,0,0,4.89,13.978c0,.09.006.178.011.266A9.659,9.659,0,0,0,0,22.468a8.983,8.983,0,0,0,8.973,8.973h3.6a.7.7,0,1,0,0-1.4h-3.6A7.584,7.584,0,0,1,1.4,22.468,8.3,8.3,0,0,1,5.89,15.306l.4-.189v-.44c0-.086.006-.174.01-.262l.006-.121L6.3,14.152c0-.058-.008-.116-.008-.175a4.857,4.857,0,0,1,5.53-4.843c.054.007.109.016.163.025a4.909,4.909,0,0,1,.551.123l.074.019a4.874,4.874,0,0,1,.583.224c.049.022.1.046.145.07a4.827,4.827,0,0,1,.492.278,4.889,4.889,0,0,1,2.239,4.1.7.7,0,1,0,1.4,0,6.272,6.272,0,0,0-2.235-4.8A11.063,11.063,0,0,1,23.808,4.9,10.545,10.545,0,0,1,34.18,14.6a13.3,13.3,0,0,0-2.852.087.7.7,0,0,0,.1,1.389.686.686,0,0,0,.106-.008,12.879,12.879,0,0,1,3.272,0,7.159,7.159,0,0,1,5.7,6.975,7.013,7.013,0,0,1-7,7H30.735a.7.7,0,1,0,0,1.4H33.51a8.412,8.412,0,0,0,8.4-8.4A8.6,8.6,0,0,0,35.607,14.812Z" transform="translate(0 -3.5)"/>
+    <path id="Tracé_10174" data-name="Tracé 10174" class="cls-2" d="M33.381,31.281a.7.7,0,1,0,.988-.988l-5.587-5.587a.692.692,0,0,0-.228-.152.7.7,0,0,0-.761.152L22.2,30.293a.7.7,0,1,0,.988.988l4.4-4.4V44.468l-4.4-4.4a.7.7,0,0,0-.988.988l5.587,5.587a.692.692,0,0,0,.228.152.7.7,0,0,0,.761-.152l5.587-5.587a.7.7,0,0,0-.988-.988l-4.4,4.4V26.885Z" transform="translate(-6.632 -9.831)"/>
+  </g>
+</svg>
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 (file)
index 0000000..fce30da
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-361.924 -3545.014 58.441 52.551"><defs><linearGradient id="a" x1="1.086" y1=".138" x2=".469" y2=".788" gradientUnits="objectBoundingBox"><stop offset=".18" stop-color="#0052cc"/><stop offset="1" stop-color="#2684ff"/></linearGradient></defs><g data-name="Groupe 6140"><path data-name="Tracé 10420" 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" fill="#2684ff"/><path data-name="Tracé 10421" 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)" fill="url(#a)"/></g></svg>
\ 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 (file)
index 0000000..fd609b5
--- /dev/null
@@ -0,0 +1 @@
+<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
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 (file)
index 0000000..d30b41b
--- /dev/null
@@ -0,0 +1,45 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-661.517 -4278.348 19.786 37.022">
+  <defs>
+    <style>
+      .cls-1, .cls-5 {
+        fill: none;
+      }
+
+      .cls-1, .cls-2 {
+        stroke: #f60;
+      }
+
+      .cls-1, .cls-2, .cls-3 {
+        stroke-width: 1.75px;
+      }
+
+      .cls-2, .cls-3 {
+        fill: #fff;
+      }
+
+      .cls-3 {
+        stroke: #434447;
+      }
+
+      .cls-4 {
+        stroke: none;
+      }
+    </style>
+  </defs>
+  <g id="Groupe_6132" data-name="Groupe 6132" transform="translate(-1234 -5514)">
+    <path id="Tracé_10264" data-name="Tracé 10264" class="cls-1" d="M-1182.043-7730.764v6.537s.38,10.115-11.614,9.954" transform="translate(1770.587 8970.999)"/>
+    <g id="Ellipse_69" data-name="Ellipse 69" class="cls-2" transform="translate(584.619 1235.652)">
+      <ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/>
+      <ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/>
+    </g>
+    <path id="Tracé_10265" data-name="Tracé 10265" class="cls-3" d="M-1193.77-7704.575v-26.188" transform="translate(1770.077 8970.999)"/>
+    <g id="Ellipse_70" data-name="Ellipse 70" class="cls-3" transform="translate(572.483 1235.652)">
+      <ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/>
+      <ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/>
+    </g>
+    <g id="Ellipse_71" data-name="Ellipse 71" class="cls-3" transform="translate(572.483 1264.741)">
+      <ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/>
+      <ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/>
+    </g>
+  </g>
+</svg>
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 (file)
index 0000000..cb69411
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.601 -3545.014 54.017 52.551"><path data-name="Tracé 10732" 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" fill="#191717" fill-rule="evenodd"/></svg>
\ 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 (file)
index 0000000..ec49a93
--- /dev/null
@@ -0,0 +1 @@
+<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
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 (file)
index 0000000..99ab47f
--- /dev/null
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-276.765 -4280.348 36.674 37.341">
+  <defs>
+    <style>
+      .cls-1, .cls-4 {
+        fill: none;
+      }
+
+      .cls-1 {
+        stroke: #434447;
+        stroke-width: 1.5px;
+      }
+
+      .cls-2 {
+        fill: #fff;
+        stroke: #f60;
+        stroke-width: 2px;
+      }
+
+      .cls-3 {
+        stroke: none;
+      }
+    </style>
+  </defs>
+  <g id="Groupe_6131" data-name="Groupe 6131" transform="translate(-276.765 -4280.348)">
+    <g id="Rectangle_6142" data-name="Rectangle 6142" class="cls-1" transform="translate(0 6.181)">
+      <rect class="cls-3" width="31.16" height="31.16" rx="3"/>
+      <rect class="cls-4" x="0.75" y="0.75" width="29.66" height="29.66" rx="2.25"/>
+    </g>
+    <g id="Ellipse_72" data-name="Ellipse 72" class="cls-2" transform="translate(22.005 0)">
+      <circle class="cls-3" cx="7.335" cy="7.335" r="7.335"/>
+      <circle class="cls-4" cx="7.335" cy="7.335" r="6.335"/>
+    </g>
+  </g>
+</svg>
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 (file)
index 0000000..27257f5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4654 2264"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="499.375" y1="1043.472" x2="1164.943" y2="1939.597" gradientTransform="matrix(1 0 0 -1 0 2264)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#f8f8f9"/></linearGradient><path d="M1461.5 149.4C1403.1 91.3 1338.4 41.2 1268.4 0H285.1C215.1 41.2 150.4 91.3 92 149.4 1.8 239.3-69.1 344.2-118.9 461.2-170.8 583.3-197 713.2-197 847s26.2 263.7 78.1 385.8c49.7 117 120.6 221.9 210.9 311.8 89.5 89.1 193.4 158.9 309 207.7 119.1 50.1 245.5 75.7 375.7 75.7s256.5-25.4 375.7-75.7c115.6-48.7 219.6-118.6 309-207.7 90.2-89.8 161.2-194.7 210.9-311.8 51.9-122.1 78.1-252 78.1-385.8s-26.2-263.7-78.1-385.8c-49.7-117-120.6-221.9-210.8-311.8zm28.8 988.8c-38.3 90-93.2 171.2-163.4 241-71 70.6-153.7 126.2-246 165.1-96.2 40.5-198.4 61.1-304 61.1s-207.9-20.6-304-61.1c-92.3-38.9-175.1-94.4-246-165.1-70.2-69.9-125.1-151-163.4-241C24.1 1045.9 4.2 948 4.2 847s19.9-198.9 59-291.2c38.3-90 93.2-171.2 163.4-241 71-70.6 153.7-126.2 246-165.1 96.2-40.5 198.4-61.1 304-61.1s207.9 20.6 304 61.1c92.3 38.9 175.1 94.4 246 165.1 70.2 69.9 125.1 151 163.4 241 39.2 92.3 59 190.3 59 291.2s-19.6 198.9-58.7 291.2z" fill="url(#a)"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="3828.883" y1="1759.166" x2="3080.553" y2="1407.541" gradientTransform="matrix(1 0 0 -1 0 2264)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#f8f8f9"/></linearGradient><path d="M4683.7 0H4458c187.3 355.4 121.9 776.4-165.1 973.8-310.4 213.4-764.3 85.3-1011.8-285.4C3135.5 470.2 3093.3 215.9 3146.5 0h-208.9c-4.2 22.3-7.7 44.8-10.4 67.8-14.5 123-6.3 248.7 24.4 373.5 31.5 128.5 85.6 250.6 160.6 363.1s166.8 208.6 272.7 286c102.9 75.2 214.9 129.6 332.8 161.5 78.7 21.3 157.4 32.1 235.3 32.1 40.2 0 80.1-2.8 119.7-8.5 121.7-17.6 234.2-61.4 334.6-130.4 100.3-69 182.3-158.8 243.5-266.9 58.5-103.3 95.6-218.8 110.2-343.2 14.5-123 6.3-248.7-24.4-373.5-13.6-55.1-31.3-109-52.9-161.5z" fill="url(#b)"/></svg>
\ 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 (file)
index 0000000..ac8f338
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 (file)
index 0000000..b0f2767
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 (file)
index 0000000..c1fade9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-557.666 -3550.073 61.865 62.081"><defs><style>.cls-1{fill:#0078d7}</style></defs><g id="Groupe_6141" data-name="Groupe 6141" transform="translate(-557.666 -3550.073)"><path id="path951_1_" class="cls-1" d="M46.453 0v53.28L0 46.453l46.453 15.628L61.865 55.7V6.611z"/><path id="Tracé_10734" data-name="Tracé 10734" class="cls-1" d="M22.239 84.1V72.318l31.026-6.107v21.85l-8.758 7.26-13.367-4.48v4.609l-8.9-11.35 21.476 2.809v-19L33.445 59.7l.072 3.731L21.3 68.314l-3.8 4.552v10.24z" transform="translate(-14.979 -51.101)"/></g></svg>
\ 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 (file)
index 0000000..ccd03f6
--- /dev/null
@@ -0,0 +1 @@
+<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
index 76560dcf9857ca4c58c3f3a09b9fd4a99faa8467..75f6dcdc4d13d501ee0b5780faeea44783411d64 100644 (file)
@@ -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'
 };
index ad8591fc26a8b3213b04a31185763a59cabc3743..7758ecaa78eb2766b60fa0bc508c98090e902549 100644 (file)
@@ -27,7 +27,10 @@ const routes = [
         () =>
           isSonarCloud() ? import('./sonarcloud/HomeContainer') : import('./components/AboutApp')
       )
-    }
+    },
+    childRoutes: isSonarCloud
+      ? [{ path: 'sq', component: lazyLoad(() => import('./sonarcloud/SQHomeContainer')) }]
+      : []
   }
 ];
 
index 5118ad30058a655cf1656fbc772ab57191688e72..e5d99cc504f6f2f0a23a884b63241a0b209401bf 100644 (file)
@@ -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<Props> {
             </li>
           </ul>
 
-          <div className="sc-pricing sc-narrow-container">
-            <div className="sc-pricing-block">
-              <h3 className="sc-pricing-title">Open Source Projects</h3>
-              <span className="sc-pricing-small">&nbsp;</span>
-              <span className="sc-pricing-price">Free</span>
-            </div>
+          <Pricing />
 
-            <div className="sc-pricing-block">
-              <h3 className="sc-pricing-title">Private Projects</h3>
-              <span className="sc-pricing-small">14 days free trial</span>
-              <strong>
-                From <span className="sc-pricing-price">10€</span>/mo
-              </strong>
-              <Link
-                className="sc-pricing-about sc-pricing-small"
-                to="/documentation/sonarcloud-pricing">
-                see prices
-              </Link>
-            </div>
-          </div>
-
-          {!isLoggedIn(this.props.currentUser) && (
-            <div className="sc-narrow-container text-center">
-              <Link className="sc-start" to="/sessions/new">
-                Start using SonarCloud <ChevronRightIcon className="spacer-left" />
-              </Link>
-              <div className="big-spacer-top">
-                <a
-                  className="text-muted"
-                  href="https://community.sonarsource.com/c/help/sc"
-                  rel="noopener noreferrer"
-                  target="_blank">
-                  Need help?
-                </a>
-              </div>
-            </div>
-          )}
+          {!isLoggedIn(this.props.currentUser) && <StartUsing />}
 
           <div className="sc-narrow-container text-center">
             <h2 className="sc-feature-title">Explore open source projects on SonarCloud</h2>
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 (file)
index 0000000..b6055d5
--- /dev/null
@@ -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 (
+    <div className="sc-pricing sc-narrow-container">
+      <div className="sc-pricing-block">
+        <h3 className="sc-pricing-title">Open Source Projects</h3>
+        <span className="sc-pricing-small">&nbsp;</span>
+        <span className="sc-pricing-price">Free</span>
+      </div>
+
+      <div className="sc-pricing-block">
+        <h3 className="sc-pricing-title">Private Projects</h3>
+        <span className="sc-pricing-small">14 days free trial</span>
+        <strong>
+          From <span className="sc-pricing-price">10€</span>/mo
+        </strong>
+        <Link className="sc-arrow-link sc-pricing-small" to="/documentation/sonarcloud-pricing">
+          see prices
+        </Link>
+      </div>
+    </div>
+  );
+}
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 (file)
index 0000000..80fce78
--- /dev/null
@@ -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<Props> {
+  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 (
+      <GlobalContainer footer={<Footer />} location={this.props.location}>
+        <div className="page sc-page sc-sq-page">
+          <Jumbotron />
+
+          <h2 className="sc-sq-header2">You use the service, we take care of the rest</h2>
+          <Pricing />
+          {!isLoggedIn(this.props.currentUser) && <StartUsing />}
+
+          <Features />
+          <Languages />
+          <Integrations />
+          <BottomNote />
+        </div>
+      </GlobalContainer>
+    );
+  }
+}
+
+function Jumbotron() {
+  return (
+    <div className="sc-sq-jumbotron">
+      <div className="sc-sq-jumbotron-left">
+        <h1 className="sc-sq-jumbotron-title">
+          Use SonarQube<br />
+          <span className="sc-sq-jumbotron-title-orange">as a Service</span>
+        </h1>
+        <div className="sc-sq-jumbotron-login">
+          {'—'}
+          <br />Log in or sign up with
+        </div>
+        <div>
+          <Link className="sc-sq-login-button" to="/sessions/init/github">
+            <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/github-white.svg`} />
+            GitHub
+          </Link>
+          <Link className="sc-sq-login-button" to="/sessions/init/bitbucket">
+            <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/bitbucket-white.svg`} />
+            Bitbucket
+          </Link>
+          <Link className="sc-sq-login-button" to="/sessions/init/microsoft">
+            <img alt="" height="25" src={`${getBaseUrl()}/images/sonarcloud/windows-white.svg`} />
+            VSTS
+          </Link>
+        </div>
+      </div>
+      <div className="sc-sq-jumbotron-right">
+        <img
+          alt="SonarCloud project dashboard"
+          src={`${getBaseUrl()}/images/sonarcloud/sq-homepage.png`}
+          srcSet={`${getBaseUrl()}/images/sonarcloud/sq-homepage.png 1x, ${getBaseUrl()}/images/sonarcloud/sq-homepage@2x.png 2x`}
+        />
+      </div>
+    </div>
+  );
+}
+
+function Features() {
+  return (
+    <>
+      <h2 className="sc-sq-header2">
+        The right solution for developers
+        <span className="sc-sq-dot">•</span>
+      </h2>
+      <ul className="sc-features-list">
+        <li className="sc-feature">
+          <img
+            alt=""
+            className="big-spacer-bottom"
+            height="34"
+            src={`${getBaseUrl()}/images/sonarcloud/as-a-service.svg`}
+          />
+          <h3 className="sc-feature-title">As a Service</h3>
+          <p className="sc-feature-description">
+            We provide a fully operated version of SonarQube which is hosted on Amazon AWS in Europe
+            (Frankfurt, Germany).
+          </p>
+          <Link className="sc-arrow-link sc-feature-link" to="/about/sq/as-a-service">
+            See more
+          </Link>
+        </li>
+        <li className="sc-feature">
+          <img
+            alt=""
+            className="big-spacer-bottom"
+            height="34"
+            src={`${getBaseUrl()}/images/sonarcloud/branch-analysis.svg`}
+          />
+          <h3 className="sc-feature-title">Branch & pull request analysis</h3>
+          <p className="sc-feature-description">
+            SonarCloud comes with a built-in feature to automatically analyze project branches and
+            pull requests as soon as they get created.
+          </p>
+          <Link
+            className="sc-arrow-link sc-feature-link"
+            to="/about/sq/branch-analysis-and-pr-decoration">
+            See more
+          </Link>
+        </li>
+        <li className="sc-feature">
+          <img
+            alt=""
+            className="big-spacer-bottom"
+            height="34"
+            src={`${getBaseUrl()}/images/sonarcloud/sonarlint-integration.svg`}
+          />
+          <h3 className="sc-feature-title">SonarLint integration</h3>
+          <p className="sc-feature-description">
+            The full SonarCloud experience can be enhanced with SonarLint, that enables developers
+            to receive real time information directly in their IDEs.
+          </p>
+          <Link className="sc-arrow-link sc-feature-link" to="/about/sq/sonarlint-integration">
+            See more
+          </Link>
+        </li>
+      </ul>
+    </>
+  );
+}
+
+function Languages() {
+  return (
+    <div className="sc-languages">
+      <h3 className="sc-feature-title">On 17 programming languages</h3>
+      <ul className="sc-languages-list">
+        <li>
+          <img
+            alt="Java"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/java.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="JavaScript"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/js.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="TypeScript"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/ts.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="C#"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/c-sharp.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="C++"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/c-plus.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img alt="Go" height="60" src={`${getBaseUrl()}/images/languages/go.svg`} width="60" />
+        </li>
+        <li>
+          <img
+            alt="Python"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/python.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img alt="PHP" height="60" src={`${getBaseUrl()}/images/languages/php.svg`} width="60" />
+        </li>
+      </ul>
+      <ul className="sc-languages-list">
+        <li>
+          <img alt="VB" height="60" src={`${getBaseUrl()}/images/languages/vb.svg`} width="60" />
+        </li>
+        <li>
+          <img
+            alt="Flex"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/flex.png`}
+            width="85"
+          />
+        </li>
+        <li>
+          <img
+            alt="HTML"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/html5.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="Swift"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/swift.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="Objective-C"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/obj-c.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="T-SQL"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/tsql.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="PL/SQL"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/plsql.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img
+            alt="ABAP"
+            height="60"
+            src={`${getBaseUrl()}/images/languages/abap.svg`}
+            width="60"
+          />
+        </li>
+        <li>
+          <img alt="XML" height="60" src={`${getBaseUrl()}/images/languages/xml.svg`} width="60" />
+        </li>
+      </ul>
+    </div>
+  );
+}
+
+function Integrations() {
+  return (
+    <div className="sc-integrations">
+      <h2 className="sc-sq-header2 sc-integrations-title">Fully integrated experience with</h2>
+      <ul className="sc-integrations-list">
+        <li>
+          <h3 className="sc-feature-title">GitHub</h3>
+          <img
+            alt="GitHub"
+            className="big-spacer-top"
+            height="60"
+            src={`${getBaseUrl()}/images/sonarcloud/github-big.svg`}
+          />
+        </li>
+        <li>
+          <h3 className="sc-feature-title">VSTS</h3>
+          <img
+            alt="VSTS"
+            className="big-spacer-top"
+            height="60"
+            src={`${getBaseUrl()}/images/sonarcloud/vsts-big.svg`}
+          />
+          <div className="big-spacer-top">
+            <Link className="sc-arrow-link sc-feature-link" to="/about/sq/vsts">
+              See more
+            </Link>
+          </div>
+        </li>
+        <li>
+          <h3 className="sc-feature-title">Bitbucket</h3>
+          <img
+            alt="Bitbucket"
+            className="big-spacer-top"
+            height="60"
+            src={`${getBaseUrl()}/images/sonarcloud/bitbucket-big.svg`}
+          />
+        </li>
+      </ul>
+    </div>
+  );
+}
+
+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"
+        href="https://www.sonarsource.com/plans-and-pricing/developer/"
+        rel="noopener noreferrer"
+        target="_blank">
+        Developer Edition
+      </a>
+    </div>
+  );
+}
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 (file)
index 0000000..33be1be
--- /dev/null
@@ -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 (file)
index 0000000..cade510
--- /dev/null
@@ -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 (
+    <div className="sc-narrow-container text-center">
+      <Link className="sc-start" to="/sessions/new">
+        Start using SonarCloud <ChevronRightIcon className="spacer-left" />
+      </Link>
+      <div className="big-spacer-top">
+        <a
+          className="text-muted"
+          href="https://community.sonarsource.com/c/help/sc"
+          rel="noopener noreferrer"
+          target="_blank">
+          Need help?
+        </a>
+      </div>
+    </div>
+  );
+}
index 711ee61ea328289bd43be3a2aa4308c8d3042b10..1c3d8ada395423fe996c356fa18c832833098e2e 100644 (file)
@@ -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);
   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;
 }
 }
 
 .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;
 
 .sc-pricing-price {
   line-height: 72px;
+  color: var(--sonarcloudBlack800);
   font-size: 65px;
   font-weight: 700;
 }
   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;
   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);
 }
 
   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;
+}