Browse Source

SONAR-10673 Stop using font for icons (#252)

tags/7.5
Stas Vilchik 6 years ago
parent
commit
fbe1259e4a
100 changed files with 421 additions and 1106 deletions
  1. 1
    2
      server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/RuleDetails.java
  2. 0
    1
      server/sonar-server/src/test/java/org/sonar/server/authentication/UserSessionInitializerTest.java
  3. 1
    1
      server/sonar-vsts/src/main/js/components/SonarCloudIcon.tsx
  4. BIN
      server/sonar-web/public/fonts/sonar-5.2.eot
  5. 0
    89
      server/sonar-web/public/fonts/sonar-5.2.svg
  6. BIN
      server/sonar-web/public/fonts/sonar-5.2.ttf
  7. BIN
      server/sonar-web/public/fonts/sonar-5.2.woff
  8. 0
    1
      server/sonar-web/scripts/start.js
  9. 2
    1
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx
  10. 1
    1
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNavHeader.tsx
  11. 3
    2
      server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx
  12. 6
    6
      server/sonar-web/src/main/js/app/components/nav/component/__tests__/__snapshots__/ComponentNavBranch-test.tsx.snap
  13. 2
    1
      server/sonar-web/src/main/js/app/components/nav/global/GlobalNavMenu.tsx
  14. 6
    3
      server/sonar-web/src/main/js/app/components/nav/settings/SettingsNav.tsx
  15. 1
    1
      server/sonar-web/src/main/js/app/components/search/SearchResult.js
  16. 0
    5
      server/sonar-web/src/main/js/app/styles/components/boxed-group.css
  17. 4
    63
      server/sonar-web/src/main/js/app/styles/components/issues.css
  18. 7
    7
      server/sonar-web/src/main/js/app/styles/components/ui.css
  19. 0
    368
      server/sonar-web/src/main/js/app/styles/init/icons.css
  20. 12
    2
      server/sonar-web/src/main/js/app/utils/exposeLibraries.ts
  21. 11
    10
      server/sonar-web/src/main/js/apps/about/components/AboutStandards.js
  22. 2
    1
      server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx
  23. 1
    1
      server/sonar-web/src/main/js/apps/background-tasks/components/TaskComponent.tsx
  24. 1
    1
      server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx
  25. 2
    6
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx
  26. 19
    15
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx
  27. 14
    6
      server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx
  28. 7
    4
      server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx
  29. 3
    1
      server/sonar-web/src/main/js/apps/coding-rules/components/TagFacet.tsx
  30. 0
    12
      server/sonar-web/src/main/js/apps/coding-rules/styles.css
  31. 2
    2
      server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.js
  32. 3
    3
      server/sonar-web/src/main/js/apps/component-measures/components/__tests__/__snapshots__/MeasureHeader-test.js.snap
  33. 2
    2
      server/sonar-web/src/main/js/apps/issues/components/App.tsx
  34. 1
    1
      server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx
  35. 1
    1
      server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx
  36. 1
    1
      server/sonar-web/src/main/js/apps/issues/sidebar/ModuleFacet.tsx
  37. 1
    1
      server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
  38. 2
    9
      server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx
  39. 3
    1
      server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
  40. 4
    1
      server/sonar-web/src/main/js/apps/marketplace/components/PluginChangeLogButton.tsx
  41. 3
    1
      server/sonar-web/src/main/js/apps/organizations/navigation/OrganizationNavigationHeader.tsx
  42. 1
    1
      server/sonar-web/src/main/js/apps/organizations/navigation/__tests__/__snapshots__/OrganizationNavigationHeader-test.tsx.snap
  43. 4
    12
      server/sonar-web/src/main/js/apps/overview/meta/MetaLink.tsx
  44. 12
    40
      server/sonar-web/src/main/js/apps/overview/meta/__tests__/__snapshots__/MetaLink-test.tsx.snap
  45. 1
    1
      server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx
  46. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/HistoryButtonLink.tsx
  47. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/WorstProjects.tsx
  48. 1
    1
      server/sonar-web/src/main/js/apps/portfolio/components/__tests__/__snapshots__/HistoryButtonLink-test.tsx.snap
  49. 1
    1
      server/sonar-web/src/main/js/apps/project-admin/key/FineGrainedUpdate.js
  50. 15
    35
      server/sonar-web/src/main/js/apps/project-admin/links/LinkRow.tsx
  51. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx
  52. 1
    1
      server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
  53. 1
    3
      server/sonar-web/src/main/js/apps/quality-profiles/changelog/Changelog.tsx
  54. 1
    1
      server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx
  55. 5
    6
      server/sonar-web/src/main/js/apps/quality-profiles/compare/__tests__/ComparisonResults-test.tsx
  56. 1
    1
      server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileProjects.tsx
  57. 6
    2
      server/sonar-web/src/main/js/apps/settings/components/inputs/InputForPassword.js
  58. 1
    1
      server/sonar-web/src/main/js/apps/settings/components/inputs/__tests__/InputForPassword-test.js
  59. 2
    1
      server/sonar-web/src/main/js/apps/system/components/PageActions.tsx
  60. 4
    4
      server/sonar-web/src/main/js/apps/system/components/__tests__/__snapshots__/PageActions-test.tsx.snap
  61. 23
    13
      server/sonar-web/src/main/js/apps/system/components/info-items/__tests__/__snapshots__/SysInfoItem-test.tsx.snap
  62. 3
    8
      server/sonar-web/src/main/js/apps/system/components/system-upgrade/SystemUpgradeIntermediate.tsx
  63. 6
    4
      server/sonar-web/src/main/js/apps/system/components/system-upgrade/__tests__/__snapshots__/SystemUpgradeIntermediate-test.tsx.snap
  64. 1
    1
      server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx
  65. 1
    1
      server/sonar-web/src/main/js/components/SourceViewer/components/CoveragePopup.tsx
  66. 1
    1
      server/sonar-web/src/main/js/components/SourceViewer/components/DuplicationPopup.tsx
  67. 1
    1
      server/sonar-web/src/main/js/components/SourceViewer/components/LineIssuesIndicator.tsx
  68. 4
    3
      server/sonar-web/src/main/js/components/SourceViewer/components/MeasuresOverlay.tsx
  69. 1
    1
      server/sonar-web/src/main/js/components/SourceViewer/components/MeasuresOverlayTestCase.tsx
  70. 3
    2
      server/sonar-web/src/main/js/components/controls/ActionsDropdown.tsx
  71. 7
    5
      server/sonar-web/src/main/js/components/controls/GlobalMessages.tsx
  72. 5
    12
      server/sonar-web/src/main/js/components/icons-components/AlertErrorIcon.tsx
  73. 5
    12
      server/sonar-web/src/main/js/components/icons-components/AlertSuccessIcon.tsx
  74. 5
    12
      server/sonar-web/src/main/js/components/icons-components/AlertWarnIcon.tsx
  75. 1
    1
      server/sonar-web/src/main/js/components/icons-components/BranchIcon.tsx
  76. 5
    12
      server/sonar-web/src/main/js/components/icons-components/BubblesIcon.tsx
  77. 5
    12
      server/sonar-web/src/main/js/components/icons-components/BugIcon.tsx
  78. 4
    11
      server/sonar-web/src/main/js/components/icons-components/BugTrackerIcon.tsx
  79. 5
    12
      server/sonar-web/src/main/js/components/icons-components/BulletListIcon.tsx
  80. 4
    11
      server/sonar-web/src/main/js/components/icons-components/CalendarIcon.tsx
  81. 5
    16
      server/sonar-web/src/main/js/components/icons-components/ChartLegendIcon.tsx
  82. 6
    13
      server/sonar-web/src/main/js/components/icons-components/CheckIcon.tsx
  83. 5
    16
      server/sonar-web/src/main/js/components/icons-components/ChevronDownIcon.tsx
  84. 5
    16
      server/sonar-web/src/main/js/components/icons-components/ChevronLeftIcon.tsx
  85. 5
    16
      server/sonar-web/src/main/js/components/icons-components/ChevronRightcon.tsx
  86. 5
    12
      server/sonar-web/src/main/js/components/icons-components/ChevronUpIcon.tsx
  87. 5
    12
      server/sonar-web/src/main/js/components/icons-components/ClearIcon.tsx
  88. 3
    10
      server/sonar-web/src/main/js/components/icons-components/ClockIcon.tsx
  89. 5
    10
      server/sonar-web/src/main/js/components/icons-components/CodeSmellIcon.tsx
  90. 4
    11
      server/sonar-web/src/main/js/components/icons-components/CollapseIcon.tsx
  91. 36
    0
      server/sonar-web/src/main/js/components/icons-components/ContinuousIntegrationIcon.tsx
  92. 1
    1
      server/sonar-web/src/main/js/components/icons-components/DeleteIcon.tsx
  93. 5
    12
      server/sonar-web/src/main/js/components/icons-components/DetachIcon.tsx
  94. 19
    14
      server/sonar-web/src/main/js/components/icons-components/DropdownIcon.tsx
  95. 5
    12
      server/sonar-web/src/main/js/components/icons-components/EditIcon.tsx
  96. 10
    14
      server/sonar-web/src/main/js/components/icons-components/EllipsisIcon.tsx
  97. 4
    11
      server/sonar-web/src/main/js/components/icons-components/ExpandIcon.tsx
  98. 6
    16
      server/sonar-web/src/main/js/components/icons-components/FavoriteIcon.tsx
  99. 8
    11
      server/sonar-web/src/main/js/components/icons-components/FilterIcon.tsx
  100. 0
    0
      server/sonar-web/src/main/js/components/icons-components/GroupIcon.tsx

+ 1
- 2
server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/RuleDetails.java View File

@@ -21,7 +21,6 @@ package org.sonarqube.qa.util.pageobjects;

import com.codeborne.selenide.Condition;
import com.codeborne.selenide.SelenideElement;
import java.util.Locale;

import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Condition.visible;
@@ -153,7 +152,7 @@ public class RuleDetails {
}

public RuleDetails activationShouldHaveSeverity(String profileKey, String severity) {
getActiveProfileElement(profileKey).$(".coding-rules-detail-quality-profile-severity .icon-severity-" + severity.toLowerCase(Locale.ENGLISH)).shouldBe(visible);
getActiveProfileElement(profileKey).$(".coding-rules-detail-quality-profile-severity").shouldHave(text(severity));
return this;
}


+ 0
- 1
server/sonar-server/src/test/java/org/sonar/server/authentication/UserSessionInitializerTest.java View File

@@ -107,7 +107,6 @@ public class UserSessionInitializerTest {

// exclude static resources
assertPathIsIgnored("/css/style.css");
assertPathIsIgnored("/fonts/font.ttf");
assertPathIsIgnored("/images/logo.png");
assertPathIsIgnored("/js/jquery.js");
}

+ 1
- 1
server/sonar-vsts/src/main/js/components/SonarCloudIcon.tsx View File

@@ -18,7 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from '../../../../../sonar-web/src/main/js/components/icons-components/types';
import { IconProps } from '../../../../../sonar-web/src/main/js/components/icons-components/Icon';

export default function SonarCloudIcon({ className, fill = '#f3702a', size = 18 }: IconProps) {
return (

BIN
server/sonar-web/public/fonts/sonar-5.2.eot View File


+ 0
- 89
server/sonar-web/public/fonts/sonar-5.2.svg View File

@@ -1,89 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M876.494 0h-729.004c-46.040 0-83.49 37.526-83.49 83.538v409.238c0 46.014 37.45 83.224 83.49 83.224h729.006c46.054 0 83.504-37.21 83.504-83.224v-409.238c0-46.012-37.45-83.538-83.506-83.538zM147.462 510c-10.666 0-19.462-7.836-19.462-18.494v-407.238c0-10.66 8.798-20.268 19.462-20.268h729.032c10.638 0 19.506 9.608 19.506 20.268v407.238c0 10.658-8.868 18.494-19.506 18.494h-729.032zM192 610v18.826c0 5.808 4.522 11.174 10.306 11.174h619.384c5.784 0 10.308-5.366 10.308-11.174v-18.826h64v20.826c0 41.16-33.13 73.174-74.308 73.174h-619.384c-41.148 0-74.306-32.014-74.306-73.174v-20.826h64zM256 740v25.844c0 0.658 1.262 2.156 1.934 2.156h508.078c0.684 0 1.988-1.498 1.988-2.156v-25.844h64v27.844c0 36.012-27.938 64.156-63.988 64.156h-512.078c-36.050 0-63.934-28.144-63.934-64.156v-27.844h64z" />
<glyph unicode="&#xe601;" d="M773.849 709.681c11.878-11.877 17.815-26.107 17.815-42.69l0.336-437.982c-0.448-17.032-6.499-31.374-18.151-43.026-11.877-11.876-26.106-17.814-42.689-17.814l-437.983 0.337c-16.583-0.448-30.923 5.378-43.025 17.479-11.876 11.875-17.815 26.329-17.815 43.36l-0.337 50.084c0.448 17.030 6.499 31.373 18.151 43.026 11.877 11.875 26.107 17.813 42.689 17.813h197.647l-236.637 236.639c-11.653 11.653-17.479 25.995-17.479 43.026s5.826 31.373 17.479 43.025l43.025 43.025c11.653 11.652 25.994 17.479 43.025 17.479s31.373-5.826 43.025-17.479l236.64-236.639-0.002 197.647c0.002 16.583 5.939 30.812 17.816 42.69 11.652 11.652 25.994 17.702 43.025 18.151h50.42c17.031-0.448 31.373-6.498 43.025-18.151v0z" />
<glyph unicode="&#xe602;" d="M192 64h640v512h-208.012c-13.292 0-24.68 5.234-33.974 14.61-9.352 9.324-14.014 21.3-14.014 34.624v206.766h-384v-768zM640.796 640h187.172c-3.336 8-7 17.208-10.992 21.21l-156.518 157.238c-3.992 4.032-12.458 8.028-20.458 11.376v-187.824l0.796-2zM896 624v-573.86c0-13.378-4.704-25.73-13.998-35.106-9.35-9.32-20.672-15.036-34.014-15.036h-671.974c-13.344 0-24.664 5.708-34.016 15.036-9.294 9.376-13.998 21.726-13.998 35.106v799.742c0 13.352 4.704 23.73 13.998 33.078 9.352 9.348 20.672 13.040 34.016 13.040h447.976c13.342 0 27.998-2.348 44.022-9.036 15.97-6.664 28.658-14.196 37.954-23.54l156.026-156.148c9.294-9.378 17.334-22.614 24.006-38.624 6.618-16.062 9.954-32.652 9.954-44.652v0h0.048zM448 448l-192-160 192-160zM512 128l192 160-192 160z" />
<glyph unicode="&#xe603;" d="M870.483 613.045c11.879-11.878 17.816-26.107 17.816-42.691l0.337-437.983c-0.448-17.031-6.5-31.373-18.153-43.025-11.876-11.875-26.106-17.814-42.688-17.814l-437.983 0.336c-16.582-0.447-30.924 5.379-43.025 17.48-11.876 11.875-17.814 26.33-17.814 43.361l-0.337 50.084c0.449 17.029 6.5 31.373 18.151 43.025 11.878 11.875 26.107 17.812 42.689 17.812l197.647 0.002-236.639 236.639c-11.653 11.653-17.479 25.995-17.479 43.026s5.825 31.373 17.479 43.025l43.025 43.025c11.653 11.652 25.994 17.479 43.025 17.479s31.373-5.826 43.025-17.479l236.641-236.64-0.003 197.648c0.002 16.583 5.939 30.812 17.817 42.69 11.651 11.652 25.993 17.702 43.024 18.151h50.42c17.031-0.449 31.373-6.499 43.024-18.15l0.001-0.001zM307.461 609.339c-23.661-23.661-62.38-23.662-86.042 0l-43.035 43.035c-23.662 23.661-23.662 62.379 0 86.041l43.035 43.035c23.661 23.661 62.38 23.662 86.041 0l43.035-43.035c23.661-23.661 23.661-62.38 0-86.041l-43.034-43.035z" />
<glyph unicode="&#xe604;" d="M64 128h256v640h-256v-640zM191.998 192c-35.332 0-63.998 28.666-63.998 64 0 35.332 28.666 64 63.998 64 35.346 0 64.002-28.668 64.002-64 0-35.334-28.656-64-64.002-64zM128 704h128v-320h-128v320zM384 128h266v640h-266v-640zM512.008 192c-35.35 0-64.008 28.664-64.008 63.986 0 35.326 28.658 64.014 64.008 64.014s63.992-28.688 63.992-64.014c0-35.322-28.642-63.986-63.992-63.986zM448 704h128v-320h-128v320zM704 768v-640h256v640h-256zM832 192c-35.362 0-64 28.664-64 63.986 0 35.326 28.638 64.014 64 64.014 35.334 0 64-28.688 64-64.014 0-35.322-28.666-63.986-64-63.986zM896 384h-128v320h128v-320z" />
<glyph unicode="&#xe605;" d="M250.319 709.849c11.877 11.878 26.107 17.815 42.69 17.815l437.982 0.336c17.032-0.448 31.374-6.499 43.026-18.151 11.876-11.877 17.814-26.106 17.814-42.689l-0.337-437.983c0.448-16.583-5.378-30.923-17.479-43.025-11.875-11.876-26.329-17.815-43.36-17.815l-50.084-0.337c-17.030 0.448-31.373 6.499-43.026 18.151-11.875 11.877-17.813 26.107-17.813 42.689v197.647l-236.639-236.637c-11.653-11.653-25.995-17.479-43.026-17.479s-31.373 5.826-43.025 17.479l-43.025 43.025c-11.652 11.653-17.479 25.994-17.479 43.025s5.826 31.373 17.479 43.025l236.639 236.64-197.647-0.002c-16.583 0.002-30.812 5.939-42.69 17.816-11.652 11.652-17.702 25.994-18.151 43.025v50.42c0.448 17.031 6.498 31.373 18.151 43.025v0z" />
<glyph unicode="&#xe606;" d="M346.955 806.483c11.878 11.879 26.107 17.816 42.691 17.816l437.983 0.337c17.031-0.448 31.373-6.5 43.025-18.153 11.875-11.876 17.814-26.106 17.814-42.688l-0.336-437.983c0.447-16.582-5.379-30.924-17.48-43.025-11.875-11.876-26.33-17.814-43.361-17.814l-50.084-0.337c-17.029 0.449-31.373 6.5-43.025 18.151-11.875 11.878-17.812 26.107-17.812 42.689l-0.002 197.647-236.639-236.639c-11.653-11.653-25.995-17.479-43.026-17.479s-31.373 5.825-43.025 17.479l-43.025 43.025c-11.652 11.653-17.479 25.994-17.479 43.025s5.826 31.373 17.479 43.025l236.64 236.641-197.648-0.003c-16.583 0.002-30.812 5.939-42.69 17.817-11.652 11.651-17.702 25.993-18.151 43.024v50.42c0.449 17.031 6.499 31.373 18.15 43.024l0.001 0.001zM350.661 243.461c23.661-23.661 23.662-62.38 0-86.042l-43.035-43.035c-23.661-23.662-62.379-23.662-86.041 0l-43.035 43.035c-23.661 23.661-23.662 62.38 0 86.041l43.035 43.035c23.661 23.661 62.38 23.661 86.041 0l43.035-43.034z" />
<glyph unicode="&#xe608;" d="M880.788 0h-733.41c-44.35 0-83.378 35.874-83.378 80.352v734.986c0 44.454 39.028 80.662 83.378 80.662h733.41c44.362 0 79.212-36.208 79.212-80.662v-734.986c0-44.478-34.85-80.352-79.212-80.352zM151.402 832c-12.096 0-23.402-10.558-23.402-22.662v-722.986c0-12.128 11.33-22.352 23.402-22.352h723.412c12.096 0 21.186 10.248 21.186 22.352v722.986c0 12.128-9.116 22.662-21.186 22.662h-723.412zM369.576 128h-95.584c-44.35 0-81.99 35.922-81.99 80.376v95.734c0 44.454 37.64 79.89 81.99 79.89h95.584c44.348 0 78.424-35.438 78.424-79.89v-95.734c0-44.454-34.076-80.376-78.424-80.376zM273.99 320c-12.096 0-17.99-3.788-17.99-15.89v-95.734c0-12.128 5.918-16.376 17.99-16.376h95.584c12.108 0 14.424 4.246 14.424 16.376v95.734c0 12.128-2.342 15.89-14.424 15.89h-95.584zM752 128h-97.584c-44.364 0-80.416 35.922-80.416 80.376v95.734c0 44.454 36.052 79.89 80.416 79.89h97.584c44.336 0 80-35.438 80-79.89v-95.734c0-44.454-35.664-80.376-80-80.376zM654.416 320c-12.122 0-14.416-3.788-14.416-15.89v-95.734c0-12.128 2.318-16.376 14.416-16.376h97.584c12.096 0 16 4.246 16 16.376v95.734c0 12.128-3.928 15.89-16 15.89h-97.584zM369.576 512h-95.584c-44.35 0-81.99 36.592-81.99 81.046v93.734c0 44.454 37.64 81.22 81.99 81.22h95.584c44.348 0 78.424-36.768 78.424-81.22v-93.732c0-44.456-34.076-81.048-78.424-81.048zM273.99 704c-12.096 0-17.99-5.118-17.99-17.22v-93.732c0-12.13 5.918-17.046 17.99-17.046h95.584c12.108 0 14.424 4.916 14.424 17.046v93.732c0 12.128-2.342 17.22-14.424 17.22h-95.584zM752 512h-97.584c-44.364 0-78.416 36.592-78.416 81.046v93.734c0 44.454 34.052 81.22 78.416 81.22h97.584c44.336 0 80-36.768 80-81.22v-93.732c0-44.456-35.664-81.048-80-81.048zM654.416 704c-12.122 0-14.416-5.118-14.416-17.22v-93.732c0-12.13 2.318-17.046 14.416-17.046h97.584c12.096 0 16 4.916 16 17.046v93.732c0 12.128-3.928 17.22-16 17.22h-97.584z" />
<glyph unicode="&#xe609;" d="M960-64h-896c-35.376 0-64 28.624-64 64v896c0 35.376 28.624 64 64 64h896c35.376 0 64-28.624 64-64v-896c0-35.376-28.624-64-64-64zM896 832h-768v-768h768v768zM448 512h-192v192h192v-192zM448 192h-192v192h192v-192zM768 512h-192v192h192v-192zM768 192h-192v192h192v-192z" />
<glyph unicode="&#xe60a;" d="M512.308 450.906c-64.824 0-125.77 23.15-171.608 65.184-45.836 42.034-71.082 97.918-71.082 157.364 0 59.444 25.244 115.332 71.082 157.366 45.838 42.032 106.784 65.182 171.608 65.182 64.822 0 125.768-23.15 171.606-65.182 45.838-42.034 71.082-97.922 71.082-157.366 0-59.446-25.246-115.33-71.082-157.364-45.838-42.034-106.784-65.184-171.606-65.184zM512.308 821.308c-88.906 0-161.236-66.33-161.236-147.856 0-81.528 72.33-147.856 161.236-147.856 88.904 0 161.234 66.328 161.234 147.856 0 81.526-72.33 147.856-161.234 147.856zM756.714 409.888c8.746-1.014 16.796-2.85 24.062-5.488 11.656-4.232 20.842-9.378 28.084-15.734 9.068-7.958 17.466-18.126 24.96-30.214 8.624-13.918 15.556-28.3 20.6-42.752 5.666-16.238 10.464-34.322 14.27-53.748 3.916-20.010 6.546-38.706 7.822-55.57 1.348-17.848 2.032-36.436 2.034-55.24 0-34.066-12.082-48.552-21.168-56.486-9.812-8.57-27.468-19.958-67.292-19.958h-556.178c-16.158 0-30.252 1.938-41.892 5.762-9.856 3.236-18.164 7.882-25.398 14.2-9.086 7.934-21.166 22.418-21.166 56.484 0 18.81 0.684 37.392 2.032 55.234 1.274 16.874 3.908 35.568 7.824 55.576 3.802 19.424 8.604 37.506 14.27 53.748 5.042 14.452 11.972 28.834 20.596 42.748 7.498 12.092 15.896 22.26 24.964 30.218 7.24 6.358 16.426 11.502 28.082 15.734 7.268 2.638 15.318 4.474 24.064 5.488 13.992-8.356 29.868-17.732 47.194-27.88 23.704-13.88 52.328-25.698 87.51-36.13 36.188-10.73 73.202-16.168 110.012-16.168 36.808 0 73.822 5.438 110.014 16.17 35.18 10.432 63.8 22.248 87.502 36.126 17.312 10.134 33.188 19.514 47.198 27.88v0zM739.816 485.516c-3.818 0-12.728-4.184-26.726-12.544-14-8.366-29.804-17.704-47.408-28.012-17.608-10.31-40.516-19.648-68.728-28.012-28.212-8.366-56.532-12.548-84.954-12.548-28.424 0-56.744 4.184-84.956 12.548-28.212 8.362-51.122 17.702-68.726 28.012-17.606 10.308-33.41 19.646-47.41 28.012-14 8.362-22.91 12.544-26.728 12.544-25.878 0-49.53-3.89-70.954-11.672-21.424-7.78-39.56-18.188-54.41-31.218-14.85-13.034-28-28.79-39.456-47.268-11.452-18.48-20.572-37.446-27.36-56.898s-12.41-40.554-16.864-63.314c-4.454-22.76-7.424-43.96-8.91-63.608-1.484-19.644-2.226-39.78-2.226-60.398 0-46.686 15.486-83.546 46.454-110.582 30.97-27.040 72.122-40.558 123.456-40.558h556.182c51.334 0 92.484 13.518 123.458 40.558 30.968 27.040 46.454 63.896 46.454 110.582v0c-0.004 20.62-0.744 40.754-2.228 60.398s-4.456 40.846-8.908 63.608c-4.456 22.76-10.078 43.864-16.866 63.314-6.79 19.452-15.91 38.418-27.364 56.896-11.454 18.48-24.608 34.234-39.456 47.268-14.85 13.032-32.986 23.438-54.408 31.218-21.426 7.784-45.078 11.674-70.958 11.674v0 0z" />
<glyph unicode="&#xe60b;" d="M716.8 294.4c-102.4-102.4-204.8-204.8-204.8-204.8l-204.8 204.8h409.6zM307.21 601.61c102.4 102.4 204.8 204.8 204.8 204.8l204.8-204.8h-409.6zM51.2 499.2h921.6v-102.4h-921.6v102.4z" />
<glyph unicode="&#xe60c;" d="M749.715 777.143h-475.429c-25.143 0-46.666-8.952-64.571-26.857s-26.857-39.428-26.857-64.57v-475.429c0-25.143 8.952-46.667 26.857-64.571s39.428-26.857 64.571-26.857h475.429c25.143 0 46.666 8.953 64.572 26.857 17.904 17.904 26.855 39.429 26.855 64.571v475.428c0 25.143-8.951 46.666-26.855 64.57-17.906 17.905-39.43 26.858-64.572 26.858v0zM914.287 685.715v-475.429c0-45.334-16.096-84.096-48.287-116.286-32.189-32.191-70.953-48.286-116.285-48.286h-475.43c-45.333 0-84.095 16.095-116.286 48.286s-48.286 70.952-48.286 116.286v475.429c0 45.333 16.095 84.095 48.286 116.285 32.19 32.191 70.953 48.286 116.286 48.286h475.43c45.332 0 84.096-16.095 116.285-48.286 32.191-32.19 48.287-70.952 48.287-116.285v0z" />
<glyph unicode="&#xe60d;" d="M742.985 555.893c0-7.948-2.781-14.703-8.345-20.267l-256.321-256.319c-5.563-5.563-12.319-8.346-20.266-8.346s-14.703 2.782-20.267 8.346l-148.426 148.425c-5.563 5.563-8.346 12.319-8.346 20.267s2.782 14.703 8.346 20.266l40.534 40.535c5.563 5.563 12.319 8.346 20.267 8.346s14.703-2.782 20.267-8.346l87.626-87.926 195.518 195.818c5.564 5.563 12.319 8.346 20.268 8.346s14.701-2.782 20.264-8.346l40.535-40.534c5.562-5.564 8.345-12.319 8.346-20.267v0z" />
<glyph unicode="&#xe60e;" d="M705.755 641.755c-17.618 17.62-38.836 26.429-63.648 26.429h-260.218c-24.813 0-46.028-8.809-63.647-26.429-17.618-17.618-26.428-38.834-26.428-63.647v-260.219c0-24.814 8.81-46.027 26.429-63.648 17.618-17.618 38.834-26.428 63.647-26.428h260.218c24.812 0 46.029 8.81 63.648 26.428 17.618 17.621 26.428 38.835 26.428 63.648v260.219c0 24.813-8.81 46.028-26.429 63.647z" />
<glyph unicode="&#xf000;" d="M438.857 886.857q119.429 0 220.286-58.857t159.714-159.714 58.857-220.286-58.857-220.286-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857zM512 174.286v108.571q0 8-5.143 13.429t-12.571 5.429h-109.714q-7.429 0-13.143-5.714t-5.714-13.143v-108.571q0-7.429 5.714-13.143t13.143-5.714h109.714q7.429 0 12.571 5.429t5.143 13.429zM510.857 370.857l10.286 354.857q0 6.857-5.714 10.286-5.714 4.571-13.714 4.571h-125.714q-8 0-13.714-4.571-5.714-3.429-5.714-10.286l9.714-354.857q0-5.714 5.714-10t13.714-4.286h105.714q8 0 13.429 4.286t6 10z" />
<glyph unicode="&#xf001;" d="M733.714 448.571q0 15.429-10.286 25.714l-258.857 258.857q-10.286 10.286-25.714 10.286t-25.714-10.286l-258.857-258.857q-10.286-10.286-10.286-25.714t10.286-25.714l52-52q10.286-10.286 25.714-10.286t25.714 10.286l108 108v-286.857q0-14.857 10.857-25.714t25.714-10.857h73.143q14.857 0 25.714 10.857t10.857 25.714v286.857l108-108q10.857-10.857 25.714-10.857t25.714 10.857l52 52q10.286 10.286 10.286 25.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf002;" d="M658.286 484.571q0 105.714-75.143 180.857t-180.857 75.143-180.857-75.143-75.143-180.857 75.143-180.857 180.857-75.143 180.857 75.143 75.143 180.857zM950.857 9.143q0-29.714-21.714-51.429t-51.429-21.714q-30.857 0-51.429 21.714l-196 195.429q-102.286-70.857-228-70.857-81.714 0-156.286 31.714t-128.571 85.714-85.714 128.571-31.714 156.286 31.714 156.286 85.714 128.571 128.571 85.714 156.286 31.714 156.286-31.714 128.571-85.714 85.714-128.571 31.714-156.286q0-125.714-70.857-228l196-196q21.143-21.143 21.143-51.429z" horiz-adv-x="951" />
<glyph unicode="&#xf003;" d="M665.714 309.143l58.286 58.286q10.857 10.857 10.857 25.714t-10.857 25.714l-259.429 259.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-259.429-259.429q-10.857-10.857-10.857-25.714t10.857-25.714l58.286-58.286q10.857-10.857 25.714-10.857t25.714 10.857l175.429 175.429 175.429-175.429q10.857-10.857 25.714-10.857t25.714 10.857zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf004;" d="M733.714 447.429q0 15.429-10.286 25.714l-52 52q-10.286 10.286-25.714 10.286t-25.714-10.286l-108-108v286.857q0 14.857-10.857 25.714t-25.714 10.857h-73.143q-14.857 0-25.714-10.857t-10.857-25.714v-286.857l-108 108q-10.857 10.857-25.714 10.857t-25.714-10.857l-52-52q-10.286-10.286-10.286-25.714t10.286-25.714l258.857-258.857q10.286-10.286 25.714-10.286t25.714 10.286l258.857 258.857q10.286 10.286 10.286 25.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf005;" d="M950.857 590.286q0-12.571-14.857-27.429l-207.429-202.286 49.143-285.714q0.571-4 0.571-11.429 0-12-6-20.286t-17.429-8.286q-10.857 0-22.857 6.857l-256.571 134.857-256.571-134.857q-12.571-6.857-22.857-6.857-12 0-18 8.286t-6 20.286q0 3.429 1.143 11.429l49.143 285.714-208 202.286q-14.286 15.429-14.286 27.429 0 21.143 32 26.286l286.857 41.714 128.571 260q10.857 23.429 28 23.429t28-23.429l128.571-260 286.857-41.714q32-5.143 32-26.286z" horiz-adv-x="951" />
<glyph unicode="&#xf006;" d="M464.571 217.714l259.429 259.429q10.857 10.857 10.857 25.714t-10.857 25.714l-58.286 58.286q-10.857 10.857-25.714 10.857t-25.714-10.857l-175.429-175.429-175.429 175.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-58.286-58.286q-10.857-10.857-10.857-25.714t10.857-25.714l259.429-259.429q10.857-10.857 25.714-10.857t25.714 10.857zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf00c;" d="M954.857 636.571q0-22.857-16-38.857l-491.429-491.429q-16-16-38.857-16t-38.857 16l-284.571 284.571q-16 16-16 38.857t16 38.857l77.714 77.714q16 16 38.857 16t38.857-16l168-168.571 374.857 375.429q16 16 38.857 16t38.857-16l77.714-77.714q16-16 16-38.857z" />
<glyph unicode="&#xf00d;" d="M741.714 204.571q0-22.857-16-38.857l-77.714-77.714q-16-16-38.857-16t-38.857 16l-168 168-168-168q-16-16-38.857-16t-38.857 16l-77.714 77.714q-16 16-16 38.857t16 38.857l168 168-168 168q-16 16-16 38.857t16 38.857l77.714 77.714q16 16 38.857 16t38.857-16l168-168 168 168q16 16 38.857 16t38.857-16l77.714-77.714q16-16 16-38.857t-16-38.857l-168-168 168-168q16-16 16-38.857z" horiz-adv-x="805" />
<glyph unicode="&#xf010;" d="M438.857 758.857q-84.571 0-156-41.714t-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156-41.714 156-113.143 113.143-156 41.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf011;" d="M585.143 448q0-60.571-42.857-103.429t-103.429-42.857-103.429 42.857-42.857 103.429 42.857 103.429 103.429 42.857 103.429-42.857 42.857-103.429zM438.857 758.857q-84.571 0-156-41.714t-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156-41.714 156-113.143 113.143-156 41.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf012;" d="M438.857 137.143v621.714q-84.571 0-156-41.714t-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf013;" d="M733.714 540.571q0 16-10.286 26.286l-52 51.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-233.143-232.571-129.143 129.143q-10.857 10.857-25.714 10.857t-25.714-10.857l-52-51.429q-10.286-10.286-10.286-26.286 0-15.429 10.286-25.714l206.857-206.857q10.857-10.857 25.714-10.857 15.429 0 26.286 10.857l310.286 310.286q10.286 10.286 10.286 25.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf014;" d="M877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf015;" d="M585.143 448q0 60.571-42.857 103.429t-103.429 42.857-103.429-42.857-42.857-103.429 42.857-103.429 103.429-42.857 103.429 42.857 42.857 103.429zM877.714 510.286v-126.857q0-6.857-4.571-13.143t-11.429-7.429l-105.714-16q-10.857-30.857-22.286-52 20-28.571 61.143-78.857 5.714-6.857 5.714-14.286t-5.143-13.143q-15.429-21.143-56.571-61.714t-53.714-40.571q-6.857 0-14.857 5.143l-78.857 61.714q-25.143-13.143-52-21.714-9.143-77.714-16.571-106.286-4-16-20.571-16h-126.857q-8 0-14 4.857t-6.571 12.286l-16 105.143q-28 9.143-51.429 21.143l-80.571-61.143q-5.714-5.143-14.286-5.143-8 0-14.286 6.286-72 65.143-94.286 96-4 5.714-4 13.143 0 6.857 4.571 13.143 8.571 12 29.143 38t30.857 40.286q-15.429 28.571-23.429 56.571l-104.571 15.429q-7.429 1.143-12 7.143t-4.571 13.429v126.857q0 6.857 4.571 13.143t10.857 7.429l106.286 16q8 26.286 22.286 52.571-22.857 32.571-61.143 78.857-5.714 6.857-5.714 13.714 0 5.714 5.143 13.143 14.857 20.571 56.286 61.429t54 40.857q7.429 0 14.857-5.714l78.857-61.143q25.143 13.143 52 21.714 9.143 77.714 16.571 106.286 4 16 20.571 16h126.857q8 0 14-4.857t6.571-12.286l16-105.143q28-9.143 51.429-21.143l81.143 61.143q5.143 5.143 13.714 5.143 7.429 0 14.286-5.714 73.714-68 94.286-97.143 4-4.571 4-12.571 0-6.857-4.571-13.143-8.571-12-29.143-38t-30.857-40.286q14.857-28.571 23.429-56l104.571-16q7.429-1.143 12-7.143t4.571-13.429z" />
<glyph unicode="&#xf016;" d="M804.571 393.143v-274.286q0-14.857-10.857-25.714t-25.714-10.857h-219.429v219.429h-146.286v-219.429h-219.429q-14.857 0-25.714 10.857t-10.857 25.714v274.286q0 0.571 0.286 1.714t0.286 1.714l328.571 270.857 328.571-270.857q0.571-1.143 0.571-3.429zM932 432.571l-35.429-42.286q-4.571-5.143-12-6.286h-1.714q-7.429 0-12 4l-395.429 329.714-395.429-329.714q-6.857-4.571-13.714-4-7.429 1.143-12 6.286l-35.429 42.286q-4.571 5.714-4 13.429t6.286 12.286l410.857 342.286q18.286 14.857 43.429 14.857t43.429-14.857l139.429-116.571v111.429q0 8 5.143 13.143t13.143 5.143h109.714q8 0 13.143-5.143t5.143-13.143v-233.143l125.143-104q5.714-4.571 6.286-12.286t-4-13.429z" horiz-adv-x="951" />
<glyph unicode="&#xf017;" d="M73.143 82.286h585.143v438.857h-237.714q-22.857 0-38.857 16t-16 38.857v237.714h-292.571v-731.429zM438.857 594.286h214.857q-5.714 16.571-12.571 23.429l-178.857 178.857q-6.857 6.857-23.429 12.571v-214.857zM731.429 576v-512q0-22.857-16-38.857t-38.857-16h-621.714q-22.857 0-38.857 16t-16 38.857v768q0 22.857 16 38.857t38.857 16h365.714q22.857 0 50.286-11.429t43.429-27.429l178.286-178.286q16-16 27.429-43.429t11.429-50.286z" horiz-adv-x="731" />
<glyph unicode="&#xf018;" d="M512 649.143v-256q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143v36.571q0 8 5.143 13.143t13.143 5.143h128v201.143q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143zM749.714 448q0 84.571-41.714 156t-113.143 113.143-156 41.714-156-41.714-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf021;" d="M863.429 356.571q0-2.857-0.571-4-36.571-153.143-153.143-248.286t-273.143-95.143q-83.429 0-161.429 31.429t-139.143 89.714l-73.714-73.714q-10.857-10.857-25.714-10.857t-25.714 10.857-10.857 25.714v256q0 14.857 10.857 25.714t25.714 10.857h256q14.857 0 25.714-10.857t10.857-25.714-10.857-25.714l-78.286-78.286q40.571-37.714 92-58.286t106.857-20.571q76.571 0 142.857 37.143t106.286 102.286q6.286 9.714 30.286 66.857 4.571 13.143 17.143 13.143h109.714q7.429 0 12.857-5.429t5.429-12.857zM877.714 813.714v-256q0-14.857-10.857-25.714t-25.714-10.857h-256q-14.857 0-25.714 10.857t-10.857 25.714 10.857 25.714l78.857 78.857q-84.571 78.286-199.429 78.286-76.571 0-142.857-37.143t-106.286-102.286q-6.286-9.714-30.286-66.857-4.571-13.143-17.143-13.143h-113.714q-7.429 0-12.857 5.429t-5.429 12.857v4q37.143 153.143 154.286 248.286t274.286 95.143q83.429 0 162.286-31.714t140-89.429l74.286 73.714q10.857 10.857 25.714 10.857t25.714-10.857 10.857-25.714z" />
<glyph unicode="&#xf023;" d="M182.857 512h292.571v109.714q0 60.571-42.857 103.429t-103.429 42.857-103.429-42.857-42.857-103.429v-109.714zM658.286 457.143v-329.143q0-22.857-16-38.857t-38.857-16h-548.571q-22.857 0-38.857 16t-16 38.857v329.143q0 22.857 16 38.857t38.857 16h18.286v109.714q0 105.143 75.429 180.571t180.571 75.429 180.571-75.429 75.429-180.571v-109.714h18.286q22.857 0 38.857-16t16-38.857z" horiz-adv-x="658" />
<glyph unicode="&#xf02c;" d="M256 704q0 30.286-21.429 51.714t-51.714 21.429-51.714-21.429-21.429-51.714 21.429-51.714 51.714-21.429 51.714 21.429 21.429 51.714zM865.714 374.857q0-30.286-21.143-51.429l-280.571-281.143q-22.286-21.143-52-21.143-30.286 0-51.429 21.143l-408.571 409.143q-21.714 21.143-36.857 57.714t-15.143 66.857v237.714q0 29.714 21.714 51.429t51.429 21.714h237.714q30.286 0 66.857-15.143t58.286-36.857l408.571-408q21.143-22.286 21.143-52zM1085.143 374.857q0-30.286-21.143-51.429l-280.571-281.143q-22.286-21.143-52-21.143-20.571 0-33.714 8t-30.286 25.714l268.571 268.571q21.143 21.143 21.143 51.429 0 29.714-21.143 52l-408.571 408q-21.714 21.714-58.286 36.857t-66.857 15.143h128q30.286 0 66.857-15.143t58.286-36.857l408.571-408q21.143-22.286 21.143-52z" horiz-adv-x="1097" />
<glyph unicode="&#xf039;" d="M1024 192v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-950.857q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h950.857q14.857 0 25.714-10.857t10.857-25.714zM1024 411.429v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-950.857q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h950.857q14.857 0 25.714-10.857t10.857-25.714zM1024 630.857v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-950.857q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h950.857q14.857 0 25.714-10.857t10.857-25.714zM1024 850.286v-73.143q0-14.857-10.857-25.714t-25.714-10.857h-950.857q-14.857 0-25.714 10.857t-10.857 25.714v73.143q0 14.857 10.857 25.714t25.714 10.857h950.857q14.857 0 25.714-10.857t10.857-25.714z" />
<glyph unicode="&#xf03a;" d="M146.286 210.286v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-109.714q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h109.714q7.429 0 12.857-5.429t5.429-12.857zM146.286 429.714v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-109.714q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h109.714q7.429 0 12.857-5.429t5.429-12.857zM146.286 649.143v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-109.714q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h109.714q7.429 0 12.857-5.429t5.429-12.857zM1024 210.286v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-768q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h768q7.429 0 12.857-5.429t5.429-12.857zM146.286 868.571v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-109.714q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h109.714q7.429 0 12.857-5.429t5.429-12.857zM1024 429.714v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-768q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h768q7.429 0 12.857-5.429t5.429-12.857zM1024 649.143v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-768q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h768q7.429 0 12.857-5.429t5.429-12.857zM1024 868.571v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-768q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h768q7.429 0 12.857-5.429t5.429-12.857z" />
<glyph unicode="&#xf040;" d="M207.429 73.143l52 52-134.286 134.286-52-52v-61.143h73.143v-73.143h61.143zM506.286 603.428q0 12.571-12.571 12.571-5.714 0-9.714-4l-309.714-309.714q-4-4-4-9.714 0-12.571 12.571-12.571 5.714 0 9.714 4l309.714 309.714q4 4 4 9.714zM475.429 713.143l237.714-237.714-475.429-475.429h-237.714v237.714zM865.714 658.286q0-30.286-21.143-51.429l-94.857-94.857-237.714 237.714 94.857 94.286q20.571 21.714 51.429 21.714 30.286 0 52-21.714l134.286-133.714q21.143-22.286 21.143-52z" />
<glyph unicode="&#xf056;" d="M694.857 411.429v73.143q0 14.857-10.857 25.714t-25.714 10.857h-438.857q-14.857 0-25.714-10.857t-10.857-25.714v-73.143q0-14.857 10.857-25.714t25.714-10.857h438.857q14.857 0 25.714 10.857t10.857 25.714zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf057;" d="M656.571 318.857q0 14.857-10.857 25.714l-103.429 103.429 103.429 103.429q10.857 10.857 10.857 25.714 0 15.429-10.857 26.286l-51.429 51.429q-10.857 10.857-26.286 10.857-14.857 0-25.714-10.857l-103.429-103.429-103.429 103.429q-10.857 10.857-25.714 10.857-15.429 0-26.286-10.857l-51.429-51.429q-10.857-10.857-10.857-26.286 0-14.857 10.857-25.714l103.429-103.429-103.429-103.429q-10.857-10.857-10.857-25.714 0-15.429 10.857-26.286l51.429-51.429q10.857-10.857 26.286-10.857 14.857 0 25.714 10.857l103.429 103.429 103.429-103.429q10.857-10.857 25.714-10.857 15.429 0 26.286 10.857l51.429 51.429q10.857 10.857 10.857 26.286zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf059;" d="M512 173.714v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 557.714q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf05a;" d="M585.143 173.714v91.429q0 8-5.143 13.143t-13.143 5.143h-54.857v292.571q0 8-5.143 13.143t-13.143 5.143h-182.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h54.857v-182.857h-54.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h256q8 0 13.143 5.143t5.143 13.143zM512 685.714v91.429q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf05c;" d="M626.857 343.429l-83.429-83.429q-5.714-5.714-13.143-5.714t-13.143 5.714l-78.286 78.286-78.286-78.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-83.429 83.429q-5.714 5.714-5.714 13.143t5.714 13.143l78.286 78.286-78.286 78.286q-5.714 5.714-5.714 13.143t5.714 13.143l83.429 83.429q5.714 5.714 13.143 5.714t13.143-5.714l78.286-78.286 78.286 78.286q5.714 5.714 13.143 5.714t13.143-5.714l83.429-83.429q5.714-5.714 5.714-13.143t-5.714-13.143l-78.286-78.286 78.286-78.286q5.714-5.714 5.714-13.143t-5.714-13.143zM749.714 448q0 84.571-41.714 156t-113.143 113.143-156 41.714-156-41.714-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf05d;" d="M669.143 495.429l-241.143-241.143q-10.857-10.857-25.714-10.857t-25.714 10.857l-168 168q-10.857 10.857-10.857 25.714t10.857 25.714l58.286 58.286q10.857 10.857 25.714 10.857t25.714-10.857l84-84 157.143 157.143q10.857 10.857 25.714 10.857t25.714-10.857l58.286-58.286q10.857-10.857 10.857-25.714t-10.857-25.714zM749.714 448q0 84.571-41.714 156t-113.143 113.143-156 41.714-156-41.714-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156zM877.714 448q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
<glyph unicode="&#xf05e;" d="M749.714 449.714q0 92-49.714 168.571l-430.857-430.286q78.286-50.857 169.714-50.857 63.429 0 120.857 24.857t99.143 66.571 66.286 99.714 24.571 121.429zM178.857 278.857l431.429 430.857q-77.143 52-171.429 52-84.571 0-156-41.714t-113.143-113.714-41.714-156.571q0-92.571 50.857-170.857zM877.714 449.714q0-89.714-34.857-171.429t-93.429-140.571-140-93.714-170.571-34.857-170.571 34.857-140 93.714-93.429 140.571-34.857 171.429 34.857 171.143 93.429 140.286 140 93.714 170.571 34.857 170.571-34.857 140-93.714 93.429-140.286 34.857-171.143z" />
<glyph unicode="&#xf060;" d="M877.714 448v-73.143q0-30.286-18.571-51.714t-48.286-21.429h-402.286l167.429-168q21.714-20.571 21.714-51.429t-21.714-51.429l-42.857-43.429q-21.143-21.143-51.429-21.143-29.714 0-52 21.143l-372 372.571q-21.143 21.143-21.143 51.429 0 29.714 21.143 52l372 371.429q21.714 21.714 52 21.714 29.714 0 51.429-21.714l42.857-42.286q21.714-21.714 21.714-52t-21.714-52l-167.429-167.429h402.286q29.714 0 48.286-21.429t18.571-51.714z" />
<glyph unicode="&#xf061;" d="M841.143 411.429q0-30.857-21.143-52l-372-372q-22.286-21.143-52-21.143-29.143 0-51.429 21.143l-42.857 42.857q-21.714 21.714-21.714 52t21.714 52l167.429 167.429h-402.286q-29.714 0-48.286 21.429t-18.571 51.714v73.143q0 30.286 18.571 51.714t48.286 21.429h402.286l-167.429 168q-21.714 20.571-21.714 51.429t21.714 51.429l42.857 42.857q21.714 21.714 51.429 21.714 30.286 0 52-21.714l372-372q21.143-20 21.143-51.429z" />
<glyph unicode="&#xf062;" d="M920.571 405.143q0-29.143-21.143-51.429l-42.857-42.857q-21.714-21.714-52-21.714-30.857 0-51.429 21.714l-168 167.429v-402.286q0-29.714-21.429-48.286t-51.714-18.571h-73.143q-30.286 0-51.714 18.571t-21.429 48.286v402.286l-168-167.429q-20.571-21.714-51.429-21.714t-51.429 21.714l-42.857 42.857q-21.714 21.714-21.714 51.429 0 30.286 21.714 52l372 372q20 21.143 51.429 21.143 30.857 0 52-21.143l372-372q21.143-22.286 21.143-52z" horiz-adv-x="951" />
<glyph unicode="&#xf063;" d="M920.571 484.571q0-30.286-21.143-51.429l-372-372.571q-22.286-21.143-52-21.143-30.286 0-51.429 21.143l-372 372.571q-21.714 20.571-21.714 51.429 0 30.286 21.714 52l42.286 42.857q22.286 21.143 52 21.143 30.286 0 51.429-21.143l168-168v402.286q0 29.714 21.714 51.429t51.429 21.714h73.143q29.714 0 51.429-21.714t21.714-51.429v-402.286l168 168q21.143 21.143 51.429 21.143 29.714 0 52-21.143l42.857-42.857q21.143-22.286 21.143-52z" horiz-adv-x="951" />
<glyph unicode="&#xf065;" d="M503.385 332.821q0-8.615-6.627-15.243l-220.023-220.023 95.433-95.433q12.592-12.592 12.592-29.822t-12.59-29.822-29.822-12.59h-296.899q-17.231 0-29.822 12.59t-12.59 29.822v296.899q0 17.231 12.59 29.822t29.822 12.592 29.822-12.592l95.433-95.433 220.023 220.023q6.627 6.627 15.243 6.627t15.243-6.627l75.55-75.55q6.627-6.627 6.627-15.243zM1020.969 905.413v-296.899q0-17.231-12.592-29.822t-29.822-12.592-29.822 12.592l-95.433 95.433-220.023-220.023q-6.627-6.627-15.243-6.627t-15.243 6.627l-75.55 75.55q-6.627 6.627-6.627 15.243t6.627 15.243l220.023 220.023-95.433 95.433q-12.59 12.592-12.59 29.822t12.59 29.822 29.822 12.592h296.899q17.231 0 29.822-12.592t12.592-29.822z" />
<glyph unicode="&#xf066;" d="M438.857 402.286v-256q0-14.857-10.857-25.714t-25.714-10.857-25.714 10.857l-82.286 82.286-189.714-189.714q-5.714-5.714-13.143-5.714t-13.143 5.714l-65.143 65.143q-5.714 5.714-5.714 13.143t5.714 13.143l189.714 189.714-82.286 82.286q-10.857 10.857-10.857 25.714t10.857 25.714 25.714 10.857h256q14.857 0 25.714-10.857t10.857-25.714zM870.286 786.286q0-7.429-5.714-13.143l-189.714-189.714 82.286-82.286q10.857-10.857 10.857-25.714t-10.857-25.714-25.714-10.857h-256q-14.857 0-25.714 10.857t-10.857 25.714v256q0 14.857 10.857 25.714t25.714 10.857 25.714-10.857l82.286-82.286 189.714 189.714q5.714 5.714 13.143 5.714t13.143-5.714l65.143-65.143q5.714-5.714 5.714-13.143z" />
<glyph unicode="&#xf067;" d="M804.571 539.429v-109.714q0-22.857-16-38.857t-38.857-16h-237.714v-237.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v237.714h-237.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h237.714v237.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-237.714h237.714q22.857 0 38.857-16t16-38.857z" horiz-adv-x="805" />
<glyph unicode="&#xf068;" d="M804.571 91.434v-109.714q0-22.857-16-38.857t-38.857-16h-694.857q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h694.857q22.857 0 38.857-16t16-38.857z" horiz-adv-x="805" />
<glyph unicode="&#xf069;" d="M846.857 360q26.286-14.857 34-44.286t-7.143-55.714l-36.571-62.857q-14.857-26.286-44.286-34t-55.714 7.143l-152 87.429v-175.429q0-29.714-21.714-51.429t-51.429-21.714h-73.143q-29.714 0-51.429 21.714t-21.714 51.429v175.429l-152-87.429q-26.286-14.857-55.714-7.143t-44.286 34l-36.571 62.857q-14.857 26.286-7.143 55.714t34 44.286l152 88-152 88q-26.286 14.857-34 44.286t7.143 55.714l36.571 62.857q14.857 26.286 44.286 34t55.714-7.143l152-87.429v175.429q0 29.714 21.714 51.429t51.429 21.714h73.143q29.714 0 51.429-21.714t21.714-51.429v-175.429l152 87.429q26.286 14.857 55.714 7.143t44.286-34l36.571-62.857q14.857-26.286 7.143-55.714t-34-44.286l-152-88z" horiz-adv-x="951" />
<glyph unicode="&#xf073;" d="M73.143 9.143h164.571v164.571h-164.571v-164.571zM274.286 9.143h182.857v164.571h-182.857v-164.571zM73.143 210.286h164.571v182.857h-164.571v-182.857zM274.286 210.286h182.857v182.857h-182.857v-182.857zM73.143 429.714h164.571v164.571h-164.571v-164.571zM493.714 9.143h182.857v164.571h-182.857v-164.571zM274.286 429.714h182.857v164.571h-182.857v-164.571zM713.143 9.143h164.571v164.571h-164.571v-164.571zM493.714 210.286h182.857v182.857h-182.857v-182.857zM292.571 704v164.571q0 7.429-5.429 12.857t-12.857 5.429h-36.571q-7.429 0-12.857-5.429t-5.429-12.857v-164.571q0-7.429 5.429-12.857t12.857-5.429h36.571q7.429 0 12.857 5.429t5.429 12.857zM713.143 210.286h164.571v182.857h-164.571v-182.857zM493.714 429.714h182.857v164.571h-182.857v-164.571zM713.143 429.714h164.571v164.571h-164.571v-164.571zM731.429 704v164.571q0 7.429-5.429 12.857t-12.857 5.429h-36.571q-7.429 0-12.857-5.429t-5.429-12.857v-164.571q0-7.429 5.429-12.857t12.857-5.429h36.571q7.429 0 12.857 5.429t5.429 12.857zM950.857 740.571v-731.429q0-29.714-21.714-51.429t-51.429-21.714h-804.571q-29.714 0-51.429 21.714t-21.714 51.429v731.429q0 29.714 21.714 51.429t51.429 21.714h73.143v54.857q0 37.714 26.857 64.571t64.571 26.857h36.571q37.714 0 64.571-26.857t26.857-64.571v-54.857h219.429v54.857q0 37.714 26.857 64.571t64.571 26.857h36.571q37.714 0 64.571-26.857t26.857-64.571v-54.857h73.143q29.714 0 51.429-21.714t21.714-51.429z" horiz-adv-x="951" />
<glyph unicode="&#xf075;" d="M1024 448q0-99.429-68.571-183.714t-186.286-133.143-257.143-48.857q-40 0-82.857 4.571-113.143-100-262.857-138.286-28-8-65.143-12.571-9.714-1.143-17.429 5.143t-10 16.571v0.571q-1.714 2.286-0.286 6.857t1.143 5.714 2.571 5.429l3.429 5.143t4 4.857 4.571 5.143q4 4.571 17.714 19.714t19.714 21.714 17.714 22.571 18.571 29.143 15.429 33.714 14.857 43.429q-89.714 50.857-141.429 125.714t-51.714 160.571q0 74.286 40.571 142t109.143 116.857 163.429 78 198.857 28.857q139.429 0 257.143-48.857t186.286-133.143 68.571-183.714z" />
<glyph unicode="&#xf080;" d="M365.714 438.857v-292.571h-146.286v292.571h146.286zM585.143 731.428v-585.143h-146.286v585.143h146.286zM1170.286 73.143v-73.143h-1170.286v877.714h73.143v-804.571h1097.143zM804.571 585.143v-438.857h-146.286v438.857h146.286zM1024 804.571v-658.286h-146.286v658.286h146.286z" horiz-adv-x="1170" />
<glyph unicode="&#xf085;" d="M512 448q0 60.571-42.857 103.429t-103.429 42.857-103.429-42.857-42.857-103.429 42.857-103.429 103.429-42.857 103.429 42.857 42.857 103.429zM950.857 155.429q0 29.714-21.714 51.429t-51.429 21.714-51.429-21.714-21.714-51.429q0-30.286 21.429-51.714t51.714-21.429 51.714 21.429 21.429 51.714zM950.857 740.571q0 29.714-21.714 51.429t-51.429 21.714-51.429-21.714-21.714-51.429q0-30.286 21.429-51.714t51.714-21.429 51.714 21.429 21.429 51.714zM731.429 500v-105.714q0-5.714-4-11.143t-9.143-6l-88.571-13.714q-6.286-20-18.286-43.429 19.429-27.429 51.429-65.714 4-5.714 4-11.429 0-6.857-4-10.857-13.143-17.143-47.143-51.143t-44.857-34q-6.286 0-12 4l-65.714 51.429q-21.143-10.857-44-17.714-6.286-61.714-13.143-88.571-4-13.714-17.143-13.714h-106.286q-6.286 0-11.429 4.286t-5.714 10l-13.143 87.429q-19.429 5.714-42.857 17.714l-67.429-50.857q-4-4-11.429-4-6.286 0-12 4.571-82.286 76-82.286 91.429 0 5.143 4 10.857 5.714 8 23.429 30.286t26.857 34.857q-13.143 25.143-20 46.857l-86.857 13.714q-5.714 0.571-9.714 5.429t-4 11.143v105.714q0 5.714 4 11.143t9.143 6l88.571 13.714q6.286 20 18.286 43.429-19.429 27.429-51.429 65.714-4 6.286-4 11.429 0 6.857 4 11.429 12.571 17.143 46.857 50.857t45.143 33.714q6.286 0 12-4l65.714-51.429q19.429 10.286 44 18.286 6.286 61.714 13.143 88 4 13.714 17.143 13.714h106.286q6.286 0 11.429-4.286t5.714-10l13.143-87.429q19.429-5.714 42.857-17.714l67.429 50.857q4.571 4 11.429 4 6.286 0 12-4.571 82.286-76 82.286-91.429 0-5.143-4-10.857-6.857-9.143-24-30.857t-25.714-34.286q13.143-27.429 19.429-46.857l86.857-13.143q5.714-1.143 9.714-6t4-11.143zM1097.143 195.429v-80q0-9.143-85.143-17.714-6.857-15.429-17.143-29.714 29.143-64.571 29.143-78.857 0-2.286-2.286-4-69.714-40.571-70.857-40.571-4.571 0-26.286 26.857t-29.714 38.857q-11.429-1.143-17.143-1.143t-17.143 1.143q-8-12-29.714-38.857t-26.286-26.857q-1.143 0-70.857 40.571-2.286 1.714-2.286 4 0 14.286 29.143 78.857-10.286 14.286-17.143 29.714-85.143 8.571-85.143 17.714v80q0 9.143 85.143 17.714 7.429 16.571 17.143 29.714-29.143 64.571-29.143 78.857 0 2.286 2.286 4 2.286 1.143 20 11.429t33.714 19.429 17.143 9.143q4.571 0 26.286-26.571t29.714-38.571q11.429 1.143 17.143 1.143t17.143-1.143q29.143 40.571 52.571 64l3.429 1.143q2.286 0 70.857-40 2.286-1.714 2.286-4 0-14.286-29.143-78.857 9.714-13.143 17.143-29.714 85.143-8.571 85.143-17.714zM1097.143 780.571v-80q0-9.143-85.143-17.714-6.857-15.429-17.143-29.714 29.143-64.571 29.143-78.857 0-2.286-2.286-4-69.714-40.571-70.857-40.571-4.571 0-26.286 26.857t-29.714 38.857q-11.429-1.143-17.143-1.143t-17.143 1.143q-8-12-29.714-38.857t-26.286-26.857q-1.143 0-70.857 40.571-2.286 1.714-2.286 4 0 14.286 29.143 78.857-10.286 14.286-17.143 29.714-85.143 8.571-85.143 17.714v80q0 9.143 85.143 17.714 7.429 16.571 17.143 29.714-29.143 64.571-29.143 78.857 0 2.286 2.286 4 2.286 1.143 20 11.429t33.714 19.429 17.143 9.143q4.571 0 26.286-26.571t29.714-38.571q11.429 1.143 17.143 1.143t17.143-1.143q29.143 40.571 52.571 64l3.429 1.143q2.286 0 70.857-40 2.286-1.714 2.286-4 0-14.286-29.143-78.857 9.714-13.143 17.143-29.714 85.143-8.571 85.143-17.714z" horiz-adv-x="1097" />
<glyph unicode="&#xf08e;" d="M804.571 429.714v-182.857q0-68-48.286-116.286t-116.286-48.286h-475.429q-68 0-116.286 48.286t-48.286 116.286v475.429q0 68 48.286 116.286t116.286 48.286h402.286q8 0 13.143-5.143t5.143-13.143v-36.571q0-8-5.143-13.143t-13.143-5.143h-402.286q-37.714 0-64.571-26.857t-26.857-64.571v-475.429q0-37.714 26.857-64.571t64.571-26.857h475.429q37.714 0 64.571 26.857t26.857 64.571v182.857q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143zM1024 923.429v-292.571q0-14.857-10.857-25.714t-25.714-10.857-25.714 10.857l-100.571 100.571-372.571-372.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-65.143 65.143q-5.714 5.714-5.714 13.143t5.714 13.143l372.571 372.571-100.571 100.571q-10.857 10.857-10.857 25.714t10.857 25.714 25.714 10.857h292.571q14.857 0 25.714-10.857t10.857-25.714z" />
<glyph unicode="&#xf091;" d="M261.714 455.429q-42.286 92.571-42.286 212h-146.286v-54.857q0-44.571 54-92.571t134.571-64.571zM877.714 612.571v54.857h-146.286q0-119.429-42.286-212 80.571 16.571 134.571 64.571t54 92.571zM950.857 685.714v-73.143q0-40.571-23.714-81.714t-64-74.286-98.857-55.714-123.143-25.429q-24-30.857-54.286-54.286-21.714-19.429-30-41.429t-8.286-51.143q0-30.857 17.429-52t55.714-21.143q42.857 0 76.286-26t33.429-65.429v-36.571q0-8-5.143-13.143t-13.143-5.143h-475.429q-8 0-13.143 5.143t-5.143 13.143v36.571q0 39.429 33.429 65.429t76.286 26q38.286 0 55.714 21.143t17.429 52q0 29.143-8.286 51.143t-30 41.429q-30.286 23.429-54.286 54.286-64.571 2.857-123.143 25.429t-98.857 55.714-64 74.286-23.714 81.714v73.143q0 22.857 16 38.857t38.857 16h164.571v54.857q0 37.714 26.857 64.571t64.571 26.857h329.143q37.714 0 64.571-26.857t26.857-64.571v-54.857h164.571q22.857 0 38.857-16t16-38.857z" horiz-adv-x="951" />
<glyph unicode="&#xf0b0;" d="M801.714 782.286q9.714-23.429-8-40l-281.714-281.714v-424q0-24-22.286-33.714-7.429-2.857-14.286-2.857-15.429 0-25.714 10.857l-146.286 146.286q-10.857 10.857-10.857 25.714v277.714l-281.714 281.714q-17.714 16.571-8 40 9.714 22.286 33.714 22.286h731.429q24 0 33.714-22.286z" horiz-adv-x="805" />
<glyph unicode="&#xf0c1;" d="M832 265.143q0 22.857-16 38.857l-118.857 118.857q-16 16-38.857 16-24 0-41.143-18.286 1.714-1.714 10.857-10.571t12.286-12.286 8.571-10.857 7.429-14.571 2-15.714q0-22.857-16-38.857t-38.857-16q-8.571 0-15.714 2t-14.571 7.429-10.857 8.571-12.286 12.286-10.571 10.857q-18.857-17.714-18.857-41.714 0-22.857 16-38.857l117.714-118.286q15.429-15.429 38.857-15.429 22.857 0 38.857 14.857l84 83.429q16 16 16 38.286zM430.286 668q0 22.857-16 38.857l-117.714 118.286q-16 16-38.857 16-22.286 0-38.857-15.429l-84-83.429q-16-16-16-38.286 0-22.857 16-38.857l118.857-118.857q15.429-15.429 38.857-15.429 24 0 41.143 17.714-1.714 1.714-10.857 10.571t-12.286 12.286-8.571 10.857-7.429 14.571-2 15.714q0 22.857 16 38.857t38.857 16q8.571 0 15.714-2t14.571-7.429 10.857-8.571 12.286-12.286 10.571-10.857q18.857 17.714 18.857 41.714zM941.714 265.143q0-68.571-48.571-116l-84-83.429q-47.429-47.429-116-47.429-69.143 0-116.571 48.571l-117.714 118.286q-47.429 47.429-47.429 116 0 70.286 50.286 119.429l-50.286 50.286q-49.143-50.286-118.857-50.286-68.571 0-116.571 48l-118.857 118.857q-48 48-48 116.571t48.571 116l84 83.429q47.429 47.429 116 47.429 69.143 0 116.571-48.571l117.714-118.286q47.429-47.429 47.429-116 0-70.286-50.286-119.429l50.286-50.286q49.143 50.286 118.857 50.286 68.571 0 116.571-48l118.857-118.857q48-48 48-116.571z" horiz-adv-x="951" />
<glyph unicode="&#xf0c5;" d="M969.143 740.571q22.857 0 38.857-16t16-38.857v-694.857q0-22.857-16-38.857t-38.857-16h-548.571q-22.857 0-38.857 16t-16 38.857v164.571h-310.857q-22.857 0-38.857 16t-16 38.857v384q0 22.857 11.429 50.286t27.429 43.429l233.143 233.143q16 16 43.429 27.429t50.286 11.429h237.714q22.857 0 38.857-16t16-38.857v-187.429q38.857 22.857 73.143 22.857h237.714zM658.286 618.857l-170.857-170.857h170.857v170.857zM292.571 838.286l-170.857-170.857h170.857v170.857zM404.571 468.571l180.571 180.571v237.714h-219.429v-237.714q0-22.857-16-38.857t-38.857-16h-237.714v-365.714h292.571v146.286q0 22.857 11.429 50.286t27.429 43.429zM950.857 9.143v658.286h-219.429v-237.714q0-22.857-16-38.857t-38.857-16h-237.714v-365.714h512z" />
<glyph unicode="&#xf0d7;" d="M585.143 557.714q0-14.857-10.857-25.714l-256-256q-10.857-10.857-25.714-10.857t-25.714 10.857l-256 256q-10.857 10.857-10.857 25.714t10.857 25.714 25.714 10.857h512q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="585" />
<glyph unicode="&#xf0d8;" d="M585.143 265.143q0-14.857-10.857-25.714t-25.714-10.857h-512q-14.857 0-25.714 10.857t-10.857 25.714 10.857 25.714l256 256q10.857 10.857 25.714 10.857t25.714-10.857l256-256q10.857-10.857 10.857-25.714z" horiz-adv-x="585" />
<glyph unicode="&#xf0d9;" d="M365.714 704v-512q0-14.857-10.857-25.714t-25.714-10.857-25.714 10.857l-256 256q-10.857 10.857-10.857 25.714t10.857 25.714l256 256q10.857 10.857 25.714 10.857t25.714-10.857 10.857-25.714z" horiz-adv-x="366" />
<glyph unicode="&#xf0da;" d="M329.143 448q0-14.857-10.857-25.714l-256-256q-10.857-10.857-25.714-10.857t-25.714 10.857-10.857 25.714v512q0 14.857 10.857 25.714t25.714 10.857 25.714-10.857l256-256q10.857-10.857 10.857-25.714z" horiz-adv-x="366" />
<glyph unicode="&#xf0f6;" d="M768 242.64v-32.128c0-4.66-1.466-9.75-4.424-12.762-2.962-3.016-6.742-5.75-11.318-5.75h-480.458c-4.628 0-8.414 2.734-11.374 5.75-2.96 3.012-4.424 8.102-4.424 12.762v32.128c0 4.656 1.466 7.14 4.424 10.164 2.96 3.016 6.744 3.196 11.374 3.196h480.456c4.578 0 8.356-0.18 11.318-3.196 2.96-3.018 4.426-5.508 4.426-10.164zM768 370.988v-32.124c0-4.66-1.488-9.894-4.494-12.914-3.008-3.020-6.848-5.95-11.496-5.95h-479.966c-4.702 0-8.544 2.93-11.55 5.95-3.008 3.020-4.494 8.254-4.494 12.914v32.124c0 4.664 1.488 7.004 4.494 10.016 3.006 3.016 6.85 2.996 11.55 2.996h479.966c4.65 0 8.488 0.020 11.496-2.996 3.006-3.012 4.494-5.352 4.494-10.016zM192 64h640v512h-208.012c-13.292 0-24.678 5.234-33.974 14.61-9.352 9.324-14.014 21.3-14.014 34.624v206.766h-384v-768zM640.796 640h187.174c-3.338 8-7 17.208-10.994 21.21l-156.52 157.238c-3.992 4.032-12.458 8.028-20.458 11.376v-187.824l0.798-2zM896 624v-573.86c0-13.378-4.702-25.73-13.998-35.106-9.35-9.32-20.672-15.036-34.014-15.036h-671.974c-13.344 0-24.664 5.708-34.016 15.036-9.294 9.376-13.998 21.726-13.998 35.106v799.742c0 13.352 4.704 23.73 13.998 33.078 9.352 9.348 20.672 13.040 34.016 13.040h447.976c13.342 0 27.998-2.348 44.022-9.036 15.97-6.664 28.658-14.196 37.952-23.54l156.026-156.148c9.296-9.378 17.334-22.614 24.006-38.624 6.618-16.062 9.954-32.652 9.954-44.652v0h0.050z" horiz-adv-x="1019" />
<glyph unicode="&#xf100;" d="M358.286 173.714q0-7.429-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143t5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143t-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143zM577.714 173.714q0-7.429-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143t5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143t-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143z" horiz-adv-x="585" />
<glyph unicode="&#xf101;" d="M340 411.429q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143zM559.429 411.429q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143z" horiz-adv-x="585" />
<glyph unicode="&#xf104;" d="M358.286 649.143q0-7.429-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143t-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143t5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143z" horiz-adv-x="366" />
<glyph unicode="&#xf105;" d="M340 411.429q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143z" horiz-adv-x="366" />
<glyph unicode="&#xf114;" d="M896 173.702v419.296c0 12.68-3.94 23.126-13.228 32.006-9.344 8.902-19.896 12.996-33.228 12.996h-417.792c-13.32 0-24.546 4.79-33.864 13.672-9.328 8.902-13.888 20.018-13.888 32.724v36.478c0 12.712-4.77 23.2-14.086 32.086-9.334 8.876-20.76 13.040-34.080 13.040h-159.866c-13.322 0-24.654-4.164-33.97-13.040-9.332-8.886-14-19.374-14-32.086v-547.174c0-12.708 4.666-23.472 14-32.38 9.316-8.88 20.65-13.32 33.97-13.32h673.6c13.306 0 23.882 4.44 33.202 13.32 9.346 8.908 13.23 19.674 13.23 32.382v0zM960 595.954v-425.668c0-29.254-10.296-53.11-32.262-74.066-21.994-20.968-47.594-32.218-78.22-32.218h-673.602c-30.642 0-56.956 11.226-78.924 32.218-21.978 20.988-32.976 44.838-32.99 74.066v555.762c0 29.252 10.996 53.914 32.99 74.904 21.982 20.96 48.294 31.046 78.924 31.046h159.866c30.658 0 57.108-10.058 79.086-31.046 21.968-20.99 33.132-45.678 33.132-74.904v-20.048h401.516c30.656 0 56.254-13.11 78.22-34.090 21.966-20.972 32.262-46.704 32.262-75.902v-0.054z" horiz-adv-x="951" />
<glyph unicode="&#xf122;" d="M365.714 341.714v-40q0-24-22.286-33.714-7.429-2.857-14.286-2.857-15.429 0-25.714 10.857l-292.571 292.571q-10.857 10.857-10.857 25.714t10.857 25.714l292.571 292.571q16.571 17.714 40 8 22.286-9.714 22.286-33.714v-39.429l-226.857-227.429q-10.857-10.857-10.857-25.714t10.857-25.714zM1024 320q0-33.143-9.714-76.286t-22-78.857-27.429-71.429-23.143-51.714l-11.429-22.857q-4.571-9.714-16-9.714-3.429 0-5.143 0.571-14.286 4.571-13.143 19.429 24.571 228.571-60.571 322.857-36.571 40.571-97.429 63.143t-152.857 30v-143.429q0-24-22.286-33.714-7.429-2.857-14.286-2.857-15.429 0-25.714 10.857l-292.571 292.571q-10.857 10.857-10.857 25.714t10.857 25.714l292.571 292.571q16.571 17.714 40 8 22.286-9.714 22.286-33.714v-149.714q234.857-16 342.286-126.286 96.571-98.857 96.571-290.857z" />
<glyph unicode="&#xf126;" d="M164.571 118.857q0 22.857-16 38.857t-38.857 16-38.857-16-16-38.857 16-38.857 38.857-16 38.857 16 16 38.857zM164.571 777.143q0 22.857-16 38.857t-38.857 16-38.857-16-16-38.857 16-38.857 38.857-16 38.857 16 16 38.857zM530.286 704q0 22.857-16 38.857t-38.857 16-38.857-16-16-38.857 16-38.857 38.857-16 38.857 16 16 38.857zM585.143 704q0-29.714-14.857-55.143t-40-39.714q-1.143-164-129.143-236.571-38.857-21.714-116-46.286-73.143-22.857-96.857-40.571t-23.714-57.143v-14.857q25.143-14.286 40-39.714t14.857-55.143q0-45.714-32-77.714t-77.714-32-77.714 32-32 77.714q0 29.714 14.857 55.143t40 39.714v468.571q-25.143 14.286-40 39.714t-14.857 55.143q0 45.714 32 77.714t77.714 32 77.714-32 32-77.714q0-29.714-14.857-55.143t-40-39.714v-284q30.857 14.857 88 32.571 31.429 9.714 50 16.857t40.286 17.714 33.714 22.571 23.143 29.143 16 39.714 4.857 52.286q-25.143 14.286-40 39.714t-14.857 55.143q0 45.714 32 77.714t77.714 32 77.714-32 32-77.714z" horiz-adv-x="585" />
<glyph unicode="&#xf127;" d="M250.857 233.714l-146.286-146.286q-5.714-5.143-13.143-5.143-6.857 0-13.143 5.143-5.143 5.714-5.143 13.143t5.143 13.143l146.286 146.286q5.714 5.143 13.143 5.143t13.143-5.143q5.143-5.714 5.143-13.143t-5.143-13.143zM347.429 210.286v-182.857q0-8-5.143-13.143t-13.143-5.143-13.143 5.143-5.143 13.143v182.857q0 8 5.143 13.143t13.143 5.143 13.143-5.143 5.143-13.143zM219.429 338.286q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143 5.143 13.143 13.143 5.143h182.857q8 0 13.143-5.143t5.143-13.143zM941.714 265.143q0-68.571-48.571-116l-84-83.429q-47.429-47.429-116-47.429-69.143 0-116.571 48.571l-190.857 191.429q-12 12-24 32l136.571 10.286 156-156.571q15.429-15.429 38.857-15.714t38.857 15.143l84 83.429q16 16 16 38.286 0 22.857-16 38.857l-156.571 157.143 10.286 136.571q20-12 32-24l192-192q48-49.143 48-116.571zM589.143 678.857l-136.571-10.286-156 156.571q-16 16-38.857 16-22.286 0-38.857-15.429l-84-83.429q-16-16-16-38.286 0-22.857 16-38.857l156.571-156.571-10.286-137.143q-20 12-32 24l-192 192q-48 49.143-48 116.571 0 68.571 48.571 116l84 83.429q47.429 47.429 116 47.429 69.143 0 116.571-48.571l190.857-191.429q12-12 24-32zM950.857 630.857q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143 5.143 13.143 13.143 5.143h182.857q8 0 13.143-5.143t5.143-13.143zM640 941.714v-182.857q0-8-5.143-13.143t-13.143-5.143-13.143 5.143-5.143 13.143v182.857q0 8 5.143 13.143t13.143 5.143 13.143-5.143 5.143-13.143zM872.571 855.429l-146.286-146.286q-6.286-5.143-13.143-5.143t-13.143 5.143q-5.143 5.714-5.143 13.143t5.143 13.143l146.286 146.286q5.714 5.143 13.143 5.143t13.143-5.143q5.143-5.714 5.143-13.143t-5.143-13.143z" horiz-adv-x="951" />
<glyph unicode="&#xf141;" d="M219.429 530.286v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857zM512 530.286v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857zM804.571 530.286v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857z" horiz-adv-x="805" />
<glyph unicode="&#xf142;" d="M219.429 246.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857zM219.429 539.429v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857zM219.429 832v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857z" horiz-adv-x="219" />
<glyph unicode="&#xf188;" d="M932.571 411.429q0-14.857-10.857-25.714t-25.714-10.857h-128q0-97.714-38.286-165.714l118.857-119.429q10.857-10.857 10.857-25.714t-10.857-25.714q-10.286-10.857-25.714-10.857t-25.714 10.857l-113.143 112.571q-2.857-2.857-8.571-7.429t-24-16.286-37.143-20.857-46.857-16.571-55.429-7.429v512h-73.143v-512q-29.143 0-58 7.714t-49.714 18.857-37.714 22.286-24.857 18.571l-8.571 8-104.571-118.286q-11.429-12-27.429-12-13.714 0-24.571 9.143-10.857 10.286-11.714 25.429t8.857 26.571l115.429 129.714q-33.143 65.143-33.143 156.571h-128q-14.857 0-25.714 10.857t-10.857 25.714 10.857 25.714 25.714 10.857h128v168l-98.857 98.857q-10.857 10.857-10.857 25.714t10.857 25.714 25.714 10.857 25.714-10.857l98.857-98.857h482.286l98.857 98.857q10.857 10.857 25.714 10.857t25.714-10.857 10.857-25.714-10.857-25.714l-98.857-98.857v-168h128q14.857 0 25.714-10.857t10.857-25.714zM658.286 740.571h-365.714q0 76 53.429 129.429t129.429 53.429 129.429-53.429 53.429-129.429z" horiz-adv-x="951" />
</font></defs></svg>

BIN
server/sonar-web/public/fonts/sonar-5.2.ttf View File


BIN
server/sonar-web/public/fonts/sonar-5.2.woff View File


+ 0
- 1
server/sonar-web/scripts/start.js View File

@@ -106,7 +106,6 @@ function runDevServer(compiler, host, port, protocol) {
},
proxy: {
'/api': proxy,
'/fonts': proxy,
'/static': proxy,
'/integration': proxy
}

+ 2
- 1
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavBranch.tsx View File

@@ -36,6 +36,7 @@ import PlusCircleIcon from '../../../../components/icons-components/PlusCircleIc
import HelpTooltip from '../../../../components/controls/HelpTooltip';
import Toggler from '../../../../components/controls/Toggler';
import Tooltip from '../../../../components/controls/Tooltip';
import DropdownIcon from '../../../../components/icons-components/DropdownIcon';

interface Props {
branchLikes: BranchLike[];
@@ -186,7 +187,7 @@ export default class ComponentNavBranch extends React.PureComponent<Props, State
<Tooltip mouseEnterDelay={1} overlay={displayName}>
<span className="text-limited text-top">{displayName}</span>
</Tooltip>
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</a>
</Toggler>
</div>

+ 1
- 1
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavHeader.tsx View File

@@ -22,7 +22,7 @@ import { connect } from 'react-redux';
import { Link } from 'react-router';
import ComponentNavBranch from './ComponentNavBranch';
import { Component, Organization, BranchLike, Breadcrumb } from '../../../types';
import QualifierIcon from '../../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../../components/icons-components/QualifierIcon';
import { getOrganizationByKey, areThereCustomOrganizations } from '../../../../store/rootReducer';
import OrganizationAvatar from '../../../../components/common/OrganizationAvatar';
import OrganizationHelmet from '../../../../components/common/OrganizationHelmet';

+ 3
- 2
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMenu.tsx View File

@@ -31,6 +31,7 @@ import {
getBranchLikeQuery
} from '../../../../helpers/branches';
import { translate } from '../../../../helpers/l10n';
import DropdownIcon from '../../../../components/icons-components/DropdownIcon';

const SETTINGS_URLS = [
'/project/admin',
@@ -196,7 +197,7 @@ export default class ComponentNavMenu extends React.PureComponent<Props> {
id="component-navigation-admin"
onClick={onToggleClick}>
{translate('layout.settings')}
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</a>
)}
</Dropdown>
@@ -436,7 +437,7 @@ export default class ComponentNavMenu extends React.PureComponent<Props> {
id="component-navigation-more"
onClick={onToggleClick}>
{translate('more')}
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</a>
)}
</Dropdown>

+ 6
- 6
server/sonar-web/src/main/js/app/components/nav/component/__tests__/__snapshots__/ComponentNavBranch-test.tsx.snap View File

@@ -61,8 +61,8 @@ exports[`renders main branch 1`] = `
master
</span>
</Tooltip>
<i
className="icon-dropdown little-spacer-left"
<DropdownIcon
className="little-spacer-left"
/>
</a>
</Toggler>
@@ -152,8 +152,8 @@ exports[`renders pull request 1`] = `
1234 – Feature PR
</span>
</Tooltip>
<i
className="icon-dropdown little-spacer-left"
<DropdownIcon
className="little-spacer-left"
/>
</a>
</Toggler>
@@ -264,8 +264,8 @@ exports[`renders short-living branch 1`] = `
foo
</span>
</Tooltip>
<i
className="icon-dropdown little-spacer-left"
<DropdownIcon
className="little-spacer-left"
/>
</a>
</Toggler>

+ 2
- 1
server/sonar-web/src/main/js/app/components/nav/global/GlobalNavMenu.tsx View File

@@ -25,6 +25,7 @@ import { translate } from '../../../../helpers/l10n';
import { getQualityGatesUrl, getBaseUrl } from '../../../../helpers/urls';
import { isMySet } from '../../../../apps/issues/utils';
import Dropdown from '../../../../components/controls/Dropdown';
import DropdownIcon from '../../../../components/icons-components/DropdownIcon';

interface Props {
appState: AppState;
@@ -165,7 +166,7 @@ export default class GlobalNavMenu extends React.PureComponent<Props> {
id="global-navigation-more"
onClick={onToggleClick}>
{translate('more')}
<span className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left text-middle" />
</a>
)}
</Dropdown>

+ 6
- 3
server/sonar-web/src/main/js/app/components/nav/settings/SettingsNav.tsx View File

@@ -30,6 +30,7 @@ import { Extension } from '../../../types';
import { translate } from '../../../../helpers/l10n';
import Dropdown from '../../../../components/controls/Dropdown';
import { PluginPendingResult } from '../../../../api/plugins';
import DropdownIcon from '../../../../components/icons-components/DropdownIcon';

interface Props {
editionStatus?: EditionStatus;
@@ -137,7 +138,7 @@ export default class SettingsNav extends React.PureComponent<Props> {
id="settings-navigation-configuration"
onClick={onToggleClick}>
{translate('sidebar.project_settings')}
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</a>
)}
</Dropdown>
@@ -172,7 +173,8 @@ export default class SettingsNav extends React.PureComponent<Props> {
className={classNames('dropdown-toggle', { active: open || this.isProjectsActive() })}
href="#"
onClick={onToggleClick}>
{translate('sidebar.projects')} <i className="icon-dropdown" />
{translate('sidebar.projects')}
<DropdownIcon className="little-spacer-left" />
</a>
)}
</Dropdown>
@@ -221,7 +223,8 @@ export default class SettingsNav extends React.PureComponent<Props> {
className={classNames('dropdown-toggle', { active: open || this.isSecurityActive() })}
href="#"
onClick={onToggleClick}>
{translate('sidebar.security')} <i className="icon-dropdown" />
{translate('sidebar.security')}
<DropdownIcon className="little-spacer-left" />
</a>
)}
</Dropdown>

+ 1
- 1
server/sonar-web/src/main/js/app/components/search/SearchResult.js View File

@@ -22,7 +22,7 @@ import React from 'react';
import { Link } from 'react-router';
/*:: import type { Component } from './utils'; */
import FavoriteIcon from '../../../components/icons-components/FavoriteIcon';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import ClockIcon from '../../../components/icons-components/ClockIcon';
import Tooltip from '../../../components/controls/Tooltip';
import { getProjectUrl } from '../../../helpers/urls';

+ 0
- 5
server/sonar-web/src/main/js/app/styles/components/boxed-group.css View File

@@ -47,11 +47,6 @@
line-height: var(--controlHeight);
}

.boxed-group-header [class^='icon-'] {
display: inline-block;
vertical-align: middle;
}

.boxed-group-actions {
position: relative;
z-index: 12;

+ 4
- 63
server/sonar-web/src/main/js/app/styles/components/issues.css View File

@@ -134,6 +134,8 @@
}

.issue-meta-list {
display: flex;
align-items: center;
padding-left: 10px;
}

@@ -142,13 +144,8 @@
font-size: var(--smallFontSize);
}

.issue-meta-on-right {
float: right;
margin-right: 0;
}

.issue-meta-on-right + .issue-meta-on-right {
margin-right: 10px;
.issue-meta + .issue-meta {
margin-left: var(--gridSize);
}

.issue-meta-in-corner {
@@ -386,62 +383,6 @@ input.issue-action-options-search {
font-size: var(--smallFontSize);
}

.issue-navigate {
display: none;
position: absolute;
width: 24px;
top: 0;
bottom: 0;
border-bottom: none;
}

.issue-navigate .issue-navigate-to-left,
.issue-navigate .issue-navigate-to-right {
position: absolute;
top: 50%;
left: 50%;
margin: -8px 0 0 -3px;
}

.issue-navigate .issue-navigate-to-left:before,
.issue-navigate .issue-navigate-to-right:before {
font-size: 18px;
}

.issue-navigate:hover {
background-color: rgba(0, 0, 0, 0.05);
}

.issue-navigate-right .issue-meta-in-corner {
padding-right: 24px;
}

.issue-navigate-left {
padding-left: 24px;
}

.issue-navigate-left .issue-navigate {
display: block;
left: 0;
}

.issue-navigate-left .issue-navigate .issue-navigate-to-right {
display: none;
}

.issue-navigate-right {
padding-right: 24px;
}

.issue-navigate-right .issue-navigate {
display: block;
right: 0;
}

.issue-navigate-right .issue-navigate .issue-navigate-to-left {
display: none;
}

.issue-with-checkbox {
padding-left: 24px;
}

+ 7
- 7
server/sonar-web/src/main/js/app/styles/components/ui.css View File

@@ -62,13 +62,13 @@

.process-spinner-close {
position: absolute;
top: 0;
right: 0;
padding: 3px;
background: none !important;
border: none !important;
line-height: 1;
color: #fff;
top: 2px;
right: 2px;
}
.process-spinner-close:hover path,
.process-spinner-close:focus path {
fill: var(--red) !important;
}

.shortcuts-section + .shortcuts-section {

+ 0
- 368
server/sonar-web/src/main/js/app/styles/init/icons.css View File

@@ -17,30 +17,10 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
@font-face {
font-family: 'sonar';
src: url('../fonts/sonar-5.2.eot?');
src: url('../fonts/sonar-5.2.eot?#iefix') format('embedded-opentype'),
url('../fonts/sonar-5.2.woff?') format('woff'),
url('../fonts/sonar-5.2.ttf?') format('truetype'),
url('../fonts/sonar-5.2.svg?#sonar') format('svg');
font-weight: normal;
font-style: normal;
}

[class^='icon-'],
[class*=' icon-'] {
font-family: 'sonar';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: middle;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

a[class^='icon-'],
@@ -67,203 +47,6 @@ a[class*=' icon-'] {
color: var(--darkBlue);
}

/*
* Severity
*/
[class^='icon-severity-'],
[class*=' icon-severity'] {
display: inline-block;
vertical-align: top;
width: 16px;
height: 16px;
background-size: 12px 12px;
background: no-repeat center center;
}

.icon-severity-blocker,
.icon-severity-4 {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cg%20transform%3D%22matrix(-1%2C1.22465e-16%2C-1.22465e-16%2C-1%2C12%2C12)%22%3E%3Cpath%20fill%3D%22%23d4333f%22%20d%3D%22M6%2C0C9.311%2C0%2012%2C2.689%2012%2C6C12%2C9.311%209.311%2C12%206%2C12C2.689%2C12%200%2C9.311%200%2C6C0%2C2.689%202.689%2C0%206%2C0ZM7%2C5L5%2C5L5%2C10L7%2C10L7%2C5ZM7%2C2L5%2C2L5%2C4L7%2C4L7%2C2Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E');
}

.icon-severity-critical,
.icon-severity-3 {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%23d4333f%22%20d%3D%22M6%2C0C9.311%2C0%2012%2C2.689%2012%2C6C12%2C9.311%209.311%2C12%206%2C12C2.689%2C12%200%2C9.311%200%2C6C0%2C2.689%202.689%2C0%206%2C0ZM7%2C10L7%2C5.414L8.893%2C7.307C9.023%2C7.431%209.175%2C7.523%209.35%2C7.568C9.717%2C7.663%2010.116%2C7.537%2010.361%2C7.248C10.43%2C7.167%2010.486%2C7.075%2010.526%2C6.977C10.573%2C6.861%2010.598%2C6.738%2010.6%2C6.613C10.602%2C6.489%2010.58%2C6.365%2010.536%2C6.248C10.485%2C6.113%2010.406%2C5.997%2010.307%2C5.893C9.095%2C4.681%207.913%2C3.437%206.669%2C2.257C6.616%2C2.211%206.561%2C2.169%206.5%2C2.134C6.362%2C2.054%206.211%2C2.014%206.052%2C2.001C6%2C2%206%2C2%205.948%2C2.001C5.772%2C2.015%205.604%2C2.065%205.455%2C2.161C5.396%2C2.2%205.344%2C2.245%205.293%2C2.293C4.08%2C3.505%202.836%2C4.687%201.656%2C5.932C1.563%2C6.041%201.49%2C6.161%201.447%2C6.299C1.409%2C6.417%201.394%2C6.542%201.402%2C6.667C1.409%2C6.773%201.433%2C6.878%201.474%2C6.977C1.507%2C7.059%201.551%2C7.136%201.605%2C7.207C1.813%2C7.478%202.153%2C7.627%202.493%2C7.596C2.691%2C7.577%202.871%2C7.498%203.028%2C7.378C3.069%2C7.343%203.068%2C7.344%203.107%2C7.307L5%2C5.414L5%2C10L7%2C10Z%22%2F%3E%3C%2Fsvg%3E');
}

.icon-severity-major,
.icon-severity-2 {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2212px%22%20height%3D%2212px%22%20viewBox%3D%220%200%2012%2012%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A1.41421%3B%22%3E%3Cpath%20fill%3D%22%23d4333f%22%20d%3D%22M6%2C0C9.311%2C0%2012%2C2.689%2012%2C6C12%2C9.311%209.311%2C12%206%2C12C2.689%2C12%200%2C9.311%200%2C6C0%2C2.689%202.689%2C0%206%2C0ZM6.08%2C2.903C6.151%2C2.911%206.22%2C2.922%206.288%2C2.942C6.426%2C2.984%206.548%2C3.056%206.658%2C3.147C7.902%2C4.293%209.084%2C5.504%2010.297%2C6.683C10.397%2C6.786%2010.478%2C6.901%2010.531%2C7.035C10.576%2C7.151%2010.6%2C7.275%2010.6%2C7.399C10.6%2C7.524%2010.577%2C7.648%2010.532%2C7.763C10.493%2C7.863%2010.438%2C7.956%2010.37%2C8.038C10.129%2C8.33%209.732%2C8.461%209.363%2C8.372C9.188%2C8.329%209.035%2C8.239%208.903%2C8.117L6%2C5.295L3.097%2C8.117C3.058%2C8.153%203.058%2C8.153%203.017%2C8.187C2.902%2C8.273%202.777%2C8.337%202.637%2C8.372C2.516%2C8.401%202.39%2C8.408%202.267%2C8.391C1.928%2C8.345%201.63%2C8.124%201.489%2C7.813C1.452%2C7.732%201.427%2C7.646%201.413%2C7.558C1.396%2C7.453%201.396%2C7.345%201.413%2C7.24C1.445%2C7.044%201.535%2C6.87%201.666%2C6.721C2.847%2C5.51%204.09%2C4.362%205.303%2C3.183C5.355%2C3.135%205.409%2C3.09%205.47%2C3.052C5.623%2C2.956%205.794%2C2.91%205.973%2C2.9C6.027%2C2.9%206.027%2C2.9%206.08%2C2.903Z%22%2F%3E%3C%2Fsvg%3E');
}

.icon-severity-minor,
.icon-severity-1 {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%2387bb43%22%20d%3D%22M6%2C0C9.311%2C0%2012%2C2.689%2012%2C6C12%2C9.311%209.311%2C12%206%2C12C2.689%2C12%200%2C9.311%200%2C6C0%2C2.689%202.689%2C0%206%2C0ZM7%2C6.586L7%2C2L5%2C2L5%2C6.586L3.107%2C4.693C3.055%2C4.644%203.002%2C4.598%202.942%2C4.559C2.79%2C4.461%202.619%2C4.413%202.44%2C4.401C2.386%2C4.4%202.334%2C4.402%202.28%2C4.407C2.121%2C4.431%201.97%2C4.482%201.836%2C4.574C1.748%2C4.634%201.67%2C4.708%201.605%2C4.793C1.398%2C5.064%201.344%2C5.432%201.464%2C5.752C1.515%2C5.887%201.594%2C6.003%201.693%2C6.107C2.905%2C7.319%204.087%2C8.563%205.331%2C9.743C5.425%2C9.823%205.526%2C9.889%205.642%2C9.934C5.904%2C10.034%206.203%2C10.019%206.454%2C9.891C6.548%2C9.843%206.631%2C9.78%206.707%2C9.707C7.92%2C8.495%209.164%2C7.313%2010.344%2C6.068C10.437%2C5.959%2010.51%2C5.839%2010.553%2C5.701C10.591%2C5.583%2010.606%2C5.458%2010.598%2C5.333C10.591%2C5.227%2010.567%2C5.122%2010.526%2C5.023C10.493%2C4.941%2010.449%2C4.864%2010.395%2C4.793C10.187%2C4.522%209.847%2C4.373%209.507%2C4.404C9.309%2C4.423%209.129%2C4.502%208.972%2C4.622C8.932%2C4.656%208.932%2C4.656%208.893%2C4.693L7%2C6.586Z%22%2F%3E%3C%2Fsvg%3E');
}

.icon-severity-info,
.icon-severity-0 {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%234b9fd5%22%20d%3D%22M6%2C0C9.311%2C0%2012%2C2.689%2012%2C6C12%2C9.311%209.311%2C12%206%2C12C2.689%2C12%200%2C9.311%200%2C6C0%2C2.689%202.689%2C0%206%2C0ZM7%2C5L5%2C5L5%2C10L7%2C10L7%2C5ZM7%2C2L5%2C2L5%2C4L7%2C4L7%2C2Z%22%2F%3E%3C%2Fsvg%3E');
}

/*
* Status
*/
[class^='icon-status-'],
[class*=' icon-status'] {
display: inline-block;
vertical-align: top;
width: 16px;
height: 16px;
background-size: 14px 14px;
background: no-repeat center center;
}

.icon-status-open {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M7%202.75c-.77%200-1.482.19-2.133.57-.65.38-1.166.896-1.547%201.547-.38.65-.57%201.362-.57%202.133%200%20.77.19%201.482.57%202.133.38.65.896%201.167%201.547%201.547.65.38%201.362.57%202.133.57.77%200%201.482-.19%202.133-.57.65-.38%201.167-.896%201.547-1.547.38-.65.57-1.362.57-2.133%200-.77-.19-1.482-.57-2.133-.38-.65-.896-1.166-1.547-1.547-.65-.38-1.362-.57-2.133-.57zM13%207c0%201.09-.268%202.092-.805%203.012-.536.92-1.264%201.647-2.183%202.183C9.092%2012.732%208.09%2013%207%2013c-1.09%200-2.092-.268-3.012-.805-.92-.536-1.647-1.264-2.183-2.183C1.268%209.092%201%208.09%201%207c0-1.09.268-2.092.805-3.012.536-.92%201.264-1.647%202.183-2.183C4.908%201.268%205.91%201%207%201c1.09%200%202.092.268%203.012.805.92.536%201.647%201.264%202.183%202.183C12.732%204.908%2013%205.91%2013%207z%22%20fill%3D%22%234B9FD5%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-status-confirmed {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M9%207c0%20.552-.195%201.023-.586%201.414C8.024%208.804%207.552%209%207%209c-.552%200-1.023-.195-1.414-.586C5.196%208.024%205%207.552%205%207c0-.552.195-1.023.586-1.414C5.976%205.196%206.448%205%207%205c.552%200%201.023.195%201.414.586.39.39.586.862.586%201.414zM7%202.75c-.77%200-1.482.19-2.133.57-.65.38-1.166.896-1.547%201.547-.38.65-.57%201.362-.57%202.133%200%20.77.19%201.482.57%202.133.38.65.896%201.167%201.547%201.547.65.38%201.362.57%202.133.57.77%200%201.482-.19%202.133-.57.65-.38%201.167-.896%201.547-1.547.38-.65.57-1.362.57-2.133%200-.77-.19-1.482-.57-2.133-.38-.65-.896-1.166-1.547-1.547-.65-.38-1.362-.57-2.133-.57zM13%207c0%201.09-.268%202.092-.805%203.012-.536.92-1.264%201.647-2.183%202.183C9.092%2012.732%208.09%2013%207%2013c-1.09%200-2.092-.268-3.012-.805-.92-.536-1.647-1.264-2.183-2.183C1.268%209.092%201%208.09%201%207c0-1.09.268-2.092.805-3.012.536-.92%201.264-1.647%202.183-2.183C4.908%201.268%205.91%201%207%201c1.09%200%202.092.268%203.012.805.92.536%201.647%201.264%202.183%202.183C12.732%204.908%2013%205.91%2013%207z%22%20fill%3D%22%234B9FD5%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-status-reopened {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M7%2011.25v-8.5c-.77%200-1.482.19-2.133.57-.65.38-1.166.896-1.547%201.547-.38.65-.57%201.362-.57%202.133%200%20.77.19%201.482.57%202.133.38.65.896%201.167%201.547%201.547.65.38%201.362.57%202.133.57zM13%207c0%201.09-.268%202.092-.805%203.012-.536.92-1.264%201.647-2.183%202.183C9.092%2012.732%208.09%2013%207%2013c-1.09%200-2.092-.268-3.012-.805-.92-.536-1.647-1.264-2.183-2.183C1.268%209.092%201%208.09%201%207c0-1.09.268-2.092.805-3.012.536-.92%201.264-1.647%202.183-2.183C4.908%201.268%205.91%201%207%201c1.09%200%202.092.268%203.012.805.92.536%201.647%201.264%202.183%202.183C12.732%204.908%2013%205.91%2013%207z%22%20fill%3D%22%234B9FD5%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-status-resolved {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M11.03%205.734c0-.145-.046-.265-.14-.36l-.71-.702c-.1-.1-.216-.15-.352-.15-.135%200-.252.05-.35.15l-3.19%203.18-1.765-1.766c-.1-.1-.216-.15-.35-.15-.137%200-.254.05-.353.15l-.71.703c-.094.093-.14.213-.14.358%200%20.14.046.258.14.352l2.828%202.828c.098.1.216.15.35.15.142%200%20.26-.05.36-.15l4.243-4.242c.094-.094.14-.21.14-.352zM13%207c0%201.09-.268%202.092-.805%203.012-.536.92-1.264%201.647-2.183%202.183C9.092%2012.732%208.09%2013%207%2013c-1.09%200-2.092-.268-3.012-.805-.92-.536-1.647-1.264-2.183-2.183C1.268%209.092%201%208.09%201%207c0-1.09.268-2.092.805-3.012.536-.92%201.264-1.647%202.183-2.183C4.908%201.268%205.91%201%207%201c1.09%200%202.092.268%203.012.805.92.536%201.647%201.264%202.183%202.183C12.732%204.908%2013%205.91%2013%207z%22%20fill%3D%22%23444%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-status-closed {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M13%207c0%201.09-.268%202.092-.805%203.012-.536.92-1.264%201.647-2.183%202.183C9.092%2012.732%208.09%2013%207%2013c-1.09%200-2.092-.268-3.012-.805-.92-.536-1.647-1.264-2.183-2.183C1.268%209.092%201%208.09%201%207c0-1.09.268-2.092.805-3.012.536-.92%201.264-1.647%202.183-2.183C4.908%201.268%205.91%201%207%201c1.09%200%202.092.268%203.012.805.92.536%201.647%201.264%202.183%202.183C12.732%204.908%2013%205.91%2013%207z%22%20fill%3D%22%23444%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

/*
* Test Status
*/
.icon-test-status-ok:before {
content: '\f013';
color: var(--green);
font-size: var(--bigFontSize);
}

.icon-test-status-failure:before {
content: '\f000';
color: var(--orange);
font-size: var(--bigFontSize);
}

.icon-test-status-error:before {
content: '\f057';
color: var(--red);
font-size: var(--bigFontSize);
}

.icon-test-status-skipped:before {
content: '\f056';
color: var(--gray71);
font-size: var(--bigFontSize);
}

/*
* Alert
*/
.icon-alert-ok {
font-size: var(--bigFontSize);
}

.icon-alert-ok:before {
content: '\f013';
color: var(--green);
font-size: var(--bigFontSize);
}

.icon-alert-warn {
font-size: var(--bigFontSize);
}

.icon-alert-warn:before {
content: '\f000';
color: var(--orange);
font-size: var(--bigFontSize);
}

.icon-alert-error {
font-size: var(--bigFontSize);
}

.icon-alert-error:before {
content: '\f057';
color: var(--red);
font-size: var(--bigFontSize);
}

.icon-alert-none {
font-size: var(--bigFontSize);
}

.icon-alert-none:before {
content: '\f056';
color: var(--gray71);
font-size: var(--bigFontSize);
}

/*
* Qualifier
*/
[class^='icon-qualifier-'],
[class*=' icon-qualifier-'] {
display: inline-block;
vertical-align: top;
width: 16px;
height: 16px;
background-size: 16px 16px;
background: no-repeat center center;
}

.icon-qualifier-dir,
.icon-qualifier-pac {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M14%2012.286V5.703c0-.198-.058-.36-.195-.5S13.512%205%2013.315%205H6.704c-.196%200-.36-.075-.5-.214-.136-.14-.203-.312-.203-.51v-.57c0-.2-.07-.363-.207-.502C5.655%203.064%205.487%203%205.29%203H2.707c-.196%200-.363.065-.5.204-.137.14-.206.302-.206.5v8.582c0%20.2.07.367.206.506.137.14.304.208.5.208h10.61c.196%200%20.352-.07.49-.208.137-.14.194-.307.194-.506zm1-6.598v6.65c0%20.458-.152.83-.475%201.16-.324.326-.7.502-1.15.502H2.647c-.452%200-.84-.175-1.162-.503-.324-.328-.486-.7-.486-1.158V3.654c0-.457.162-.842.486-1.17C1.81%202.158%202.196%202%202.648%202h2.7c.45%200%20.84.157%201.164.485.324.328.488.714.488%201.17V4h6.373c.452%200%20.83.174%201.152.5.323.33.475.73.475%201.187z%22%20fill%3D%22%23F90%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-trk,
.icon-qualifier-dev_prj {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M14.985%2013.988L1%2014.005%201.02%205h13.966v8.988zM1.998%205.995l.006%207.02L14.022%2013%2014%206.004l-12.002-.01zM3%204.5V4h9.996l.004.5h1l-.005-1.497-11.98.003L2%204.5zm1-2v-.504h8.002L12%202.5h1l-.004-1.495H3.003L3%202.5z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-brc {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M16%2016H6v-6h10v6zm-9-1h8v-4H7v4zM7%209h8v1H7zM8%208h6v1H8z%22%20fill%3D%22%232D88C0%22%2F%3E%3Cpath%20d%3D%22M5%2012H1V5h12v2h1V4H0v9h5zM3%201h8v.5h1V0H2v1.5h1zM2%203h10v.5h1V2H1v1.5h1z%22%20fill%3D%22%232D88C0%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-cla,
.icon-qualifier-uts {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M3%2014h10V6H9V2H3zm7.012-9h3.008c-.012-.674-.78-1.258-1.27-1.752-.488-.495-.973-1.243-1.75-1.24v2.96zM14%204.995V15H2V1l7.997.02c1.013-.03%201.57.893%202.239%201.555.667.663%201.75%201.47%201.763%202.42z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M7%208l-3%202.5L7%2013zM8%2013l3-2.5L8%208z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-fil {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2215%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M3%2014h10V6H9V2H3zm7.012-9h3.008c-.012-.674-.78-1.258-1.27-1.752-.488-.495-.973-1.243-1.75-1.24v2.96zM14%204.995V15H2V1l7.997.02c1.013-.03%201.57.893%202.239%201.555.667.663%201.75%201.47%201.763%202.42z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20fill%3D%22%232D88C0%22%20d%3D%22M4%2011h8v1H4zM4%209h8v1H4z%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-lib {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M1%2013h4V3H1zm3-1H2v-2h2v2zM2%204h2v4H2zM6%2013h4V3H6zm3-1H7v-2h2v2zM7%204h2v4H7zM11%2013h4V3h-4zm3-1h-2v-2h2v2zm-2-8h2v4h-2z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-vw {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M1.016%2014.97V1.015H14.97V14.97H1.015zm1-1H13.97V2.015H2.015V13.97z%22%20fill%3D%22%232D88C0%22%2F%3E%3Cpath%20d%3D%22M3.006%207V3.006H7V7H3.006zm1-1H6V4.006H4.006V6zM9%207V3.015h3.985V7H9zm1-1h1.985V4.015H10V6zM3.004%2012.996V9H7v3.996H3.004zm1-1H6V10H4.004v1.996zM9%2012.997V9h3.997v3.997H9zm1-1h1.997V10H10v1.997z%22%20fill%3D%22%232D88C0%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-svw {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M13%207.2V1H1v12h7v1H0V0h14v7.2%22%20fill%3D%22%232D88C0%22%2F%3E%3Cpath%20d%3D%22M2%206V2h4v4H2zm1-1h2V3H3v2zm5%201V2h4v4H8zm1-1h2V3H9v2zm-7%207V8h4v4H2zm1-1h2V9H3v2zM16%2016H7V7h9v9zm-8-1h7V8H8v7z%22%20fill%3D%22%232D88C0%22%2F%3E%3Cpath%20d%3D%22M9%209h2v2H9zM12%209h2v2h-2zM9%2012h2v2H9zM12%2012h2v2h-2z%22%20fill%3D%22%232D88C0%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-dev {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M7.974%208.02c-.938%200-1.82-.36-2.482-1.017-.663-.655-1.028-1.527-1.028-2.455%200-.927.365-1.8%201.028-2.455.663-.656%201.544-1.017%202.482-1.017.937%200%201.82.36%202.482%201.017.662.656%201.027%201.528%201.027%202.455%200%20.928-.365%201.8-1.027%202.455C9.793%207.66%208.91%208.02%207.974%208.02zm0-5.778c-1.286%200-2.332%201.034-2.332%202.306s1.046%202.307%202.332%202.307c1.285%200%202.332-1.035%202.332-2.307S9.258%202.242%207.974%202.242zm3.534%206.418c.127.016.243.045.348.086.17.066.302.146.406.246.132.124.253.282.36.47.126.218.226.442.3.668.08.253.15.535.206.838.056.313.095.604.113.867.02.28.03.57.03.862%200%20.532-.174.758-.306.882-.142.132-.397.31-.973.31H3.948c-.233%200-.437-.03-.606-.09-.14-.05-.26-.123-.366-.222-.13-.123-.306-.35-.306-.88%200-.294.01-.584.03-.863.018-.263.056-.554.112-.867.055-.303.125-.585.207-.838.073-.226.173-.45.298-.667.108-.19.23-.347.36-.47.106-.1.238-.18.407-.247.105-.04.22-.07.348-.086.202.13.432.277.683.435.342.217.756.4%201.265.564.523.166%201.06.25%201.59.25.534%200%201.07-.084%201.592-.25.51-.164.923-.348%201.266-.565.25-.158.48-.304.682-.435zm-.244-1.18c-.055%200-.184.066-.387.196-.202.13-.43.276-.685.437-.255.16-.586.307-.994.437-.408.13-.818.196-1.23.196-.41%200-.82-.065-1.228-.196-.408-.13-.74-.276-.993-.437-.255-.16-.484-.306-.686-.437-.202-.13-.33-.196-.386-.196-.374%200-.716.06-1.026.183-.31.12-.572.283-.787.487-.213.203-.404.45-.57.737-.165.288-.297.584-.395.888-.098.303-.18.633-.244.988-.063.355-.106.685-.128.992-.02.306-.032.62-.032.942%200%20.73.224%201.304.672%201.726.448.42%201.043.632%201.785.632h8.044c.743%200%201.34-.21%201.787-.633.447-.42.67-.996.67-1.725%200-.32-.01-.635-.03-.942-.022-.307-.065-.637-.13-.992-.064-.355-.146-.685-.244-.988-.098-.304-.23-.6-.395-.888-.166-.288-.356-.534-.57-.737-.216-.204-.478-.366-.788-.487-.31-.122-.652-.183-1.026-.183z%22%20fill%3D%22%232D88C0%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-qualifier-app {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%0A%20%20%3Cstyle%3E%0A%20%20%20%20.st0%7Bfill%3Anone%3Bstroke%3A%234A9ED5%3Bstroke-miterlimit%3A10%3B%7D%0A%20%20%3C%2Fstyle%3E%0A%20%20%3Ccircle%20cx%3D%223%22%20cy%3D%223%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%228%22%20cy%3D%223%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%2213%22%20cy%3D%223%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%223%22%20cy%3D%228%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%228%22%20cy%3D%228%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%2213%22%20cy%3D%228%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%223%22%20cy%3D%2213%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%228%22%20cy%3D%2213%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%20%20%3Ccircle%20cx%3D%2213%22%20cy%3D%2213%22%20r%3D%221.5%22%20class%3D%22st0%22%2F%3E%0A%3C%2Fsvg%3E%0A');
}

/*
* Checkbox
*/
@@ -352,55 +135,6 @@ a:hover > .icon-radio {
/*
* Common
*/
.icon-arrow-down:before {
content: '\f0d7';
position: relative;
top: -2px;
}

.icon-arrow-up:before {
content: '\f0d8';
position: relative;
top: -2px;
}

.icon-dropdown:before {
content: '\f0d7';
position: relative;
top: -1px;
}

.icon-sort-desc:before {
content: '\f0d7';
position: relative;
top: -1px;
}

.icon-tags:before {
content: '\f02c';
font-size: var(--mediumFontSize);
}

.icon-favorite,
.icon-not-favorite {
display: inline-block;
vertical-align: top;
width: 16px;
height: 16px;
background-size: 16px 16px;
background: no-repeat center center;
transition: all 0.2s ease !important;
}

.icon-favorite {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M15.428%205.777c0%20.13-.078.274-.233.428l-3.24%203.16.767%204.465c.006.042.01.102.01.18%200%20.124-.032.23-.095.316-.062.086-.153.13-.272.13-.113%200-.232-.036-.357-.108l-4.01-2.107L3.99%2014.35c-.13.072-.25.107-.357.107-.125%200-.22-.043-.28-.13-.064-.085-.095-.19-.095-.316%200-.037.006-.096.018-.18l.768-4.464-3.25-3.16C.644%206.045.57%205.9.57%205.775c0-.22.167-.356.5-.41l4.482-.652L7.562.652c.112-.244.258-.366.437-.366.177%200%20.323.122.436.366l2.01%204.062%204.48.652c.335.054.5.19.5.41h.002z%22%20fill%3D%22%23F90%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
transform: rotate(72deg);
}

.icon-not-favorite {
background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20stroke-linejoin%3D%22round%22%20stroke-miterlimit%3D%221.414%22%3E%3Cpath%20d%3D%22M15.428%205.777c0%20.13-.078.274-.233.428l-3.24%203.16.767%204.465c.006.042.01.102.01.18%200%20.124-.032.23-.095.316-.062.086-.153.13-.272.13-.113%200-.232-.036-.357-.108l-4.01-2.107L3.99%2014.35c-.13.072-.25.107-.357.107-.125%200-.22-.043-.28-.13-.064-.085-.095-.19-.095-.316%200-.037.006-.096.018-.18l.768-4.464-3.25-3.16C.644%206.045.57%205.9.57%205.775c0-.22.167-.356.5-.41l4.482-.652L7.562.652c.112-.244.258-.366.437-.366.177%200%20.323.122.436.366l2.01%204.062%204.48.652c.335.054.5.19.5.41h.002z%22%20fill%3D%22%23CDCDCD%22%20fill-rule%3D%22nonzero%22%2F%3E%3C%2Fsvg%3E');
}

.icon-outline {
transition: all 0.2s ease !important;
}
@@ -419,105 +153,3 @@ a:hover > .icon-radio {
stroke: currentColor;
fill-opacity: 1;
}

@keyframes spin-star {
0% {
transform: rotate(0deg);
}

100% {
transform: rotate(144deg);
}
}

.icon-close:before {
content: '\f00d';
font-size: var(--bigFontSize);
}

.icon-inheritance:before {
content: '\f126';
font-size: var(--mediumFontSize);
}

.icon-inheritance-overridden:before {
color: var(--red) !important;
}

.icon-scm,
.icon-scm_dev,
.icon-ci,
.icon-issue,
.icon-homepage {
display: inline-block;
width: 14px;
margin-top: -1px;
text-align: center;
}

.icon-scm:before {
content: '\f017';
font-size: var(--mediumFontSize);
}

.icon-scm_dev:before {
content: '\f015';
font-size: var(--mediumFontSize);
}

.icon-ci:before {
content: '\f021';
font-size: var(--mediumFontSize);
}

.icon-issue:before {
content: '\f188';
font-size: var(--mediumFontSize);
}

.icon-homepage:before {
content: '\f016';
font-size: var(--mediumFontSize);
}

.icon-filter:before {
content: '\f03a';
font-size: var(--bigFontSize);
}

.icon-chevron-left:before {
content: '\f104';
font-size: var(--mediumFontSize);
}

.icon-chevron-right:before {
content: '\f105';
font-size: var(--mediumFontSize);
}

.icon-ellipsis-h:before {
position: relative;
top: 1px;
content: '\f141';
font-size: var(--mediumFontSize);
}

.icon-filter:before {
content: '\f0b0';
font-size: var(--bigFontSize);
}

.icon-lock:before {
content: '\f023';
font-size: var(--bigFontSize);
}

.icon-workspace-doc {
display: inline-block;
vertical-align: top;
width: 9px;
height: 16px;
padding-right: 3px;
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgOSAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEuNDE0MjE7Ij4gICAgPHBhdGggZD0iTTYuNTcxNDMsNS4xNDI4NkM2LjU3MTQzLDUuMjIwMjQgNi41NDMxNSw1LjI4NzIgNi40ODY2MSw1LjM0Mzc1QzYuNDMwMDYsNS40MDAzIDYuMzYzMSw1LjQyODU3IDYuMjg1NzEsNS40Mjg1N0M2LjIwODMzLDUuNDI4NTcgNi4xNDEzNyw1LjQwMDMgNi4wODQ4Miw1LjM0Mzc1QzYuMDI4MjcsNS4yODcyIDYsNS4yMjAyNCA2LDUuMTQyODZDNiw0Ljg2OTA1IDUuODM5MjksNC42NTc3NCA1LjUxNzg2LDQuNTA4OTNDNS4xOTY0Myw0LjM2MDEyIDQuODgwOTUsNC4yODU3MSA0LjU3MTQzLDQuMjg1NzFDNC40OTQwNSw0LjI4NTcxIDQuNDI3MDgsNC4yNTc0NCA0LjM3MDU0LDQuMjAwODlDNC4zMTM5OSw0LjE0NDM1IDQuMjg1NzEsNC4wNzczOCA0LjI4NTcxLDRDNC4yODU3MSwzLjkyMjYyIDQuMzEzOTksMy44NTU2NSA0LjM3MDU0LDMuNzk5MTFDNC40MjcwOCwzLjc0MjU2IDQuNDk0MDUsMy43MTQyOSA0LjU3MTQzLDMuNzE0MjlDNC44NjkwNSwzLjcxNDI5IDUuMTY1MTgsMy43NjE5IDUuNDU5ODIsMy44NTcxNEM1Ljc1NDQ2LDMuOTUyMzggNi4wMTMzOSw0LjExMzEgNi4yMzY2MSw0LjMzOTI5QzYuNDU5ODIsNC41NjU0OCA2LjU3MTQzLDQuODMzMzMgNi41NzE0Myw1LjE0Mjg2Wk04LDUuMTQyODZDOCw0LjcxNDI5IDcuODk3MzIsNC4zMTU0OCA3LjY5MTk2LDMuOTQ2NDNDNy40ODY2MSwzLjU3NzM4IDcuMjE4NzUsMy4yNzUzIDYuODg4MzksMy4wNDAxOEM2LjU1ODA0LDIuODA1MDYgNi4xOTE5NiwyLjYyMDU0IDUuNzkwMTgsMi40ODY2MUM1LjM4ODM5LDIuMzUyNjggNC45ODIxNCwyLjI4NTcxIDQuNTcxNDMsMi4yODU3MUM0LjE2MDcxLDIuMjg1NzEgMy43NTQ0NiwyLjM1MjY4IDMuMzUyNjgsMi40ODY2MUMyLjk1MDg5LDIuNjIwNTQgMi41ODQ4MiwyLjgwNTA2IDIuMjU0NDYsMy4wNDAxOEMxLjkyNDExLDMuMjc1MyAxLjY1NjI1LDMuNTc3MzggMS40NTA4OSwzLjk0NjQzQzEuMjQ1NTQsNC4zMTU0OCAxLjE0Mjg2LDQuNzE0MjkgMS4xNDI4Niw1LjE0Mjg2QzEuMTQyODYsNS43NDQwNSAxLjM0NTI0LDYuMjc5NzYgMS43NSw2Ljc1QzEuODA5NTIsNi44MTU0OCAxLjkwMDMsNi45MTM2OSAyLjAyMjMyLDcuMDQ0NjRDMi4xNDQzNSw3LjE3NTYgMi4yMzUxMiw3LjI3MzgxIDIuMjk0NjQsNy4zMzkyOUMzLjA1NjU1LDguMjUgMy40NzYxOSw5LjEzNjkgMy41NTM1NywxMEw1LjU4OTI5LDEwQzUuNjY2NjcsOS4xMzY5IDYuMDg2MzEsOC4yNSA2Ljg0ODIxLDcuMzM5MjlDNi45MDc3NCw3LjI3MzgxIDYuOTk4NTEsNy4xNzU2IDcuMTIwNTQsNy4wNDQ2NEM3LjI0MjU2LDYuOTEzNjkgNy4zMzMzMyw2LjgxNTQ4IDcuMzkyODYsNi43NUM3Ljc5NzYyLDYuMjc5NzYgOCw1Ljc0NDA1IDgsNS4xNDI4NlpNOS4xNDI4Niw1LjE0Mjg2QzkuMTQyODYsNi4wNjU0OCA4LjgzNjMxLDYuODYzMSA4LjIyMzIxLDcuNTM1NzFDNy45NTUzNiw3LjgyNzM4IDcuNzMzNjMsOC4wODYzMSA3LjU1ODA0LDguMzEyNUM3LjM4MjQ0LDguNTM4NjkgNy4yMDUzNiw4LjgyMjkyIDcuMDI2NzksOS4xNjUxOEM2Ljg0ODIxLDkuNTA3NDQgNi43NDcwMiw5LjgyNzM4IDYuNzIzMjEsMTAuMTI1QzcuMDAyOTgsMTAuMjkxNyA3LjE0Mjg2LDEwLjUzNTcgNy4xNDI4NiwxMC44NTcxQzcuMTQyODYsMTEuMDc3NCA3LjA2ODQ1LDExLjI2NzkgNi45MTk2NCwxMS40Mjg2QzcuMDY4NDUsMTEuNTg5MyA3LjE0Mjg2LDExLjc3OTggNy4xNDI4NiwxMkM3LjE0Mjg2LDEyLjMwOTUgNy4wMDg5MywxMi41NTA2IDYuNzQxMDcsMTIuNzIzMkM2LjgxODQ1LDEyLjg2MDEgNi44NTcxNCwxMyA2Ljg1NzE0LDEzLjE0MjlDNi44NTcxNCwxMy40MTY3IDYuNzYzMzksMTMuNjI4IDYuNTc1ODksMTMuNzc2OEM2LjM4ODM5LDEzLjkyNTYgNi4xNTc3NCwxNCA1Ljg4MzkzLDE0QzUuNzY0ODgsMTQuMjYxOSA1LjU4NjMxLDE0LjQ3MDIgNS4zNDgyMSwxNC42MjVDNS4xMTAxMiwxNC43Nzk4IDQuODUxMTksMTQuODU3MSA0LjU3MTQzLDE0Ljg1NzFDNC4yOTE2NywxNC44NTcxIDQuMDMyNzQsMTQuNzc5OCAzLjc5NDY0LDE0LjYyNUMzLjU1NjU1LDE0LjQ3MDIgMy4zNzc5OCwxNC4yNjE5IDMuMjU4OTMsMTRDMi45ODUxMiwxNCAyLjc1NDQ2LDEzLjkyNTYgMi41NjY5NiwxMy43NzY4QzIuMzc5NDYsMTMuNjI4IDIuMjg1NzEsMTMuNDE2NyAyLjI4NTcxLDEzLjE0MjlDMi4yODU3MSwxMyAyLjMyNDQsMTIuODYwMSAyLjQwMTc5LDEyLjcyMzJDMi4xMzM5MywxMi41NTA2IDIsMTIuMzA5NSAyLDEyQzIsMTEuNzc5OCAyLjA3NDQsMTEuNTg5MyAyLjIyMzIxLDExLjQyODZDMi4wNzQ0LDExLjI2NzkgMiwxMS4wNzc0IDIsMTAuODU3MUMyLDEwLjUzNTcgMi4xMzk4OCwxMC4yOTE3IDIuNDE5NjQsMTAuMTI1QzIuMzk1ODMsOS44MjczOCAyLjI5NDY0LDkuNTA3NDQgMi4xMTYwNyw5LjE2NTE4QzEuOTM3NSw4LjgyMjkyIDEuNzYwNDIsOC41Mzg2OSAxLjU4NDgyLDguMzEyNUMxLjQwOTIzLDguMDg2MzEgMS4xODc1LDcuODI3MzggMC45MTk2NDMsNy41MzU3MUMwLjMwNjU0OCw2Ljg2MzEgMCw2LjA2NTQ4IDAsNS4xNDI4NkMwLDQuNTUzNTcgMC4xMzI0NCw0LjAwNDQ2IDAuMzk3MzIxLDMuNDk1NTRDMC42NjIyMDIsMi45ODY2MSAxLjAxMDQyLDIuNTYzOTkgMS40NDE5NiwyLjIyNzY4QzEuODczNTEsMS44OTEzNyAyLjM2MTYxLDEuNjI2NDkgMi45MDYyNSwxLjQzMzA0QzMuNDUwODksMS4yMzk1OCA0LjAwNTk1LDEuMTQyODYgNC41NzE0MywxLjE0Mjg2QzUuMTM2OSwxLjE0Mjg2IDUuNjkxOTYsMS4yMzk1OCA2LjIzNjYxLDEuNDMzMDRDNi43ODEyNSwxLjYyNjQ5IDcuMjY5MzUsMS44OTEzNyA3LjcwMDg5LDIuMjI3NjhDOC4xMzI0NCwyLjU2Mzk5IDguNDgwNjUsMi45ODY2MSA4Ljc0NTU0LDMuNDk1NTRDOS4wMTA0Miw0LjAwNDQ2IDkuMTQyODYsNC41NTM1NyA5LjE0Mjg2LDUuMTQyODZaIiBzdHlsZT0iZmlsbDpyZ2IoNDUsMTM1LDE5Mik7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+);
background-repeat: no-repeat;
}

+ 12
- 2
server/sonar-web/src/main/js/app/utils/exposeLibraries.ts View File

@@ -23,7 +23,6 @@ import throwGlobalError from './throwGlobalError';
import addGlobalSuccessMessage from './addGlobalSuccessMessage';
import * as measures from '../../helpers/measures';
import * as request from '../../helpers/request';
import * as icons from '../../components/icons-components/icons';
import DateFromNow from '../../components/intl/DateFromNow';
import DateFormatter from '../../components/intl/DateFormatter';
import DateTimeFormatter from '../../components/intl/DateTimeFormatter';
@@ -43,22 +42,31 @@ import Level from '../../components/ui/Level';
import { EditButton, Button, SubmitButton, ResetButtonLink } from '../../components/ui/buttons';
import DeferredSpinner from '../../components/common/DeferredSpinner';
import ReloadButton from '../../components/controls/ReloadButton';
import QualifierIcon from '../../components/icons-components/QualifierIcon';
import AlertErrorIcon from '../../components/icons-components/AlertErrorIcon';
import AlertSuccessIcon from '../../components/icons-components/AlertSuccessIcon';
import AlertWarnIcon from '../../components/icons-components/AlertWarnIcon';
import LockIcon from '../../components/icons-components/LockIcon';
import DropdownIcon from '../../components/icons-components/DropdownIcon';

const exposeLibraries = () => {
const global = window as any;

global.ReactRedux = ReactRedux;
global.ReactRouter = ReactRouter;
global.SonarIcons = icons;
global.SonarMeasures = measures;
global.SonarRequest = { ...request, throwGlobalError, addGlobalSuccessMessage };
global.SonarComponents = {
AlertErrorIcon,
AlertSuccessIcon,
AlertWarnIcon,
Button,
CoverageRating,
DateFormatter,
DateFromNow,
DateTimeFormatter,
DeferredSpinner,
DropdownIcon,
DuplicationsRating,
EditButton,
FavoriteContainer,
@@ -67,7 +75,9 @@ const exposeLibraries = () => {
Level,
LicenseEditionSet,
ListFooter,
LockIcon,
Modal,
QualifierIcon,
ReloadButton,
ResetButtonLink,
SearchBox,

+ 11
- 10
server/sonar-web/src/main/js/apps/about/components/AboutStandards.js View File

@@ -20,6 +20,7 @@
import React from 'react';
import { Link } from 'react-router';
import ReadMore from './ReadMore';
import TagsIcon from '../../../components/icons-components/TagsIcon';
import { translate } from '../../../helpers/l10n';
import { getRulesUrl } from '../../../helpers/urls';

@@ -52,32 +53,32 @@ export default function AboutStandards(props /*: Props */) {
<div className="spacer-top">
<ul className="list-inline">
<li>
<Link to={getRulesUrl({ tags: 'misra' }, organization)} className="link-with-icon">
<i className="icon-tags" />
<Link className="link-with-icon" to={getRulesUrl({ tags: 'misra' }, organization)}>
<TagsIcon />
<span className="little-spacer-left">MISRA</span>
</Link>
</li>
<li>
<Link to={getRulesUrl({ tags: 'cert' }, organization)} className="link-with-icon">
<i className="icon-tags" />
<Link className="link-with-icon" to={getRulesUrl({ tags: 'cert' }, organization)}>
<TagsIcon />
<span className="little-spacer-left">CERT</span>
</Link>
</li>
<li>
<Link to={getRulesUrl({ tags: 'cwe' }, organization)} className="link-with-icon">
<i className="icon-tags" />
<Link className="link-with-icon" to={getRulesUrl({ tags: 'cwe' }, organization)}>
<TagsIcon />
<span className="little-spacer-left">CWE</span>
</Link>
</li>
<li>
<Link to={getRulesUrl({ tags: owaspTags }, organization)} className="link-with-icon">
<i className="icon-tags" />
<Link className="link-with-icon" to={getRulesUrl({ tags: owaspTags }, organization)}>
<TagsIcon />
<span className="little-spacer-left">OWASP Top 10</span>
</Link>
</li>
<li>
<Link to={getRulesUrl({ tags: sans25Tags }, organization)} className="link-with-icon">
<i className="icon-tags" />
<Link className="link-with-icon" to={getRulesUrl({ tags: sans25Tags }, organization)}>
<TagsIcon />
<span className="little-spacer-left">SANS Top 25</span>
</Link>
</li>

+ 2
- 1
server/sonar-web/src/main/js/apps/account/projects/ProjectCard.tsx View File

@@ -20,6 +20,7 @@
import * as React from 'react';
import { sortBy } from 'lodash';
import { Link } from 'react-router';
import ProjectLinkIcon from '../../../components/icons-components/ProjectLinkIcon';
import DateFromNow from '../../../components/intl/DateFromNow';
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
import Level from '../../../components/ui/Level';
@@ -76,7 +77,7 @@ export default function ProjectCard({ project }: Props) {
rel="nofollow"
target="_blank"
title={link.name}>
<i className={`icon-color-link icon-${link.type}`} />
<ProjectLinkIcon type={link.type} />
</a>
</li>
))}

+ 1
- 1
server/sonar-web/src/main/js/apps/background-tasks/components/TaskComponent.tsx View File

@@ -21,7 +21,7 @@ import * as React from 'react';
import { Link } from 'react-router';
import TaskType from './TaskType';
import { Task } from '../types';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import Organization from '../../../components/shared/Organization';
import {
getProjectUrl,

+ 1
- 1
server/sonar-web/src/main/js/apps/code/components/ComponentName.tsx View File

@@ -23,7 +23,7 @@ import Truncated from './Truncated';
import { Component } from '../types';
import * as theme from '../../../app/theme';
import { BranchLike } from '../../../app/types';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { getBranchLikeQuery } from '../../../helpers/branches';

function getTooltip(component: Component) {

+ 2
- 6
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsProfiles.tsx View File

@@ -104,12 +104,8 @@ export default class RuleDetailsProfiles extends React.PureComponent<Props, Stat
{(activation.inherit === RuleInheritance.Overridden ||
activation.inherit === RuleInheritance.Inherited) && (
<>
<RuleInheritanceIcon
inheritance={activation.inherit}
parentProfileName={profile.parentName}
profileName={profile.name}
/>
<Link className="link-base-color spacer-left" to={profilePath}>
<RuleInheritanceIcon className="text-middle" inheritance={activation.inherit} />
<Link className="link-base-color little-spacer-left text-middle" to={profilePath}>
{profile.parentName}
</Link>
</>

+ 19
- 15
server/sonar-web/src/main/js/apps/coding-rules/components/RuleInheritanceIcon.tsx View File

@@ -18,27 +18,31 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import * as classNames from 'classnames';
import * as theme from '../../../app/theme';
import { RuleInheritance } from '../../../app/types';
import { translateWithParameters } from '../../../helpers/l10n';

interface Props {
className?: string;
inheritance: RuleInheritance.Inherited | RuleInheritance.Overridden;
parentProfileName: string;
profileName: string;
}

export default function RuleInheritanceIcon(props: Props) {
export default function RuleInheritanceIcon({ className, inheritance, ...other }: Props) {
const fill = inheritance === RuleInheritance.Overridden ? theme.red : theme.baseFontColor;

return (
<i
className={classNames('icon-inheritance', {
'icon-inheritance-overridden': props.inheritance === RuleInheritance.Overridden
})}
title={translateWithParameters(
'coding_rules.overrides',
props.profileName,
props.parentProfileName
)}
/>
<svg
className={className}
height={16}
version="1.1"
viewBox="0 0 16 16"
width={16}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink"
{...other}>
<path
d="M6.25 12.5a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0zm0-9a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0zm5 1a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0zm.75 0a1.5 1.5 0 0 1-.75 1.297c-.023 2.82-2.023 3.445-3.352 3.867-1.242.39-1.648.578-1.648 1.336v.203A1.5 1.5 0 1 1 4 12.5a1.5 1.5 0 0 1 .75-1.297V4.797A1.5 1.5 0 1 1 7 3.5a1.5 1.5 0 0 1-.75 1.297V8.68c.398-.196.82-.328 1.203-.446 1.453-.46 2.281-.804 2.297-2.437A1.5 1.5 0 1 1 12 4.5z"
style={{ fill, fillRule: 'nonzero' }}
/>
</svg>
);
}

+ 14
- 6
server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx View File

@@ -21,16 +21,18 @@ import * as React from 'react';
import * as classNames from 'classnames';
import { Link } from 'react-router';
import ActivationButton from './ActivationButton';
import RuleInheritanceIcon from './RuleInheritanceIcon';
import SimilarRulesFilter from './SimilarRulesFilter';
import { Activation, Query } from '../query';
import { Profile, deactivateRule } from '../../../api/quality-profiles';
import { Rule, RuleInheritance } from '../../../app/types';
import ConfirmButton from '../../../components/controls/ConfirmButton';
import Tooltip from '../../../components/controls/Tooltip';
import SeverityIcon from '../../../components/shared/SeverityIcon';
import SeverityIcon from '../../../components/icons-components/SeverityIcon';
import { Button } from '../../../components/ui/buttons';
import IssueTypeIcon from '../../../components/ui/IssueTypeIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import TagsIcon from '../../../components/icons-components/TagsIcon';

interface Props {
activation?: Activation;
@@ -85,7 +87,10 @@ export default class RuleListItem extends React.PureComponent<Props> {
selectedProfile.name,
selectedProfile.parentName
)}>
<i className="little-spacer-left icon-inheritance icon-inheritance-overridden" />
<RuleInheritanceIcon
className="little-spacer-left"
inheritance={activation.inherit}
/>
</Tooltip>
)}
{activation.inherit === RuleInheritance.Inherited && (
@@ -95,7 +100,10 @@ export default class RuleListItem extends React.PureComponent<Props> {
selectedProfile.name,
selectedProfile.parentName
)}>
<i className="little-spacer-left icon-inheritance" />
<RuleInheritanceIcon
className="little-spacer-left"
inheritance={activation.inherit}
/>
</Tooltip>
)}
</>
@@ -198,9 +206,9 @@ export default class RuleListItem extends React.PureComponent<Props> {
</span>
</Tooltip>
{allTags.length > 0 && (
<span className="spacer-left">
<i className="icon-tags little-spacer-right" />
<span className="note">{allTags.join(', ')}</span>
<span className="spacer-left note">
<TagsIcon className="little-spacer-right" />
{allTags.join(', ')}
</span>
)}
<SimilarRulesFilter onFilterChange={this.props.onFilterChange} rule={rule} />

+ 7
- 4
server/sonar-web/src/main/js/apps/coding-rules/components/SimilarRulesFilter.tsx View File

@@ -23,6 +23,9 @@ import { Rule } from '../../../app/types';
import Dropdown from '../../../components/controls/Dropdown';
import { translate } from '../../../helpers/l10n';
import SeverityHelper from '../../../components/shared/SeverityHelper';
import FilterIcon from '../../../components/icons-components/FilterIcon';
import DropdownIcon from '../../../components/icons-components/DropdownIcon';
import TagsIcon from '../../../components/icons-components/TagsIcon';

interface Props {
onFilterChange: (changes: Partial<Query>) => void;
@@ -97,8 +100,8 @@ export default class SimilarRulesFilter extends React.PureComponent<Props> {
{allTags.map(tag => (
<li key={tag}>
<a data-field="tag" data-tag={tag} href="#" onClick={this.handleTagClick}>
<i className="icon-tags icon-half-transparent little-spacer-right" />
{tag}
<TagsIcon className="icon-half-transparent little-spacer-right text-middle" />
<span className="text-middle">{tag}</span>
</a>
</li>
))}
@@ -108,8 +111,8 @@ export default class SimilarRulesFilter extends React.PureComponent<Props> {
</>
}>
<a className="js-rule-filter link-no-underline spacer-left dropdown-toggle" href="#">
<i className="icon-filter icon-half-transparent" />
<i className="icon-dropdown little-spacer-left" />
<FilterIcon className="icon-half-transparent" />
<DropdownIcon className="icon-half-transparent" />
</a>
</Dropdown>
);

+ 3
- 1
server/sonar-web/src/main/js/apps/coding-rules/components/TagFacet.tsx View File

@@ -21,7 +21,9 @@ import * as React from 'react';
import { uniq } from 'lodash';
import Facet, { BasicProps } from './Facet';
import { getRuleTags } from '../../../api/rules';
import * as theme from '../../../app/theme';
import FacetFooter from '../../../components/facet/FacetFooter';
import TagsIcon from '../../../components/icons-components/TagsIcon';

interface Props extends BasicProps {
organization: string | undefined;
@@ -40,7 +42,7 @@ export default class TagFacet extends React.PureComponent<Props> {

renderName = (tag: string) => (
<>
<i className="icon-tags icon-gray little-spacer-right" />
<TagsIcon className="little-spacer-right" fill={theme.gray60} />
{tag}
</>
);

+ 0
- 12
server/sonar-web/src/main/js/apps/coding-rules/styles.css View File

@@ -192,17 +192,10 @@
}

.coding-rules-detail-quality-profile-inheritance {
margin-top: 4px;
font-size: var(--smallFontSize);
font-weight: normal;
}

.coding-rules-detail-quality-profile-inheritance i {
position: relative;
top: -1px;
font-size: var(--mediumFontSize);
}

.coding-rules-detail-quality-profiles-activation {
margin-top: -3px;
margin-left: 10px;
@@ -275,11 +268,6 @@ textarea.coding-rules-markdown-description {
font-size: var(--smallFontSize);
}

.coding-rule-meta .icon-tags:before {
color: var(--secondFontColor);
font-size: var(--smallFontSize);
}

.coding-rule-activation {
width: 40px;
line-height: 19.5px;

+ 2
- 2
server/sonar-web/src/main/js/apps/component-measures/components/__tests__/MeasureHeader-test.js View File

@@ -93,13 +93,13 @@ it('should render with branch', () => {
it('should not render link to activity page for files', () => {
expect(
shallow(<MeasureHeader {...PROPS} />)
.find('IconHistory')
.find('HistoryIcon')
.exists()
).toBeTruthy();

expect(
shallow(<MeasureHeader {...PROPS} component={{ ...PROPS.component, qualifier: 'FIL' }} />)
.find('IconHistory')
.find('HistoryIcon')
.exists()
).toBeFalsy();
});

+ 3
- 3
server/sonar-web/src/main/js/apps/component-measures/components/__tests__/__snapshots__/MeasureHeader-test.js.snap View File

@@ -92,7 +92,7 @@ exports[`should render correctly 1`] = `
}
}
>
<IconHistory />
<HistoryIcon />
</Link>
</Tooltip>
</div>
@@ -191,7 +191,7 @@ exports[`should render with branch 1`] = `
}
}
>
<IconHistory />
<HistoryIcon />
</Link>
`;

@@ -238,7 +238,7 @@ exports[`should work with measure without value 1`] = `
}
}
>
<IconHistory />
<HistoryIcon />
</Link>
</Tooltip>
</div>

+ 2
- 2
server/sonar-web/src/main/js/apps/issues/components/App.tsx View File

@@ -69,7 +69,7 @@ import { RawQuery } from '../../../helpers/query';
import { scrollToElement } from '../../../helpers/scrolling';
import EmptySearch from '../../../components/common/EmptySearch';
import Checkbox from '../../../components/controls/Checkbox';
import DropdownIcon from '../../../components/icons-components/DropdownIcon';
import '../styles.css';

interface FetchIssuesPromise {
@@ -821,7 +821,7 @@ export default class App extends React.PureComponent<Props, State> {
}>
<Button id="issues-bulk-change">
{translate('bulk_change')}
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</Button>
</Dropdown>
) : (

+ 1
- 1
server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx View File

@@ -24,7 +24,7 @@ import FacetBox from '../../../components/facet/FacetBox';
import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate } from '../../../helpers/l10n';
import { collapsePath } from '../../../helpers/path';


+ 1
- 1
server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx View File

@@ -24,7 +24,7 @@ import FacetBox from '../../../components/facet/FacetBox';
import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate } from '../../../helpers/l10n';
import { collapsePath } from '../../../helpers/path';


+ 1
- 1
server/sonar-web/src/main/js/apps/issues/sidebar/ModuleFacet.tsx View File

@@ -24,7 +24,7 @@ import FacetBox from '../../../components/facet/FacetBox';
import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate } from '../../../helpers/l10n';

interface Props {

+ 1
- 1
server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx View File

@@ -28,7 +28,7 @@ import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import FacetFooter from '../../../components/facet/FacetFooter';
import Organization from '../../../components/shared/Organization';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate } from '../../../helpers/l10n';

interface Props {

+ 2
- 9
server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx View File

@@ -24,6 +24,7 @@ import FacetBox from '../../../components/facet/FacetBox';
import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import StatusHelper from '../../../components/shared/StatusHelper';
import { translate } from '../../../helpers/l10n';

interface Props {
@@ -64,14 +65,6 @@ export default class StatusFacet extends React.PureComponent<Props> {
return stats ? stats[status] : undefined;
}

renderStatus(status: string) {
return (
<span>
<i className={`icon-status-${status.toLowerCase()}`} /> {translate('issue.status', status)}
</span>
);
}

renderItem = (status: string) => {
const active = this.props.statuses.includes(status);
const stat = this.getStat(status);
@@ -83,7 +76,7 @@ export default class StatusFacet extends React.PureComponent<Props> {
halfWidth={true}
key={status}
loading={this.props.loading}
name={this.renderStatus(status)}
name={<StatusHelper resolution={undefined} status={status} />}
onClick={this.handleItemClick}
stat={formatFacetStat(stat, this.props.facetMode)}
value={status}

+ 3
- 1
server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx View File

@@ -21,12 +21,14 @@ import * as React from 'react';
import { sortBy, uniq, without } from 'lodash';
import { formatFacetStat, Query } from '../utils';
import { searchIssueTags } from '../../../api/issues';
import * as theme from '../../../app/theme';
import { Component } from '../../../app/types';
import FacetBox from '../../../components/facet/FacetBox';
import FacetFooter from '../../../components/facet/FacetFooter';
import FacetHeader from '../../../components/facet/FacetHeader';
import FacetItem from '../../../components/facet/FacetItem';
import FacetItemsList from '../../../components/facet/FacetItemsList';
import TagsIcon from '../../../components/icons-components/TagsIcon';
import { translate } from '../../../helpers/l10n';

interface Props {
@@ -87,7 +89,7 @@ export default class TagFacet extends React.PureComponent<Props> {
renderTag(tag: string) {
return (
<span>
<i className="icon-tags icon-gray little-spacer-right" />
<TagsIcon className="little-spacer-right" fill={theme.gray60} />
{tag}
</span>
);

+ 4
- 1
server/sonar-web/src/main/js/apps/marketplace/components/PluginChangeLogButton.tsx View File

@@ -20,6 +20,7 @@
import * as React from 'react';
import PluginChangeLog from './PluginChangeLog';
import { Release, Update } from '../../../api/plugins';
import EllipsisIcon from '../../../components/icons-components/EllipsisIcon';
import Dropdown from '../../../components/controls/Dropdown';
import { Button } from '../../../components/ui/buttons';

@@ -33,7 +34,9 @@ export default function PluginChangeLogButton({ release, update }: Props) {
<Dropdown
className="display-inline-block little-spacer-left"
overlay={<PluginChangeLog release={release} update={update} />}>
<Button className="button-link js-changelog issue-rule icon-ellipsis-h" />
<Button className="button-link js-changelog issue-rule">
<EllipsisIcon />
</Button>
</Dropdown>
);
}

+ 3
- 1
server/sonar-web/src/main/js/apps/organizations/navigation/OrganizationNavigationHeader.tsx View File

@@ -46,7 +46,9 @@ export default function OrganizationNavigationHeader({ organization, organizatio
))}
</ul>
}>
<a className="spacer-left link-base-color link-no-underline" href="#">
<a
className="display-inline-flex-center spacer-left link-base-color link-no-underline"
href="#">
{organization.name}
<DropdownIcon className="little-spacer-left" />
</a>

+ 1
- 1
server/sonar-web/src/main/js/apps/organizations/navigation/__tests__/__snapshots__/OrganizationNavigationHeader-test.tsx.snap View File

@@ -52,7 +52,7 @@ exports[`renders dropdown 1`] = `
}
>
<a
className="spacer-left link-base-color link-no-underline"
className="display-inline-flex-center spacer-left link-base-color link-no-underline"
href="#"
>
Foo

