From 8cdfa2d78c714a11a7f23608d45dd1976bc13ea3 Mon Sep 17 00:00:00 2001 From: Wouter Admiraal Date: Mon, 30 Dec 2019 16:36:47 +0100 Subject: [PATCH] SONAR-12374 Prevent double icons --- server/sonar-docs/README.md | 7 ------ server/sonar-docs/src/layouts/layout.css | 17 +++++++------- .../src/pages/analysis/analysis-parameters.md | 2 +- .../src/pages/analysis/languages/java.md | 2 +- .../pages/analysis/languages/javascript.md | 5 ++-- .../src/pages/analysis/languages/php.md | 3 ++- .../src/pages/analysis/languages/python.md | 3 ++- .../sonar-docs/src/pages/analysis/overview.md | 3 ++- .../analysis/scan/sonarscanner-for-msbuild.md | 2 +- .../pages/analysis/security_configuration.md | 2 +- .../src/pages/extend/adding-coding-rules.md | 2 +- .../pages/extend/deploying-to-marketplace.md | 2 +- .../src/pages/extend/developing-plugin.md | 6 ++--- .../narrowing-the-focus.md | 2 +- .../src/pages/requirements/requirements.md | 3 ++- .../src/pages/setup/install-server.md | 6 ++--- .../sonar-docs/src/pages/setup/upgrading.md | 7 +++--- .../pages/sonarcloud/integrations/github.md | 3 ++- .../src/pages/sonarcloud/integrations/vsts.md | 2 +- .../src/main/js/apps/documentation/styles.css | 23 +++++++++++++++++++ .../js/components/docs/DocMarkdownBlock.css | 6 +++-- 21 files changed, 67 insertions(+), 41 deletions(-) diff --git a/server/sonar-docs/README.md b/server/sonar-docs/README.md index f01bff33c2a..ca57d22fbda 100644 --- a/server/sonar-docs/README.md +++ b/server/sonar-docs/README.md @@ -259,13 +259,6 @@ There are four options: - success (green) - info (blue) -You can also put icons inside messages: - -``` -[[danger]] -| ![](/images/cross.svg) This is a **danger** message. -``` - #### Iframes _Note: at this time, iframes are only supported for the static documentation, and will be stripped from the embedded documentation._ diff --git a/server/sonar-docs/src/layouts/layout.css b/server/sonar-docs/src/layouts/layout.css index 7e5f94ea145..25d06883f9f 100644 --- a/server/sonar-docs/src/layouts/layout.css +++ b/server/sonar-docs/src/layouts/layout.css @@ -536,7 +536,12 @@ a.search-result .note { margin: 0 -1em 1.5rem; padding: 1em; border: 1px solid #3e7fb7; + background-image: url(../images/info.svg); background-color: #edf6fc; + background-position: 10px 15px; + background-repeat: no-repeat; + background-size: 24px; + padding-left: 40px; color: #000; border-radius: 3px; } @@ -563,6 +568,7 @@ a.search-result .note { .alert-danger { border-color: #d75a4a; background-color: #fcedec; + background-image: url(../images/cross.svg); } .alert-danger a { @@ -578,14 +584,8 @@ a.search-result .note { .alert-warning { border-color: #c99916; - background: #ffefbc url(../images/alerts/danger.svg) no-repeat; - background-position: 10px 15px; - background-size: 24px; - padding-left: 40px; -} - -.page-sidebar .alert-warning { - background-position: 10px 10px; + background-color: #ffefbc; + background-image: url(../images/alerts/danger.svg); } .alert-warning a { @@ -602,6 +602,7 @@ a.search-result .note { .alert-success { border-color: #3ec92c; background-color: #ecfcf2; + background-image: url(../images/check.svg); } .alert-success a { diff --git a/server/sonar-docs/src/pages/analysis/analysis-parameters.md b/server/sonar-docs/src/pages/analysis/analysis-parameters.md index c555d5c73bf..9800271a562 100644 --- a/server/sonar-docs/src/pages/analysis/analysis-parameters.md +++ b/server/sonar-docs/src/pages/analysis/analysis-parameters.md @@ -96,7 +96,7 @@ Key | Description | Default ### Deprecated [[danger]] -| ![](/images/cross.svg) These parameters are listed for completeness, but are deprecated and should not be used in new analyses. +| These parameters are listed for completeness, but are deprecated and should not be used in new analyses. Key | Description ---|----|--- diff --git a/server/sonar-docs/src/pages/analysis/languages/java.md b/server/sonar-docs/src/pages/analysis/languages/java.md index 5ab778280ad..c200b35f46c 100644 --- a/server/sonar-docs/src/pages/analysis/languages/java.md +++ b/server/sonar-docs/src/pages/analysis/languages/java.md @@ -33,7 +33,7 @@ Key | Value `sonar.java.test.libraries` | Comma-separated paths to files with third-party libraries (JAR or Zip files) used by your tests. (For example, this should include the junit jar). Wildcards can be used: `sonar.java.test.libraries=directory/**/*.jar` [[warning]] -| ![](/images/exclamation.svg) Android users, Jack doesn't provide the required `.class` files. +| Android users, Jack doesn't provide the required `.class` files. ## Turning issues off diff --git a/server/sonar-docs/src/pages/analysis/languages/javascript.md b/server/sonar-docs/src/pages/analysis/languages/javascript.md index 9171cee8b14..29332b5b9d5 100644 --- a/server/sonar-docs/src/pages/analysis/languages/javascript.md +++ b/server/sonar-docs/src/pages/analysis/languages/javascript.md @@ -31,7 +31,7 @@ There are 2 built-in rule profiles for JavaScript: `Sonar way` (default) and `So ## Custom rules [[warning]] -| ![](/images/exclamation.svg) This feature is deprecated +| This feature is deprecated ### Overview The JavaScript Analyzer parses the source code, creates an Abstract Syntax Tree (AST) and then walks through the entire tree. A coding rule is a visitor that is able to visit nodes from this AST. @@ -71,7 +71,8 @@ You can implement both `RulesDefinition` and `CustomRulesRepository` in a single #### Using DoubleDispatchVisitorCheck `DoubleDispatchVisitorCheck` extends `DoubleDispatchVisitor` which provide a set of methods to visit specific tree nodes (these methods' names start with `visit`). To explore a part of the AST, override the required method(s). For example, if you want to explore `if` statement nodes, override the `DoubleDispatchVisitor#visitIfStatement` method that will be called each time an `IfStatementTree` node is encountered in the AST. -![](/images/exclamation.svg) When overriding a visit method, you must call the `super` method in order to allow the visitor to visit the rest of the tree. +[[warning]] +| When overriding a visit method, you must call the `super` method in order to allow the visitor to visit the rest of the tree. #### Using SubscriptionVisitorCheck `SubscriptionVisitorCheck` extends `SubscriptionVisitor`. To explore a part of the AST, override `SubscribtionVisitor#nodesToVisit()` by returning the list of the `Tree#Kind` of node you want to visit. For example, if you want to explore `if` statement nodes the method will return a list containing the element `Tree#Kind#IF_STATEMENT`. diff --git a/server/sonar-docs/src/pages/analysis/languages/php.md b/server/sonar-docs/src/pages/analysis/languages/php.md index 15e521445de..ca069f02df1 100644 --- a/server/sonar-docs/src/pages/analysis/languages/php.md +++ b/server/sonar-docs/src/pages/analysis/languages/php.md @@ -63,7 +63,8 @@ Here are the step to follow: To explore a part of the AST, override a method from the PHPVisitorCheck. For example, if you want to explore "if statement" nodes, override [PHPVisitorCheck#visitIfStatement](https://github.com/SonarSource/sonar-php/blob/master/php-frontend/src/main/java/org/sonar/plugins/php/api/visitors/PHPVisitorCheck.java#L265) method that will be called each time an [ifStatementTree](https://github.com/SonarSource/sonar-php/blob/master/php-frontend/src/main/java/org/sonar/plugins/php/api/tree/statement/IfStatementTree.java) node is encountered in the AST. -![](/images/exclamation.svg) When overriding a visit method, you must call the super method in order to allow the visitor to visit the children the node. +[[warning]] +| When overriding a visit method, you must call the super method in order to allow the visitor to visit the children the node. **Using `PHPSubscriptionCheck`** diff --git a/server/sonar-docs/src/pages/analysis/languages/python.md b/server/sonar-docs/src/pages/analysis/languages/python.md index fe532e8537d..8f94b21ac73 100644 --- a/server/sonar-docs/src/pages/analysis/languages/python.md +++ b/server/sonar-docs/src/pages/analysis/languages/python.md @@ -73,7 +73,8 @@ To get started a sample plugin can be found here: [python-custom-rules](https:// To explore a part of the AST, override a method from the PythonCheckTree. For example, if you want to explore "if statement" nodes, override [PythonCheckTree#visitIfStatement](https://github.com/SonarSource/sonar-python/blob/39b6126e9fdef42b93004cf6cc5818e861051334/python-frontend/src/main/java/org/sonar/plugins/python/api/tree/BaseTreeVisitor.java#L56) method that will be called each time an [ifStatement](https://github.com/SonarSource/sonar-python/blob/master/python-frontend/src/main/java/org/sonar/plugins/python/api/tree/IfStatement.java) node is encountered in the AST. -![](/images/exclamation.svg) When overriding a visit method, you must call the super method in order to allow the visitor to visit the children the node. +[[warning]] +| When overriding a visit method, you must call the super method in order to allow the visitor to visit the children the node. **Using `PythonSubscriptionCheck`** diff --git a/server/sonar-docs/src/pages/analysis/overview.md b/server/sonar-docs/src/pages/analysis/overview.md index 78953578526..09123be504e 100644 --- a/server/sonar-docs/src/pages/analysis/overview.md +++ b/server/sonar-docs/src/pages/analysis/overview.md @@ -24,7 +24,8 @@ SonarCloud currently does not trigger analyses automatically - this feature will After creating a project, the tutorial available on its homepage will guide you to find how to trigger an analysis. -![Info](/images/info.svg) Remember that depending on which cloud solution you are using for your developments, you can rely on dedicated integrations to help you: +[[info]] +| Remember that depending on which cloud solution you are using for your developments, you can rely on dedicated integrations to help you: * [GitHub](/integrations/github/) * [Bitbucket Cloud](/integrations/bitbucketcloud/) diff --git a/server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-msbuild.md b/server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-msbuild.md index 947fd8858fb..dbb87bdfdde 100644 --- a/server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-msbuild.md +++ b/server/sonar-docs/src/pages/analysis/scan/sonarscanner-for-msbuild.md @@ -110,7 +110,7 @@ Parameter|Description For detailed information about all available parameters, see [Analysis Parameters](/analysis/analysis-parameters/). [[warning]] -| ![](/images/exclamation.svg) The "begin" step will modify your build like this: +| The "begin" step will modify your build like this: | * the active `CodeAnalysisRuleSet` will be updated to match the SonarQube quality profile | * `WarningsAsErrors` will be turned off | diff --git a/server/sonar-docs/src/pages/analysis/security_configuration.md b/server/sonar-docs/src/pages/analysis/security_configuration.md index 0993c6435df..1cb05294455 100644 --- a/server/sonar-docs/src/pages/analysis/security_configuration.md +++ b/server/sonar-docs/src/pages/analysis/security_configuration.md @@ -90,7 +90,7 @@ The `RuleKey` value can be one of the following: * [S2091](https://rules.sonarsource.com/csharp/RSPEC-2091): XPath Injection [[info]] -| ![](/images/info.svg) The configuration works per rule. There is no way to share configuration between rules. +| The configuration works per rule. There is no way to share configuration between rules. ## File Format diff --git a/server/sonar-docs/src/pages/extend/adding-coding-rules.md b/server/sonar-docs/src/pages/extend/adding-coding-rules.md index fde4686d550..3bcc3bb4d33 100644 --- a/server/sonar-docs/src/pages/extend/adding-coding-rules.md +++ b/server/sonar-docs/src/pages/extend/adding-coding-rules.md @@ -11,7 +11,7 @@ There are two ways to extend coding rules: If both are available, the Java API will be more fully-featured than what's available for XPath, and is generally preferable. [[info]] -| ![](/images/info.svg) Before implementing a new coding rule, you should consider whether it is specific to your own context or might benefit others. If it might benefit others, you can propose it on the [Community Forum](https://community.sonarsource.com/). If there is shared interest, then it might be implemented for you directly in the related language plugin. It means less maintenance for you, and benefit to others. +| Before implementing a new coding rule, you should consider whether it is specific to your own context or might benefit others. If it might benefit others, you can propose it on the [Community Forum](https://community.sonarsource.com/). If there is shared interest, then it might be implemented for you directly in the related language plugin. It means less maintenance for you, and benefit to others. ## Custom rule support by language Languages not listed here don't support custom rules diff --git a/server/sonar-docs/src/pages/extend/deploying-to-marketplace.md b/server/sonar-docs/src/pages/extend/deploying-to-marketplace.md index 961256a0620..062b6bbd6a6 100644 --- a/server/sonar-docs/src/pages/extend/deploying-to-marketplace.md +++ b/server/sonar-docs/src/pages/extend/deploying-to-marketplace.md @@ -41,7 +41,7 @@ If your plugin meets these requirements, feel free to start a new thread on the * the link to a PR adding a file for your plugin to the sonar-update-center-properties repo, and the elements of a "new release" email listed below. [[info]] -| ![](/images/info.svg) We reserve the right to exclude from the Marketplace plugins that we feel would be a dis-service to the community. +| We reserve the right to exclude from the Marketplace plugins that we feel would be a dis-service to the community. ## Announcing new releases When you've got a new release that should be published in the Marketplace, please: diff --git a/server/sonar-docs/src/pages/extend/developing-plugin.md b/server/sonar-docs/src/pages/extend/developing-plugin.md index 2777a64d190..6dac3082407 100644 --- a/server/sonar-docs/src/pages/extend/developing-plugin.md +++ b/server/sonar-docs/src/pages/extend/developing-plugin.md @@ -253,7 +253,7 @@ public class ExamplePlugin implements Plugin { It is recommended not to call other components in constructors. Indeed, they may not be initialized at that time. Constructors should only be used for dependency injection. [[warning]] -| ![](/images/exclamation.svg) Compilation does not fail if incorrect dependencies are defined, such as a scanner extension trying to call a web server extension. Still it will fail at runtime when plugin is loaded. +| Compilation does not fail if incorrect dependencies are defined, such as a scanner extension trying to call a web server extension. Still it will fail at runtime when plugin is loaded. ### Third-party Libraries Plugins are executed in their own isolated classloaders. That allows the packaging and use of 3rd-party libraries without runtime conflicts with core internal libraries or other plugins. Note that since version 5.2, the SonarQube API does not bring transitive dependencies, except SLF4J. The libraries just have to be declared in the pom.xml with default scope "compile": @@ -276,7 +276,7 @@ pom.xml Technically the libraries are packaged in the directory META-INF/lib of the generated JAR file. An alternative is to shade libraries, for example with maven-shade-plugin. That minimizes the size of the plugin .jar file by copying only the effective used classes. [[info]] -| ![](/images/info.svg) The command `mvn dependency:tree` gives the list of all dependencies, including transitive ones. +| The command `mvn dependency:tree` gives the list of all dependencies, including transitive ones. ### Configuration The core component [`org.sonar.api.config.Configuration`](http://javadocs.sonarsource.org/latest/apidocs/index.html?org/sonar/api/config/Configuration.html) provides access to configuration. It deals with default values and decryption of values. It is available in all stacks (scanner, web server, Compute Engine). As recommended earlier, it must not be called from constructors. @@ -334,7 +334,7 @@ public class ExamplePlugin implements Plugin { ``` [[info]] -| ![](/images/info.svg) Values of the properties suffixed with `.secured` are not available to non-authorized users (anonymous and users without project or global administration rights). `.secured` is needed for passwords, for instance. +| Values of the properties suffixed with `.secured` are not available to non-authorized users (anonymous and users without project or global administration rights). `.secured` is needed for passwords, for instance. The annotation [`@org.sonar.api.Property`](http://javadocs.sonarsource.org/latest/apidocs/index.html?org/sonar/api/Property.html) can also be used on an extension to declare a property, but org.sonar.api.config.PropertyDefinition is preferred. ``` diff --git a/server/sonar-docs/src/pages/project-administration/narrowing-the-focus.md b/server/sonar-docs/src/pages/project-administration/narrowing-the-focus.md index 59e04475a80..96cb28548e0 100644 --- a/server/sonar-docs/src/pages/project-administration/narrowing-the-focus.md +++ b/server/sonar-docs/src/pages/project-administration/narrowing-the-focus.md @@ -91,7 +91,7 @@ Notes: You can ignore issues on certain components and for certain coding rules. To list a specific rule, use the fully qualified rule ID. [[info]] -| ![](/images/info.svg) You can find the fully qualified rule ID on the Rule definition. +| You can find the fully qualified rule ID on the Rule definition. Examples: diff --git a/server/sonar-docs/src/pages/requirements/requirements.md b/server/sonar-docs/src/pages/requirements/requirements.md index c7d0b32fe8c..5672d9053a3 100644 --- a/server/sonar-docs/src/pages/requirements/requirements.md +++ b/server/sonar-docs/src/pages/requirements/requirements.md @@ -5,7 +5,8 @@ url: /requirements/requirements/ ## Prerequisite The only prerequisite for running SonarQube is to have Java (Oracle JRE 11 or OpenJDK 11) installed on your machine. -![](/images/exclamation.svg) **Note:** _On Mac OS X it is highly recommended to install Oracle JDK 11 instead of the corresponding Oracle JRE since the JRE installation does not fully set up your Java environment properly. See [this post](http://stackoverflow.com/questions/15624667/mac-osx-java-terminal-version-incorrect) for more information._ +[[warning]] +| **Note:** _On Mac OS X it is highly recommended to install Oracle JDK 11 instead of the corresponding Oracle JRE since the JRE installation does not fully set up your Java environment properly. See [this post](http://stackoverflow.com/questions/15624667/mac-osx-java-terminal-version-incorrect) for more information._ ## Hardware Requirements 1. A small-scale (individual or small team) instance of the SonarQube server requires at least 2GB of RAM to run efficiently and 1GB of free RAM for the OS. If you are installing an instance for a large teams or Enterprise, please consider the additional recommendations below. diff --git a/server/sonar-docs/src/pages/setup/install-server.md b/server/sonar-docs/src/pages/setup/install-server.md index d6ce081b162..b9dbfae1c3e 100644 --- a/server/sonar-docs/src/pages/setup/install-server.md +++ b/server/sonar-docs/src/pages/setup/install-server.md @@ -12,9 +12,9 @@ Create an empty schema and a `sonarqube` user. Grant this `sonarqube` user permi ### Microsoft SQL Server -![](/images/exclamation.svg) Collation **MUST** be case-sensitive (CS) and accent-sensitive (AS). - -![](/images/exclamation.svg) `READ_COMMITED_SNAPSHOT` **MUST** be set on the SonarQube database. +[[warning]] +| Collation **MUST** be case-sensitive (CS) and accent-sensitive (AS). +| `READ_COMMITED_SNAPSHOT` **MUST** be set on the SonarQube database. MS SQL database's shared lock strategy may impact SonarQube runtime. Making sure that `is_read_committed_snapshot_on` is set to `true` to prevent SonarQube from facing potential deadlocks under heavy loads. diff --git a/server/sonar-docs/src/pages/setup/upgrading.md b/server/sonar-docs/src/pages/setup/upgrading.md index 4db73aa438e..43d90320ee3 100644 --- a/server/sonar-docs/src/pages/setup/upgrading.md +++ b/server/sonar-docs/src/pages/setup/upgrading.md @@ -13,11 +13,12 @@ Example 2 : 6.2 -> 6.7, migration path is 6.2 -> 6.7.x LTS (where x is the lates This is a generic upgrade guide. Carefully read the [Release Upgrade Notes](/setup/upgrade-notes/) of your target version and of any intermediate version(s). -![](/images/info.svg) **Planning to Upgrade to a Commercial Edition?** -If you are moving to 6.7 LTS and installing a Commercial Edition, please read this [documentation](https://docs.sonarqube.org/display/SONARQUBE67/SonarSource+Editions). +[[info]] +| **Planning to Upgrade to a Commercial Edition?** +| If you are moving to 6.7 LTS and installing a Commercial Edition, please read this [documentation](https://docs.sonarqube.org/display/SONARQUBE67/SonarSource+Editions). [[warning]] -| ![](/images/exclamation.svg) Before you start, back up your SonarQube Database. Upgrade problems are rare, but you'll want the backup if anything does happen. +| Before you start, back up your SonarQube Database. Upgrade problems are rare, but you'll want the backup if anything does happen. 1. Download and unzip the SonarQube distribution of your edition in a fresh directory, let's say `$NEW_SONARQUBE_HOME` 2. Manually install the non-default plugins that are compatible with your version of SonarQube. Use the [Compatibility Matrix](https://docs.sonarqube.org/display/PLUG/Plugin+Version+Matrix) to ensure that the versions you install are compatible with your server version. Note that the most recent versions of all SonarSource code analyzers available in your edition are installed by default. Simply copying plugins from the old server to the new is not recommended; incompatible or duplicate plugins could cause startup errors. diff --git a/server/sonar-docs/src/pages/sonarcloud/integrations/github.md b/server/sonar-docs/src/pages/sonarcloud/integrations/github.md index 4154a679fee..fecd6dbc68e 100644 --- a/server/sonar-docs/src/pages/sonarcloud/integrations/github.md +++ b/server/sonar-docs/src/pages/sonarcloud/integrations/github.md @@ -20,7 +20,8 @@ For GitHub repositories, there are 2 ways to have your code analyzed: With AutoScan, SonarCloud will autonomously pull your code and scan your default branch and your pull requests. Please read the ["AutoScan Beta Feature"](/autoscan/) documentation page to get the details. -![](/images/exclamation.svg) This is currently a Beta feature which does not work for all languages and comes with limitations. +[[warning]] +| This is currently a Beta feature which does not work for all languages and comes with limitations. ### ... using your CI service diff --git a/server/sonar-docs/src/pages/sonarcloud/integrations/vsts.md b/server/sonar-docs/src/pages/sonarcloud/integrations/vsts.md index 564c1094563..bbfa507f081 100644 --- a/server/sonar-docs/src/pages/sonarcloud/integrations/vsts.md +++ b/server/sonar-docs/src/pages/sonarcloud/integrations/vsts.md @@ -10,7 +10,7 @@ url: /integrations/vsts/ You can connect to SonarCloud using your Azure DevOps account. On the [login page](/#sonarcloud#/sessions/new), just click on the "Log in with Azure DevOps" button. [[warning]] -| ![Warning](/images/exclamation.svg) Only work and school Azure DevOps accounts are authorized to login on SonarCloud. +| Only work and school Azure DevOps accounts are authorized to login on SonarCloud. ## Install the SonarCloud Azure DevOps extension diff --git a/server/sonar-web/src/main/js/apps/documentation/styles.css b/server/sonar-web/src/main/js/apps/documentation/styles.css index 8e2b53a6ad2..46706ab44e3 100644 --- a/server/sonar-web/src/main/js/apps/documentation/styles.css +++ b/server/sonar-web/src/main/js/apps/documentation/styles.css @@ -99,6 +99,29 @@ padding: var(--gridSize) calc(2 * var(--gridSize)); } +.documentation-content.markdown .alert .custom-block-body { + padding-left: 24px; + background-position: left 6px; + background-repeat: no-repeat; +} + +.documentation-content.markdown .alert-success .custom-block-body { + background-image: url(/images/check.svg); +} + +.documentation-content.markdown .alert-info .custom-block-body { + background-image: url(/images/info.svg); +} + +.documentation-content.markdown .alert-warning .custom-block-body { + background-image: url(/images/exclamation.svg); +} + +.documentation-content.markdown .alert-error .custom-block-body, +.documentation-content.markdown .alert-danger .custom-block-body { + background-image: url(/images/cross.svg); +} + .documentation-content.markdown .collapse-container { border: 1px solid var(--barBorderColor); border-radius: 2px; diff --git a/server/sonar-web/src/main/js/components/docs/DocMarkdownBlock.css b/server/sonar-web/src/main/js/components/docs/DocMarkdownBlock.css index 07028c0d42d..00d63f3ae46 100644 --- a/server/sonar-web/src/main/js/components/docs/DocMarkdownBlock.css +++ b/server/sonar-web/src/main/js/components/docs/DocMarkdownBlock.css @@ -31,13 +31,15 @@ display: none; } -.markdown-content .alert-error { +.markdown-content .alert-error, +.markdown-content .alert-danger { border-color: var(--alertBorderError); background-color: var(--alertBackgroundError); color: var(--alertTextError); } -.markdown-content .alert-error .alert-icon { +.markdown-content .alert-error .alert-icon, +.markdown-content .alert-danger .alert-icon { border-color: var(--alertBorderError); } -- 2.39.5