aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-web/public/images/languages/black/abap.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/c-plus.svg1
-rw-r--r--server/sonar-web/public/images/languages/black/c-sharp.svg1
-rw-r--r--server/sonar-web/public/images/languages/black/flex.pngbin3423 -> 11869 bytes
-rw-r--r--server/sonar-web/public/images/languages/black/java.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/js.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/kotlin.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/obj-c.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/php.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/plsql.svg1
-rw-r--r--server/sonar-web/public/images/languages/black/python.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/ruby.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/scala.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/swift.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/ts.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/tsql.svg1
-rw-r--r--server/sonar-web/public/images/languages/black/vb.svg2
-rw-r--r--server/sonar-web/public/images/languages/black/xml.svg2
-rw-r--r--server/sonar-web/public/images/languages/scala.svg2
-rw-r--r--server/sonar-web/public/json/homepage.json117
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/AsAService.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/AzureDevOps.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/BranchAnalysis.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/Contact.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx43
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/SonarLintIntegration.tsx7
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/__tests__/__snapshots__/Home-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/components/Languages.tsx2
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/components/NavBars.css3
-rw-r--r--server/sonar-web/src/main/js/apps/about/sonarcloud/new_style.css1
31 files changed, 95 insertions, 144 deletions
diff --git a/server/sonar-web/public/images/languages/black/abap.svg b/server/sonar-web/public/images/languages/black/abap.svg
index 48b8dd5ac63..072e0e4cd33 100644
--- a/server/sonar-web/public/images/languages/black/abap.svg
+++ b/server/sonar-web/public/images/languages/black/abap.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 51.836 14.93"><path data-name="Tracé 11993" d="M9.689 11.854H4.296L3.27 14.93H-.001L5.557 0h2.851l5.588 14.93h-3.271zM5.126 9.362h3.737L6.982 3.774zm9.425 5.568V0h5.229a6.867 6.867 0 0 1 4.122 1.041 3.559 3.559 0 0 1 1.4 3.051 3.373 3.373 0 0 1-.564 1.933 3.258 3.258 0 0 1-1.569 1.225 3.152 3.152 0 0 1 1.81 1.159 3.426 3.426 0 0 1 .661 2.133 3.94 3.94 0 0 1-1.374 3.261 6.186 6.186 0 0 1-3.912 1.127zm3.076-6.5v4.03h2.636a2.543 2.543 0 0 0 1.7-.518 1.776 1.776 0 0 0 .61-1.43 1.875 1.875 0 0 0-2.126-2.082zm0-2.174h2.276q2.328-.041 2.328-1.856a1.715 1.715 0 0 0-.59-1.461 3.1 3.1 0 0 0-1.861-.446h-2.153zm17.914 5.6h-5.393l-1.026 3.074h-3.271L31.409 0h2.854l5.585 14.93h-3.271zm-4.563-2.492h3.732l-1.876-5.59zm12.5.308v5.258h-3.076V0h5.824a6.738 6.738 0 0 1 2.958.615 4.534 4.534 0 0 1 1.964 1.748 4.875 4.875 0 0 1 .687 2.579 4.287 4.287 0 0 1-1.5 3.461 6.257 6.257 0 0 1-4.158 1.266zm0-2.492h2.748a2.7 2.7 0 0 0 1.861-.574 2.088 2.088 0 0 0 .641-1.641 2.463 2.463 0 0 0-.646-1.774 2.413 2.413 0 0 0-1.784-.7h-2.82z" fill="#2e3032"/></svg> \ No newline at end of file
+<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/black/c-plus.svg b/server/sonar-web/public/images/languages/black/c-plus.svg
new file mode 100644
index 00000000000..ebbafdc83d8
--- /dev/null
+++ b/server/sonar-web/public/images/languages/black/c-plus.svg
@@ -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/black/c-sharp.svg b/server/sonar-web/public/images/languages/black/c-sharp.svg
new file mode 100644
index 00000000000..78da8f72788
--- /dev/null
+++ b/server/sonar-web/public/images/languages/black/c-sharp.svg
@@ -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/black/flex.png b/server/sonar-web/public/images/languages/black/flex.png
index 98bda7f2860..755e1e7422e 100644
--- a/server/sonar-web/public/images/languages/black/flex.png
+++ b/server/sonar-web/public/images/languages/black/flex.png
Binary files differ
diff --git a/server/sonar-web/public/images/languages/black/java.svg b/server/sonar-web/public/images/languages/black/java.svg
index feb20c1ba11..b3eeb8a6423 100644
--- a/server/sonar-web/public/images/languages/black/java.svg
+++ b/server/sonar-web/public/images/languages/black/java.svg
@@ -1 +1 @@
-<svg id="Groupe_7533" data-name="Groupe 7533" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 39.004 72.543"><defs><style>.cls-1{fill:#2e3032;fill-rule:evenodd}</style></defs><path id="Tracé_10176" data-name="Tracé 10176" class="cls-1" d="M97.814 349.592s-1.9 1.106 1.354 1.479a28.484 28.484 0 0 0 10.3-.436 18.015 18.015 0 0 0 2.74 1.336c-9.741 4.173-22.047-.242-14.4-2.38z" transform="translate(-84.919 -311.112)"/><path id="Tracé_10177" data-name="Tracé 10177" class="cls-1" d="M84.688 300.1s-2.132 1.578 1.125 1.915a40.2 40.2 0 0 0 13.3-.638 5.88 5.88 0 0 0 2.046 1.248c-11.776 3.445-24.892.271-16.467-2.525z" transform="translate(-72.984 -267.071)"/><path id="Tracé_10178" data-name="Tracé 10178" class="cls-1" d="M179.7 105.966c2.4 2.764-.63 5.25-.63 5.25s6.094-3.145 3.3-7.086c-2.614-3.673-4.619-5.5 6.233-11.791 0 0-17.034 4.253-8.9 13.628z" transform="translate(-157.96 -82.174)"/><path id="Tracé_10179" data-name="Tracé 10179" class="cls-1" d="M43.326 382.8s1.407 1.16-1.549 2.057c-5.621 1.7-23.4 2.216-28.34.068-1.774-.773 1.554-1.844 2.6-2.07a6.8 6.8 0 0 1 1.715-.193c-1.974-1.39-12.761 2.731-5.479 3.912 19.86 3.219 36.2-1.45 31.051-3.774z" transform="translate(-8.704 -340.286)"/><path id="Tracé_10180" data-name="Tracé 10180" class="cls-1" d="M54.825 248.756s-9.043 2.148-3.2 2.929a67.916 67.916 0 0 0 11.963-.13c3.743-.314 7.5-.986 7.5-.986a15.948 15.948 0 0 0-2.274 1.217c-9.185 2.416-26.925 1.291-21.817-1.179a17.094 17.094 0 0 1 7.83-1.851z" transform="translate(-41.015 -221.368)"/><path id="Tracé_10181" data-name="Tracé 10181" class="cls-1" d="M271.338 254.01c9.336-4.85 5.019-9.511 2.006-8.884a7.061 7.061 0 0 0-1.067.287 1.7 1.7 0 0 1 .8-.615c5.961-2.095 10.544 6.18-1.922 9.457a.829.829 0 0 0 .187-.245z" transform="translate(-241.305 -217.555)"/><path id="Tracé_10182" data-name="Tracé 10182" class="cls-1" d="M128.721 0s5.169 5.172-4.9 13.123c-8.078 6.381-1.842 10.017 0 14.175-4.716-4.255-8.175-8-5.855-11.486 3.4-5.112 12.84-7.597 10.755-15.812z" transform="translate(-104.316)"/><path id="Tracé_10183" data-name="Tracé 10183" class="cls-1" d="M76.926 413.781c8.96.573 22.722-.319 23.047-4.559 0 0-.626 1.607-7.405 2.882a73.621 73.621 0 0 1-22.677.349s1.146.948 7.034 1.327z" transform="translate(-62.199 -364.178)"/><path id="Tracé_10184" data-name="Tracé 10184" class="cls-1" d="M337.22 518.483h-.273v-.153h.735v.153h-.272v.762h-.19v-.762zm1.467.039l-.271.724h-.125l-.269-.724v.724h-.18v-.915h.264l.249.648.25-.648h.263v.915h-.175v-.724z" transform="translate(-299.859 -461.277)"/><path id="Tracé_10185" data-name="Tracé 10185" class="cls-1" d="M66.813 525.293a4.07 4.07 0 0 1-2.54 1.144 1.62 1.62 0 0 1-1.762-1.785c0-1.189.663-2.059 3.32-2.059h.982v2.7zm2.332 2.631v-8.144c0-2.082-1.187-3.456-4.049-3.456a10.682 10.682 0 0 0-4.323.938l.342 1.443a10.041 10.041 0 0 1 3.339-.664c1.649 0 2.358.664 2.358 2.037v1.03h-.822c-4 0-5.812 1.553-5.812 3.889 0 2.013 1.191 3.157 3.433 3.157a5.177 5.177 0 0 0 3.522-1.466l.183 1.236z" transform="translate(-53.554 -459.492)"/><path id="Tracé_10186" data-name="Tracé 10186" class="cls-1" d="M160.541 529.607h-2.908l-3.5-11.393h2.54l2.173 7 .483 2.1a43.88 43.88 0 0 0 2.264-9.1h2.471a46.188 46.188 0 0 1-3.521 11.393z" transform="translate(-137.166 -461.174)"/><path id="Tracé_10187" data-name="Tracé 10187" class="cls-1" d="M260.1 525.293a4.083 4.083 0 0 1-2.541 1.144 1.62 1.62 0 0 1-1.762-1.785c0-1.189.665-2.059 3.319-2.059h.984v2.7zm2.333 2.631v-8.144c0-2.082-1.191-3.456-4.049-3.456a10.683 10.683 0 0 0-4.325.938l.343 1.443a10.057 10.057 0 0 1 3.341-.664c1.647 0 2.357.664 2.357 2.037v1.03h-.824c-4.006 0-5.812 1.553-5.812 3.889 0 2.013 1.189 3.157 3.431 3.157a5.184 5.184 0 0 0 3.524-1.466l.184 1.236z" transform="translate(-225.568 -459.492)"/><path id="Tracé_10188" data-name="Tracé 10188" class="cls-1" d="M4.066 498.779a6.122 6.122 0 0 1-2.915 2.174L0 499.6a4.84 4.84 0 0 0 2.019-1.891 7.317 7.317 0 0 0 .436-3.3V481.4h2.479v12.829c0 2.532-.2 3.555-.868 4.552z" transform="translate(0 -428.41)"/></svg> \ No newline at end of file
+<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/black/js.svg b/server/sonar-web/public/images/languages/black/js.svg
index d4c0cd80a3c..3059aefbf2c 100644
--- a/server/sonar-web/public/images/languages/black/js.svg
+++ b/server/sonar-web/public/images/languages/black/js.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60.208 60.207"><path data-name="Rectangle 5722" fill="#2e3032" d="M0 0h60.207v60.207H0z"/><path data-name="Tracé 10175" d="M40.444 47.037c1.213 1.98 2.791 3.436 5.581 3.436 2.344 0 3.842-1.172 3.842-2.791 0-1.94-1.539-2.627-4.119-3.756l-1.414-.607c-4.083-1.739-6.795-3.918-6.795-8.524 0-4.243 3.233-7.473 8.286-7.473 3.6 0 6.183 1.252 8.047 4.53l-4.406 2.829c-.97-1.739-2.016-2.425-3.641-2.425a2.462 2.462 0 0 0-2.707 2.425c0 1.7 1.051 2.384 3.479 3.436l1.414.606c4.807 2.061 7.521 4.163 7.521 8.888 0 5.094-4 7.884-9.375 7.884-5.254 0-8.649-2.5-10.31-5.786zm-19.986.49c.889 1.577 1.7 2.91 3.641 2.91 1.859 0 3.031-.727 3.031-3.555V27.645h5.658v19.314c0 5.858-3.435 8.524-8.448 8.524a8.783 8.783 0 0 1-8.487-5.168z" fill="#fff"/></svg> \ No newline at end of file
+<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/black/kotlin.svg b/server/sonar-web/public/images/languages/black/kotlin.svg
index a34290e6a7d..dc56df69933 100644
--- a/server/sonar-web/public/images/languages/black/kotlin.svg
+++ b/server/sonar-web/public/images/languages/black/kotlin.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 41.206 41.206"><g data-name="Groupe 7547"><path d="M0 41.206l20.672-20.672 20.534 20.672z" fill="#6b7076"/><path data-name="Tracé 11935" d="M0 0h20.672L0 22.32z" fill="#2e3032"/><path data-name="Tracé 11936" d="M20.672 0L0 21.771v19.435l20.672-20.672L41.206 0z" fill="#4a4d50"/></g></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 41.206 64.473"><defs><style>.cls-1{fill:#2e3032}</style></defs><g id="Groupe_7556" data-name="Groupe 7556" transform="translate(-7327.794 -10496.794)"><path id="Tracé_11989" data-name="Tracé 11989" class="cls-1" d="M13.808 7.033l-1.043 1.084V11H11.64V2.469h1.125v4.219l3.791-4.219h1.359l-3.357 3.767L18.179 11h-1.348zm4.74.738a3.745 3.745 0 0 1 .366-1.671 2.732 2.732 0 0 1 1.02-1.148 2.775 2.775 0 0 1 1.491-.4 2.674 2.674 0 0 1 2.095.9 3.449 3.449 0 0 1 .8 2.385V7.9a3.777 3.777 0 0 1-.354 1.661 2.692 2.692 0 0 1-1.014 1.146 2.807 2.807 0 0 1-1.515.41 2.667 2.667 0 0 1-2.089-.9 3.432 3.432 0 0 1-.8-2.373zm1.09.129a2.712 2.712 0 0 0 .489 1.693 1.658 1.658 0 0 0 2.622-.009 2.966 2.966 0 0 0 .486-1.813 2.708 2.708 0 0 0-.5-1.69 1.574 1.574 0 0 0-1.315-.647 1.557 1.557 0 0 0-1.295.639 2.944 2.944 0 0 0-.487 1.827zm7.512-4.775V4.66h1.184v.84H27.15v3.93a.878.878 0 0 0 .158.571.666.666 0 0 0 .539.19 2.624 2.624 0 0 0 .516-.07V11a3.143 3.143 0 0 1-.832.117 1.35 1.35 0 0 1-1.1-.439 1.888 1.888 0 0 1-.369-1.248V5.5h-1.151v-.84h1.154V3.125zM30.777 11h-1.084V2h1.084zm2.912 0H32.6V4.66h1.084zm-1.172-8.021a.647.647 0 0 1 .161-.445.6.6 0 0 1 .478-.182.614.614 0 0 1 .48.182.64.64 0 0 1 .164.445.619.619 0 0 1-.164.439.626.626 0 0 1-.48.176.616.616 0 0 1-.478-.176.626.626 0 0 1-.161-.439zm3.932 1.681l.035.8a2.31 2.31 0 0 1 1.9-.914q2.01 0 2.027 2.268V11h-1.086V6.8a1.459 1.459 0 0 0-.313-1.014 1.256 1.256 0 0 0-.958-.328 1.564 1.564 0 0 0-.926.281 1.91 1.91 0 0 0-.621.738V11h-1.084V4.66z" transform="translate(7320.446 10550.149)"/><g id="Groupe_7547" data-name="Groupe 7547" transform="translate(263)"><g id="Kotlin-logo" transform="translate(7064.794 10496.794)"><path id="XMLID_2_" d="M0 50.572L20.672 29.9l20.534 20.672z" transform="translate(0 -9.366)" fill="#6b7076"/><path id="Tracé_11935" data-name="Tracé 11935" class="cls-1" d="M0 0h20.672L0 22.32z"/><path id="Tracé_11936" data-name="Tracé 11936" d="M20.672 0L0 21.771v19.435l20.672-20.672L41.206 0z" fill="#4a4d50"/></g></g></g></svg> \ No newline at end of file
diff --git a/server/sonar-web/public/images/languages/black/obj-c.svg b/server/sonar-web/public/images/languages/black/obj-c.svg
index d6c87694423..ad3cf129fcf 100644
--- a/server/sonar-web/public/images/languages/black/obj-c.svg
+++ b/server/sonar-web/public/images/languages/black/obj-c.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.547 41.015"><path d="M33.823 31.963a22.3 22.3 0 0 1-2.205 3.965 20.143 20.143 0 0 1-2.841 3.433 5.51 5.51 0 0 1-3.647 1.607 9.15 9.15 0 0 1-3.372-.805 9.676 9.676 0 0 0-3.63-.8 10 10 0 0 0-3.733.8 10.045 10.045 0 0 1-3.226.848A5.188 5.188 0 0 1 7.43 39.36a21.151 21.151 0 0 1-2.969-3.559 24.583 24.583 0 0 1-3.142-6.241A22.851 22.851 0 0 1 0 22.122a13.582 13.582 0 0 1 1.784-7.106 10.463 10.463 0 0 1 3.736-3.779 10.049 10.049 0 0 1 5.05-1.425 11.891 11.891 0 0 1 3.906.909 12.557 12.557 0 0 0 3.1.911 18.539 18.539 0 0 0 3.435-1.073 11.356 11.356 0 0 1 4.67-.829 9.915 9.915 0 0 1 7.767 4.089 8.64 8.64 0 0 0-4.582 7.849 8.659 8.659 0 0 0 2.841 6.533 9.343 9.343 0 0 0 2.841 1.863q-.342.991-.724 1.9zM25.909.821a8.75 8.75 0 0 1-2.243 5.739c-1.8 2.107-3.983 3.325-6.347 3.133a6.385 6.385 0 0 1-.048-.777 8.99 8.99 0 0 1 2.38-5.8 9.162 9.162 0 0 1 2.9-2.176 8.643 8.643 0 0 1 3.315-.939 7.45 7.45 0 0 1 .043.82z" fill="#2e3032"/></svg> \ No newline at end of file
+<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/black/php.svg b/server/sonar-web/public/images/languages/black/php.svg
index 46d45d03061..53d741c2d47 100644
--- a/server/sonar-web/public/images/languages/black/php.svg
+++ b/server/sonar-web/public/images/languages/black/php.svg
@@ -1 +1 @@
-<svg id="_4c69e694f411fe8138a5242020efdc8d" data-name="4c69e694f411fe8138a5242020efdc8d" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57.583 30.33"><defs><style>.cls-1{fill:#2e3032}</style></defs><path id="Tracé_10232" data-name="Tracé 10232" class="cls-1" d="M239.078 425.051h-3.032l-1.246 6.41h2.832s3.449.088 3.608-4.154a1.96 1.96 0 0 0-2.162-2.256z" transform="translate(-221.591 -414.286)"/><path id="Tracé_10233" data-name="Tracé 10233" class="cls-1" d="M679.577 425.051h-3.032l-1.246 6.41h2.832s3.449.088 3.608-4.154a1.958 1.958 0 0 0-2.162-2.256z" transform="translate(-636.208 -414.286)"/><path id="Tracé_10234" data-name="Tracé 10234" class="cls-1" d="M38.792 241.9c-15.9 0-28.792 6.792-28.792 15.165s12.892 15.165 28.792 15.165 28.792-6.787 28.792-15.165S54.692 241.9 38.792 241.9zM25.9 261.455l-3.067-.023-.864 4.031h-3.285l2.962-15.163s4.207.053 6.969 0 5.476 1.9 4.207 6.316c-1.528 5.273-6.922 4.839-6.922 4.839zm14.766 0s.787-3.525 1.134-5.97c.141-1 .764-2.715-.881-2.715-1.375-.006-3.431-.012-3.431-.012l-1.733 8.7H32.5l3.032-15.236h3.326l-.834 4.072h3.431s4.548-.358 4.007 3.4-1.551 7.762-1.551 7.762zm18.034-4.836c-1.516 5.271-6.916 4.836-6.916 4.836l-3.067-.023-.864 4.031h-3.285l2.961-15.163s4.207.053 6.969 0 5.47 1.894 4.202 6.319z" transform="translate(-10 -241.9)"/></svg> \ No newline at end of file
+<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/black/plsql.svg b/server/sonar-web/public/images/languages/black/plsql.svg
new file mode 100644
index 00000000000..cc0ea3ead7e
--- /dev/null
+++ b/server/sonar-web/public/images/languages/black/plsql.svg
@@ -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/black/python.svg b/server/sonar-web/public/images/languages/black/python.svg
index 2d0b7342ed7..cd2f68b06f8 100644
--- a/server/sonar-web/public/images/languages/black/python.svg
+++ b/server/sonar-web/public/images/languages/black/python.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.597 51.604"><defs><radialGradient id="a" cx="58.835" cy="-130.697" r="12.486" gradientTransform="matrix(0 -.194 1.037 0 201.505 -205.779)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b8b8b8" stop-opacity=".498"/><stop offset="1" stop-color="#7f7f7f" stop-opacity="0"/></radialGradient></defs><g data-name="Groupe 7544"><path d="M21.045.003a29.338 29.338 0 0 0-4.91.419c-4.348.768-5.137 2.376-5.137 5.341v3.916h10.275v1.305H7.142a6.415 6.415 0 0 0-6.419 5.209 19.2 19.2 0 0 0 0 10.442c.73 3.042 2.475 5.209 5.461 5.209h3.533v-4.696a6.529 6.529 0 0 1 6.419-6.383h10.262a5.176 5.176 0 0 0 5.137-5.221V5.76c0-2.784-2.349-4.876-5.137-5.341a32.047 32.047 0 0 0-5.353-.416zM15.489 3.15a1.958 1.958 0 1 1-1.928 1.964 1.949 1.949 0 0 1 1.928-1.964z" fill="#4a4d50"/><path d="M32.816 10.981v4.562a6.59 6.59 0 0 1-6.419 6.514H16.135a5.241 5.241 0 0 0-5.137 5.221v9.784c0 2.784 2.421 4.422 5.137 5.221a17.19 17.19 0 0 0 10.263 0c2.587-.749 5.137-2.256 5.137-5.221v-3.915H21.272v-1.305h15.4c2.986 0 4.1-2.083 5.137-5.209 1.073-3.218 1.027-6.314 0-10.442-.738-2.973-2.147-5.209-5.137-5.209zm-5.772 24.777a1.958 1.958 0 1 1-1.928 1.952 1.939 1.939 0 0 1 1.928-1.952z" fill="#2e3032"/><path d="M36.765 102.791c0 1.475-6.165 2.67-13.769 2.67s-13.769-1.2-13.769-2.67 6.165-2.67 13.769-2.67 13.769 1.195 13.769 2.67z" transform="translate(-1.607 -53.856)" opacity=".444" fill="url(#a)"/></g></svg> \ No newline at end of file
+<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/black/ruby.svg b/server/sonar-web/public/images/languages/black/ruby.svg
index 294048eb075..24c3c30fc78 100644
--- a/server/sonar-web/public/images/languages/black/ruby.svg
+++ b/server/sonar-web/public/images/languages/black/ruby.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.118 42.001"><defs><style>.cls-1{fill:#8a8c8f}.cls-1,.cls-2,.cls-4,.cls-5{fill-rule:evenodd}.cls-2{fill:#2d3032}.cls-4{fill:#434447}.cls-5{fill:#636567}</style></defs><g id="Groupe_7548" data-name="Groupe 7548" transform="translate(-7202.253 -10496)"><g id="Groupe_7541" data-name="Groupe 7541" transform="translate(6622.253 8582)"><path id="polygon3282" class="cls-1" d="M64.427 59.18L40.38 73.459l31.136-2.113 2.4-31.4z" transform="translate(548.204 1882.542)"/><path id="polygon3293" class="cls-2" d="M150.175 119.121L147.5 100.65l-7.29 9.626z" transform="translate(469.596 1834.746)"/><path id="polygon3304" class="cls-2" d="M71.989 181.839L52.383 180.3l-11.513 3.633z" transform="translate(547.818 1772.028)"/><path id="polygon3319" class="cls-1" d="M19.22 137.975l4.9-16.045-10.778 2.3z" transform="translate(569.496 1817.99)"/><path id="polygon3334" class="cls-1" d="M75.734 80.792L71.227 63.14 58.33 75.229z" transform="translate(534.07 1864.282)"/><path id="polygon3349" class="cls-1" d="M135.586 27.427l-12.191-9.957L120 28.445z" transform="translate(485.509 1900.244)"/><path id="polygon3362" class="cls-1" d="M123.184.573l-7.17 3.962L111.49.52z" transform="translate(492.21 1913.59)"/><path id="polygon3375" class="cls-1" d="M0 113.624l3-5.478-2.426-6.526z" transform="translate(580 1833.982)"/><path id="path3377" d="M1.94 21.4l2.445 6.93 10.623-2.383 12.127-11.271 3.422-10.871L25.168 0l-9.162 3.429c-2.887 2.685-8.488 8-8.69 8.1S3.617 18.241 1.94 21.4z" transform="translate(578.473 1914)" fill="#fff" fill-rule="evenodd"/><path id="path3400" class="cls-4" d="M14.393 12.858c6.256-6.2 14.321-9.868 17.417-6.745s-.187 10.712-6.443 16.913S11.145 33.093 8.052 29.97s.085-10.911 6.341-17.112z" transform="translate(574.603 1910.081)"/><path id="path3413" class="cls-5" d="M41 137.756l4.86-16.1L62 126.845c-5.837 5.472-12.327 10.097-21 10.911z" transform="translate(547.716 1818.202)"/><path id="path3424" class="cls-4" d="M120.56 65.039l4.14 16.412c4.878-5.126 9.252-10.636 11.4-17.451z" transform="translate(485.068 1863.605)"/><path id="path3435" class="cls-5" d="M148.273 14.326c1.658-5 2.041-12.183-5.778-13.516l-6.416 3.544z" transform="translate(472.848 1913.362)"/><path id="path3437" class="cls-5" d="M0 138.348c.23 8.259 6.188 8.382 8.726 8.454L2.863 133.11z" transform="translate(580 1809.186)"/><path id="path3448" class="cls-5" d="M120.669 65.207c3.746 2.3 11.295 6.926 11.448 7.011.238.134 3.255-5.087 3.939-8.038z" transform="translate(484.983 1863.463)"/><path id="path3459" class="cls-4" d="M63.83 121.66l6.5 12.534a42.008 42.008 0 0 0 9.6-7.34z" transform="translate(529.739 1818.202)"/><path id="path3472" class="cls-4" d="M9.94 133.18l-.92 10.96c1.737 2.372 4.126 2.579 6.632 2.394-1.813-4.513-5.435-13.534-5.712-13.354z" transform="translate(572.898 1809.133)"/><path id="path3485" class="cls-4" d="M135.9 4.35l12.906 1.811c-.689-2.919-2.8-4.8-6.409-5.391z" transform="translate(472.989 1913.394)"/></g></g></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.118 67.71"><defs><style>.cls-2{fill:#8a8c8f}.cls-2,.cls-3,.cls-5,.cls-6{fill-rule:evenodd}.cls-3{fill:#2d3032}.cls-5{fill:#434447}.cls-6{fill:#636567}</style></defs><g id="Groupe_7557" data-name="Groupe 7557" transform="translate(-7465.253 -10496)"><path id="Tracé_11988" data-name="Tracé 11988" d="M16.881 7.549h-2V11h-1.135V2.469h2.824a3.343 3.343 0 0 1 2.218.656 2.361 2.361 0 0 1 .776 1.91 2.3 2.3 0 0 1-.431 1.389 2.571 2.571 0 0 1-1.2.885l2 3.621V11h-1.2zm-2-.92h1.729a1.952 1.952 0 0 0 1.329-.429 1.465 1.465 0 0 0 .5-1.16 1.543 1.543 0 0 0-.472-1.213 2 2 0 0 0-1.367-.432h-1.723zm10.008 3.744a2.3 2.3 0 0 1-1.857.744 1.971 1.971 0 0 1-1.544-.589 2.549 2.549 0 0 1-.536-1.743V4.66h1.084v4.1q0 1.441 1.172 1.441a1.623 1.623 0 0 0 1.652-.926V4.66h1.08V11h-1.032zM32.953 7.9a3.77 3.77 0 0 1-.668 2.335 2.134 2.134 0 0 1-1.793.882 2.21 2.21 0 0 1-1.857-.85l-.053.733h-1V2h1.088v3.357a2.2 2.2 0 0 1 1.811-.814 2.147 2.147 0 0 1 1.813.873 3.883 3.883 0 0 1 .659 2.391zm-1.084-.123a2.929 2.929 0 0 0-.428-1.711 1.416 1.416 0 0 0-1.23-.6 1.591 1.591 0 0 0-1.541 1V9.2a1.636 1.636 0 0 0 1.553 1 1.408 1.408 0 0 0 1.213-.6 3.115 3.115 0 0 0 .433-1.823zm4.459 1.635L37.8 4.66h1.16l-2.549 7.318q-.592 1.582-1.881 1.582l-.205-.018-.4-.076v-.879l.293.023a1.442 1.442 0 0 0 .858-.223 1.611 1.611 0 0 0 .507-.814l.24-.645-2.26-6.268h1.184z" transform="translate(7459.816 10550.149)" fill="#2e3032"/><g id="Groupe_7548" data-name="Groupe 7548" transform="translate(263)"><g id="Groupe_7541" data-name="Groupe 7541" transform="translate(6622.253 8582)"><path id="polygon3282" class="cls-2" d="M64.427 59.18L40.38 73.459l31.136-2.113 2.4-31.4z" transform="translate(548.204 1882.542)"/><path id="polygon3293" class="cls-3" d="M150.175 119.121L147.5 100.65l-7.29 9.626z" transform="translate(469.596 1834.746)"/><path id="polygon3304" class="cls-3" d="M71.989 181.839L52.383 180.3l-11.513 3.633z" transform="translate(547.818 1772.028)"/><path id="polygon3319" class="cls-2" d="M19.22 137.975l4.9-16.045-10.778 2.3z" transform="translate(569.496 1817.99)"/><path id="polygon3334" class="cls-2" d="M75.734 80.792L71.227 63.14 58.33 75.229z" transform="translate(534.07 1864.282)"/><path id="polygon3349" class="cls-2" d="M135.586 27.427l-12.191-9.957L120 28.445z" transform="translate(485.509 1900.244)"/><path id="polygon3362" class="cls-2" d="M123.184.573l-7.17 3.962L111.49.52z" transform="translate(492.21 1913.59)"/><path id="polygon3375" class="cls-2" d="M0 113.624l3-5.478-2.426-6.526z" transform="translate(580 1833.982)"/><path id="path3377" d="M1.94 21.4l2.445 6.93 10.623-2.383 12.127-11.271 3.422-10.871L25.168 0l-9.162 3.429c-2.887 2.685-8.488 8-8.69 8.1S3.617 18.241 1.94 21.4z" transform="translate(578.473 1914)" fill="#fff" fill-rule="evenodd"/><path id="path3400" class="cls-5" d="M14.393 12.858c6.256-6.2 14.321-9.868 17.417-6.745s-.187 10.712-6.443 16.913S11.145 33.093 8.052 29.97s.085-10.911 6.341-17.112z" transform="translate(574.603 1910.081)"/><path id="path3413" class="cls-6" d="M41 137.756l4.86-16.1L62 126.845c-5.837 5.472-12.327 10.097-21 10.911z" transform="translate(547.716 1818.202)"/><path id="path3424" class="cls-5" d="M120.56 65.039l4.14 16.412c4.878-5.126 9.252-10.636 11.4-17.451z" transform="translate(485.068 1863.605)"/><path id="path3435" class="cls-6" d="M148.273 14.326c1.658-5 2.041-12.183-5.778-13.516l-6.416 3.544z" transform="translate(472.848 1913.362)"/><path id="path3437" class="cls-6" d="M0 138.348c.23 8.259 6.188 8.382 8.726 8.454L2.863 133.11z" transform="translate(580 1809.186)"/><path id="path3448" class="cls-6" d="M120.669 65.207c3.746 2.3 11.295 6.926 11.448 7.011.238.134 3.255-5.087 3.939-8.038z" transform="translate(484.983 1863.463)"/><path id="path3459" class="cls-5" d="M63.83 121.66l6.5 12.534a42.008 42.008 0 0 0 9.6-7.34z" transform="translate(529.739 1818.202)"/><path id="path3472" class="cls-5" d="M9.94 133.18l-.92 10.96c1.737 2.372 4.126 2.579 6.632 2.394-1.813-4.513-5.435-13.534-5.712-13.354z" transform="translate(572.898 1809.133)"/><path id="path3485" class="cls-5" d="M135.9 4.35l12.906 1.811c-.689-2.919-2.8-4.8-6.409-5.391z" transform="translate(472.989 1913.394)"/></g></g></g></svg> \ No newline at end of file
diff --git a/server/sonar-web/public/images/languages/black/scala.svg b/server/sonar-web/public/images/languages/black/scala.svg
index b929274e43a..20254ded066 100644
--- a/server/sonar-web/public/images/languages/black/scala.svg
+++ b/server/sonar-web/public/images/languages/black/scala.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 64.732"><defs><style>.cls-1{fill:#676a71}.cls-2{fill:#2e3032}</style></defs><g transform="translate(-7665 -10721.268)"><g transform="translate(6585.924 8871.268)"><path id="path7" class="cls-1" d="M6.6-20s25.076 2.508 25.076 6.687v-10.03s0-4.179-25.076-6.687z" transform="translate(1074.403 1886.718)"/><path id="path14" class="cls-1" d="M6.6-.308S31.673 2.2 31.673 6.379V-3.652s0-4.179-25.076-6.687z" transform="translate(1074.403 1880.399)"/><path id="path21" class="cls-2" d="M31.673-39.877v10.03s0 4.179-25.076 6.687v-10.03s25.076-2.51 25.076-6.687" transform="translate(1074.403 1889.877)"/><path id="path28" class="cls-2" d="M6.6-13.5s25.076-2.508 25.076-6.687v10.03s0 4.179-25.076 6.687z" transform="translate(1074.403 1883.558)"/><path id="path35" class="cls-2" d="M6.6 16.225V6.195S31.673 3.687 31.673-.492v10.03s0 4.179-25.076 6.687" transform="translate(1074.403 1877.24)"/></g><text id="Scala" transform="translate(7665 10783)" font-size="12" font-family="Roboto-Regular,Roboto" fill="#2e3032"><tspan x="0" y="0">Scala</tspan></text></g></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28.242 61.85"><defs><style>.cls-1{fill:#676a71}.cls-2{fill:#2e3032}</style></defs><g id="Groupe_7554" data-name="Groupe 7554" transform="translate(-7665.469 -10721.268)"><g id="Groupe_7553" data-name="Groupe 7553" transform="translate(6585.924 8871.268)"><path id="path7" class="cls-1" d="M6.6-20s25.076 2.508 25.076 6.687v-10.03s0-4.179-25.076-6.687z" transform="translate(1074.403 1886.718)"/><path id="path14" class="cls-1" d="M6.6-.308S31.673 2.2 31.673 6.379V-3.652s0-4.179-25.076-6.687z" transform="translate(1074.403 1880.399)"/><path id="path21" class="cls-2" d="M31.673-39.877v10.03s0 4.179-25.076 6.687v-10.03s25.076-2.51 25.076-6.687" transform="translate(1074.403 1889.877)"/><path id="path28" class="cls-2" d="M6.6-13.5s25.076-2.508 25.076-6.687v10.03s0 4.179-25.076 6.687z" transform="translate(1074.403 1883.558)"/><path id="path35" class="cls-2" d="M6.6 16.225V6.195S31.673 3.687 31.673-.492v10.03s0 4.179-25.076 6.687" transform="translate(1074.403 1877.24)"/></g><path id="Tracé_11997" data-name="Tracé 11997" class="cls-2" d="M3.5-3.8a5.29 5.29 0 0 1-2.1-1.025 1.954 1.954 0 0 1-.659-1.5 2.064 2.064 0 0 1 .806-1.667 3.2 3.2 0 0 1 2.095-.659 3.5 3.5 0 0 1 1.567.34 2.577 2.577 0 0 1 1.066.938 2.4 2.4 0 0 1 .375 1.309H5.52a1.552 1.552 0 0 0-.493-1.216 2.006 2.006 0 0 0-1.389-.442 2.052 2.052 0 0 0-1.3.366 1.221 1.221 0 0 0-.463 1.016 1.1 1.1 0 0 0 .442.882 4.343 4.343 0 0 0 1.506.658 6.973 6.973 0 0 1 1.664.659 2.525 2.525 0 0 1 .891.841 2.146 2.146 0 0 1 .29 1.131 1.993 1.993 0 0 1-.809 1.662A3.448 3.448 0 0 1 3.7.117 4.01 4.01 0 0 1 2.057-.22a2.761 2.761 0 0 1-1.175-.923 2.252 2.252 0 0 1-.413-1.33H1.6a1.469 1.469 0 0 0 .571 1.222A2.4 2.4 0 0 0 3.7-.8a2.211 2.211 0 0 0 1.365-.363 1.18 1.18 0 0 0 .475-.99 1.158 1.158 0 0 0-.439-.97A5.066 5.066 0 0 0 3.5-3.8zm6.982 3.032a1.561 1.561 0 0 0 1.018-.351A1.237 1.237 0 0 0 11.977-2H13a1.966 1.966 0 0 1-.375 1.037 2.47 2.47 0 0 1-.923.785 2.663 2.663 0 0 1-1.222.293 2.612 2.612 0 0 1-2.06-.864 3.442 3.442 0 0 1-.765-2.364v-.182A3.817 3.817 0 0 1 8-4.939a2.588 2.588 0 0 1 .976-1.119 2.771 2.771 0 0 1 1.5-.4 2.543 2.543 0 0 1 1.772.639A2.283 2.283 0 0 1 13-4.16h-1.023a1.494 1.494 0 0 0-.466-1.011 1.449 1.449 0 0 0-1.034-.4 1.517 1.517 0 0 0-1.28.595 2.793 2.793 0 0 0-.454 1.72v.205a2.737 2.737 0 0 0 .451 1.688 1.524 1.524 0 0 0 1.288.595zM18.135 0a2.277 2.277 0 0 1-.152-.668 2.419 2.419 0 0 1-1.8.785 2.238 2.238 0 0 1-1.538-.53 1.716 1.716 0 0 1-.6-1.345 1.792 1.792 0 0 1 .747-1.542 3.55 3.55 0 0 1 2.118-.548h1.055v-.5a1.217 1.217 0 0 0-.34-.905 1.366 1.366 0 0 0-1-.337 1.581 1.581 0 0 0-.973.293.863.863 0 0 0-.393.709h-1.09A1.5 1.5 0 0 1 14.5-5.5a2.3 2.3 0 0 1 .914-.7 3.075 3.075 0 0 1 1.269-.258 2.506 2.506 0 0 1 1.717.548 1.976 1.976 0 0 1 .649 1.51v2.918a3.567 3.567 0 0 0 .223 1.389V0zm-1.8-.826a1.905 1.905 0 0 0 .965-.264 1.6 1.6 0 0 0 .662-.686v-1.3h-.85q-1.992 0-1.992 1.166a.987.987 0 0 0 .34.8 1.306 1.306 0 0 0 .876.284zM21.926 0h-1.084v-9h1.084zm5.648 0a2.277 2.277 0 0 1-.152-.668 2.419 2.419 0 0 1-1.8.785 2.238 2.238 0 0 1-1.538-.53 1.716 1.716 0 0 1-.6-1.345 1.792 1.792 0 0 1 .747-1.542 3.55 3.55 0 0 1 2.118-.548H27.4v-.5a1.217 1.217 0 0 0-.34-.905 1.366 1.366 0 0 0-1-.337 1.581 1.581 0 0 0-.973.293.863.863 0 0 0-.393.709h-1.09a1.5 1.5 0 0 1 .337-.917 2.3 2.3 0 0 1 .914-.7 3.075 3.075 0 0 1 1.269-.258 2.506 2.506 0 0 1 1.717.548 1.976 1.976 0 0 1 .647 1.515v2.918a3.567 3.567 0 0 0 .223 1.389V0zm-1.8-.826a1.905 1.905 0 0 0 .967-.264 1.6 1.6 0 0 0 .662-.686v-1.3h-.85q-1.992 0-1.992 1.166a.987.987 0 0 0 .34.8 1.306 1.306 0 0 0 .874.284z" transform="translate(7665 10783)"/></g></svg> \ No newline at end of file
diff --git a/server/sonar-web/public/images/languages/black/swift.svg b/server/sonar-web/public/images/languages/black/swift.svg
index 181535d6ac5..7a1fce2710f 100644
--- a/server/sonar-web/public/images/languages/black/swift.svg
+++ b/server/sonar-web/public/images/languages/black/swift.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 39.267 39.239"><g data-name="Groupe 7550"><g data-name="Groupe 6112"><path data-name="Tracé 10237" d="M8.722.003h21.854a8.693 8.693 0 0 1 8.691 8.691v21.853a8.693 8.693 0 0 1-8.691 8.691H8.722a8.693 8.693 0 0 1-8.691-8.691V8.694A8.693 8.693 0 0 1 8.722.003z" fill="#4a4d50"/><path data-name="Tracé 10238" d="M33.149 32.1s-1.523-2.539-4.064-2.539c-2.454 0-3.9 2.539-8.848 2.539-10.961 0-16.17-9.113-16.21-9.185L0 18.583V8.691A8.693 8.693 0 0 1 8.691 0h7.757l5.737 5.818c12.956 8.807 8.766 18.5 8.766 18.5s3.68 4.147 2.198 7.782z" fill="#2e3032"/><path data-name="Tracé 10239" d="M22.219 5.821c12.953 8.8 8.76 18.5 8.76 18.5s3.683 4.149 2.2 7.788c0 0-1.523-2.539-4.064-2.539-2.454 0-3.9 2.539-8.848 2.539-11 0-16.21-9.185-16.21-9.185 9.911 6.531 16.676 1.9 16.676 1.9-4.471-2.6-13.969-14.985-13.969-14.985 8.279 7.041 11.852 8.888 11.852 8.888-2.138-1.76-8.129-10.37-8.129-10.37 4.793 4.849 14.306 11.6 14.306 11.6 2.722-7.458-2.574-14.136-2.574-14.136z" fill="#fff"/></g></g></svg> \ No newline at end of file
+<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/black/ts.svg b/server/sonar-web/public/images/languages/black/ts.svg
index 52c8ac33823..a1bd7091a11 100644
--- a/server/sonar-web/public/images/languages/black/ts.svg
+++ b/server/sonar-web/public/images/languages/black/ts.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.671 24.133"><defs><style>.cls-1{fill:#2e3032}</style></defs><g id="Groupe_7542" data-name="Groupe 7542" transform="translate(-7035.248 -10407.063)"><path id="Tracé_10235" data-name="Tracé 10235" class="cls-1" d="M-52.485 419.507h-5.161v15.949h-2.092v-15.949H-64.9V417.6h12.369v1.906z" transform="translate(7100.148 9989.741)"/><path id="Tracé_10236" data-name="Tracé 10236" class="cls-1" d="M-30.757 422.394l-5.859 14.787c-1.069 2.65-2.511 3.952-4.417 3.952a5.723 5.723 0 0 1-1.348-.14v-1.813a3.958 3.958 0 0 0 1.209.232 2.5 2.5 0 0 0 2.325-1.86l1.023-2.418-4.976-12.74h2.278l3.441 9.811q.07.209.279.976h.093c.047-.186.139-.511.233-.93l3.627-9.858zm3.441 10.927h-.047v7.719h-2.046v-18.6h2.046v2.232h.047a4.895 4.895 0 0 1 4.417-2.557 4.672 4.672 0 0 1 3.859 1.72 7.063 7.063 0 0 1 1.395 4.6 7.893 7.893 0 0 1-1.534 5.115 5.249 5.249 0 0 1-4.278 1.906 4.307 4.307 0 0 1-3.859-2.135zm-.047-5.161v1.767a3.756 3.756 0 0 0 1.023 2.7 3.377 3.377 0 0 0 2.6 1.116 3.431 3.431 0 0 0 2.929-1.442 6.33 6.33 0 0 0 1.069-3.952 5.218 5.218 0 0 0-.971-3.349 3.271 3.271 0 0 0-2.65-1.209 3.636 3.636 0 0 0-2.883 1.255 4.492 4.492 0 0 0-1.116 3.114zm22.32 1.116h-9.021a4.806 4.806 0 0 0 1.162 3.3 3.892 3.892 0 0 0 3.022 1.162 6.1 6.1 0 0 0 3.954-1.438v1.9a7.256 7.256 0 0 1-4.464 1.209 5.307 5.307 0 0 1-4.231-1.72 7.147 7.147 0 0 1-1.534-4.882 6.954 6.954 0 0 1 1.674-4.836 5.346 5.346 0 0 1 4.185-1.86 4.754 4.754 0 0 1 3.859 1.627 6.62 6.62 0 0 1 1.348 4.51v1.023zm-2.092-1.721a4.116 4.116 0 0 0-.837-2.743 2.92 2.92 0 0 0-2.325-.976 3.3 3.3 0 0 0-2.464 1.023 5.034 5.034 0 0 0-1.255 2.7zm3.208 6.975v-1.395a7 7 0 0 0 3.906 1.209 4.751 4.751 0 0 0 3.162-.883 2.843 2.843 0 0 0 1.069-2.418 3.044 3.044 0 0 0-.744-2.185A13 13 0 0 0 .3 426.625a11.418 11.418 0 0 1-3.441-2.65 4.4 4.4 0 0 1-.744-2.464 4.2 4.2 0 0 1 1.493-3.211 5.589 5.589 0 0 1 3.906-1.3 9.714 9.714 0 0 1 3.208.558v1.3a8.311 8.311 0 0 0-3.348-.7 4.292 4.292 0 0 0-2.883.93 2.98 2.98 0 0 0-1.069 2.325 3.044 3.044 0 0 0 .744 2.185 13.229 13.229 0 0 0 3.162 2.185 10.95 10.95 0 0 1 3.348 2.517 4.118 4.118 0 0 1 .837 2.557 4.3 4.3 0 0 1-1.442 3.343 5.648 5.648 0 0 1-4.045 1.3 10 10 0 0 1-2.139-.279 12.45 12.45 0 0 1-1.813-.7zm20.227.047a6.577 6.577 0 0 1-3.394.883 5.44 5.44 0 0 1-4.185-1.767A6.76 6.76 0 0 1 7.14 429a6.973 6.973 0 0 1 1.813-4.975 6.009 6.009 0 0 1 4.6-1.953 6.77 6.77 0 0 1 2.836.6v1.3a5.692 5.692 0 0 0-3.022-.837 4.6 4.6 0 0 0-3.627 1.628 6.148 6.148 0 0 0-1.395 4.185 6.056 6.056 0 0 0 1.255 4 4.069 4.069 0 0 0 3.348 1.488 5.6 5.6 0 0 0 3.348-1.023v1.162zm7.719-10.977a2.216 2.216 0 0 0-1.348-.419 2.9 2.9 0 0 0-2.511 1.534 7.862 7.862 0 0 0-1.023 4.417v6h-1.116v-12.738h1.116v2.836h.046a4.532 4.532 0 0 1 1.395-2.278 3.172 3.172 0 0 1 2.185-.79 3.55 3.55 0 0 1 1.255.233v1.205zm1.953-4.417a.918.918 0 0 1-.651-.279.946.946 0 0 1-.279-.7.78.78 0 0 1 .279-.651.87.87 0 0 1 .651-.233 1.253 1.253 0 0 1 .7.233.844.844 0 0 1 .279.651.946.946 0 0 1-.279.7 1.025 1.025 0 0 1-.7.281zm-.558 16V422.44h1.162v12.741zm5.161-2.279h-.046v8.137h-1.162v-18.6h1.162v2.651h.046a5.079 5.079 0 0 1 4.743-2.93 4.678 4.678 0 0 1 3.813 1.674 6.916 6.916 0 0 1 1.348 4.557 7.867 7.867 0 0 1-1.581 5.161 5.008 5.008 0 0 1-4.138 1.953 4.591 4.591 0 0 1-4.185-2.6zm-.046-4.743v1.627a4.9 4.9 0 0 0 1.209 3.3 3.962 3.962 0 0 0 3.162 1.395 3.71 3.71 0 0 0 3.162-1.674 7.523 7.523 0 0 0 1.209-4.417 6 6 0 0 0-1.116-3.813 3.659 3.659 0 0 0-2.976-1.395 4.2 4.2 0 0 0-3.441 1.488 5.388 5.388 0 0 0-1.209 3.487zM47.594 435a4.028 4.028 0 0 1-1.674.418c-1.906 0-2.836-1.116-2.836-3.394v-8.556h-2.279v-1.07h2.278v-3.3c.186-.047.372-.14.558-.186s.372-.14.558-.186v3.72h3.348v1.069H44.2v8.416a3.3 3.3 0 0 0 .418 1.906 1.654 1.654 0 0 0 1.395.6 3.043 3.043 0 0 0 1.534-.465V435h.047z" transform="translate(7088.325 9990.063)"/></g></svg> \ No newline at end of file
+<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/black/tsql.svg b/server/sonar-web/public/images/languages/black/tsql.svg
new file mode 100644
index 00000000000..2cce17e6230
--- /dev/null
+++ b/server/sonar-web/public/images/languages/black/tsql.svg
@@ -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/black/vb.svg b/server/sonar-web/public/images/languages/black/vb.svg
index 391b6ea8faa..f0f10b9b2d2 100644
--- a/server/sonar-web/public/images/languages/black/vb.svg
+++ b/server/sonar-web/public/images/languages/black/vb.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 61.038 61.037"><defs><style>.cls-3{fill:#fff}</style></defs><g id="Groupe_7551" data-name="Groupe 7551" transform="translate(-7054.816 -10716.932)"><path id="Tracé_11982" data-name="Tracé 11982" d="M30.1 0A30.1 30.1 0 1 1 0 30.1 30.1 30.1 0 0 1 30.1 0z" transform="translate(7055.655 10716.932)" fill="#2e3032"/><path id="Tracé_10244" data-name="Tracé 10244" d="M9.184 9a30.1 30.1 0 1 0 42.5 42.5z" transform="translate(7055.708 10716.397)" fill="#4a4d50"/><path id="Tracé_10245" data-name="Tracé 10245" class="cls-3" d="M32 19.4l-8.738 23.7h-3.095l-8.6-23.7h3.095l6.584 18.812a11.165 11.165 0 0 1 .48 2.1h.066a10.346 10.346 0 0 1 .527-2.145l6.7-18.812z" transform="translate(7054.968 10715.782)"/><path id="Tracé_10246" data-name="Tracé 10246" class="cls-3" d="M36.92 43.1V19.4h6.744a7.374 7.374 0 0 1 4.872 1.5 4.863 4.863 0 0 1 1.806 3.922 5.766 5.766 0 0 1-1.119 3.5 5.888 5.888 0 0 1-3.01 2.116v.066a6.029 6.029 0 0 1 3.838 1.806 5.568 5.568 0 0 1 1.439 3.979 6.2 6.2 0 0 1-2.182 4.929 8.127 8.127 0 0 1-5.5 1.881zm2.822-21.2v7.656h2.822a5.4 5.4 0 0 0 3.565-1.129 3.828 3.828 0 0 0 1.307-3.1q0-3.452-4.543-3.452zm0 10.149v8.531H43.5a5.644 5.644 0 0 0 3.762-1.157 3.96 3.96 0 0 0 1.345-3.17q0-4.2-5.719-4.2z" transform="translate(7053.462 10715.78)"/></g></svg> \ No newline at end of file
+<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/black/xml.svg b/server/sonar-web/public/images/languages/black/xml.svg
index e776cd63c6b..c254525c637 100644
--- a/server/sonar-web/public/images/languages/black/xml.svg
+++ b/server/sonar-web/public/images/languages/black/xml.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67.044 16.212"><path data-name="Tracé 11996" d="M2.98 8.593l5.845 2.061v2.876L-.004 9.787v-2.42L8.828 3.62v2.871zm12.986-3.445l2.8-5.147h3.538l-4.348 7.4 4.459 7.529h-3.578l-2.871-5.229-2.872 5.229H9.516l4.46-7.526-4.348-7.4h3.538zM27.143 0l3.837 10.83L34.793 0h4.04v14.93h-3.087v-4.081l.308-7.044-4.03 11.125h-2.112l-4.02-11.115.308 7.034v4.081h-3.076V0zm16.612 12.459h6.532v2.471H40.68V0h3.076zm8.194 3.753h-2.2L55.24 0h2.2zm12.121-7.65L58.112 6.48V3.63l8.931 3.743v2.41l-8.931 3.753v-2.861z" fill="#2e3032"/></svg> \ No newline at end of file
+<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/languages/scala.svg b/server/sonar-web/public/images/languages/scala.svg
index e715103c82a..082b84533dd 100644
--- a/server/sonar-web/public/images/languages/scala.svg
+++ b/server/sonar-web/public/images/languages/scala.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 64.732"><defs><style>.cls-1{fill:#676a71}.cls-2{fill:#fff}</style></defs><g id="Groupe_7555" data-name="Groupe 7555" transform="translate(-1164 -1857.268)"><path id="path7" class="cls-1" d="M6.6-20s25.076 2.508 25.076 6.687v-10.03s0-4.179-25.076-6.687z" transform="translate(1159.327 1893.985)"/><path id="path14" class="cls-1" d="M6.6-.308S31.673 2.2 31.673 6.379V-3.652s0-4.179-25.076-6.687z" transform="translate(1159.327 1887.667)"/><path id="path21" class="cls-2" d="M31.673-39.877v10.03s0 4.179-25.076 6.687v-10.03s25.076-2.51 25.076-6.687" transform="translate(1159.327 1897.145)"/><path id="path28" class="cls-2" d="M6.6-13.5s25.076-2.508 25.076-6.687v10.03s0 4.179-25.076 6.687z" transform="translate(1159.327 1890.826)"/><path id="path35" class="cls-2" d="M6.6 16.225V6.195S31.673 3.687 31.673-.492v10.03s0 4.179-25.076 6.687" transform="translate(1159.327 1884.507)"/><text id="Scala" transform="translate(1164 1919)" font-size="12" font-family="Roboto-Regular,Roboto" fill="#fff"><tspan x="0" y="0">Scala</tspan></text></g></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 31.576 76.276"><defs><style>.cls-1{fill:#676a71}.cls-2{fill:#fff}</style></defs><g id="Groupe_7559" data-name="Groupe 7559" transform="translate(-1086.481 -1852.932)"><g id="Groupe_7552" data-name="Groupe 7552" transform="translate(6.422 2.932)"><path id="path7" class="cls-1" d="M6.6-18s30.079 3.008 30.079 8.021V-22.01s0-5.013-30.079-8.021z" transform="translate(1074.403 1888.052)"/><path id="path14" class="cls-1" d="M6.6 1.693S36.676 4.7 36.676 9.714V-2.317s0-5.013-30.079-8.021z" transform="translate(1074.403 1884.402)"/><path id="path21" class="cls-2" d="M36.676-39.877v12.032s0 5.013-30.079 8.021v-12.032s30.079-3.008 30.079-8.021" transform="translate(1074.403 1889.877)"/><path id="path28" class="cls-2" d="M6.6-12.164s30.079-3.008 30.079-8.021v12.032S36.676-3.14 6.6-.132z" transform="translate(1074.403 1886.227)"/><path id="path35" class="cls-2" d="M6.6 19.56V7.529S36.676 4.521 36.676-.492v12.031s0 5.013-30.079 8.021" transform="translate(1074.403 1882.576)"/></g><path id="Tracé_11998" data-name="Tracé 11998" class="cls-2" d="M6.383-6.565h1.17a3.272 3.272 0 0 0-.292-1.32 2.571 2.571 0 0 0-.729-.915 3 3 0 0 0-1.072-.534A4.96 4.96 0 0 0 4.134-9.5a4.761 4.761 0 0 0-1.241.163 3.414 3.414 0 0 0-1.079.494A2.5 2.5 0 0 0 1.053-8a2.459 2.459 0 0 0-.286 1.214 2.03 2.03 0 0 0 .254 1.06 2.055 2.055 0 0 0 .676.689 3.929 3.929 0 0 0 .955.429q.533.162 1.086.286l1.086.24a4.949 4.949 0 0 1 .956.306 1.863 1.863 0 0 1 .676.487 1.165 1.165 0 0 1 .253.78 1.518 1.518 0 0 1-.208.832 1.514 1.514 0 0 1-.546.513 2.47 2.47 0 0 1-.76.267 4.611 4.611 0 0 1-.839.078 3.968 3.968 0 0 1-1.014-.13 2.523 2.523 0 0 1-.865-.4 2.069 2.069 0 0 1-.6-.7 2.1 2.1 0 0 1-.227-1.008H.481a3.264 3.264 0 0 0 .305 1.465 2.8 2.8 0 0 0 .832 1.013 3.644 3.644 0 0 0 1.223.592 5.442 5.442 0 0 0 1.475.2A5.643 5.643 0 0 0 5.6.058a3.706 3.706 0 0 0 1.16-.48 2.728 2.728 0 0 0 .852-.858 2.331 2.331 0 0 0 .332-1.267 2.328 2.328 0 0 0-.253-1.144 2.258 2.258 0 0 0-.676-.754 3.58 3.58 0 0 0-.956-.475q-.534-.18-1.087-.306t-1.086-.24a5.684 5.684 0 0 1-.955-.279 1.88 1.88 0 0 1-.676-.436A.968.968 0 0 1 2-6.877a1.507 1.507 0 0 1 .175-.76 1.365 1.365 0 0 1 .468-.488 2.037 2.037 0 0 1 .67-.26 3.776 3.776 0 0 1 .767-.078 2.621 2.621 0 0 1 1.579.448 1.934 1.934 0 0 1 .724 1.45zm7.436 2h1.144a2.656 2.656 0 0 0-.312-1.035 2.307 2.307 0 0 0-.63-.721 2.612 2.612 0 0 0-.884-.422 4.062 4.062 0 0 0-1.072-.137 3.253 3.253 0 0 0-1.391.28 2.776 2.776 0 0 0-.994.767 3.262 3.262 0 0 0-.592 1.144 4.932 4.932 0 0 0-.195 1.411 4.529 4.529 0 0 0 .2 1.385 3.036 3.036 0 0 0 .6 1.086 2.635 2.635 0 0 0 .988.7A3.5 3.5 0 0 0 12.04.14a2.92 2.92 0 0 0 2.035-.676A3.1 3.1 0 0 0 15-2.457h-1.129a1.937 1.937 0 0 1-.566 1.209 1.808 1.808 0 0 1-1.281.429 1.83 1.83 0 0 1-.9-.208 1.745 1.745 0 0 1-.611-.552 2.439 2.439 0 0 1-.345-.786 3.738 3.738 0 0 1-.11-.91 4.572 4.572 0 0 1 .1-.981 2.461 2.461 0 0 1 .352-.844 1.784 1.784 0 0 1 .643-.585 2.06 2.06 0 0 1 1-.221 1.677 1.677 0 0 1 1.118.351 1.684 1.684 0 0 1 .548.992zm8.372 4.539a1.563 1.563 0 0 1-.791.169.951.951 0 0 1-.685-.243 1.045 1.045 0 0 1-.253-.787A2.644 2.644 0 0 1 19.4-.1a3.5 3.5 0 0 1-1.3.243 3.5 3.5 0 0 1-.865-.1 2.01 2.01 0 0 1-.708-.325 1.56 1.56 0 0 1-.474-.578 1.946 1.946 0 0 1-.175-.864 1.974 1.974 0 0 1 .195-.936 1.7 1.7 0 0 1 .514-.592 2.353 2.353 0 0 1 .728-.345q.41-.117.838-.195.455-.091.865-.137a4.816 4.816 0 0 0 .721-.13 1.2 1.2 0 0 0 .494-.247.6.6 0 0 0 .182-.475 1.1 1.1 0 0 0-.136-.585.936.936 0 0 0-.351-.338 1.427 1.427 0 0 0-.481-.156 3.632 3.632 0 0 0-.526-.039 2.337 2.337 0 0 0-1.17.266 1.131 1.131 0 0 0-.507 1.007h-1.1a2.387 2.387 0 0 1 .26-1.053 1.971 1.971 0 0 1 .624-.7 2.618 2.618 0 0 1 .89-.383 4.7 4.7 0 0 1 1.073-.117 6.291 6.291 0 0 1 .9.065 2.361 2.361 0 0 1 .813.266 1.558 1.558 0 0 1 .585.565 1.81 1.81 0 0 1 .221.949v3.458a2.586 2.586 0 0 0 .038.576q.045.182.306.182a1.094 1.094 0 0 0 .338-.065zM20.4-3.471a1.375 1.375 0 0 1-.546.227q-.338.072-.708.117t-.747.1a2.748 2.748 0 0 0-.676.189 1.23 1.23 0 0 0-.488.37 1.038 1.038 0 0 0-.188.657.9.9 0 0 0 .111.461.921.921 0 0 0 .286.306 1.2 1.2 0 0 0 .41.169 2.272 2.272 0 0 0 .494.052 2.618 2.618 0 0 0 .936-.15 1.969 1.969 0 0 0 .637-.377 1.487 1.487 0 0 0 .364-.494 1.249 1.249 0 0 0 .117-.5zm2.886-5.811V0h1.105v-9.282zm8.772 9.256a1.563 1.563 0 0 1-.793.169.951.951 0 0 1-.683-.243 1.045 1.045 0 0 1-.253-.787 2.644 2.644 0 0 1-1.06.787 3.5 3.5 0 0 1-1.306.241 3.5 3.5 0 0 1-.865-.1 2.01 2.01 0 0 1-.708-.325 1.56 1.56 0 0 1-.475-.578 1.946 1.946 0 0 1-.175-.864 1.974 1.974 0 0 1 .195-.936 1.7 1.7 0 0 1 .514-.592 2.353 2.353 0 0 1 .728-.345q.409-.117.838-.195.455-.091.865-.137a4.816 4.816 0 0 0 .722-.13 1.2 1.2 0 0 0 .494-.247.6.6 0 0 0 .182-.475 1.1 1.1 0 0 0-.137-.585.936.936 0 0 0-.351-.338 1.427 1.427 0 0 0-.481-.156 3.632 3.632 0 0 0-.526-.039 2.337 2.337 0 0 0-1.17.266 1.131 1.131 0 0 0-.513 1.007H26a2.387 2.387 0 0 1 .26-1.053 1.971 1.971 0 0 1 .624-.7 2.618 2.618 0 0 1 .891-.383 4.7 4.7 0 0 1 1.073-.117 6.291 6.291 0 0 1 .9.065 2.361 2.361 0 0 1 .813.266 1.558 1.558 0 0 1 .585.565 1.81 1.81 0 0 1 .221.949v3.458a2.586 2.586 0 0 0 .047.578q.045.182.306.182a1.094 1.094 0 0 0 .338-.065zm-1.794-3.445a1.375 1.375 0 0 1-.546.227q-.338.072-.708.117t-.747.1a2.748 2.748 0 0 0-.676.189 1.23 1.23 0 0 0-.487.37 1.038 1.038 0 0 0-.188.657.9.9 0 0 0 .111.461.921.921 0 0 0 .286.306 1.2 1.2 0 0 0 .41.169 2.272 2.272 0 0 0 .494.052 2.618 2.618 0 0 0 .936-.15 1.969 1.969 0 0 0 .637-.377 1.487 1.487 0 0 0 .364-.494 1.249 1.249 0 0 0 .117-.5z" transform="translate(1086 1929)"/></g></svg> \ No newline at end of file
diff --git a/server/sonar-web/public/json/homepage.json b/server/sonar-web/public/json/homepage.json
deleted file mode 100644
index edeca526f73..00000000000
--- a/server/sonar-web/public/json/homepage.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- "generatedAt": "2018-10-14T19:13:28Z",
- "publicProjects": 236,
- "publicLoc": 12345,
- "rules": 1234,
- "newPullRequests7d": 300,
- "featuredProjects": [
- {
- "key": "sonarsource-jfrog.simple-js-php-project",
- "avatarUrl": null,
- "organizationKey": "sonarsource-jfrog",
- "organizationName": "SonarSource & JFrog",
- "name": "Simple JS & PHP project",
- "bugs": 0,
- "codeSmells": 7,
- "coverage": 9.7,
- "duplications": 56.2,
- "gateStatus": "OK",
- "languages": ["js", "php"],
- "maintainabilityRating": 1,
- "ncloc": 324,
- "reliabilityRating": 1,
- "securityRating": 1,
- "vulnerabilities": 0
- },
- {
- "key": "example-js",
- "avatarUrl": null,
- "organizationKey": "autoscan",
- "organizationName": "AutoScan",
- "name": "example-js",
- "bugs": 13,
- "codeSmells": 5,
- "coverage": 0,
- "duplications": 0,
- "gateStatus": "OK",
- "languages": ["go", "js", "php", "py"],
- "maintainabilityRating": 1,
- "ncloc": 80,
- "reliabilityRating": 1,
- "securityRating": 1,
- "vulnerabilities": 0
- },
- {
- "key": "example-js-2",
- "avatarUrl": null,
- "organizationKey": "autoscan",
- "organizationName": "AutoScan",
- "name": "example-js",
- "bugs": 13,
- "codeSmells": 5,
- "coverage": 0,
- "duplications": 0,
- "gateStatus": "OK",
- "languages": ["go", "js", "php", "py"],
- "maintainabilityRating": 1,
- "ncloc": 80,
- "reliabilityRating": 1,
- "securityRating": 1,
- "vulnerabilities": 0
- },
- {
- "key": "example-js-3",
- "avatarUrl": null,
- "organizationKey": "autoscan",
- "organizationName": "AutoScan",
- "name": "example-js",
- "bugs": 13,
- "codeSmells": 5,
- "coverage": 0,
- "duplications": 0,
- "gateStatus": "OK",
- "languages": ["go", "js", "php", "py"],
- "maintainabilityRating": 1,
- "ncloc": 80,
- "reliabilityRating": 1,
- "securityRating": 1,
- "vulnerabilities": 0
- },
- {
- "key": "example-js-4",
- "avatarUrl": null,
- "organizationKey": "autoscan",
- "organizationName": "AutoScan",
- "name": "example-js",
- "bugs": 13,
- "codeSmells": 5,
- "coverage": 0,
- "duplications": 0,
- "gateStatus": "OK",
- "languages": ["go", "js", "php", "py"],
- "maintainabilityRating": 1,
- "ncloc": 80,
- "reliabilityRating": 1,
- "securityRating": 1,
- "vulnerabilities": 0
- },
- {
- "key": "example-js-5",
- "avatarUrl": null,
- "organizationKey": "autoscan",
- "organizationName": "AutoScan",
- "name": "example-js",
- "bugs": 13,
- "codeSmells": 5,
- "coverage": 0,
- "duplications": 0,
- "gateStatus": "OK",
- "languages": ["go", "js", "php", "py"],
- "maintainabilityRating": 1,
- "ncloc": 80,
- "reliabilityRating": "E",
- "securityRating": 1,
- "vulnerabilities": 0
- }
- ]
-}
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/AsAService.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/AsAService.tsx
index ed1cef669bd..c113f0f46e0 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/AsAService.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/AsAService.tsx
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import Helmet from 'react-helmet';
import SQPageContainer from './components/SQPageContainer';
import SQStartUsing from './components/SQStartUsing';
import SQTopNav from './components/SQTopNav';
@@ -30,6 +31,12 @@ export default function AsAService() {
<SQPageContainer>
{({ currentUser }) => (
<div className="page page-limited sc-page">
+ <Helmet title="Get started with SonarQube as a Service | SonarCloud">
+ <meta
+ content="Analyze your code with just a few clicks. Immediate access to the latest features and functionality. You use the service and we take care of the rest."
+ name="description"
+ />
+ </Helmet>
<SQTopNav />
<div className="sc-child-header">
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/AzureDevOps.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/AzureDevOps.tsx
index 44675703456..783eba0868d 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/AzureDevOps.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/AzureDevOps.tsx
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import Helmet from 'react-helmet';
import { Link } from 'react-router';
import SQPageContainer from './components/SQPageContainer';
import { isLoggedIn } from '../../../app/types';
@@ -29,6 +30,12 @@ export default function AzureDevOps() {
<SQPageContainer>
{({ currentUser }) => (
<div className="page page-limited sc-page">
+ <Helmet title="Continuous Code Quality in Azure Devops | SonarCloud">
+ <meta
+ content="Enhance Azure DevOps with continuous code quality and automatically analyze branches and decorate pull requests."
+ name="description"
+ />
+ </Helmet>
<ul className="sc-top-nav">
<li className="sc-top-nav-item">
<Link className="sc-top-nav-link" to="/about/sq">
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/BranchAnalysis.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/BranchAnalysis.tsx
index 77067360585..54e8e2214cf 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/BranchAnalysis.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/BranchAnalysis.tsx
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import Helmet from 'react-helmet';
import SQPageContainer from './components/SQPageContainer';
import SQStartUsing from './components/SQStartUsing';
import SQTopNav from './components/SQTopNav';
@@ -30,6 +31,12 @@ export default function BranchAnalysis() {
<SQPageContainer>
{({ currentUser }) => (
<div className="page page-limited sc-page">
+ <Helmet title="Pull requests analysis in Github, BitBucket and Azure DevOps | SonarCloud">
+ <meta
+ content="SonarCloud automatically analyzes branches and decorates pull requests with Github, BitBucket and Azure DevOps."
+ name="description"
+ />
+ </Helmet>
<SQTopNav />
<div className="sc-child-header">
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/Contact.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/Contact.tsx
index 59d084dfe9d..65c70964eb8 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/Contact.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/Contact.tsx
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import { Helmet } from 'react-helmet';
import { Link } from 'react-router';
import { Location } from 'history';
import SQPageContainer from './components/SQPageContainer';
@@ -83,6 +84,12 @@ export default class Contact extends React.PureComponent<Props, State> {
<SQPageContainer>
{({ currentUser, userOrganizations }) => (
<div className="page page-limited sc-page sc-contact-page">
+ <Helmet title="Contact Us | SonarCloud">
+ <meta
+ content="If you are looking for help with SonarCloud, our Support forum is the best place to get help."
+ name="description"
+ />
+ </Helmet>
<h1 className="sc-page-title">Contact us</h1>
<Alert display="inline" variant="warning">
If you are looking for help with SonarCloud, our{' '}
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
index 85995640969..76fb85d2770 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/Pricing.tsx
@@ -59,7 +59,7 @@ export default class Pricing extends React.PureComponent {
<div className="global-container">
<div className="page-wrapper">
<div className="page-container sc-page">
- <Helmet title="SonarCloud | Plans and Pricing">
+ <Helmet title="Plans and Pricing | SonarCloud">
<meta
content="Get all the SonarCloud features and functionality for free on your open-source projects. If you need privacy for your code, we have a pricing plan to fit your needs."
name="description"
@@ -176,7 +176,7 @@ function PricingFAQ({ getReference }: PricingFAQProps) {
code to be analyzed in your organization.
<br />
<br />
- Find you max LOC below to see what it will cost you per month:
+ Find your max LOC below to see what it will cost you per month:
</p>
<table className="loc-price sc-big-spacer-bottom">
<thead>
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
index 6ae93655a54..3f085d60410 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/SQHome.tsx
@@ -19,6 +19,7 @@
*/
import * as React from 'react';
import { Link } from 'react-router';
+import Helmet from 'react-helmet';
import LoginButtons from './components/LoginButtons';
import Pricing from './components/Pricing';
import SQPageContainer from './components/SQPageContainer';
@@ -32,6 +33,12 @@ export default function SQHome() {
<SQPageContainer>
{({ currentUser }) => (
<div className="page sc-page sc-sq-page">
+ <Helmet title="Use SonarQube as a Service, sign up for SonarCloud | SonarCloud">
+ <meta
+ content="Enhance your workflow with continuous code quality, SonarCloud automatically analyzes and decorates pull requests on GitHub, Bitbucket and Azure DevOps on major languages."
+ name="description"
+ />
+ </Helmet>
<Jumbotron />
<h2 className="sc-sq-header2">You use the service, we take care of the rest</h2>
@@ -103,7 +110,7 @@ function Features() {
height="34"
src={`${getBaseUrl()}/images/sonarcloud/branch-analysis.svg`}
/>
- <h3 className="sc-feature-title">Branch & pull request analysis</h3>
+ <h3 className="sc-feature-title">Branch &amp; 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.
@@ -138,7 +145,7 @@ function Features() {
function Languages() {
return (
<div className="sc-languages">
- <h3 className="sc-feature-title">On 17 programming languages</h3>
+ <h3 className="sc-feature-title">On 21 programming languages</h3>
<ul className="sc-languages-list">
<li>
<img
@@ -168,7 +175,7 @@ function Languages() {
<img
alt="C#"
height="60"
- src={`${getBaseUrl()}/images/languages/black/csharp.svg`}
+ src={`${getBaseUrl()}/images/languages/black/c-sharp.svg`}
width="60"
/>
</li>
@@ -176,7 +183,7 @@ function Languages() {
<img
alt="C++"
height="60"
- src={`${getBaseUrl()}/images/languages/black/c-c-plus-plus.svg`}
+ src={`${getBaseUrl()}/images/languages/black/c-plus.svg`}
width="60"
/>
</li>
@@ -216,9 +223,17 @@ function Languages() {
</li>
<li>
<img
+ alt="Kotlin"
+ height="60"
+ src={`${getBaseUrl()}/images/languages/black/kotlin.svg`}
+ width="60"
+ />
+ </li>
+ <li>
+ <img
alt="Flex"
height="60"
- src={`${getBaseUrl()}/images/languages/black/flex@2x.png`}
+ src={`${getBaseUrl()}/images/languages/black/flex.png`}
width="85"
/>
</li>
@@ -240,20 +255,30 @@ function Languages() {
</li>
<li>
<img
- alt="Scala"
+ alt="Ruby"
height="60"
- src={`${getBaseUrl()}/images/languages/black/scala.svg`}
+ src={`${getBaseUrl()}/images/languages/black/ruby.svg`}
width="60"
/>
</li>
<li>
<img
+ alt="Scala"
+ height="57"
+ src={`${getBaseUrl()}/images/languages/black/scala.svg`}
+ width="57"
+ />
+ </li>
+ <li>
+ <img
alt="Swift"
height="60"
src={`${getBaseUrl()}/images/languages/black/swift.svg`}
width="60"
/>
</li>
+ </ul>
+ <ul className="sc-languages-list">
<li>
<img
alt="Objective-C"
@@ -266,7 +291,7 @@ function Languages() {
<img
alt="T-SQL"
height="60"
- src={`${getBaseUrl()}/images/languages/black/t-sql.svg`}
+ src={`${getBaseUrl()}/images/languages/black/tsql.svg`}
width="60"
/>
</li>
@@ -274,7 +299,7 @@ function Languages() {
<img
alt="PL/SQL"
height="60"
- src={`${getBaseUrl()}/images/languages/black/pl-sql.svg`}
+ src={`${getBaseUrl()}/images/languages/black/plsql.svg`}
width="60"
/>
</li>
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/SonarLintIntegration.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/SonarLintIntegration.tsx
index d3c6eba303a..98510d622fa 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/SonarLintIntegration.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/SonarLintIntegration.tsx
@@ -18,6 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
+import Helmet from 'react-helmet';
import SQPageContainer from './components/SQPageContainer';
import SQStartUsing from './components/SQStartUsing';
import SQTopNav from './components/SQTopNav';
@@ -30,6 +31,12 @@ export default function SonarLintIntegration() {
<SQPageContainer>
{({ currentUser }) => (
<div className="page page-limited sc-page">
+ <Helmet title="Enhance SonarCloud experience with SonarLint | SonarCloud">
+ <meta
+ content="SonarLint connected teams are efficient, consistent and get more value. Connect SonarCloud with SonarLint and share consistent rulesets and analysis settings in everyone’s IDE."
+ name="description"
+ />
+ </Helmet>
<SQTopNav />
<div className="sc-child-header">
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/__tests__/__snapshots__/Home-test.tsx.snap b/server/sonar-web/src/main/js/apps/about/sonarcloud/__tests__/__snapshots__/Home-test.tsx.snap
index a8130a62361..896408062be 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/__tests__/__snapshots__/Home-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/__tests__/__snapshots__/Home-test.tsx.snap
@@ -638,7 +638,7 @@ exports[`should render 8`] = `
Come join the fun, it’s entirely free for open-source projects!
</h6>
<div
- className="sc-big-spacer-bottom"
+ className="sc-spacer-bottom"
>
<LoginButtons />
</div>
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/components/Languages.tsx b/server/sonar-web/src/main/js/apps/about/sonarcloud/components/Languages.tsx
index e5715c35fe7..cc61f60f161 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/components/Languages.tsx
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/components/Languages.tsx
@@ -41,7 +41,7 @@ const LANGUAGES = [
{ name: 'HTML', file: 'html5.svg', width: 40 },
{ name: 'Objective-C', file: 'obj-c.svg', width: 60 },
{ name: 'PHP', file: 'php.svg', width: 57 },
- { name: 'Scala', file: 'scala.svg', width: 30 },
+ { name: 'Scala', file: 'scala.svg', width: 29 },
{ name: 'Swift', file: 'swift.svg', width: 40 },
{ name: 'T-SQL', file: 't-sql.svg', width: 53 },
{ name: 'PL/SQL', file: 'pl-sql.svg', width: 65 },
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/components/NavBars.css b/server/sonar-web/src/main/js/apps/about/sonarcloud/components/NavBars.css
index fbdc380092e..14105074ab5 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/components/NavBars.css
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/components/NavBars.css
@@ -94,6 +94,7 @@
border: 1px solid var(--sonarcloudBlack800);
padding: 0 10px;
border-radius: 3px;
+ transition: all 0.2s ease;
}
.top-navbar ul li.outline a {
@@ -114,6 +115,8 @@
.top-navbar ul li.outline a:hover,
.navbar ul li.outline a:hover {
border-bottom-width: 1px;
+ background: var(--sonarcloudOrange500);
+ color: #fff;
}
.top-navbar ul li.outline:hover a {
diff --git a/server/sonar-web/src/main/js/apps/about/sonarcloud/new_style.css b/server/sonar-web/src/main/js/apps/about/sonarcloud/new_style.css
index de8f54c774b..655a91f445b 100644
--- a/server/sonar-web/src/main/js/apps/about/sonarcloud/new_style.css
+++ b/server/sonar-web/src/main/js/apps/about/sonarcloud/new_style.css
@@ -372,6 +372,7 @@ a.sc-orange-button {
height: 44px;
line-height: 44px;
box-shadow: none;
+ border-bottom: none !important;
}
a.sc-orange-button:hover {