+ 4
- 12
server/sonar-web/src/main/js/apps/overview/meta/MetaLink.tsx View File

@@ -18,10 +18,9 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { isProvided, getLinkName } from '../../project-admin/links/utils';
import { getLinkName } from '../../project-admin/links/utils';
import { ProjectLink } from '../../../app/types';
import DetachIcon from '../../../components/icons-components/DetachIcon';
import BugTrackerIcon from '../../../components/icons-components/BugTrackerIcon';
import ProjectLinkIcon from '../../../components/icons-components/ProjectLinkIcon';

interface Props {
link: ProjectLink;
@@ -31,16 +30,9 @@ export default function MetaLink({ link }: Props) {
return (
<li>
<a className="link-with-icon" href={link.url} rel="nofollow" target="_blank">
<MetaLinkIcon link={link} /> {getLinkName(link)}
<ProjectLinkIcon className="little-spacer-right" type={link.type} />
{getLinkName(link)}
</a>
</li>
);
}

function MetaLinkIcon({ link }: Props) {
if (link.type === 'issue') {
return <BugTrackerIcon />;
}

return isProvided(link) ? <i className={`icon-color-link icon-${link.type}`} /> : <DetachIcon />;
}

+ 12
- 40
server/sonar-web/src/main/js/apps/overview/meta/__tests__/__snapshots__/MetaLink-test.tsx.snap View File

@@ -8,17 +8,10 @@ exports[`should expand and collapse link 1`] = `
rel="nofollow"
target="_blank"
>
<MetaLinkIcon
link={
Object {
"id": "1",
"name": "Foo",
"type": "foo",
"url": "scm:git:git@github.com",
}
}
<ProjectLinkIcon
className="little-spacer-right"
type="foo"
/>
Foo
</a>
</li>
@@ -32,17 +25,10 @@ exports[`should expand and collapse link 2`] = `
rel="nofollow"
target="_blank"
>
<MetaLinkIcon
link={
Object {
"id": "1",
"name": "Foo",
"type": "foo",
"url": "scm:git:git@github.com",
}
}
<ProjectLinkIcon
className="little-spacer-right"
type="foo"
/>
Foo
</a>
</li>
@@ -56,17 +42,10 @@ exports[`should expand and collapse link 3`] = `
rel="nofollow"
target="_blank"
>
<MetaLinkIcon
link={
Object {
"id": "1",
"name": "Foo",
"type": "foo",
"url": "scm:git:git@github.com",
}
}
<ProjectLinkIcon
className="little-spacer-right"
type="foo"
/>
Foo
</a>
</li>
@@ -80,17 +59,10 @@ exports[`should match snapshot 1`] = `
rel="nofollow"
target="_blank"
>
<MetaLinkIcon
link={
Object {
"id": "1",
"name": "Foo",
"type": "foo",
"url": "http://example.com",
}
}
<ProjectLinkIcon
className="little-spacer-right"
type="foo"
/>
Foo
</a>
</li>

+ 1
- 1
server/sonar-web/src/main/js/apps/permission-templates/components/ActionsCell.tsx View File

@@ -29,7 +29,7 @@ import {
} from '../../../api/permissions';
import { PermissionTemplate } from '../../../app/types';
import ActionsDropdown, { ActionsDropdownItem } from '../../../components/controls/ActionsDropdown';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate } from '../../../helpers/l10n';

export interface Props {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/HistoryButtonLink.tsx View File

@@ -19,7 +19,7 @@
*/
import * as React from 'react';
import { Link } from 'react-router';
import { HistoryIcon } from '../../../components/icons-components/icons';
import HistoryIcon from '../../../components/icons-components/HistoryIcon';
import { getMeasureHistoryUrl } from '../../../helpers/urls';

interface Props {

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/WorstProjects.tsx View File

@@ -22,7 +22,7 @@ import { Link } from 'react-router';
import { max } from 'lodash';
import { SubComponent } from '../types';
import Measure from '../../../components/measure/Measure';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { translate, translateWithParameters } from '../../../helpers/l10n';
import { formatMeasure } from '../../../helpers/measures';
import { getProjectUrl } from '../../../helpers/urls';

+ 1
- 1
server/sonar-web/src/main/js/apps/portfolio/components/__tests__/__snapshots__/HistoryButtonLink-test.tsx.snap View File

@@ -16,7 +16,7 @@ exports[`renders 1`] = `
}
}
>
<IconHistory
<HistoryIcon
size={14}
/>
</Link>

+ 1
- 1
server/sonar-web/src/main/js/apps/project-admin/key/FineGrainedUpdate.js View File

@@ -19,7 +19,7 @@
*/
import React from 'react';
import UpdateKeyForm from './UpdateKeyForm';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';

export default function FineGrainedUpdate(props) {
const { component, modules } = props;

+ 15
- 35
server/sonar-web/src/main/js/apps/project-admin/links/LinkRow.tsx View File

@@ -21,8 +21,7 @@ import * as React from 'react';
import { isProvided, getLinkName } from './utils';
import { ProjectLink } from '../../../app/types';
import ConfirmButton from '../../../components/controls/ConfirmButton';
import DetachIcon from '../../../components/icons-components/DetachIcon';
import BugTrackerIcon from '../../../components/icons-components/BugTrackerIcon';
import ProjectLinkIcon from '../../../components/icons-components/ProjectLinkIcon';
import { Button } from '../../../components/ui/buttons';
import { translate, translateWithParameters } from '../../../helpers/l10n';

@@ -32,49 +31,30 @@ interface Props {
}

export default class LinkRow extends React.PureComponent<Props> {
renderIcon = (iconClassName: string) => {
if (iconClassName === 'icon-issue') {
return (
<div className="display-inline-block text-top spacer-right">
<BugTrackerIcon />
</div>
);
}

return (
<div className="display-inline-block text-top spacer-right">
<i className={iconClassName} />
</div>
);
};

renderNameForProvided = (link: ProjectLink) => {
return (
<div>
{this.renderIcon(`icon-${link.type}`)}
<div className="display-inline-block text-top">
<div>
<span className="js-name">{getLinkName(link)}</span>
</div>
<div className="note little-spacer-top">
<span className="js-type">{`sonar.links.${link.type}`}</span>
</div>
<div className="display-inline-block text-top">
<div>
<span className="js-name">{getLinkName(link)}</span>
</div>
<div className="note little-spacer-top">
<span className="js-type">{`sonar.links.${link.type}`}</span>
</div>
</div>
);
};

renderName = (link: ProjectLink) => {
if (isProvided(link)) {
return this.renderNameForProvided(link);
}

return (
<div>
<DetachIcon className="little-spacer-right" />
<div className="display-inline-block text-top">
<span className="js-name">{link.name}</span>
</div>
<ProjectLinkIcon className="little-spacer-right" type={link.type} />
{isProvided(link) ? (
this.renderNameForProvided(link)
) : (
<div className="display-inline-block text-top">
<span className="js-name">{link.name}</span>
</div>
)}
</div>
);
};

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/ProjectRow.tsx View File

@@ -24,7 +24,7 @@ import { Project } from './utils';
import { Visibility } from '../../app/types';
import PrivateBadge from '../../components/common/PrivateBadge';
import Checkbox from '../../components/controls/Checkbox';
import QualifierIcon from '../../components/shared/QualifierIcon';
import QualifierIcon from '../../components/icons-components/QualifierIcon';
import DateTooltipFormatter from '../../components/intl/DateTooltipFormatter';

interface Props {

+ 1
- 1
server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx View File

@@ -25,7 +25,7 @@ import { QUALIFIERS_ORDER, Project } from './utils';
import { Organization } from '../../app/types';
import Checkbox from '../../components/controls/Checkbox';
import { translate } from '../../helpers/l10n';
import QualifierIcon from '../../components/shared/QualifierIcon';
import QualifierIcon from '../../components/icons-components/QualifierIcon';
import HelpTooltip from '../../components/controls/HelpTooltip';
import DateInput from '../../components/controls/DateInput';
import Select from '../../components/controls/Select';

+ 1
- 3
server/sonar-web/src/main/js/apps/quality-profiles/changelog/Changelog.tsx View File

@@ -89,9 +89,7 @@ export default function Changelog(props: Props) {
<table className="data zebra-hover">
<thead>
<tr>
<th className="thin nowrap">
{translate('date')} <i className="icon-sort-desc" />
</th>
<th className="thin nowrap">{translate('date')}</th>
<th className="thin nowrap">{translate('user')}</th>
<th className="thin nowrap">{translate('action')}</th>
<th>{translate('rule')}</th>

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx View File

@@ -20,7 +20,7 @@
import * as React from 'react';
import { Link } from 'react-router';
import ComparisonEmpty from './ComparisonEmpty';
import SeverityIcon from '../../../components/shared/SeverityIcon';
import SeverityIcon from '../../../components/icons-components/SeverityIcon';
import { translateWithParameters } from '../../../helpers/l10n';
import { getRulesUrl } from '../../../helpers/urls';


+ 5
- 6
server/sonar-web/src/main/js/apps/quality-profiles/compare/__tests__/ComparisonResults-test.tsx View File

@@ -22,7 +22,6 @@ import * as React from 'react';
import { Link } from 'react-router';
import ComparisonResults from '../ComparisonResults';
import ComparisonEmpty from '../ComparisonEmpty';
import SeverityIcon from '../../../../components/shared/SeverityIcon';

it('should render ComparisonEmpty', () => {
const output = shallow(
@@ -75,8 +74,8 @@ it('should compare', () => {
expect(leftDiffs.find(Link).length).toBe(1);
expect(leftDiffs.find(Link).prop('to')).toHaveProperty('query', { rule_key: 'rule1' });
expect(leftDiffs.find(Link).prop('children')).toContain('rule1');
expect(leftDiffs.find(SeverityIcon).length).toBe(1);
expect(leftDiffs.find(SeverityIcon).prop('severity')).toBe('BLOCKER');
expect(leftDiffs.find('SeverityIcon').length).toBe(1);
expect(leftDiffs.find('SeverityIcon').prop('severity')).toBe('BLOCKER');

const rightDiffs = output.find('.js-comparison-in-right');
expect(rightDiffs.length).toBe(2);
@@ -93,11 +92,11 @@ it('should compare', () => {
.find(Link)
.prop('children')
).toContain('rule2');
expect(rightDiffs.at(0).find(SeverityIcon).length).toBe(1);
expect(rightDiffs.at(0).find('SeverityIcon').length).toBe(1);
expect(
rightDiffs
.at(0)
.find(SeverityIcon)
.find('SeverityIcon')
.prop('severity')
).toBe('CRITICAL');

@@ -115,7 +114,7 @@ it('should compare', () => {
.at(0)
.prop('children')
).toContain('rule4');
expect(modifiedDiffs.find(SeverityIcon).length).toBe(2);
expect(modifiedDiffs.find('SeverityIcon').length).toBe(2);
expect(modifiedDiffs.text()).toContain('bar');
expect(modifiedDiffs.text()).toContain('qwe');
});

+ 1
- 1
server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileProjects.tsx View File

@@ -22,7 +22,7 @@ import { Link } from 'react-router';
import ChangeProjectsForm from './ChangeProjectsForm';
import { Profile } from '../types';
import { getProfileProjects } from '../../../api/quality-profiles';
import QualifierIcon from '../../../components/shared/QualifierIcon';
import QualifierIcon from '../../../components/icons-components/QualifierIcon';
import { Button } from '../../../components/ui/buttons';
import { translate } from '../../../helpers/l10n';


+ 6
- 2
server/sonar-web/src/main/js/apps/settings/components/inputs/InputForPassword.js View File

@@ -18,8 +18,10 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import React from 'react';
import * as theme from '../../../../app/theme';
import { translate } from '../../../../helpers/l10n';
import { defaultInputPropTypes } from '../../propTypes';
import LockIcon from '../../../../components/icons-components/LockIcon';
import { Button } from '../../../../components/ui/buttons';

export default class InputForPassword extends React.PureComponent {
@@ -71,8 +73,10 @@ export default class InputForPassword extends React.PureComponent {

return (
<div>
<i className="big-spacer-right icon-lock icon-gray" />
<Button onClick={this.handleChangeClick}>{translate('change_verb')}</Button>
<LockIcon className="text-middle big-spacer-right" fill={theme.gray60} />
<Button className="text-middle" onClick={this.handleChangeClick}>
{translate('change_verb')}
</Button>
</div>
);
}

+ 1
- 1
server/sonar-web/src/main/js/apps/settings/components/inputs/__tests__/InputForPassword-test.js View File

@@ -27,7 +27,7 @@ it('should render lock icon, but no form', () => {
const input = shallow(
<InputForPassword isDefault={false} name="foo" onChange={onChange} value="bar" />
);
expect(input.find('.icon-lock').length).toBe(1);
expect(input.find('LockIcon').length).toBe(1);
expect(input.find('form').length).toBe(0);
});


+ 2
- 1
server/sonar-web/src/main/js/apps/system/components/PageActions.tsx View File

@@ -25,6 +25,7 @@ import Dropdown from '../../../components/controls/Dropdown';
import { EditButton, Button } from '../../../components/ui/buttons';
import { getBaseUrl } from '../../../helpers/urls';
import { translate } from '../../../helpers/l10n';
import DropdownIcon from '../../../components/icons-components/DropdownIcon';

interface Props {
canDownloadLogs: boolean;
@@ -145,7 +146,7 @@ export default class PageActions extends React.PureComponent<Props, State> {
}>
<Button>
{translate('system.download_logs')}
<i className="icon-dropdown little-spacer-left" />
<DropdownIcon className="little-spacer-left" />
</Button>
</Dropdown>
)}

+ 4
- 4
server/sonar-web/src/main/js/apps/system/components/__tests__/__snapshots__/PageActions-test.tsx.snap View File

@@ -73,8 +73,8 @@ exports[`should render correctly 1`] = `
>
<Button>
system.download_logs
<i
className="icon-dropdown little-spacer-left"
<DropdownIcon
className="little-spacer-left"
/>
</Button>
</Dropdown>
@@ -150,8 +150,8 @@ exports[`should render correctly 2`] = `
>
<Button>
system.download_logs
<i
className="icon-dropdown little-spacer-left"
<DropdownIcon
className="little-spacer-left"
/>
</Button>
</Dropdown>

+ 23
- 13
server/sonar-web/src/main/js/apps/system/components/info-items/__tests__/__snapshots__/SysInfoItem-test.tsx.snap View File

@@ -128,23 +128,33 @@ Array [
value={true}
>
<AlertSuccessIcon>
<svg
height={16}
version="1.1"
viewBox="0 0 16 16"
width={16}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink"
>
<path
d="M12.607 6.554q0-0.25-0.161-0.411l-0.813-0.804q-0.17-0.17-0.402-0.17t-0.402 0.17l-3.643 3.634-2.018-2.018q-0.17-0.17-0.402-0.17t-0.402 0.17l-0.813 0.804q-0.161 0.161-0.161 0.411 0 0.241 0.161 0.402l3.232 3.232q0.17 0.17 0.402 0.17 0.241 0 0.411-0.17l4.848-4.848q0.161-0.161 0.161-0.402zM14.857 8q0 1.866-0.92 3.442t-2.496 2.496-3.442 0.92-3.442-0.92-2.496-2.496-0.92-3.442 0.92-3.442 2.496-2.496 3.442-0.92 3.442 0.92 2.496 2.496 0.92 3.442z"
<Icon>
<svg
height={16}
style={
Object {
"fill": "#00aa00",
"clipRule": "evenodd",
"fillRule": "evenodd",
"strokeLinejoin": "round",
"strokeMiterlimit": "1.41421",
}
}
/>
</svg>
version="1.1"
viewBox="0 0 16 16"
width={16}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink"
>
<path
d="M12.607 6.554q0-0.25-0.161-0.411l-0.813-0.804q-0.17-0.17-0.402-0.17t-0.402 0.17l-3.643 3.634-2.018-2.018q-0.17-0.17-0.402-0.17t-0.402 0.17l-0.813 0.804q-0.161 0.161-0.161 0.411 0 0.241 0.161 0.402l3.232 3.232q0.17 0.17 0.402 0.17 0.241 0 0.411-0.17l4.848-4.848q0.161-0.161 0.161-0.402zM14.857 8q0 1.866-0.92 3.442t-2.496 2.496-3.442 0.92-3.442-0.92-2.496-2.496-0.92-3.442 0.92-3.442 2.496-2.496 3.442-0.92 3.442 0.92 2.496 2.496 0.92 3.442z"
style={
Object {
"fill": "#00aa00",
}
}
/>
</svg>
</Icon>
</AlertSuccessIcon>
</BooleanItem>
</SysInfoItem>

+ 3
- 8
server/sonar-web/src/main/js/apps/system/components/system-upgrade/SystemUpgradeIntermediate.tsx View File

@@ -18,7 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import * as classNames from 'classnames';
import DropdownIcon from '../../../../components/icons-components/DropdownIcon';
import DateFormatter from '../../../../components/intl/DateFormatter';
import { SystemUpgrade } from '../../../../api/system';
import { translate } from '../../../../helpers/l10n';
@@ -57,16 +57,11 @@ export default class SystemUpgradeIntermediate extends React.PureComponent<Props
{showMore
? translate('system.hide_intermediate_versions')
: translate('system.show_intermediate_versions')}
<i
className={classNames('little-spacer-left', {
'icon-arrow-down': !showMore,
'icon-arrow-up': showMore
})}
/>
<DropdownIcon className="little-spacer-left" turned={showMore} />
</a>
{showMore &&
upgrades.map(upgrade => (
<div key={upgrade.version} className="note system-upgrade-intermediate">
<div className="note system-upgrade-intermediate" key={upgrade.version}>
<DateFormatter date={upgrade.releaseDate} long={true}>
{formattedDate => (
<p>

+ 6
- 4
server/sonar-web/src/main/js/apps/system/components/system-upgrade/__tests__/__snapshots__/SystemUpgradeIntermediate-test.tsx.snap View File

@@ -8,8 +8,9 @@ exports[`should display correctly 1`] = `
onClick={[Function]}
>
system.show_intermediate_versions
<i
className="little-spacer-left icon-arrow-down"
<DropdownIcon
className="little-spacer-left"
turned={false}
/>
</a>
</div>
@@ -23,8 +24,9 @@ exports[`should display correctly 2`] = `
onClick={[Function]}
>
system.hide_intermediate_versions
<i
className="little-spacer-left icon-arrow-up"
<DropdownIcon
className="little-spacer-left"
turned={true}
/>
</a>
<div

+ 1
- 1
server/sonar-web/src/main/js/components/SourceViewer/SourceViewerHeader.tsx View File

@@ -23,7 +23,7 @@ import { Link } from 'react-router';
import * as PropTypes from 'prop-types';
import MeasuresOverlay from './components/MeasuresOverlay';
import { SourceViewerFile, BranchLike } from '../../app/types';
import QualifierIcon from '../shared/QualifierIcon';
import QualifierIcon from '../icons-components/QualifierIcon';
import Dropdown from '../controls/Dropdown';
import FavoriteContainer from '../controls/FavoriteContainer';
import ListIcon from '../icons-components/ListIcon';

+ 1
- 1
server/sonar-web/src/main/js/components/SourceViewer/components/CoveragePopup.tsx View File

@@ -23,7 +23,7 @@ import * as PropTypes from 'prop-types';
import { getTests } from '../../../api/components';
import { BranchLike, SourceLine, TestCase } from '../../../app/types';
import { DropdownOverlay } from '../../controls/Dropdown';
import TestStatusIcon from '../../shared/TestStatusIcon';
import TestStatusIcon from '../../icons-components/TestStatusIcon';
import { PopupPlacement } from '../../ui/popups';
import { WorkspaceContext } from '../../workspace/context';
import { isSameBranchLike, getBranchLikeQuery } from '../../../helpers/branches';

+ 1
- 1
server/sonar-web/src/main/js/components/SourceViewer/components/DuplicationPopup.tsx View File

@@ -23,7 +23,7 @@ import * as PropTypes from 'prop-types';
import { groupBy, sortBy } from 'lodash';
import { BranchLike, DuplicatedFile, DuplicationBlock, SourceViewerFile } from '../../../app/types';
import { DropdownOverlay } from '../../controls/Dropdown';
import QualifierIcon from '../../shared/QualifierIcon';
import QualifierIcon from '../../icons-components/QualifierIcon';
import { PopupPlacement } from '../../ui/popups';
import { WorkspaceContext } from '../../workspace/context';
import { translate } from '../../../helpers/l10n';

+ 1
- 1
server/sonar-web/src/main/js/components/SourceViewer/components/LineIssuesIndicator.tsx View File

@@ -19,7 +19,7 @@
*/
import * as React from 'react';
import * as classNames from 'classnames';
import SeverityIcon from '../../shared/SeverityIcon';
import SeverityIcon from '../../icons-components/SeverityIcon';
import { sortBySeverity } from '../../../helpers/issues';
import { Issue, SourceLine } from '../../../app/types';


+ 4
- 3
server/sonar-web/src/main/js/components/SourceViewer/components/MeasuresOverlay.tsx View File

@@ -29,7 +29,7 @@ import { getAllMetrics } from '../../../api/metrics';
import { FacetValue, SourceViewerFile, BranchLike } from '../../../app/types';
import Modal from '../../controls/Modal';
import Measure from '../../measure/Measure';
import QualifierIcon from '../../shared/QualifierIcon';
import QualifierIcon from '../../icons-components/QualifierIcon';
import SeverityHelper from '../../shared/SeverityHelper';
import CoverageRating from '../../ui/CoverageRating';
import DuplicationsRating from '../../ui/DuplicationsRating';
@@ -44,6 +44,7 @@ import {
} from '../../../helpers/measures';
import { getBranchLikeUrl } from '../../../helpers/urls';
import { getBranchLikeQuery } from '../../../helpers/branches';
import TagsIcon from '../../icons-components/TagsIcon';

interface Props {
branchLike: BranchLike | undefined;
@@ -192,7 +193,7 @@ export default class MeasuresOverlay extends React.PureComponent<Props, State> {
{this.renderBigMeasure(measures.sqale_index)}
</div>
{measures.violations &&
!measures.violations.value && (
!!measures.violations.value && (
<>
{typesFacet && (
<div className="measures">
@@ -233,7 +234,7 @@ export default class MeasuresOverlay extends React.PureComponent<Props, State> {
{tagsFacet.map(f => (
<div className="measure measure-one-line" key={f.val}>
<span className="measure-name">
<i className="icon-tags little-spacer-right" />
<TagsIcon className="little-spacer-right" />
{f.val}
</span>
<span className="measure-value">

+ 1
- 1
server/sonar-web/src/main/js/components/SourceViewer/components/MeasuresOverlayTestCase.tsx View File

@@ -19,7 +19,7 @@
*/
import * as React from 'react';
import { TestCase } from '../../../app/types';
import TestStatusIcon from '../../shared/TestStatusIcon';
import TestStatusIcon from '../../icons-components/TestStatusIcon';

interface Props {
onClick: (testId: string) => void;

+ 3
- 2
server/sonar-web/src/main/js/components/controls/ActionsDropdown.tsx View File

@@ -22,6 +22,7 @@ import * as classNames from 'classnames';
import { Link } from 'react-router';
import { LocationDescriptor } from 'history';
import Dropdown from './Dropdown';
import DropdownIcon from '../icons-components/DropdownIcon';
import SettingsIcon from '../icons-components/SettingsIcon';
import { Button } from '../ui/buttons';

@@ -43,8 +44,8 @@ export default function ActionsDropdown(props: Props) {
className={classNames('dropdown-toggle', props.toggleClassName, {
'button-small': props.small
})}>
<SettingsIcon className="text-text-bottom" />
<i className="icon-dropdown little-spacer-left" />
<SettingsIcon size={props.small ? 12 : 14} />
<DropdownIcon className="little-spacer-left" />
</Button>
</Dropdown>
);

+ 7
- 5
server/sonar-web/src/main/js/components/controls/GlobalMessages.tsx View File

@@ -19,7 +19,8 @@
*/
import * as React from 'react';
import * as classNames from 'classnames';
import { Button } from '../ui/buttons';
import ClearIcon from '../icons-components/ClearIcon';
import { ButtonIcon } from '../ui/buttons';

interface Message {
id: string;
@@ -41,11 +42,12 @@ export default class GlobalMessages extends React.PureComponent<Props> {
return (
<div className={className} key={message.id}>
{message.message}
<Button
className="process-spinner-close"
<ButtonIcon
className="button-small process-spinner-close"
color="#fff"
onClick={() => this.props.closeGlobalMessage(message.id)}>
<i className="icon-close" />
</Button>
<ClearIcon />
</ButtonIcon>
</div>
);
};

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/AlertErrorIcon.tsx View File

@@ -18,23 +18,16 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';
import * as theme from '../../app/theme';

export default function AlertErrorIcon({ className, fill = theme.red, size = 16 }: IconProps) {
export default function AlertErrorIcon({ className, fill = theme.red, size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M11.402 10.018q0-0.232-0.17-0.402l-1.616-1.616 1.616-1.616q0.17-0.17 0.17-0.402 0-0.241-0.17-0.411l-0.804-0.804q-0.17-0.17-0.411-0.17-0.232 0-0.402 0.17l-1.616 1.616-1.616-1.616q-0.17-0.17-0.402-0.17-0.241 0-0.411 0.17l-0.804 0.804q-0.17 0.17-0.17 0.411 0 0.232 0.17 0.402l1.616 1.616-1.616 1.616q-0.17 0.17-0.17 0.402 0 0.241 0.17 0.411l0.804 0.804q0.17 0.17 0.411 0.17 0.232 0 0.402-0.17l1.616-1.616 1.616 1.616q0.17 0.17 0.402 0.17 0.241 0 0.411-0.17l0.804-0.804q0.17-0.17 0.17-0.411zM14.857 8q0 1.866-0.92 3.442t-2.496 2.496-3.442 0.92-3.442-0.92-2.496-2.496-0.92-3.442 0.92-3.442 2.496-2.496 3.442-0.92 3.442 0.92 2.496 2.496 0.92 3.442z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/AlertSuccessIcon.tsx View File

@@ -18,23 +18,16 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';
import * as theme from '../../app/theme';

export default function AlertSuccessIcon({ className, fill = theme.green, size = 16 }: IconProps) {
export default function AlertSuccessIcon({ className, fill = theme.green, size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M12.607 6.554q0-0.25-0.161-0.411l-0.813-0.804q-0.17-0.17-0.402-0.17t-0.402 0.17l-3.643 3.634-2.018-2.018q-0.17-0.17-0.402-0.17t-0.402 0.17l-0.813 0.804q-0.161 0.161-0.161 0.411 0 0.241 0.161 0.402l3.232 3.232q0.17 0.17 0.402 0.17 0.241 0 0.411-0.17l4.848-4.848q0.161-0.161 0.161-0.402zM14.857 8q0 1.866-0.92 3.442t-2.496 2.496-3.442 0.92-3.442-0.92-2.496-2.496-0.92-3.442 0.92-3.442 2.496-2.496 3.442-0.92 3.442 0.92 2.496 2.496 0.92 3.442z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/AlertWarnIcon.tsx View File

@@ -18,23 +18,16 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';
import * as theme from '../../app/theme';

export default function AlertWarnIcon({ className, fill = theme.orange, size = 16 }: IconProps) {
export default function AlertWarnIcon({ className, fill = theme.orange, size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M8 1.143q1.866 0 3.442.92t2.496 2.496.92 3.442-.92 3.442-2.496 2.496-3.442.92-3.442-.92-2.496-2.496-.92-3.442.92-3.442 2.496-2.496T8 1.143zm1.143 11.134v-1.696q0-.125-.08-.21t-.196-.085H7.153q-.116 0-.205.089t-.089.205v1.696q0 .116.089.205t.205.089h1.714q.116 0 .196-.085t.08-.21zm-.018-3.072l.161-5.545q0-.107-.089-.161-.089-.071-.214-.071H7.019q-.125 0-.214.071-.089.054-.089.161l.152 5.545q0 .089.089.156t.214.067h1.652q.125 0 .21-.067t.094-.156z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 1
- 1
server/sonar-web/src/main/js/components/icons-components/BranchIcon.tsx View File

@@ -21,7 +21,7 @@ import * as React from 'react';
import ShortLivingBranchIcon from './ShortLivingBranchIcon';
import LongLivingBranchIcon from './LongLivingBranchIcon';
import PullRequestIcon from './PullRequestIcon';
import { IconProps } from './types';
import { IconProps } from './Icon';
import { BranchLike } from '../../app/types';
import { isShortLivingBranch, isPullRequest } from '../../helpers/branches';


+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/BubblesIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function BubblesIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function BubblesIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size} style={{ fillRule: 'nonzero' }}>
<path
style={{ fill }}
d="M4.1 10.2c1 0 1.9.8 1.9 1.9S5.1 14 4.1 14s-1.9-.8-1.9-1.9.8-1.9 1.9-1.9m0-2C2 8.2.2 9.9.2 12.1S1.9 16 4.1 16 8 14.3 8 12.1 6.2 8.2 4.1 8.2zM10.3 2c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7-3.8-1.6-3.8-3.7S8.2 2 10.3 2m0-2C7.1 0 4.5 2.6 4.5 5.7s2.6 5.7 5.7 5.7S16 8.9 16 5.7 13.4 0 10.3 0z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/BugIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function BugIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function BugIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M11 9h1.3l.5.8.8-.5-.8-1.3H11v-.3l2-2.3V3h-1v2l-1 1.2V5c-.1-.8-.7-1.5-1.4-1.9L11 1.8l-.7-.7-1.8 1.6-1.8-1.6-.7.7 1.5 1.3C6.7 3.5 6.1 4.2 6 5v1.1L5 5V3H4v2.3l2 2.3V8H4.2l-.7 1.2.8.5.4-.7H6v.3l-2 1.9V14h1v-2.4l1-1C6 12 7.1 13 8.4 13h.8c.7 0 1.4-.3 1.8-.9.3-.4.3-.9.2-1.4l.9.9V14h1v-2.8l-2-1.9V9zm-2 2H8V6h1v5z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 4
- 11
server/sonar-web/src/main/js/components/icons-components/BugTrackerIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function BugTrackerIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function BugTrackerIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M13.5 9.5c1.003.033 1.466 1.952 0 2h-2.618L9.685 9.107 8 14.162 6.096 8.45l-.832 3.05-2.829-.002c-.984-.097-1.369-1.951.065-1.998h1.236l2.168-7.95L8 7.838l1.315-3.945L12.118 9.5H13.5z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/BulletListIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function BulletListIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function BulletListIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M2.968 11.274v1.51q0 0.102-0.075 0.177t-0.177 0.075h-1.51q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h1.51q0.102 0 0.177 0.075t0.075 0.177zM2.968 8.255v1.51q0 0.102-0.075 0.177t-0.177 0.075h-1.51q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h1.51q0.102 0 0.177 0.075t0.075 0.177zM2.968 5.235v1.51q0 0.102-0.075 0.177t-0.177 0.075h-1.51q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h1.51q0.102 0 0.177 0.075t0.075 0.177zM15.045 11.274v1.51q0 0.102-0.075 0.177t-0.177 0.075h-10.568q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h10.568q0.102 0 0.177 0.075t0.075 0.177zM2.968 2.216v1.51q0 0.102-0.075 0.177t-0.177 0.075h-1.51q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h1.51q0.102 0 0.177 0.075t0.075 0.177zM15.045 8.255v1.51q0 0.102-0.075 0.177t-0.177 0.075h-10.568q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h10.568q0.102 0 0.177 0.075t0.075 0.177zM15.045 5.235v1.51q0 0.102-0.075 0.177t-0.177 0.075h-10.568q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h10.568q0.102 0 0.177 0.075t0.075 0.177zM15.045 2.216v1.51q0 0.102-0.075 0.177t-0.177 0.075h-10.568q-0.102 0-0.177-0.075t-0.075-0.177v-1.51q0-0.102 0.075-0.177t0.177-0.075h10.568q0.102 0 0.177 0.075t0.075 0.177z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 4
- 11
server/sonar-web/src/main/js/components/icons-components/CalendarIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function CalendarIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function CalendarIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M2 14h2.25v-2.25H2V14zm2.75 0h2.5v-2.25h-2.5V14zM2 11.25h2.25v-2.5H2v2.5zm2.75 0h2.5v-2.5h-2.5v2.5zM2 8.25h2.25V6H2v2.25zM7.75 14h2.5v-2.25h-2.5V14zm-3-5.75h2.5V6h-2.5v2.25zm6 5.75H13v-2.25h-2.25V14zm-3-2.75h2.5v-2.5h-2.5v2.5zM5 4.5V2.25a.24.24 0 0 0-.074-.176A.24.24 0 0 0 4.75 2h-.5a.24.24 0 0 0-.176.074A.24.24 0 0 0 4 2.25V4.5a.24.24 0 0 0 .074.176.24.24 0 0 0 .176.074h.5a.24.24 0 0 0 .176-.074A.24.24 0 0 0 5 4.5zm5.75 6.75H13v-2.5h-2.25v2.5zm-3-3h2.5V6h-2.5v2.25zm3 0H13V6h-2.25v2.25zM11 4.5V2.25a.24.24 0 0 0-.074-.176A.24.24 0 0 0 10.75 2h-.5a.24.24 0 0 0-.176.074.24.24 0 0 0-.074.176V4.5a.24.24 0 0 0 .074.176.24.24 0 0 0 .176.074h.5a.24.24 0 0 0 .176-.074A.24.24 0 0 0 11 4.5zm3-.5v10c0 .27-.099.505-.297.703A.961.961 0 0 1 13 15H2a.961.961 0 0 1-.703-.297A.961.961 0 0 1 1 14V4c0-.27.099-.505.297-.703A.961.961 0 0 1 2 3h1v-.75c0-.344.122-.638.367-.883S3.907 1 4.25 1h.5c.344 0 .638.122.883.367S6 1.907 6 2.25V3h3v-.75c0-.344.122-.638.367-.883S9.907 1 10.25 1h.5c.344 0 .638.122.883.367s.367.54.367.883V3h1c.27 0 .505.099.703.297A.961.961 0 0 1 14 4z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 5
- 16
server/sonar-web/src/main/js/components/icons-components/ChartLegendIcon.tsx View File

@@ -18,26 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ChartLegendIcon({
className,
fill = 'currentColor',
size = 16
}: IconProps) {
export default function ChartLegendIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M14.325 7.143v1.714q0 0.357-0.25 0.607t-0.607 0.25h-10.857q-0.357 0-0.607-0.25t-0.25-0.607v-1.714q0-0.357 0.25-0.607t0.607-0.25h10.857q0.357 0 0.607 0.25t0.25 0.607z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 6
- 13
server/sonar-web/src/main/js/components/icons-components/CheckIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function CheckIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function CheckIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M14.92 4.804q0 0.357-0.25 0.607l-7.679 7.679q-0.25 0.25-0.607 0.25t-0.607-0.25l-4.446-4.446q-0.25-0.25-0.25-0.607t0.25-0.607l1.214-1.214q0.25-0.25 0.607-0.25t0.607 0.25l2.625 2.634 5.857-5.866q0.25-0.25 0.607-0.25t0.607 0.25l1.214 1.214q0.25 0.25 0.25 0.607z"
/>;
</svg>
style={{ fill }}
/>
</Icon>
);
}

+ 5
- 16
server/sonar-web/src/main/js/components/icons-components/ChevronDownIcon.tsx View File

@@ -18,26 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ChevronDownIcon({
className,
fill = 'currentColor',
size = 16
}: IconProps) {
export default function ChevronDownIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M7.72 11.596L3.119 6.992A.382.382 0 0 1 3 6.713c0-.108.04-.2.118-.279l1.03-1.03a.382.382 0 0 1 .278-.117c.108 0 .201.04.28.117L8 8.7l3.294-3.295a.382.382 0 0 1 .28-.117c.108 0 .2.04.279.117l1.03 1.03a.382.382 0 0 1 .117.28c0 .107-.04.2-.118.278L8.28 11.596a.382.382 0 0 1-.279.117.382.382 0 0 1-.28-.117z"
style={{ fill }}
/>;
</svg>
/>
</Icon>
);
}

+ 5
- 16
server/sonar-web/src/main/js/components/icons-components/ChevronLeftIcon.tsx View File

@@ -18,26 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ChevronLeftIcon({
className,
fill = 'currentColor',
size = 16
}: IconProps) {
export default function ChevronLeftIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M4.404 8.28l4.604 4.602a.382.382 0 0 0 .279.118c.108 0 .2-.04.279-.118l1.03-1.03a.382.382 0 0 0 .117-.278.382.382 0 0 0-.117-.28L7.3 8l3.295-3.294a.382.382 0 0 0 .117-.28.382.382 0 0 0-.117-.279l-1.03-1.03A.382.382 0 0 0 9.286 3a.382.382 0 0 0-.278.118L4.404 7.72A.382.382 0 0 0 4.287 8c0 .108.04.201.117.28z"
style={{ fill }}
/>;
</svg>
/>
</Icon>
);
}

+ 5
- 16
server/sonar-web/src/main/js/components/icons-components/ChevronRightcon.tsx View File

@@ -18,26 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ChevronRightIcon({
className,
fill = 'currentColor',
size = 16
}: IconProps) {
export default function ChevronRightIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M11.596 8.28l-4.604 4.602a.382.382 0 0 1-.279.118.382.382 0 0 1-.279-.118l-1.03-1.03a.382.382 0 0 1-.117-.278c0-.108.04-.201.117-.28L8.7 8 5.404 4.706a.382.382 0 0 1-.117-.28c0-.108.04-.2.117-.279l1.03-1.03A.382.382 0 0 1 6.714 3c.107 0 .2.04.278.118l4.604 4.603a.382.382 0 0 1 .117.279c0 .108-.04.201-.117.28z"
style={{ fill }}
/>;
</svg>
/>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/ChevronUpIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ChevronUpIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function ChevronUpIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M8.28 4.404l4.602 4.604a.382.382 0 0 1 .118.279c0 .108-.04.2-.118.279l-1.03 1.03a.382.382 0 0 1-.278.117.382.382 0 0 1-.28-.117L8 7.3l-3.294 3.295a.382.382 0 0 1-.28.117.382.382 0 0 1-.279-.117l-1.03-1.03A.382.382 0 0 1 3 9.286c0-.107.04-.2.118-.278L7.72 4.404A.382.382 0 0 1 8 4.287c.108 0 .201.04.28.117z"
style={{ fill }}
/>;
</svg>
/>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/ClearIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ClearIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function ClearIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M14 4.242L11.758 2l-3.76 3.76L4.242 2 2 4.242l3.756 3.756L2 11.758 4.242 14l3.756-3.76 3.76 3.76L14 11.758l-3.76-3.76L14 4.242z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 3
- 10
server/sonar-web/src/main/js/components/icons-components/ClockIcon.tsx View File

@@ -19,22 +19,15 @@
*/
import * as React from 'react';
import * as classNames from 'classnames';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ClockIcon({ className, size = 16 }: IconProps) {
return (
<svg
className={classNames('icon-clock', className)}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={classNames('icon-clock', className)} size={size}>
<g fill="#fff" stroke="#ADADAD" transform="matrix(1.4 0 0 1.4 .3 .7)">
<circle cx="5.5" cy="5.2" r="5" />
<path d="M5.6 2.9v2.7l2-.5" fillRule="nonzero" />
</g>
</svg>
</Icon>
);
}

+ 5
- 10
server/sonar-web/src/main/js/components/icons-components/CodeSmellIcon.tsx View File

@@ -18,20 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function CodeSmellIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function CodeSmellIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
xmlns="http://www.w3.org/2000/svg">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M8 2C4.7 2 2 4.7 2 8s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zm-.5 5.5h.9v.9h-.9v-.9zm-3.8.2c-.1 0-.2-.1-.2-.2 0-.4.1-1.2.6-2S5.3 4.2 5.6 4c.2 0 .3 0 .3.1l1.3 2.3c0 .1 0 .2-.1.2-.1.2-.2.3-.3.5-.1.2-.2.4-.2.5 0 .1-.1.2-.2.2l-2.7-.1zM9.9 12c-.3.2-1.1.5-2 .5-.9 0-1.7-.3-2-.5-.1 0-.1-.2-.1-.3l1.3-2.3c0-.1.1-.1.2-.1.2.1.3.1.5.1s.4 0 .5-.1c.1 0 .2 0 .2.1l1.3 2.3c.2.2.2.3.1.3zm2.5-4.1L9.7 8c-.1 0-.2-.1-.2-.2 0-.2-.1-.4-.2-.5 0-.1-.2-.3-.3-.4-.1 0-.1-.1-.1-.2l1.3-2.3c.1-.1.2-.1.3-.1.3.2 1 .7 1.5 1.5s.6 1.6.6 2c0 0-.1.1-.2.1z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 4
- 11
server/sonar-web/src/main/js/components/icons-components/CollapseIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function CollapseIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function CollapseIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M8 8.509v3.56c0 .138-.05.257-.151.357-.1.101-.22.151-.358.151a.489.489 0 0 1-.357-.15l-1.145-1.145-2.638 2.639a.251.251 0 0 1-.366 0l-.906-.906a.251.251 0 0 1 0-.366l2.639-2.638-1.144-1.145a.489.489 0 0 1-.151-.357c0-.138.05-.257.15-.358.101-.1.22-.151.358-.151h3.56c.138 0 .257.05.358.151.1.1.151.22.151.358zm6-5.34c0 .068-.026.129-.08.182l-2.638 2.638 1.144 1.145c.101.1.151.22.151.357 0 .138-.05.257-.15.358-.101.1-.22.151-.358.151h-3.56a.489.489 0 0 1-.358-.151A.489.489 0 0 1 8 7.491v-3.56c0-.138.05-.257.151-.357.1-.101.22-.151.358-.151.137 0 .257.05.357.15l1.145 1.145 2.638-2.639a.251.251 0 0 1 .366 0l.906.906c.053.053.079.114.079.183z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 36
- 0
server/sonar-web/src/main/js/components/icons-components/ContinuousIntegrationIcon.tsx View File

@@ -0,0 +1,36 @@
/*
* 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 Icon, { IconProps } from './Icon';

export default function ContinuousIntegrationIcon({
className,
fill = 'currentColor',
size
}: IconProps) {
return (
<Icon className={className} size={size}>
<path
d="M13.805 9.25c0 .016 0 .04-.008.055C13.133 12.07 10.852 14 7.969 14c-1.524 0-3-.602-4.11-1.656l-1.007 1.008a.497.497 0 0 1-.352.148.504.504 0 0 1-.5-.5V9.5c0-.273.227-.5.5-.5H6c.273 0 .5.227.5.5a.497.497 0 0 1-.148.352l-1.07 1.07a3.988 3.988 0 0 0 6.125-.828c.187-.305.28-.602.413-.914.04-.11.117-.18.235-.18h1.5c.14 0 .25.117.25.25zM14 3v3.5c0 .273-.227.5-.5.5H10a.504.504 0 0 1-.5-.5c0-.133.055-.258.148-.352l1.079-1.078A4.019 4.019 0 0 0 8 4c-1.39 0-2.68.719-3.406 1.906-.188.305-.282.602-.414.914-.04.11-.117.18-.235.18H2.391a.252.252 0 0 1-.25-.25v-.055C2.812 3.922 5.117 2 8 2c1.531 0 3.023.61 4.133 1.656l1.015-1.008A.497.497 0 0 1 13.5 2.5c.273 0 .5.227.5.5z"
style={{ fill }}
/>
</Icon>
);
}

+ 1
- 1
server/sonar-web/src/main/js/components/icons-components/DeleteIcon.tsx View File

@@ -18,7 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { ClearIcon } from './icons';
import ClearIcon from './ClearIcon';
import * as theme from '../../app/theme';

interface Props {

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/DetachIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function DetachIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function DetachIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M12 9.25v2.5A2.25 2.25 0 0 1 9.75 14h-6.5A2.25 2.25 0 0 1 1 11.75v-6.5A2.25 2.25 0 0 1 3.25 3h5.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25h-5.5C2.562 4 2 4.563 2 5.25v6.5c0 .688.563 1.25 1.25 1.25h6.5c.688 0 1.25-.563 1.25-1.25v-2.5c0-.14.11-.25.25-.25h.5c.14 0 .25.11.25.25zm3-6.75v4c0 .273-.227.5-.5.5a.497.497 0 0 1-.352-.148l-1.375-1.375L7.68 10.57a.27.27 0 0 1-.18.078.27.27 0 0 1-.18-.078l-.89-.89a.27.27 0 0 1-.078-.18.27.27 0 0 1 .078-.18l5.093-5.093-1.375-1.375A.497.497 0 0 1 10 2.5c0-.273.227-.5.5-.5h4c.273 0 .5.227.5.5z"
style={{ fill }}
/>;
</svg>
/>
</Icon>
);
}

+ 19
- 14
server/sonar-web/src/main/js/components/icons-components/DropdownIcon.tsx View File

@@ -18,24 +18,29 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function DropdownIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
interface DropdownIconProps {
turned?: boolean;
}

export default function DropdownIcon({
className,
fill = 'currentColor',
size = 16,
turned = false
}: IconProps & DropdownIconProps) {
return (
<svg
<Icon
className={className}
width={size / 16 * 7}
height={size}
style={turned ? { transform: 'rotate(180deg)' } : undefined}
viewBox="0 0 7 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<g transform="matrix(0.0273438,0,0,0.0273438,-6.4e-06,2.65625)">
<path
style={{ fill }}
d="M256,176C256,180.333 254.417,184.083 251.25,187.25L139.25,299.25C136.083,302.417 132.333,304 128,304C123.667,304 119.917,302.417 116.75,299.25L4.75,187.25C1.583,184.083 0,180.333 0,176C0,171.667 1.583,167.917 4.75,164.75C7.917,161.583 11.667,160 16,160L240,160C244.333,160 248.083,161.583 251.25,164.75C254.417,167.917 256,171.667 256,176Z"
/>
</g>
</svg>
width={size / 16 * 7}>
<path
d="M7 6.469a.42.42 0 0 1-.13.307L3.808 9.84a.42.42 0 0 1-.308.13.42.42 0 0 1-.308-.13L.13 6.776A.42.42 0 0 1 0 6.47a.42.42 0 0 1 .13-.308.42.42 0 0 1 .307-.13h6.126a.42.42 0 0 1 .307.13.42.42 0 0 1 .13.308z"
style={{ fill }}
/>
</Icon>
);
}

+ 5
- 12
server/sonar-web/src/main/js/components/icons-components/EditIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function EditIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function EditIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
<Icon className={className} size={size}>
<path
style={{ fill }}
d="M4.875 12.986l.721-.72-1.861-1.862-.721.72v.848h1.014v1.014h.847zm4.143-7.35c0-.117-.058-.175-.174-.175a.183.183 0 0 0-.135.056L4.416 9.81a.183.183 0 0 0-.056.135c0 .116.058.174.175.174a.183.183 0 0 0 .134-.056L8.962 5.77a.183.183 0 0 0 .056-.134zM8.59 4.115l3.295 3.295L5.295 14H2v-3.295l6.59-6.59zm5.41.76a.97.97 0 0 1-.293.713l-1.315 1.315-3.295-3.295L10.412 2.3c.19-.2.428-.301.713-.301.28 0 .52.1.72.301l1.862 1.853c.195.206.293.447.293.721z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

server/sonar-web/src/main/js/components/shared/QualifierIcon.tsx → server/sonar-web/src/main/js/components/icons-components/EllipsisIcon.tsx View File

@@ -18,19 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import * as classNames from 'classnames';
import Icon, { IconProps } from './Icon';

interface Props {
className?: string;
qualifier: string | null;
}

export default function QualifierIcon(props: Props) {
if (!props.qualifier) {
return null;
}

const className = classNames('icon-qualifier-' + props.qualifier.toLowerCase(), props.className);

return <i className={className} />;
export default function EllipsisIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<Icon className={className} size={size}>
<path
d="M5.273 7.182v1.636a.818.818 0 0 1-.818.818H2.818A.818.818 0 0 1 2 8.818V7.182c0-.452.366-.818.818-.818h1.637c.451 0 .818.366.818.818zm4.363 0v1.636a.818.818 0 0 1-.818.818H7.182a.818.818 0 0 1-.818-.818V7.182c0-.452.366-.818.818-.818h1.636c.452 0 .818.366.818.818zm4.364 0v1.636a.818.818 0 0 1-.818.818h-1.637a.818.818 0 0 1-.818-.818V7.182c0-.452.367-.818.818-.818h1.637c.452 0 .818.366.818.818z"
style={{ fill }}
/>
</Icon>
);
}

+ 4
- 11
server/sonar-web/src/main/js/components/icons-components/ExpandIcon.tsx View File

@@ -18,22 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';

export default function ExpandIcon({ className, fill = 'currentColor', size = 16 }: IconProps) {
export default function ExpandIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<svg
className={className}
height={size}
version="1.1"
viewBox="0 0 16 16"
width={size}
xmlSpace="preserve"
xmlnsXlink="http://www.w3.org/1999/xlink">
<Icon className={className} size={size}>
<path
d="M7.898 9.25a.247.247 0 0 1-.078.18l-2.593 2.593 1.125 1.125a.48.48 0 0 1 .148.352.48.48 0 0 1-.148.352A.48.48 0 0 1 6 14H2.5a.48.48 0 0 1-.352-.148A.48.48 0 0 1 2 13.5V10a.48.48 0 0 1 .148-.352A.48.48 0 0 1 2.5 9.5a.48.48 0 0 1 .352.148l1.125 1.125L6.57 8.18a.247.247 0 0 1 .36 0l.89.89a.247.247 0 0 1 .078.18zM14 2.5V6a.48.48 0 0 1-.148.352.48.48 0 0 1-.352.148.48.48 0 0 1-.352-.148l-1.125-1.125L9.43 7.82a.247.247 0 0 1-.36 0l-.89-.89a.247.247 0 0 1 0-.36l2.593-2.593-1.125-1.125A.48.48 0 0 1 9.5 2.5a.48.48 0 0 1 .148-.352A.48.48 0 0 1 10 2h3.5a.48.48 0 0 1 .352.148A.48.48 0 0 1 14 2.5z"
style={{ fill }}
/>
</svg>
</Icon>
);
}

+ 6
- 16
server/sonar-web/src/main/js/components/icons-components/FavoriteIcon.tsx View File

@@ -19,32 +19,22 @@
*/
import * as React from 'react';
import * as classNames from 'classnames';
import { IconProps } from './types';
import Icon, { IconProps } from './Icon';
import * as theme from '../../app/theme';

export interface Props extends IconProps {
favorite: boolean;
}

export default function FavoriteIcon({
className,
favorite,
fill = theme.orange,
size = 16
}: Props) {
export default function FavoriteIcon({ className, favorite, fill = theme.orange, size }: Props) {
return (
<svg
<Icon
className={classNames('icon-outline', { 'is-filled': favorite }, className)}
style={{ color: fill }}
width={size}
height={size}
viewBox="0 0 16 16"
version="1.1"
xmlnsXlink="http://www.w3.org/1999/xlink"
xmlSpace="preserve">
size={size}
style={{ color: fill }}>
<g transform="matrix(0.988024,0,0,0.988024,0.0957953,0.717719)">
<path d="M15.428,5.777C15.428,5.908 15.35,6.051 15.195,6.205L11.954,9.366L12.722,13.83C12.728,13.872 12.731,13.932 12.731,14.009C12.731,14.134 12.7,14.24 12.637,14.326C12.575,14.412 12.484,14.455 12.365,14.455C12.252,14.455 12.133,14.42 12.008,14.348L7.999,12.241L3.99,14.348C3.859,14.42 3.74,14.455 3.633,14.455C3.508,14.455 3.414,14.412 3.352,14.326C3.289,14.24 3.258,14.134 3.258,14.009C3.258,13.973 3.264,13.914 3.276,13.83L4.044,9.366L0.794,6.205C0.645,6.045 0.57,5.902 0.57,5.777C0.57,5.557 0.737,5.42 1.07,5.366L5.552,4.714L7.561,0.652C7.674,0.408 7.82,0.286 7.999,0.286C8.177,0.286 8.323,0.408 8.436,0.652L10.445,4.714L14.927,5.366C15.261,5.42 15.427,5.557 15.427,5.777L15.428,5.777Z" />
</g>
</svg>
</Icon>
);
}

server/sonar-web/src/main/js/components/shared/SeverityIcon.tsx → server/sonar-web/src/main/js/components/icons-components/FilterIcon.tsx View File

@@ -18,18 +18,15 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
import * as classNames from 'classnames';
import Icon, { IconProps } from './Icon';

interface Props {
className?: string;
severity: string | null | undefined;
}

export default function SeverityIcon(props: Props) {
if (!props.severity) {
return null;
}
export default function FilterIcon({ className, fill = 'currentColor', size }: IconProps) {
return (
<i className={classNames('icon-severity-' + props.severity.toLowerCase(), props.className)} />
<Icon className={className} size={size}>
<path
d="M13.957 2.333a.536.536 0 0 1-.12.596l-4.2 4.202v6.323a.552.552 0 0 1-.333.503.632.632 0 0 1-.213.043.51.51 0 0 1-.384-.162l-2.181-2.182a.542.542 0 0 1-.162-.383V7.13L2.162 2.929a.536.536 0 0 1-.12-.596A.552.552 0 0 1 2.547 2h10.908c.222 0 .418.137.503.333z"
style={{ fill }}
/>
</Icon>
);
}

+ 0
- 0
server/sonar-web/src/main/js/components/icons-components/GroupIcon.tsx View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save