From 1e2fbb13694426a33fb85acea9c193a1ba1b7d99 Mon Sep 17 00:00:00 2001 From: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:19:59 +0100 Subject: [PATCH 01/34] Add syntax guide from docs-builder Copy syntax guide documentation from docs-builder repository to contribute-docs/syntax/. Includes 37 markdown files covering MyST syntax, directives, and custom Elastic documentation features. Changes from original: - Add legacy documentation section linking to AsciiDoc guide - Fix reference from "See" to "refer to" --- .../inline-level-applies-examples.md | 91 +++ .../_snippets/multiple-lifecycle-states.md | 18 + .../_snippets/page-level-applies-examples.md | 38 + .../syntax/_snippets/reusable-snippet.md | 5 + .../section-level-applies-examples.md | 41 + .../stack-serverless-lifecycle-example.md | 21 + .../syntax/_snippets/unused-snippet.md | 5 + .../syntax/_snippets/unversioned-lifecycle.md | 34 + .../syntax/_snippets/versioned-lifecycle.md | 36 + contribute-docs/syntax/admonitions.md | 217 +++++ contribute-docs/syntax/applies-switch.md | 147 ++++ contribute-docs/syntax/applies.md | 324 ++++++++ contribute-docs/syntax/automated_settings.md | 34 + contribute-docs/syntax/code.md | 430 ++++++++++ contribute-docs/syntax/comments.md | 24 + contribute-docs/syntax/conditionals.md | 5 + contribute-docs/syntax/csv-include.md | 70 ++ contribute-docs/syntax/definition-lists.md | 49 ++ contribute-docs/syntax/diagrams.md | 148 ++++ contribute-docs/syntax/directives.md | 80 ++ contribute-docs/syntax/dropdowns.md | 104 +++ contribute-docs/syntax/example_blocks.md | 5 + contribute-docs/syntax/file_inclusion.md | 37 + contribute-docs/syntax/frontmatter.md | 115 +++ contribute-docs/syntax/headings.md | 100 +++ contribute-docs/syntax/icons.md | 586 ++++++++++++++ contribute-docs/syntax/images.md | 199 +++++ contribute-docs/syntax/images/alerts.svg | 62 ++ contribute-docs/syntax/images/annotations.png | Bin 0 -> 46714 bytes contribute-docs/syntax/images/apm.png | Bin 0 -> 353625 bytes contribute-docs/syntax/images/applies.png | Bin 0 -> 251694 bytes contribute-docs/syntax/images/bear.png | Bin 0 -> 2055580 bytes contribute-docs/syntax/images/headings.png | Bin 0 -> 32269 bytes contribute-docs/syntax/images/nav-title.png | Bin 0 -> 192691 bytes .../syntax/images/observability.png | Bin 0 -> 398975 bytes .../syntax/images/serverless-capabilities.svg | 20 + contribute-docs/syntax/images/timeslider.gif | Bin 0 -> 656115 bytes contribute-docs/syntax/index.md | 35 + contribute-docs/syntax/kbd.md | 141 ++++ .../kibana-alerting-action-settings.yml | 750 ++++++++++++++++++ contribute-docs/syntax/line_breaks.md | 6 + contribute-docs/syntax/links.md | 188 +++++ contribute-docs/syntax/lists.md | 242 ++++++ contribute-docs/syntax/math.md | 141 ++++ contribute-docs/syntax/passthrough.md | 5 + contribute-docs/syntax/quick-ref.md | 674 ++++++++++++++++ contribute-docs/syntax/sidebars.md | 5 + contribute-docs/syntax/stepper.md | 226 ++++++ contribute-docs/syntax/substitutions.md | 238 ++++++ contribute-docs/syntax/sundries.md | 57 ++ contribute-docs/syntax/tables.md | 95 +++ contribute-docs/syntax/tabs.md | 154 ++++ contribute-docs/syntax/tagged_regions.md | 5 + contribute-docs/syntax/titles.md | 36 + contribute-docs/syntax/version-variables.md | 131 +++ 55 files changed, 6174 insertions(+) create mode 100644 contribute-docs/syntax/_snippets/inline-level-applies-examples.md create mode 100644 contribute-docs/syntax/_snippets/multiple-lifecycle-states.md create mode 100644 contribute-docs/syntax/_snippets/page-level-applies-examples.md create mode 100644 contribute-docs/syntax/_snippets/reusable-snippet.md create mode 100644 contribute-docs/syntax/_snippets/section-level-applies-examples.md create mode 100644 contribute-docs/syntax/_snippets/stack-serverless-lifecycle-example.md create mode 100644 contribute-docs/syntax/_snippets/unused-snippet.md create mode 100644 contribute-docs/syntax/_snippets/unversioned-lifecycle.md create mode 100644 contribute-docs/syntax/_snippets/versioned-lifecycle.md create mode 100644 contribute-docs/syntax/admonitions.md create mode 100644 contribute-docs/syntax/applies-switch.md create mode 100644 contribute-docs/syntax/applies.md create mode 100644 contribute-docs/syntax/automated_settings.md create mode 100644 contribute-docs/syntax/code.md create mode 100644 contribute-docs/syntax/comments.md create mode 100644 contribute-docs/syntax/conditionals.md create mode 100644 contribute-docs/syntax/csv-include.md create mode 100644 contribute-docs/syntax/definition-lists.md create mode 100644 contribute-docs/syntax/diagrams.md create mode 100644 contribute-docs/syntax/directives.md create mode 100644 contribute-docs/syntax/dropdowns.md create mode 100644 contribute-docs/syntax/example_blocks.md create mode 100644 contribute-docs/syntax/file_inclusion.md create mode 100644 contribute-docs/syntax/frontmatter.md create mode 100644 contribute-docs/syntax/headings.md create mode 100644 contribute-docs/syntax/icons.md create mode 100644 contribute-docs/syntax/images.md create mode 100644 contribute-docs/syntax/images/alerts.svg create mode 100644 contribute-docs/syntax/images/annotations.png create mode 100644 contribute-docs/syntax/images/apm.png create mode 100644 contribute-docs/syntax/images/applies.png create mode 100644 contribute-docs/syntax/images/bear.png create mode 100644 contribute-docs/syntax/images/headings.png create mode 100644 contribute-docs/syntax/images/nav-title.png create mode 100644 contribute-docs/syntax/images/observability.png create mode 100644 contribute-docs/syntax/images/serverless-capabilities.svg create mode 100644 contribute-docs/syntax/images/timeslider.gif create mode 100644 contribute-docs/syntax/index.md create mode 100644 contribute-docs/syntax/kbd.md create mode 100644 contribute-docs/syntax/kibana-alerting-action-settings.yml create mode 100644 contribute-docs/syntax/line_breaks.md create mode 100644 contribute-docs/syntax/links.md create mode 100644 contribute-docs/syntax/lists.md create mode 100644 contribute-docs/syntax/math.md create mode 100644 contribute-docs/syntax/passthrough.md create mode 100644 contribute-docs/syntax/quick-ref.md create mode 100644 contribute-docs/syntax/sidebars.md create mode 100644 contribute-docs/syntax/stepper.md create mode 100644 contribute-docs/syntax/substitutions.md create mode 100644 contribute-docs/syntax/sundries.md create mode 100644 contribute-docs/syntax/tables.md create mode 100644 contribute-docs/syntax/tabs.md create mode 100644 contribute-docs/syntax/tagged_regions.md create mode 100644 contribute-docs/syntax/titles.md create mode 100644 contribute-docs/syntax/version-variables.md diff --git a/contribute-docs/syntax/_snippets/inline-level-applies-examples.md b/contribute-docs/syntax/_snippets/inline-level-applies-examples.md new file mode 100644 index 0000000000..58f38476cd --- /dev/null +++ b/contribute-docs/syntax/_snippets/inline-level-applies-examples.md @@ -0,0 +1,91 @@ +::::::{dropdown} Basic example + +:::::{tab-set} + +::::{tab-item} Output + +**Spaces** let you organize your content and users according to your needs. + +- Each space has its own saved objects. +- {applies_to}`serverless: unavailable` Each space has its own navigation, called solution view. + +:::: + +::::{tab-item} Markdown +```markdown +**Spaces** let you organize your content and users according to your needs. + +- Each space has its own saved objects. +- {applies_to}`serverless: unavailable` Each space has its own navigation, called solution view. +``` +:::: + +::::: + +:::::: + +::::::{dropdown} Product-specific applicability with version information + +This example shows how to use directly a key from the second level of the `applies_to` data structure, like `edot_python:`. + +:::::{tab-set} + +::::{tab-item} Output + +- {applies_to}`edot_python: preview 1.7.0` +- {applies_to}`apm_agent_java: beta 1.0.0` + +:::: + +::::{tab-item} Markdown +```markdown +- {applies_to}`edot_python: preview 1.7.0` +- {applies_to}`apm_agent_java: beta 1.0.0` +``` +:::: + +::::: + +:::::: + +::::::{dropdown} Multiple products and states in a single inline statement + +:::::{tab-set} + +::::{tab-item} Output + +- {applies_to}`serverless: ga` {applies_to}`stack: ga 9.1.0` +- {applies_to}`edot_python: preview 1.7.0, ga 1.8.0` {applies_to}`apm_agent_java: beta 1.0.0, ga 1.2.0` +- {applies_to}`stack: ga 9.0` {applies_to}`eck: ga 3.0` + +:::: + +::::{tab-item} Markdown +```markdown +- {applies_to}`serverless: ga` {applies_to}`stack: ga 9.1.0` +- {applies_to}`edot_python: preview 1.7.0, ga 1.8.0` {applies_to}`apm_agent_java: beta 1.0.0, ga 1.2.0` +- {applies_to}`stack: ga 9.0` {applies_to}`eck: ga 3.0` +``` +:::: + +::::: +:::::: + +::::::{dropdown} The functionality is available in the same lifecycle in multiple versions + +:::::{tab-set} + +::::{tab-item} Output + +- {applies_to}`stack: ga 9.1.2` {applies_to}`stack: ga 9.0.6` + +:::: + +::::{tab-item} Markdown +```markdown +- {applies_to}`stack: ga 9.1.2` {applies_to}`stack: ga 9.0.6` +``` +:::: + +::::: +:::::: \ No newline at end of file diff --git a/contribute-docs/syntax/_snippets/multiple-lifecycle-states.md b/contribute-docs/syntax/_snippets/multiple-lifecycle-states.md new file mode 100644 index 0000000000..bb0bedf40c --- /dev/null +++ b/contribute-docs/syntax/_snippets/multiple-lifecycle-states.md @@ -0,0 +1,18 @@ +`applies_to` keys accept comma-separated values to specify lifecycle states for multiple product versions. For example: + +* A feature is added in 9.1 as tech preview and becomes GA in 9.4: + + ```yml + applies_to: + stack: preview 9.1, ga 9.4 + ``` + + +* A feature is deprecated in ECE 4.0 and is removed in 4.8. At the same time, it has already been removed in {{ech}}: + + ```yml + applies_to: + deployment: + ece: deprecated 4.0, removed 4.8 + ess: removed + ``` \ No newline at end of file diff --git a/contribute-docs/syntax/_snippets/page-level-applies-examples.md b/contribute-docs/syntax/_snippets/page-level-applies-examples.md new file mode 100644 index 0000000000..5c3f7fe28c --- /dev/null +++ b/contribute-docs/syntax/_snippets/page-level-applies-examples.md @@ -0,0 +1,38 @@ +:::::{dropdown} Document is primarily about using or interacting with Elastic Stack components or the Serverless UI + + ```yml + --- + applies_to: + stack: ga + serverless: ga + --- + ``` + +::::: + +:::::{dropdown} Document is primarily about orchestrating, deploying or configuring an installation + + ```yml + --- + applies_to: + serverless: ga + deployment: + ess: ga + ece: ga + eck: ga + --- + + ``` + +::::: + +:::::{dropdown} Document is primarily about a product following its own versioning schema + + ```yml + --- + applies_to: + edot_ios: ga + --- + ``` + +::::: diff --git a/contribute-docs/syntax/_snippets/reusable-snippet.md b/contribute-docs/syntax/_snippets/reusable-snippet.md new file mode 100644 index 0000000000..be7c230c83 --- /dev/null +++ b/contribute-docs/syntax/_snippets/reusable-snippet.md @@ -0,0 +1,5 @@ +This is a snippet included on "{{context.page_title}}". + +:::{tip} +This is a snippet +::: diff --git a/contribute-docs/syntax/_snippets/section-level-applies-examples.md b/contribute-docs/syntax/_snippets/section-level-applies-examples.md new file mode 100644 index 0000000000..4a9d71b76b --- /dev/null +++ b/contribute-docs/syntax/_snippets/section-level-applies-examples.md @@ -0,0 +1,41 @@ +:::::{dropdown} Applicable to Stack and Serverless, minus a section + +````markdown +--- +applies_to: +stack: ga +serverless: ga +--- + +# Spaces + +[...] + +#### Configure a space-level landing page [space-landing-page] +```{applies_to} +serverless: unavailable +``` +```` +::::: + +:::::{dropdown} Applicable to all deployment types, but some paragraphs are specific to other deployment types + +````markdown +#### Cloud organization level security [cloud-organization-level] +```{applies_to} +serverless: ga +deployment: + ess: ga +``` + +[...] + +#### Orchestrator level security [orchestrator-level] +```{applies_to} +deployment: + ece: ga +``` + +[...] +```` +::::: \ No newline at end of file diff --git a/contribute-docs/syntax/_snippets/stack-serverless-lifecycle-example.md b/contribute-docs/syntax/_snippets/stack-serverless-lifecycle-example.md new file mode 100644 index 0000000000..2ef9286494 --- /dev/null +++ b/contribute-docs/syntax/_snippets/stack-serverless-lifecycle-example.md @@ -0,0 +1,21 @@ +If a change is released in Serverless and will be released in a future version of the {{stack}}, you can add both a `serverless` and `stack` tag, indicating the version of the {{stack}} in which the feature will be released: + +``` +--- +applies_to: + serverless: ga + stack: ga 9.2 +--- +``` + +Because these changes need to be published as soon as the feature is released in Serverless, you might need to publish your docs before the feature is available in the {{stack}}. To allow for this, Docs V3 [displays badges differently](/contribute/cumulative-docs/index.md#how-do-these-tags-behave-in-the-output) when the `applies_to` tag specifies a product version that has not yet been released to customers. + +* A feature is tagged as available in a current Serverless release and a future {{stack}} version will render the following badges: + + {applies_to}`serverless: ga` + {applies_to}`stack: ga 99.99` + +* After the {{stack}} version is released, the same badges will render with the version number without any changes to the badge value in the source. + + {applies_to}`serverless: ga` + {applies_to}`stack: ga 9.0` \ No newline at end of file diff --git a/contribute-docs/syntax/_snippets/unused-snippet.md b/contribute-docs/syntax/_snippets/unused-snippet.md new file mode 100644 index 0000000000..4969556c7f --- /dev/null +++ b/contribute-docs/syntax/_snippets/unused-snippet.md @@ -0,0 +1,5 @@ +This snippet is not included anywhere + +```{warning} +This snippet is not included anywhere +``` diff --git a/contribute-docs/syntax/_snippets/unversioned-lifecycle.md b/contribute-docs/syntax/_snippets/unversioned-lifecycle.md new file mode 100644 index 0000000000..2253b51808 --- /dev/null +++ b/contribute-docs/syntax/_snippets/unversioned-lifecycle.md @@ -0,0 +1,34 @@ +Unversioned products don't follow a fixed versioning scheme and are released a lot more often than versioned products. All users are using the same version of this product. + +* When a change is released in `ga`, it **doesn’t need any specific tagging**. +* When a change is introduced as preview or beta, use `preview` or `beta` as value for the corresponding key within the `applies_to`: + + ``` + --- + applies_to: + serverless: preview + --- + ``` +* When a change introduces a deprecation, use deprecated as value for the corresponding key within the `applies_to`: + + ``` + --- + applies_to: + deployment: + ess: deprecated + --- + ``` + +* When a change removes a feature, **remove the content**. + + **Exception:** If the content also applies to another context (for example a feature is removed in both Kibana 9.x and Serverless), then it must be kept for any user reading the page that may be using a version of Kibana prior to the removal. + + For example: + + ``` + --- + applies_to: + stack: deprecated 9.1, removed 9.4 + serverless: removed + --- + ``` \ No newline at end of file diff --git a/contribute-docs/syntax/_snippets/versioned-lifecycle.md b/contribute-docs/syntax/_snippets/versioned-lifecycle.md new file mode 100644 index 0000000000..ae6af6fee4 --- /dev/null +++ b/contribute-docs/syntax/_snippets/versioned-lifecycle.md @@ -0,0 +1,36 @@ +* When a change is released in `ga`, users need to know which version the feature became available in: + + ``` + --- + applies_to: + stack: ga 9.3 + --- + ``` + +* When a change is introduced as preview or beta, use `preview` or `beta` as value for the corresponding key within the `applies_to`: + + ``` + --- + applies_to: + stack: beta 9.1 + --- + ``` + +* When a change introduces a deprecation, use `deprecated` as value for the corresponding key within the `applies_to`: + + ``` + --- + applies_to: + deployment: + ece: deprecated 4.2 + --- + ``` + +* When a change removes a feature, any user reading the page that may be using a version of Kibana prior to the removal must be aware that the feature is still available to them. For that reason, we do not remove the content, and instead mark the feature as removed: + + ``` + --- + applies_to: + stack: deprecated 9.1, removed 9.4 + --- + ``` \ No newline at end of file diff --git a/contribute-docs/syntax/admonitions.md b/contribute-docs/syntax/admonitions.md new file mode 100644 index 0000000000..c4a7f466da --- /dev/null +++ b/contribute-docs/syntax/admonitions.md @@ -0,0 +1,217 @@ +# Admonitions + +Admonitions allow you to highlight important information with varying levels of priority. In software documentation, these blocks are used to emphasize risks, provide helpful advice, or share relevant but non-critical details. + +## Basic admonitions + +Admonitions can span multiple lines and support inline formatting. +Available admonition types include: + +- [Note](#note) +- [Warning](#warning) +- [Tip](#tip) +- [Important](#important) +- [Plain](#plain) + +### Note + +A relevant piece of information with no serious repercussions if ignored. + + +:::::{tab-set} + +::::{tab-item} Output + +:::{note} +This is a note. +It can span multiple lines and supports inline formatting. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{note} +This is a note. +It can span multiple lines and supports inline formatting. +::: +``` + +:::: + +::::: + +### Warning + +You could permanently lose data or leak sensitive information. + +:::::{tab-set} + +::::{tab-item} Output + +:::{warning} +This is a warning. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{warning} +This is a warning. +::: +``` + +:::: + +::::: + +### Tip + +Advice to help users make better choices when using a feature. + +You could permanently lose data or leak sensitive information. + +:::::{tab-set} + +::::{tab-item} Output + +:::{tip} +This is a tip. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{tip} +This is a tip. +::: +``` + +:::: + +::::: + +### Important + +Ignoring this information could impact performance or the stability of your system. + +:::::{tab-set} + +::::{tab-item} Output + +:::{important} +This is an important notice. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{important} +This is an important notice. +::: +``` + +:::: + +::::: + +### Plain + +A plain admonition is a callout with no further styling. Useful to create a callout that does not quite fit the mold of the stylized admonitions. + + + +:::::{tab-set} + +::::{tab-item} Output + +:::{admonition} This is my callout +It can *span* multiple lines and supports inline formatting. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{admonition} This is my callout +It can *span* multiple lines and supports inline formatting. +::: +``` + +:::: + +::::: + +## Applies to information + +Admonitions support the `applies_to` property to indicate which products or versions the information applies to. + +:::::{tab-set} + +::::{tab-item} Output + +:::{note} +:applies_to: stack: ga 9.1.0 + +This note applies to the Elastic Stack GA version 9.1.0. +::: + +:::{warning} +:applies_to: serverless: ga + +This warning applies to serverless GA. +::: + +:::{tip} +:applies_to: { ess:, ece: } + +This tip applies to ECH and ECE. +::: + +:::{important} +:applies_to: {"stack": "ga 9.2, preview 9.1", "serverless": "ga"} + +This important note applies to Elastic Stack GA version 9.2 and Elastic Stack Preview version 9.1. It also applies to serverless GA. +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{note} +:applies_to: stack: ga 9.1.0 + +This note applies to the Elastic Stack GA version 9.1.0. +::: + +:::{warning} +:applies_to: serverless: ga + +This warning applies to serverless GA. +::: + +:::{tip} +:applies_to: { ess:, ece: } + +This tip applies to ECH and ECE. +::: + +:::{important} +:applies_to: {"stack": "ga 9.2, preview 9.1", "serverless": "ga"} + +This important note applies to Elastic Stack GA version 9.2 and Elastic Stack Preview version 9.1. It also applies to serverless GA. +::: +``` + +:::: + +::::: diff --git a/contribute-docs/syntax/applies-switch.md b/contribute-docs/syntax/applies-switch.md new file mode 100644 index 0000000000..52ecf4a299 --- /dev/null +++ b/contribute-docs/syntax/applies-switch.md @@ -0,0 +1,147 @@ +# Applies switch + +The applies-switch directive creates tabbed content where each tab displays an applies_to badge instead of a text title. This is useful for showing content that varies by deployment type, version, or other applicability criteria. + +## Basic usage + +::::::{tab-set} +:::::{tab-item} Output + +::::{applies-switch} + +:::{applies-item} stack: +Content for Stack +::: + +:::{applies-item} serverless: +Content for Serverless +::: + +:::: + +::::: +:::::{tab-item} Markdown + +```markdown +::::{applies-switch} + +:::{applies-item} stack: +Content for Stack +::: + +:::{applies-item} serverless: +Content for Serverless +::: + +:::: +``` +::::: +:::::: + +## Multiple `applies_to` definitions + +You can specify multiple `applies_to` definitions in a single `applies-item` using YAML object notation with curly braces `{}`. +This is useful when content applies to multiple deployment types or versions simultaneously. + +::::::{tab-set} +:::::{tab-item} Output + +::::{applies-switch} + +:::{applies-item} { ece:, ess: } +Content for ECE and ECH +::: + +:::{applies-item} serverless: +Content for Serverless +::: + +:::: + +::::: +:::::{tab-item} Markdown + +```markdown +::::{applies-switch} + +:::{applies-item} { ece:, ess: } +Content for ECE and ECH +::: + +:::{applies-item} serverless: +Content for Serverless +::: + +:::: +``` +::::: +:::::: + +## Automatic grouping + +All applies switches on a page automatically sync together. When you select an applies_to definition in one switch, all other switches will switch to the same applies_to definition. + +The format of the applies_to definition doesn't matter - `stack: preview 9.1`, `{ "stack": "preview 9.1" }`, and `{ stack: "preview 9.1" }` all identify the same content and will sync together. + +In the following example, both switch sets are automatically grouped and will stay in sync. + +::::::{tab-set} +:::::{tab-item} Output + +::::{applies-switch} +:::{applies-item} { "stack": "preview 9.0" } +Content for 9.0 version +::: +:::{applies-item} { "stack": "ga 9.1" } +Content for 9.1 version +::: +:::: + +::::{applies-switch} +:::{applies-item} stack: preview 9.0 +Other content for 9.0 version +::: +:::{applies-item} stack: ga 9.1 +Other content for 9.1 version +::: +:::: + +::::: +:::::{tab-item} Markdown + +```markdown +::::{applies-switch} +:::{applies-item} { "stack": "preview 9.0" } +Content for 9.0 version +::: +:::{applies-item} { "stack": "ga 9.1" } +Content for 9.1 version +::: +:::: + +::::{applies-switch} +:::{applies-item} stack: preview 9.0 +Other content for 9.0 version +::: +:::{applies-item} stack: ga 9.1 +Other content for 9.1 version +::: +:::: +``` +::::: +:::::: + +## Supported `applies_to` definitions + +The `applies-item` directive accepts any valid applies_to definition that would work with the `{applies_to}` role. + +See the [](applies.md) page for more details on valid `applies_to` definitions. + +## When to use + +Use applies switches when: + +- Content varies significantly by deployment type, version, or other applicability criteria +- You want to show applies_to badges as tab titles instead of text +- You need to group related content that differs by applicability +- You want to provide a clear visual indication of what each content section applies to diff --git a/contribute-docs/syntax/applies.md b/contribute-docs/syntax/applies.md new file mode 100644 index 0000000000..365c22f472 --- /dev/null +++ b/contribute-docs/syntax/applies.md @@ -0,0 +1,324 @@ +# Applies to + +Starting with Elastic Stack 9.0, ECE 4.0, and ECK 3.0, documentation follows a [cumulative approach](/contribute/cumulative-docs/index.md): instead of creating separate pages for each product and release, we update a single page with product- and version-specific details over time. + +To support this, source files use a tagging system to indicate: + +* Which Elastic products and deployment models the content applies to. +* When a feature changes state relative to the base version. + +This is what the `applies_to` metadata is for. It can be used at the [page](#page-level), +[section](#section-level), or [inline](#inline-level) level to specify applicability with precision. + +:::{note} +For detailed guidance, refer to [](/contribute/cumulative-docs/index.md). +::: + +## Syntax + +The `applies_to` metadata supports an [exhaustive list of keys](#key-value-reference). + +When you write or edit documentation, only specify the keys that apply to that content. Each key accepts values with the following syntax: + +``` +: [version], [version], ... +``` + +Where: + +- The lifecycle is mandatory. +- The version is optional. + +### Page level + +Page level annotations are added in the YAML frontmatter, starting with the `applies_to` key and following the [key-value reference](#key-value-reference). For example: + +```yaml +--- +applies_to: + stack: ga + deployment: + ece: ga +--- +``` + +For more examples, refer to [Page annotation examples](#page-annotation-examples). + +:::{important} +All documentation pages must include an `applies_to` tag in the YAML frontmatter. +::: + +### Section level + +A header can be followed by an `{applies_to}` directive which contextualizes the applicability of the section further. + +Section-level `{applies_to}` directives require triple backticks because their content is literal. Refer to [](directives.md#exception-literal-blocks) for more information. + +````markdown +```{applies_to} +stack: ga 9.1 +``` +```` + +To play even better with Markdown editors the following is also supported: + +````markdown +```yaml {applies_to} +stack: ga 9.1 +``` +```` + +This allows the YAML inside the `{applies_to}` directive to be fully highlighted. + +For more examples, refer to [Section annotation examples](#section-annotation-examples). + +:::{note} +Section-level `{applies_to}` directives must be preceded by a heading directly. +::: + +### Inline level + +You can add inline applies annotations to any line using the following syntax: + +```markdown +This can live inline {applies_to}`section: [version]` +``` + +A specialized `{preview}` role exists to quickly mark something as a technical preview. It takes a required version number +as an argument. + +```markdown +Property {preview}`` +: definition body +``` + +For more examples, refer to [Inline annotation examples](#inline-annotation-examples). + +## Key-value reference + +Use the following key-value reference to find the appropriate key and value for your applicability statements. + +:::::{tab-set} + +::::{tab-item} Keys + +:::{include} /_snippets/applies_to-key.md +::: + +:::: + +::::{tab-item} Lifecycles + +:::{include} /_snippets/applies_to-lifecycle.md +::: + +:::: + +::::{tab-item} Versions + +:::{include} /_snippets/applies_to-version.md +::: + +:::: +::::: + +## Examples + +### Versioning examples + +Versioned products require a `version` tag to be used with the `lifecycle` tag: + +``` +applies_to: + stack: preview 9.1, ga 9.4 + deployment: + ece: deprecated 9.2, removed 9.8 +``` + +Unversioned products use `lifecycle` tags without a version: + +``` +applies_to: + serverless: + elasticsearch: beta + observability: removed +``` + +### Lifecycle and versioning examples + +:::::{dropdown} Unversioned products + +:::{include} _snippets/unversioned-lifecycle.md +::: + +::::: + +:::::{dropdown} Versioned products + +:::{include} _snippets/versioned-lifecycle.md +::: + +::::: + +:::::{dropdown} Identify multiple states for the same content + +:::{include} /syntax/_snippets/multiple-lifecycle-states.md +::: + +::::: + +### Page annotation examples + +:::{include} _snippets/page-level-applies-examples.md +::: + +### Section annotation examples + +:::{include} _snippets/section-level-applies-examples.md +::: + +### Inline annotation examples + +:::{include} _snippets/inline-level-applies-examples.md +::: + +## Structured model + +![Applies To Model](images/applies.png) + +The previous model is projected to the following structured YAML. + +:::::{dropdown} Applies to model + +```yaml +--- +applies_to: + stack: + deployment: + eck: + ess: + ece: + self: + serverless: + security: + elasticsearch: + observability: + product: + ecctl: + curator: + apm_agent_dotnet: + apm_agent_go: + apm_agent_java: + apm_agent_node: + apm_agent_php: + apm_agent_python: + apm_agent_ruby: + apm_agent_rum: + edot_collector: + edot_ios: + edot_android: + edot_dotnet: + edot_java: + edot_node: + edot_php: + edot_python: + edot_cf_aws: + edot_cf_azure: +--- +``` +::::: + +## Look and feel + +### Block + +:::::{dropdown} Block examples + +```{applies_to} +stack: preview 9.1 +serverless: ga + +apm_agent_dotnet: ga 1.0.0 +apm_agent_java: beta 1.0.0 +edot_dotnet: preview 1.0.0 +edot_python: +edot_node: ga 1.0.0 +elasticsearch: preview 9.0.0 +security: removed 9.0.0 +observability: deprecated 9.0.0 +``` +::::: + +### Inline + +:::::{dropdown} In text + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut libero diam. Mauris sed eleifend erat, +sit amet auctor odio. Donec ac placerat nunc. {applies_to}`stack: preview` Aenean scelerisque viverra lectus +nec dignissim. Vestibulum ut felis nec massa auctor placerat. Maecenas vel dictum. + +- {applies_to}`elasticsearch: preview` Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut libero diam. Mauris sed eleifend erat, sit amet auctor odio. Donec ac placerat nunc. +- {applies_to}`observability: preview` Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut libero diam. +- {applies_to}`security: preview` Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut libero diam. Mauris sed eleifend erat, sit amet auctor odio. Donec ac placerat nunc. Aenean scelerisque viverra lectus nec dignissim. + +::::: + +:::::{dropdown} Stack + +| `applies_to` | result | +|--------------------------------------------|--------------------------------------| +| `` {applies_to}`stack: ` `` | {applies_to}`stack: ` | +| `` {applies_to}`stack: preview` `` | {applies_to}`stack: preview` | +| `` {applies_to}`stack: preview 8.18` `` | {applies_to}`stack: preview 8.18` | +| `` {applies_to}`stack: preview 9.0` `` | {applies_to}`stack: preview 9.0` | +| `` {applies_to}`stack: preview 9.1` `` | {applies_to}`stack: preview 9.1` | +| `` {applies_to}`stack: preview 99.0` `` | {applies_to}`stack: preview 99.0` | +| `` {applies_to}`stack: ga` `` | {applies_to}`stack: ga` | +| `` {applies_to}`stack: ga 8.18` `` | {applies_to}`stack: ga 8.18` | +| `` {applies_to}`stack: ga 9.0` `` | {applies_to}`stack: ga 9.0` | +| `` {applies_to}`stack: ga 9.1` `` | {applies_to}`stack: ga 9.1` | +| `` {applies_to}`stack: ga 99.0` `` | {applies_to}`stack: ga 99.0` | +| `` {applies_to}`stack: beta` `` | {applies_to}`stack: beta` | +| `` {applies_to}`stack: beta 8.18` `` | {applies_to}`stack: beta 8.18` | +| `` {applies_to}`stack: beta 9.0` `` | {applies_to}`stack: beta 9.0` | +| `` {applies_to}`stack: beta 9.1` `` | {applies_to}`stack: beta 9.1` | +| `` {applies_to}`stack: beta 99.0` `` | {applies_to}`stack: beta 99.0` | +| `` {applies_to}`stack: deprecated` `` | {applies_to}`stack: deprecated` | +| `` {applies_to}`stack: deprecated 8.18` `` | {applies_to}`stack: deprecated 8.18` | +| `` {applies_to}`stack: deprecated 9.0` `` | {applies_to}`stack: deprecated 9.0` | +| `` {applies_to}`stack: deprecated 9.1` `` | {applies_to}`stack: deprecated 9.1` | +| `` {applies_to}`stack: deprecated 99.0` `` | {applies_to}`stack: deprecated 99.0` | +| `` {applies_to}`stack: removed` `` | {applies_to}`stack: removed` | +| `` {applies_to}`stack: removed 8.18` `` | {applies_to}`stack: removed 8.18` | +| `` {applies_to}`stack: removed 9.0` `` | {applies_to}`stack: removed 9.0` | +| `` {applies_to}`stack: removed 9.1` `` | {applies_to}`stack: removed 9.1` | +| `` {applies_to}`stack: removed 99.0` `` | {applies_to}`stack: removed 99.0` | +::::: + +:::::{dropdown} Serverless + +| `applies_to` | result | +|-------------------------------------------------|-------------------------------------------| +| `` {applies_to}`serverless: ` `` | {applies_to}`serverless: ` | +| `` {applies_to}`serverless: preview` `` | {applies_to}`serverless: preview` | +| `` {applies_to}`serverless: ga` `` | {applies_to}`serverless: ga` | +| `` {applies_to}`serverless: beta` `` | {applies_to}`serverless: beta` | +| `` {applies_to}`serverless: deprecated` `` | {applies_to}`serverless: deprecated` | +| `` {applies_to}`serverless: removed` `` | {applies_to}`serverless: removed` | +::::: + +### Badge rendering order + +`applies_to` badges are displayed in a consistent order regardless of how they appear in your source files. This ensures users always see badges in a predictable hierarchy: + +1. **Stack** - Elastic Stack +2. **Serverless** - Elastic Cloud Serverless offerings +3. **Deployment** - Deployment options (ECH, ECK, ECE, Self-Managed) +4. **ProductApplicability** - Specialized tools and agents (ECCTL, Curator, EDOT, APM Agents) +5. **Product (generic)** - Generic product applicability + +Within the ProductApplicability category, EDOT and APM Agent items are sorted alphabetically for better scanning. + +:::{note} +Inline applies annotations are rendered in the order they appear in the source file. +::: \ No newline at end of file diff --git a/contribute-docs/syntax/automated_settings.md b/contribute-docs/syntax/automated_settings.md new file mode 100644 index 0000000000..326b7e919c --- /dev/null +++ b/contribute-docs/syntax/automated_settings.md @@ -0,0 +1,34 @@ +# Automated settings reference + +Elastic Docs V3 supports the ability to build a markdown settings reference from a YAML source file. + +### Syntax + +```markdown +:::{settings} /syntax/kibana-alerting-action-settings.yml +::: +``` + +### Example + +```yaml +groups: + - group: Group name + id: Link ID + settings: + - setting: Setting name + default: Default value + platform: Supported platforms + description: | + A multi-line description with markdown support. + More here. + example: | + A multi-line example with markdown support. +``` + +### Result + +_Everything below this line is auto-generated._ + +:::{settings} /syntax/kibana-alerting-action-settings.yml +::: \ No newline at end of file diff --git a/contribute-docs/syntax/code.md b/contribute-docs/syntax/code.md new file mode 100644 index 0000000000..8b739c141a --- /dev/null +++ b/contribute-docs/syntax/code.md @@ -0,0 +1,430 @@ +# Code + +Code blocks can be used to display multiple lines of code. They preserve formatting and provide syntax highlighting when possible. + +## Code block + +Start and end a code block with a code fence. A code fence is a sequence of at least three consecutive backtick characters `` ``` ``. You can optionally add a language identifier to enable syntax highlighting. + + +::::{tab-set} + +:::{tab-item} Output + +```yaml +project: + title: MyST Markdown + github: https://github.com/jupyter-book/mystmd +``` + +::: + +:::{tab-item} Markdown + +````markdown +```yaml +project: + title: MyST Markdown + github: https://github.com/jupyter-book/mystmd +``` +```` + +::: + +:::: + +### Code callouts + +There are two ways to add callouts to a code block. When using callouts, you must use one callout format. You cannot combine explicit and magic callouts. + +#### Explicit callouts + +Add `<\d+>` to the end of a line to explicitly create a code callout. + +An ordered list with the same number of items as callouts must follow the code block. If the number of list items doesn’t match the callouts, docs-builder will throw an error. + + +::::{tab-set} + +:::{tab-item} Output + +```yaml +project: + license: + content: CC-BY-4.0 <1> +``` + +1. The license + +::: + +:::{tab-item} Markdown + +````markdown +```yaml +project: + license: + content: CC-BY-4.0 <1> +``` + +1. The license +```` + +::: + +:::: + +You can also have one block element in between the code block and the callout list: + +::::{tab-set} + +:::{tab-item} Output + +```javascript +var input1 = "World"; // <1> +var input2 = "Elastic"; // <2> + +function render(input) { + return `Hello, ${input}!`; +} + +render(input1); +render(input2); +``` + +**Inputs:** + +1. `World` +2. `Elastic` + +**Outputs**: + +1. `Hello, World!` +2. `Hello, Elastic!` + +::: + + +:::{tab-item} Markdown + +````markdown +```javascript +var input1 = "World"; // <1> +var input2 = "Elastic"; // <2> + +function render(input) { + return `Hello, ${input}!`; +} + +render(input1); +render(input2); +``` + +**Inputs:** + +1. `World` +2. `Elastic` + +**Outputs**: + +1. `Hello, World!` +2. `Hello, Elastic!` +```` + +::: + +:::: + +#### Automatic callouts + +If a code block contains code comments in the form of `//` or `#`, callouts are automatically created. + + +::::{tab-set} + +:::{tab-item} Output + +```csharp +var apiKey = new ApiKey(""); // Set up the api key +var client = new ElasticsearchClient("", apiKey); +``` + +::: + +:::{tab-item} Markdown + +````markdown +```csharp +var apiKey = new ApiKey(""); // Set up the api key +var client = new ElasticsearchClient("", apiKey); +``` +```` +::: + + +:::: + +Code comments must follow code to be hoisted as a callout. For example: + +::::{tab-set} + +:::{tab-item} Output + +```csharp +// THIS IS NOT A CALLOUT +var apiKey = new ApiKey(""); // This is a callout +var client = new ElasticsearchClient("", apiKey); +``` + +::: + +:::{tab-item} Markdown + +````markdown +```csharp +// THIS IS NOT A CALLOUT +var apiKey = new ApiKey(""); // This is a callout +var client = new ElasticsearchClient("", apiKey); +``` +```` + +::: + +:::: + +#### Align callouts + +You can align callouts with spaces. + +::::{tab-set} + +:::{tab-item} Output + +```yaml +foo: 1 <1> +barbar: 2 <2> +bazbazbaz: 3 <3> +``` + +1. Foo +2. Bar +3. Baz + +::: + +:::{tab-item} Markdown +````markdown +```yaml +foo: 1 <1> +barbar: 2 <2> +bazbazbaz: 3 <3> +``` + +1. Foo +2. Bar +3. Baz +```` +::: + +:::: + +#### Turn off callouts + +You can turn off callouts by adding a code block argument `callouts=false`. + +::::{tab-set} + +:::{tab-item} Output + +```yaml callouts=false +project: + license: + content: CC-BY-4.0 <1> +``` + +1. The license + +::: + +:::{tab-item} Markdown + +````markdown +```yaml callouts=false +project: + license: + content: CC-BY-4.0 <1> +``` + +1. The license +```` + +::: + +:::: + +### Console code blocks + +We document a lot of API endpoints at Elastic. For these endpoints, we support `console` as a language. The term console relates to the dev console in kibana which users can link to directly from these code snippets. + +In a console code block, the first line is highlighted as a dev console string and the remainder as json: + +::::{tab-set} + +:::{tab-item} Output + +```console +POST _reindex +{ + "source": { + "remote": { + "host": "", + "username": "user", + "password": "pass" + }, + "index": "my-index-000001", + "query": { + "match": { + "test": "data" + } + } + }, + "dest": { + "index": "my-new-index-000001" + } +} +``` + + +::: + +:::{tab-item} Markdown + +````markdown +```console +POST _reindex +{ + "source": { + "remote": { + "host": "", + "username": "user", + "password": "pass" + }, + "index": "my-index-000001", + "query": { + "match": { + "test": "data" + } + } + }, + "dest": { + "index": "my-new-index-000001" + } +} +``` +```` + +::: + +:::: + +Console code blocks now support multiple API calls within a single code block. When you have multiple console commands, they are displayed as separate sections within the same block with proper visual separation: + +::::{tab-set} + +:::{tab-item} Output + +```console +GET /mydocuments/_search +{ + "from": 1, + "query": { + "match_all" {} + } +} + +POST /mydocuments/_doc +{ + "title": "New Document", + "content": "This is a sample document" +} +``` + +::: + +:::{tab-item} Markdown + +````markdown +```console +GET /mydocuments/_search +{ + "from": 1, + "query": { + "match_all" {} + } +} + +POST /mydocuments/_doc +{ + "title": "New Document", + "content": "This is a sample document" +} +``` +```` + +::: + +:::: + +### Code block substitutions + +You can use substitutions to insert reusable values into your code block examples. +Check the [code blocks substitutions syntax](./substitutions.md#code-blocks) for more information. + +## Inline code + +Use backticks to create an inline code span. +Inline code spans are useful for short code snippets or variable names. + + +### Inline code in a paragraph + +::::{tab-set} + +:::{tab-item} Output + +This `code` is inline. + +::: + +:::{tab-item} Markdown + +````markdown +This `code` is inline. +```` +::: + +:::: + +### Inline code in a heading + +::::{tab-set} + +:::{tab-item} Output + +## This `code` is in a heading. + +::: + +:::{tab-item} Markdown + +````markdown +## This `code` is in a heading. +```` +::: + +:::: + +## Supported languages + +Refer to [hljs.ts](https://github.com/elastic/docs-builder/blob/main/src/Elastic.Documentation.Site/Assets/hljs.ts) +for a complete list of supported languages. diff --git a/contribute-docs/syntax/comments.md b/contribute-docs/syntax/comments.md new file mode 100644 index 0000000000..5b3d4e402e --- /dev/null +++ b/contribute-docs/syntax/comments.md @@ -0,0 +1,24 @@ +# Comments + +## Single line comments + +Use `%` to add single-line comments. + +```markdown +% This is a comment +``` + +Make sure to add a space after the `%`. + +## Multiline comments + +Use `` to add multiple line comment blocks. + +```markdown +- There is a commented section below. + +- And there is a commented section above. +``` diff --git a/contribute-docs/syntax/conditionals.md b/contribute-docs/syntax/conditionals.md new file mode 100644 index 0000000000..0f9db8123f --- /dev/null +++ b/contribute-docs/syntax/conditionals.md @@ -0,0 +1,5 @@ +# Conditionals + +:::{warning} +This feature will not be supported in Elastic Docs V3. +::: \ No newline at end of file diff --git a/contribute-docs/syntax/csv-include.md b/contribute-docs/syntax/csv-include.md new file mode 100644 index 0000000000..6353a51b3e --- /dev/null +++ b/contribute-docs/syntax/csv-include.md @@ -0,0 +1,70 @@ +# CSV files + +The `{csv-include}` directive allows you to include and render CSV files as formatted tables in your documentation. The directive automatically parses CSV content and renders it using the standard table styles defined in `table.css`. + +## Usage + +:::::{tab-set} + +::::{tab-item} Output + +:::{csv-include} ../_snippets/sample-data.csv +:caption: Sample user data from the database +::: + +:::: + +::::{tab-item} Markdown + +```markdown +:::{csv-include} _snippets/sample-data.csv +::: +``` + +:::: + +::::: + +## Options + +The CSV file directive supports several options to customize the table rendering: + +### Caption + +Add a descriptive caption above the table: + +```markdown +:::{csv-include} _snippets/sample-data.csv +:caption: Sample user data from the database +::: +``` + +### Custom separator + +Specify a custom field separator (default is comma): + +```markdown +:::{csv-include} _snippets/sample-data.csv +:separator: ; +::: +``` + +### Performance limits + +The directive includes built-in performance limits to handle large files efficiently: + +- **Row limit**: Maximum of 25,000 rows will be displayed +- **Column limit**: Maximum of 10 columns will be displayed +- **File size limit**: Maximum file size of 10MB + +## Performance considerations + +The CSV directive is optimized for large files: + +- Files are processed using streaming to avoid loading everything into memory +- Built-in size validation prevents processing of files that exceed 10MB +- Row and column limits protect against accidentally rendering massive tables +- Warning messages are displayed when limits are exceeded + +For optimal performance with large CSV files, consider: +- Breaking very large files into smaller, more manageable chunks diff --git a/contribute-docs/syntax/definition-lists.md b/contribute-docs/syntax/definition-lists.md new file mode 100644 index 0000000000..dee52933ae --- /dev/null +++ b/contribute-docs/syntax/definition-lists.md @@ -0,0 +1,49 @@ +# Definition lists + + +A definition list in Markdown is created by writing a term on one line, followed by a colon and at least three spaces (`: `) on the next line, followed by the definition. Multiple paragraphs in the definition should be indented with spaces to match the definition text. + + +## Basic definition list + +::::{tab-set} + +:::{tab-item} Output + +Fruit +: A sweet and fleshy product of a tree or other plant that contains seed and can be eaten as food. Common examples include apples, oranges, and bananas. Most fruits are rich in vitamins, minerals and fiber. + +Vegetable +: Any edible part of a plant that is used in savory dishes. This includes roots, stems, leaves, flowers, and sometimes fruits that are used as vegetables. + + Unlike fruits, vegetables are typically lower in sugar content and higher in fiber. Common examples include carrots, broccoli, spinach, potatoes, and tomatoes (which are technically fruits). + +Grain +: The edible seeds or fruit of grass-like plants belonging to the family Poaceae. These include wheat, rice, corn, oats, and barley. See [Types of Grains](https://en.wikipedia.org/wiki/Grain). + +Legume +: Plants in the family Fabaceae, or their fruit or seeds, such as peas, beans, lentils and peanuts. See [Common Legumes](https://en.wikipedia.org/wiki/Legume). + +::: + +:::{tab-item} Markdown + +```markdown +Fruit +: A sweet and fleshy product of a tree or other plant that contains seed and can be eaten as food. Common examples include apples, oranges, and bananas. Most fruits are rich in vitamins, minerals and fiber. + +Vegetable +: Any edible part of a plant that is used in savory dishes. This includes roots, stems, leaves, flowers, and sometimes fruits that are used as vegetables. + + Unlike fruits, vegetables are typically lower in sugar content and higher in fiber. Common examples include carrots, broccoli, spinach, potatoes, and tomatoes (which are technically fruits). + +Grain +: The edible seeds or fruit of grass-like plants belonging to the family Poaceae. These include wheat, rice, corn, oats, and barley. See [Types of Grains](https://en.wikipedia.org/wiki/Grain). + +Legume +: Plants in the family Fabaceae, or their fruit or seeds, such as peas, beans, lentils and peanuts. See [Common Legumes](https://en.wikipedia.org/wiki/Legume). +``` + +::: + +:::: diff --git a/contribute-docs/syntax/diagrams.md b/contribute-docs/syntax/diagrams.md new file mode 100644 index 0000000000..ce20375de7 --- /dev/null +++ b/contribute-docs/syntax/diagrams.md @@ -0,0 +1,148 @@ +# Diagrams + +The `diagram` directive allows you to render various types of diagrams using the [Kroki](https://kroki.io/) service. Kroki supports many diagram types including Mermaid, D2, Graphviz, PlantUML, and more. + +## Basic usage + +The basic syntax for the diagram directive is: + +```markdown +::::{diagram} [diagram-type] + +:::: +``` + +If no diagram type is specified, it defaults to `mermaid`. + +## Supported diagram types + +The diagram directive supports the following diagram types: + +- `mermaid` - Mermaid diagrams (default) +- `d2` - D2 diagrams +- `graphviz` - Graphviz/DOT diagrams +- `plantuml` - PlantUML diagrams +- `ditaa` - Ditaa diagrams +- `erd` - Entity Relationship diagrams +- `excalidraw` - Excalidraw diagrams +- `nomnoml` - Nomnoml diagrams +- `pikchr` - Pikchr diagrams +- `structurizr` - Structurizr diagrams +- `svgbob` - Svgbob diagrams +- `vega` - Vega diagrams +- `vegalite` - Vega-Lite diagrams +- `wavedrom` - WaveDrom diagrams + +## Examples + +### Mermaid flowchart (default) + +::::::{tab-set} + +:::::{tab-item} Source +```markdown +::::{diagram} +flowchart LR + A[Start] --> B{Decision} + B -->|Yes| C[Action 1] + B -->|No| D[Action 2] + C --> E[End] + D --> E +:::: +``` +::::: + +:::::{tab-item} Rendered +::::{diagram} +flowchart LR + A[Start] --> B{Decision} + B -->|Yes| C[Action 1] + B -->|No| D[Action 2] + C --> E[End] + D --> E +:::: +::::: + +:::::: + +### Mermaid sequence diagram + +::::::{tab-set} + +:::::{tab-item} Source +```markdown +::::{diagram} mermaid +sequenceDiagram + participant A as Alice + participant B as Bob + A->>B: Hello Bob, how are you? + B-->>A: Great! +:::: +``` +::::: + +:::::{tab-item} Rendered +::::{diagram} mermaid +sequenceDiagram + participant A as Alice + participant B as Bob + A->>B: Hello Bob, how are you? + B-->>A: Great! +:::: +::::: + +:::::: + +### D2 diagram + +::::::{tab-set} + +:::::{tab-item} Source +```markdown +::::{diagram} d2 +x -> y: hello world +y -> z: nice to meet you +:::: +``` +::::: + +:::::{tab-item} Rendered +::::{diagram} d2 +x -> y: hello world +y -> z: nice to meet you +:::: +::::: + +:::::: + +### Graphviz diagram + +::::::{tab-set} + +:::::{tab-item} Source +```markdown +::::{diagram} graphviz +digraph G { + rankdir=LR; + A -> B -> C; + A -> C; +} +:::: +``` +::::: + +:::::{tab-item} Rendered +::::{diagram} graphviz +digraph G { + rankdir=LR; + A -> B -> C; + A -> C; +} +:::: +::::: + +:::::: + +## Error handling + +If the diagram content is empty or the encoding fails, an error message will be displayed instead of the diagram. diff --git a/contribute-docs/syntax/directives.md b/contribute-docs/syntax/directives.md new file mode 100644 index 0000000000..f0d4b3c48a --- /dev/null +++ b/contribute-docs/syntax/directives.md @@ -0,0 +1,80 @@ +# Directives + +Directives extend Markdown with additional features: + +```markdown +:::{note} +This is a callout box that stands out from regular text. +::: +``` + +How directive syntax works: +- `:::` opens and closes the directive block +- `{note}` is the directive type (always in curly braces) +- Content inside is regular Markdown + +## Adding options + +```markdown +:::{image} screenshot.png +:alt: Dashboard overview <1> +:width: 600px +::: +``` + +1. Options start with `:` and appear after the opening line. + +## Adding arguments + +```markdown +:::{include} shared-content.md +::: +``` + +The argument comes right after the directive name. + +## Nesting directives + +To nest directives, add more colons to the outer directive: + +```markdown +::::{note} +Outer content + +:::{hint} +Inner content +::: + +More outer content +:::: +``` + +Use four colons (`::::`) for the outer directive and three (`:::`) for the inner one. Need to nest deeper? Keep adding colons. + +## Exception: Literal blocks + +Code blocks and [`applies_to` blocks](applies.md) use backticks instead of colons to prevent content from being processed as Markdown: + +````markdown +```js +const x = 1; +``` +```` + +## Available directives + +The following directives are available: + +- [Admonitions](admonitions.md) - Callouts and warnings +- [Code blocks](code.md) - Syntax-highlighted code +- [CSV include](csv-include.md) - Render CSV files as tables +- [Diagrams](diagrams.md) - Visual diagrams and charts +- [Dropdowns](dropdowns.md) - Collapsible content +- [Images](images.md) - Enhanced image handling +- [Include](file_inclusion.md) - Include content from other files +- [Math](math.md) - Mathematical expressions and equations +- [Settings](automated_settings.md) - Configuration blocks +- [Stepper](stepper.md) - Step-by-step content +- [Tabs](tabs.md) - Tabbed content organization +- [Tables](tables.md) - Data tables +- [Version blocks](version-variables.md) - API version information \ No newline at end of file diff --git a/contribute-docs/syntax/dropdowns.md b/contribute-docs/syntax/dropdowns.md new file mode 100644 index 0000000000..a8b4f9a600 --- /dev/null +++ b/contribute-docs/syntax/dropdowns.md @@ -0,0 +1,104 @@ +# Dropdowns + +Dropdowns allow you to hide and reveal content on user interaction. By default, dropdowns are collapsed. This hides content until a user clicks the title of the collapsible block. + +## Basic dropdown + + +:::::{tab-set} + +::::{tab-item} Output + +:::{dropdown} Dropdown Title +Dropdown content +::: + +:::: + +::::{tab-item} Markdown +```markdown +:::{dropdown} Dropdown Title +Dropdown content +::: +``` +:::: + +::::: + +## Open by default + +You can specify that the dropdown content should be visible by default. Do this by specifying the `open` option. Users can collapse content by clicking on the dropdown title. + +:::::{tab-set} + +::::{tab-item} Output + +:::{dropdown} Dropdown Title +:open: +Dropdown content +::: + +:::: + +::::{tab-item} Markdown +```markdown +:::{dropdown} Dropdown Title +:open: +Dropdown content +::: +``` +:::: + +::::: + +## With applies_to badge + +You can add an applies_to badge to the dropdown title by specifying the `:applies_to:` option. This displays a badge indicating which deployment types, versions, or other applicability criteria the dropdown content applies to. + +:::::{tab-set} + +::::{tab-item} Output + +:::{dropdown} Dropdown Title +:applies_to: stack: ga 9.0 +Dropdown content for Stack GA 9.0 +::: + +:::: + +::::{tab-item} Markdown +```markdown +:::{dropdown} Dropdown Title +:applies_to: stack: ga 9.0 +Dropdown content for Stack GA 9.0 +::: +``` +:::: + +::::: + +## Multiple applies_to definitions + +You can specify multiple `applies_to` definitions using YAML object notation with curly braces `{}`. This is useful when content applies to multiple deployment types or versions simultaneously. + +:::::{tab-set} + +::::{tab-item} Output + +:::{dropdown} Dropdown Title +:applies_to: { ece:, ess: } +Dropdown content for ECE and ECH +::: + +:::: + +::::{tab-item} Markdown +```markdown +:::{dropdown} Dropdown Title +:applies_to: { ece:, ess: } +Dropdown content for ECE and ECH +::: +``` +:::: + +::::: diff --git a/contribute-docs/syntax/example_blocks.md b/contribute-docs/syntax/example_blocks.md new file mode 100644 index 0000000000..6470554a52 --- /dev/null +++ b/contribute-docs/syntax/example_blocks.md @@ -0,0 +1,5 @@ +# Example blocks + +:::{warning} +This feature will not be supported in Elastic Docs V3. +::: \ No newline at end of file diff --git a/contribute-docs/syntax/file_inclusion.md b/contribute-docs/syntax/file_inclusion.md new file mode 100644 index 0000000000..0299af865a --- /dev/null +++ b/contribute-docs/syntax/file_inclusion.md @@ -0,0 +1,37 @@ +# File inclusion + +File inclusion is useful for +- including entire pages in a content set (usually done in the `docset.yml` file) +- breaking files into smaller units and including them where appropriate + +If there are portions of content that are relevant to multiple pages, you can inject content from another file into any given MD file using the `include` directive. + +:::{note} +Files to be included must live in a `_snippets` folder to be considered a snippet file. This folder can live anywhere. +::: + +### Syntax + +```markdown +:::{include} _snippets/reusable-snippet.md +::: +``` + +:::{include} _snippets/reusable-snippet.md +::: + +#### Linking to snippets with custom anchors + +To link to a heading with a [custom anchor (ID)](./headings.md#custom-anchor-links) defined in a snippet, target the parent file + anchor. + +For example: + +```markdown +[my favorite esql function](parent-file.md#id-from-included-snippet) +``` + +### Asciidoc syntax + +```asciidoc +include::shared-monitor-config.asciidoc[] +``` diff --git a/contribute-docs/syntax/frontmatter.md b/contribute-docs/syntax/frontmatter.md new file mode 100644 index 0000000000..1a39426e4e --- /dev/null +++ b/contribute-docs/syntax/frontmatter.md @@ -0,0 +1,115 @@ +# Frontmatter + +Every Markdown file referenced in the TOC may optionally define a frontmatter block. +Frontmatter is YAML-formatted metadata about a page, at the beginning of each file +and wrapped by `---` lines. + +In the frontmatter block, you can define the following fields: + +```yaml +--- +navigation_title: This is the navigation title <1> +navigation_tooltip: This is a tooltip shown on hover <2> +description: This is a description of the page <3> +applies_to: <4> + serverless: all +products: <5> + - id: apm-agent + - id: edot-sdk +sub: <6> + key: value +--- +``` + +1. [`navigation_title`](#navigation-title) +2. [`navigation_tooltip`](#navigation-tooltip) +3. [`description`](#description) +4. [`applies_to`](#applies-to) +5. [`products`](#products) +6. [`sub`](#subs) + +## Navigation Title + +See [](./titles.md) + +## Navigation Tooltip + +Use the `navigation_tooltip` frontmatter to set custom tooltip text that appears when hovering over navigation items. + +The tooltip is displayed with a 500ms delay when hovering over navigation links in the sidebar and dropdown menus. +It's positioned dynamically relative to the viewport to avoid overflow issues. + +If you don't set a `navigation_tooltip`, it will automatically fall back to the `description` field. +This provides helpful context for users browsing the navigation without requiring additional configuration. + +The `navigation_tooltip` frontmatter is a string. Keep it concise (recommended 50-100 characters) for best readability. + +Example: + +```yaml +--- +navigation_title: Quick Start +navigation_tooltip: Learn how to set up and configure your first application in 5 minutes +--- +``` + +## Description + +Use the `description` frontmatter to set the description meta tag for a page. +This helps search engines and social media. +It also sets the `og:description` and `twitter:description` meta tags. + +The `description` frontmatter is a string, recommended to be around 150 characters. If you don't set a `description`, +it will be generated from the first few paragraphs of the page until it reaches 150 characters. + +## Applies to + +See [](./applies.md) + +## Products + +The products frontmatter is a list of products that the page relates to. +This is used for the "Products" filter in the Search UI. + +The products frontmatter is a list of objects, each object has an `id` field. + +| Product ID | Product Name | +|---------------------------------------------|-----------------------------------------------| +| `apm` | APM | +| `apm-agent` | APM Agent | +| `auditbeat` | Auditbeat | +| `beats` | Beats | +| `cloud-control-ecctl` | Elastic Cloud Control ECCTL | +| `cloud-enterprise` | Elastic Cloud Enterprise | +| `cloud-hosted` | Elastic Cloud Hosted | +| `cloud-kubernetes` | Elastic Cloud Kubernetes | +| `cloud-serverless` | Elastic Cloud Serverless | +| `cloud-terraform` | Elastic Cloud Terraform | +| `ecs` | Elastic Common Schema (ECS) | +| `ecs-logging` | ECS Logging | +| `edot-cf` | EDOT Cloud Forwarder | +| `edot-sdk` | Elastic Distribution of OpenTelemetry SDK | +| `edot-collector` | Elastic Distribution of OpenTelemetry Collector | +| `elastic-agent` | Elastic Agent | +| `elastic-serverless-forwarder` | Elastic Serverless Forwarder | +| `elastic-stack` | Elastic Stack | +| `elasticsearch` | Elasticsearch | +| `elasticsearch-client` | Elasticsearch Client | +| `filebeat` | Filebeat | +| `fleet` | Fleet | +| `heartbeat` | Heartbeat | +| `integrations` | Integrations | +| `kibana` | Kibana | +| `logstash` | Logstash | +| `machine-learning` | Machine Learning | +| `metricbeat` | Metricbeat | +| `observability` | Elastic Observability | +| `packetbeat` | Packetbeat | +| `painless` | Painless | +| `search-ui` | Search UI | +| `security` | Elastic Security | +| `winlogbeat` | Winlogbeat | + +## Subs + +Use the `sub` field to define local substitutions. Refer to [Substitutions](substitutions.md) for more information. \ No newline at end of file diff --git a/contribute-docs/syntax/headings.md b/contribute-docs/syntax/headings.md new file mode 100644 index 0000000000..5b356dc6de --- /dev/null +++ b/contribute-docs/syntax/headings.md @@ -0,0 +1,100 @@ +# Headings + +You create a heading by adding number signs `#` in front of a word or phrase. The number of number signs you use should correspond to the heading level. For example, to create a heading level three `

`, use three number signs (e.g., `### My Header`). + +## Basics + +::::{tab-set} + +:::{tab-item} Output + +# Heading 1 + +## Heading 2 + +### Heading 3 + +#### Heading 4 + +##### Heading 5 + +###### Heading 6 + +::: + +:::{tab-item} Markdown + +```markdown +# Heading 1 +## Heading 2 +### Heading 3 +#### Heading 4 +##### Heading 5 +###### Heading 6 + +``` + +::: + +:::: + +:::{note} + +- Every page has to start with a level 1 heading. +- You should use only one level 1 heading per page. +- Headings inside directives like tabs or dropdowns causes the table of contents indicator to behave unexpectedly. +- If you are using the same heading text multiple times you should use a custom [anchor link](#anchor-links) to avoid conflicts. + +::: + +## Anchor Links + +By default, the anchor links are generated based on the heading text. +You will get a hyphened, lowercase, alphanumeric version of any string you please, with any [diacritics](https://en.wikipedia.org/wiki/Diacritic) removed, whitespace and dashes collapsed, and whitespace trimmed. + +### Default Anchor Links + +::::{tab-set} + +:::{tab-item} Output + +#### Hello-World + +::: + +:::{tab-item} Markdown + +```markdown + +#### Hello-World + +``` + +::: + +:::: + + +### Custom Anchor Links + +You can also specify a custom anchor link using the following syntax. + +::::{tab-set} + +:::{tab-item} Output + +#### Heading [custom-anchor] + +::: + +:::{tab-item} Markdown + +```markdown + +#### Heading [custom-anchor] + +``` + +::: + +:::: diff --git a/contribute-docs/syntax/icons.md b/contribute-docs/syntax/icons.md new file mode 100644 index 0000000000..f5bdb875cb --- /dev/null +++ b/contribute-docs/syntax/icons.md @@ -0,0 +1,586 @@ +# Icons + +You can include icons in your documentation using the `` {icon}`icon-name` `` syntax. For example, writing `` {icon}`check` `` will render a checkmark icon. + +## Available Icons + +Here is a list of all available icons: + +| Syntax | Icon | +|:-------------------------------------------------|:-------------------------------------------:| +| `` {icon}`accessibility` `` | {icon}`accessibility` | +| `` {icon}`aggregate` `` | {icon}`aggregate` | +| `` {icon}`analyzeEvent` `` | {icon}`analyzeEvent` | +| `` {icon}`annotation` `` | {icon}`annotation` | +| `` {icon}`anomaly_chart` `` | {icon}`anomaly_chart` | +| `` {icon}`anomaly_swim_lane` `` | {icon}`anomaly_swim_lane` | +| `` {icon}`apm_trace` `` | {icon}`apm_trace` | +| `` {icon}`app_add_data` `` | {icon}`app_add_data` | +| `` {icon}`app_advanced_settings` `` | {icon}`app_advanced_settings` | +| `` {icon}`app_agent` `` | {icon}`app_agent` | +| `` {icon}`app_apm` `` | {icon}`app_apm` | +| `` {icon}`app_app_search` `` | {icon}`app_app_search` | +| `` {icon}`app_auditbeat` `` | {icon}`app_auditbeat` | +| `` {icon}`app_canvas` `` | {icon}`app_canvas` | +| `` {icon}`app_cases` `` | {icon}`app_cases` | +| `` {icon}`app_code` `` | {icon}`app_code` | +| `` {icon}`app_console` `` | {icon}`app_console` | +| `` {icon}`app_cross_cluster_replication` `` | {icon}`app_cross_cluster_replication` | +| `` {icon}`app_dashboard` `` | {icon}`app_dashboard` | +| `` {icon}`app_devtools` `` | {icon}`app_devtools` | +| `` {icon}`app_discover` `` | {icon}`app_discover` | +| `` {icon}`app_ems` `` | {icon}`app_ems` | +| `` {icon}`app_filebeat` `` | {icon}`app_filebeat` | +| `` {icon}`app_fleet` `` | {icon}`app_fleet` | +| `` {icon}`app_gis` `` | {icon}`app_gis` | +| `` {icon}`app_graph` `` | {icon}`app_graph` | +| `` {icon}`app_grok` `` | {icon}`app_grok` | +| `` {icon}`app_heartbeat` `` | {icon}`app_heartbeat` | +| `` {icon}`app_index_management` `` | {icon}`app_index_management` | +| `` {icon}`app_index_pattern` `` | {icon}`app_index_pattern` | +| `` {icon}`app_index_rollup` `` | {icon}`app_index_rollup` | +| `` {icon}`app_lens` `` | {icon}`app_lens` | +| `` {icon}`app_logs` `` | {icon}`app_logs` | +| `` {icon}`app_management` `` | {icon}`app_management` | +| `` {icon}`app_metricbeat` `` | {icon}`app_metricbeat` | +| `` {icon}`app_metrics` `` | {icon}`app_metrics` | +| `` {icon}`app_ml` `` | {icon}`app_ml` | +| `` {icon}`app_monitoring` `` | {icon}`app_monitoring` | +| `` {icon}`app_notebook` `` | {icon}`app_notebook` | +| `` {icon}`app_packetbeat` `` | {icon}`app_packetbeat` | +| `` {icon}`app_pipeline` `` | {icon}`app_pipeline` | +| `` {icon}`app_recently_viewed` `` | {icon}`app_recently_viewed` | +| `` {icon}`app_reporting` `` | {icon}`app_reporting` | +| `` {icon}`app_saved_objects` `` | {icon}`app_saved_objects` | +| `` {icon}`app_search_profiler` `` | {icon}`app_search_profiler` | +| `` {icon}`app_security` `` | {icon}`app_security` | +| `` {icon}`app_security_analytics` `` | {icon}`app_security_analytics` | +| `` {icon}`app_spaces` `` | {icon}`app_spaces` | +| `` {icon}`app_sql` `` | {icon}`app_sql` | +| `` {icon}`app_timelion` `` | {icon}`app_timelion` | +| `` {icon}`app_upgrade_assistant` `` | {icon}`app_upgrade_assistant` | +| `` {icon}`app_uptime` `` | {icon}`app_uptime` | +| `` {icon}`app_users_roles` `` | {icon}`app_users_roles` | +| `` {icon}`app_visualize` `` | {icon}`app_visualize` | +| `` {icon}`app_vulnerability_management` `` | {icon}`app_vulnerability_management` | +| `` {icon}`app_watches` `` | {icon}`app_watches` | +| `` {icon}`app_workflows` `` | {icon}`app_workflows` | +| `` {icon}`app_workplace_search` `` | {icon}`app_workplace_search` | +| `` {icon}`apps` `` | {icon}`apps` | +| `` {icon}`arrow_down` `` | {icon}`arrow_down` | +| `` {icon}`arrow_left` `` | {icon}`arrow_left` | +| `` {icon}`arrow_right` `` | {icon}`arrow_right` | +| `` {icon}`arrow_up` `` | {icon}`arrow_up` | +| `` {icon}`arrowEnd` `` | {icon}`arrowEnd` | +| `` {icon}`arrowStart` `` | {icon}`arrowStart` | +| `` {icon}`article` `` | {icon}`article` | +| `` {icon}`asterisk` `` | {icon}`asterisk` | +| `` {icon}`at` `` | {icon}`at` | +| `` {icon}`background_task` `` | {icon}`background_task` | +| `` {icon}`bell` `` | {icon}`bell` | +| `` {icon}`bellSlash` `` | {icon}`bellSlash` | +| `` {icon}`beta` `` | {icon}`beta` | +| `` {icon}`bolt` `` | {icon}`bolt` | +| `` {icon}`boxes_horizontal` `` | {icon}`boxes_horizontal` | +| `` {icon}`boxes_vertical` `` | {icon}`boxes_vertical` | +| `` {icon}`branch` `` | {icon}`branch` | +| `` {icon}`branchUser` `` | {icon}`branchUser` | +| `` {icon}`broom` `` | {icon}`broom` | +| `` {icon}`brush` `` | {icon}`brush` | +| `` {icon}`bug` `` | {icon}`bug` | +| `` {icon}`bullseye` `` | {icon}`bullseye` | +| `` {icon}`calendar` `` | {icon}`calendar` | +| `` {icon}`change_point_detection` `` | {icon}`change_point_detection` | +| `` {icon}`check` `` | {icon}`check` | +| `` {icon}`checkCircle` `` | {icon}`checkCircle` | +| `` {icon}`checkInCircleFilled` `` | {icon}`checkInCircleFilled` | +| `` {icon}`cheer` `` | {icon}`cheer` | +| `` {icon}`clickLeft` `` | {icon}`clickLeft` | +| `` {icon}`clickRight` `` | {icon}`clickRight` | +| `` {icon}`clock` `` | {icon}`clock` | +| `` {icon}`clockCounter` `` | {icon}`clockCounter` | +| `` {icon}`cloudDrizzle` `` | {icon}`cloudDrizzle` | +| `` {icon}`cloudStormy` `` | {icon}`cloudStormy` | +| `` {icon}`cloudSunny` `` | {icon}`cloudSunny` | +| `` {icon}`cluster` `` | {icon}`cluster` | +| `` {icon}`code` `` | {icon}`code` | +| `` {icon}`color` `` | {icon}`color` | +| `` {icon}`comment` `` | {icon}`comment` | +| `` {icon}`compute` `` | {icon}`compute` | +| `` {icon}`console` `` | {icon}`console` | +| `` {icon}`container` `` | {icon}`container` | +| `` {icon}`continuityAbove` `` | {icon}`continuityAbove` | +| `` {icon}`continuityAboveBelow` `` | {icon}`continuityAboveBelow` | +| `` {icon}`continuityBelow` `` | {icon}`continuityBelow` | +| `` {icon}`continuityWithin` `` | {icon}`continuityWithin` | +| `` {icon}`contrast` `` | {icon}`contrast` | +| `` {icon}`contrastHigh` `` | {icon}`contrastHigh` | +| `` {icon}`controls` `` | {icon}`controls` | +| `` {icon}`copy` `` | {icon}`copy` | +| `` {icon}`copy_clipboard` `` | {icon}`copy_clipboard` | +| `` {icon}`cross` `` | {icon}`cross` | +| `` {icon}`cross_in_circle` `` | {icon}`cross_in_circle` | +| `` {icon}`crosshairs` `` | {icon}`crosshairs` | +| `` {icon}`currency` `` | {icon}`currency` | +| `` {icon}`cut` `` | {icon}`cut` | +| `` {icon}`database` `` | {icon}`database` | +| `` {icon}`desktop` `` | {icon}`desktop` | +| `` {icon}`diff` `` | {icon}`diff` | +| `` {icon}`document` `` | {icon}`document` | +| `` {icon}`documentEdit` `` | {icon}`documentEdit` | +| `` {icon}`documentation` `` | {icon}`documentation` | +| `` {icon}`documents` `` | {icon}`documents` | +| `` {icon}`dot` `` | {icon}`dot` | +| `` {icon}`dotInCircle` `` | {icon}`dotInCircle` | +| `` {icon}`doubleArrowLeft` `` | {icon}`doubleArrowLeft` | +| `` {icon}`doubleArrowRight` `` | {icon}`doubleArrowRight` | +| `` {icon}`download` `` | {icon}`download` | +| `` {icon}`editor_align_center` `` | {icon}`editor_align_center` | +| `` {icon}`editor_align_left` `` | {icon}`editor_align_left` | +| `` {icon}`editor_align_right` `` | {icon}`editor_align_right` | +| `` {icon}`editor_bold` `` | {icon}`editor_bold` | +| `` {icon}`editor_checklist` `` | {icon}`editor_checklist` | +| `` {icon}`editor_heading` `` | {icon}`editor_heading` | +| `` {icon}`editor_italic` `` | {icon}`editor_italic` | +| `` {icon}`editor_link` `` | {icon}`editor_link` | +| `` {icon}`editor_ordered_list` `` | {icon}`editor_ordered_list` | +| `` {icon}`editor_redo` `` | {icon}`editor_redo` | +| `` {icon}`editor_strike` `` | {icon}`editor_strike` | +| `` {icon}`editor_table` `` | {icon}`editor_table` | +| `` {icon}`editor_underline` `` | {icon}`editor_underline` | +| `` {icon}`editor_undo` `` | {icon}`editor_undo` | +| `` {icon}`editor_unordered_list` `` | {icon}`editor_unordered_list` | +| `` {icon}`editorDistributeHorizontal` `` | {icon}`editorDistributeHorizontal` | +| `` {icon}`editorDistributeVertical` `` | {icon}`editorDistributeVertical` | +| `` {icon}`editorItemAlignBottom` `` | {icon}`editorItemAlignBottom` | +| `` {icon}`editorItemAlignCenter` `` | {icon}`editorItemAlignCenter` | +| `` {icon}`editorItemAlignLeft` `` | {icon}`editorItemAlignLeft` | +| `` {icon}`editorItemAlignMiddle` `` | {icon}`editorItemAlignMiddle` | +| `` {icon}`editorItemAlignRight` `` | {icon}`editorItemAlignRight` | +| `` {icon}`editorItemAlignTop` `` | {icon}`editorItemAlignTop` | +| `` {icon}`editorPositionBottomLeft` `` | {icon}`editorPositionBottomLeft` | +| `` {icon}`editorPositionBottomRight` `` | {icon}`editorPositionBottomRight` | +| `` {icon}`editorPositionTopLeft` `` | {icon}`editorPositionTopLeft` | +| `` {icon}`editorPositionTopRight` `` | {icon}`editorPositionTopRight` | +| `` {icon}`email` `` | {icon}`email` | +| `` {icon}`empty` `` | {icon}`empty` | +| `` {icon}`endpoint` `` | {icon}`endpoint` | +| `` {icon}`eql` `` | {icon}`eql` | +| `` {icon}`eraser` `` | {icon}`eraser` | +| `` {icon}`error` `` | {icon}`error` | +| `` {icon}`errorFilled` `` | {icon}`errorFilled` | +| `` {icon}`esqlVis` `` | {icon}`esqlVis` | +| `` {icon}`exit` `` | {icon}`exit` | +| `` {icon}`expand` `` | {icon}`expand` | +| `` {icon}`expandMini` `` | {icon}`expandMini` | +| `` {icon}`export` `` | {icon}`export` | +| `` {icon}`eye` `` | {icon}`eye` | +| `` {icon}`eye_closed` `` | {icon}`eye_closed` | +| `` {icon}`face_happy` `` | {icon}`face_happy` | +| `` {icon}`face_neutral` `` | {icon}`face_neutral` | +| `` {icon}`face_sad` `` | {icon}`face_sad` | +| `` {icon}`field_statistics` `` | {icon}`field_statistics` | +| `` {icon}`filter` `` | {icon}`filter` | +| `` {icon}`filterExclude` `` | {icon}`filterExclude` | +| `` {icon}`filterIgnore` `` | {icon}`filterIgnore` | +| `` {icon}`filterInCircle` `` | {icon}`filterInCircle` | +| `` {icon}`filterInclude` `` | {icon}`filterInclude` | +| `` {icon}`flag` `` | {icon}`flag` | +| `` {icon}`flask` `` | {icon}`flask` | +| `` {icon}`fold` `` | {icon}`fold` | +| `` {icon}`folder_check` `` | {icon}`folder_check` | +| `` {icon}`folder_closed` `` | {icon}`folder_closed` | +| `` {icon}`folder_exclamation` `` | {icon}`folder_exclamation` | +| `` {icon}`folder_open` `` | {icon}`folder_open` | +| `` {icon}`frameNext` `` | {icon}`frameNext` | +| `` {icon}`framePrevious` `` | {icon}`framePrevious` | +| `` {icon}`full_screen` `` | {icon}`full_screen` | +| `` {icon}`fullScreenExit` `` | {icon}`fullScreenExit` | +| `` {icon}`function` `` | {icon}`function` | +| `` {icon}`gear` `` | {icon}`gear` | +| `` {icon}`globe` `` | {icon}`globe` | +| `` {icon}`grab` `` | {icon}`grab` | +| `` {icon}`grab_horizontal` `` | {icon}`grab_horizontal` | +| `` {icon}`grabOmnidirectional` `` | {icon}`grabOmnidirectional` | +| `` {icon}`gradient` `` | {icon}`gradient` | +| `` {icon}`grid` `` | {icon}`grid` | +| `` {icon}`heart` `` | {icon}`heart` | +| `` {icon}`heatmap` `` | {icon}`heatmap` | +| `` {icon}`help` `` | {icon}`help` | +| `` {icon}`home` `` | {icon}`home` | +| `` {icon}`image` `` | {icon}`image` | +| `` {icon}`import` `` | {icon}`import` | +| `` {icon}`index` `` | {icon}`index` | +| `` {icon}`index_close` `` | {icon}`index_close` | +| `` {icon}`index_edit` `` | {icon}`index_edit` | +| `` {icon}`index_flush` `` | {icon}`index_flush` | +| `` {icon}`index_mapping` `` | {icon}`index_mapping` | +| `` {icon}`index_open` `` | {icon}`index_open` | +| `` {icon}`index_runtime` `` | {icon}`index_runtime` | +| `` {icon}`index_settings` `` | {icon}`index_settings` | +| `` {icon}`indexTemporary` `` | {icon}`indexTemporary` | +| `` {icon}`infinity` `` | {icon}`infinity` | +| `` {icon}`info` `` | {icon}`info` | +| `` {icon}`inputOutput` `` | {icon}`inputOutput` | +| `` {icon}`inspect` `` | {icon}`inspect` | +| `` {icon}`invert` `` | {icon}`invert` | +| `` {icon}`ip` `` | {icon}`ip` | +| `` {icon}`key` `` | {icon}`key` | +| `` {icon}`keyboard` `` | {icon}`keyboard` | +| `` {icon}`kql_field` `` | {icon}`kql_field` | +| `` {icon}`kql_function` `` | {icon}`kql_function` | +| `` {icon}`kql_operand` `` | {icon}`kql_operand` | +| `` {icon}`kql_selector` `` | {icon}`kql_selector` | +| `` {icon}`kql_value` `` | {icon}`kql_value` | +| `` {icon}`kubernetesNode` `` | {icon}`kubernetesNode` | +| `` {icon}`kubernetesPod` `` | {icon}`kubernetesPod` | +| `` {icon}`launch` `` | {icon}`launch` | +| `` {icon}`layers` `` | {icon}`layers` | +| `` {icon}`lettering` `` | {icon}`lettering` | +| `` {icon}`lineDashed` `` | {icon}`lineDashed` | +| `` {icon}`lineDotted` `` | {icon}`lineDotted` | +| `` {icon}`lineSolid` `` | {icon}`lineSolid` | +| `` {icon}`link` `` | {icon}`link` | +| `` {icon}`list` `` | {icon}`list` | +| `` {icon}`list_add` `` | {icon}`list_add` | +| `` {icon}`lock` `` | {icon}`lock` | +| `` {icon}`lockOpen` `` | {icon}`lockOpen` | +| `` {icon}`log_pattern_analysis` `` | {icon}`log_pattern_analysis` | +| `` {icon}`log_rate_analysis` `` | {icon}`log_rate_analysis` | +| `` {icon}`logo_aerospike` `` | {icon}`logo_aerospike` | +| `` {icon}`logo_apache` `` | {icon}`logo_apache` | +| `` {icon}`logo_app_search` `` | {icon}`logo_app_search` | +| `` {icon}`logo_aws` `` | {icon}`logo_aws` | +| `` {icon}`logo_aws_mono` `` | {icon}`logo_aws_mono` | +| `` {icon}`logo_azure` `` | {icon}`logo_azure` | +| `` {icon}`logo_azure_mono` `` | {icon}`logo_azure_mono` | +| `` {icon}`logo_beats` `` | {icon}`logo_beats` | +| `` {icon}`logo_business_analytics` `` | {icon}`logo_business_analytics` | +| `` {icon}`logo_ceph` `` | {icon}`logo_ceph` | +| `` {icon}`logo_cloud` `` | {icon}`logo_cloud` | +| `` {icon}`logo_cloud_ece` `` | {icon}`logo_cloud_ece` | +| `` {icon}`logo_code` `` | {icon}`logo_code` | +| `` {icon}`logo_codesandbox` `` | {icon}`logo_codesandbox` | +| `` {icon}`logo_couchbase` `` | {icon}`logo_couchbase` | +| `` {icon}`logo_docker` `` | {icon}`logo_docker` | +| `` {icon}`logo_dropwizard` `` | {icon}`logo_dropwizard` | +| `` {icon}`logo_elastic` `` | {icon}`logo_elastic` | +| `` {icon}`logo_elastic_stack` `` | {icon}`logo_elastic_stack` | +| `` {icon}`logo_elasticsearch` `` | {icon}`logo_elasticsearch` | +| `` {icon}`logo_enterprise_search` `` | {icon}`logo_enterprise_search` | +| `` {icon}`logo_etcd` `` | {icon}`logo_etcd` | +| `` {icon}`logo_gcp` `` | {icon}`logo_gcp` | +| `` {icon}`logo_gcp_mono` `` | {icon}`logo_gcp_mono` | +| `` {icon}`logo_github` `` | {icon}`logo_github` | +| `` {icon}`logo_gmail` `` | {icon}`logo_gmail` | +| `` {icon}`logo_golang` `` | {icon}`logo_golang` | +| `` {icon}`logo_google_g` `` | {icon}`logo_google_g` | +| `` {icon}`logo_haproxy` `` | {icon}`logo_haproxy` | +| `` {icon}`logo_ibm` `` | {icon}`logo_ibm` | +| `` {icon}`logo_ibm_mono` `` | {icon}`logo_ibm_mono` | +| `` {icon}`logo_kafka` `` | {icon}`logo_kafka` | +| `` {icon}`logo_kibana` `` | {icon}`logo_kibana` | +| `` {icon}`logo_kubernetes` `` | {icon}`logo_kubernetes` | +| `` {icon}`logo_logging` `` | {icon}`logo_logging` | +| `` {icon}`logo_logstash` `` | {icon}`logo_logstash` | +| `` {icon}`logo_maps` `` | {icon}`logo_maps` | +| `` {icon}`logo_memcached` `` | {icon}`logo_memcached` | +| `` {icon}`logo_metrics` `` | {icon}`logo_metrics` | +| `` {icon}`logo_mongodb` `` | {icon}`logo_mongodb` | +| `` {icon}`logo_mysql` `` | {icon}`logo_mysql` | +| `` {icon}`logo_nginx` `` | {icon}`logo_nginx` | +| `` {icon}`logo_observability` `` | {icon}`logo_observability` | +| `` {icon}`logo_osquery` `` | {icon}`logo_osquery` | +| `` {icon}`logo_php` `` | {icon}`logo_php` | +| `` {icon}`logo_postgres` `` | {icon}`logo_postgres` | +| `` {icon}`logo_prometheus` `` | {icon}`logo_prometheus` | +| `` {icon}`logo_rabbitmq` `` | {icon}`logo_rabbitmq` | +| `` {icon}`logo_redis` `` | {icon}`logo_redis` | +| `` {icon}`logo_security` `` | {icon}`logo_security` | +| `` {icon}`logo_site_search` `` | {icon}`logo_site_search` | +| `` {icon}`logo_sketch` `` | {icon}`logo_sketch` | +| `` {icon}`logo_slack` `` | {icon}`logo_slack` | +| `` {icon}`logo_uptime` `` | {icon}`logo_uptime` | +| `` {icon}`logo_vulnerability_management` `` | {icon}`logo_vulnerability_management` | +| `` {icon}`logo_webhook` `` | {icon}`logo_webhook` | +| `` {icon}`logo_windows` `` | {icon}`logo_windows` | +| `` {icon}`logo_workplace_search` `` | {icon}`logo_workplace_search` | +| `` {icon}`logstash_filter` `` | {icon}`logstash_filter` | +| `` {icon}`logstash_if` `` | {icon}`logstash_if` | +| `` {icon}`logstash_input` `` | {icon}`logstash_input` | +| `` {icon}`logstash_output` `` | {icon}`logstash_output` | +| `` {icon}`logstash_queue` `` | {icon}`logstash_queue` | +| `` {icon}`magnet` `` | {icon}`magnet` | +| `` {icon}`magnifyWithExclamation` `` | {icon}`magnifyWithExclamation` | +| `` {icon}`magnifyWithMinus` `` | {icon}`magnifyWithMinus` | +| `` {icon}`magnifyWithPlus` `` | {icon}`magnifyWithPlus` | +| `` {icon}`map_marker` `` | {icon}`map_marker` | +| `` {icon}`memory` `` | {icon}`memory` | +| `` {icon}`menu` `` | {icon}`menu` | +| `` {icon}`menuDown` `` | {icon}`menuDown` | +| `` {icon}`menuLeft` `` | {icon}`menuLeft` | +| `` {icon}`menuRight` `` | {icon}`menuRight` | +| `` {icon}`menuUp` `` | {icon}`menuUp` | +| `` {icon}`merge` `` | {icon}`merge` | +| `` {icon}`minimize` `` | {icon}`minimize` | +| `` {icon}`minus` `` | {icon}`minus` | +| `` {icon}`minus_in_circle` `` | {icon}`minus_in_circle` | +| `` {icon}`minus_in_circle_filled` `` | {icon}`minus_in_circle_filled` | +| `` {icon}`minus_in_square` `` | {icon}`minus_in_square` | +| `` {icon}`ml_classification_job` `` | {icon}`ml_classification_job` | +| `` {icon}`ml_create_advanced_job` `` | {icon}`ml_create_advanced_job` | +| `` {icon}`ml_create_generic_job` `` | {icon}`ml_create_generic_job` | +| `` {icon}`ml_create_geo_job` `` | {icon}`ml_create_geo_job` | +| `` {icon}`ml_create_multi_metric_job` `` | {icon}`ml_create_multi_metric_job` | +| `` {icon}`ml_create_population_job` `` | {icon}`ml_create_population_job` | +| `` {icon}`ml_create_single_metric_job` `` | {icon}`ml_create_single_metric_job` | +| `` {icon}`ml_data_visualizer` `` | {icon}`ml_data_visualizer` | +| `` {icon}`ml_outlier_detection_job` `` | {icon}`ml_outlier_detection_job` | +| `` {icon}`ml_regression_job` `` | {icon}`ml_regression_job` | +| `` {icon}`mobile` `` | {icon}`mobile` | +| `` {icon}`moon` `` | {icon}`moon` | +| `` {icon}`move` `` | {icon}`move` | +| `` {icon}`namespace` `` | {icon}`namespace` | +| `` {icon}`nested` `` | {icon}`nested` | +| `` {icon}`new_chat` `` | {icon}`new_chat` | +| `` {icon}`node` `` | {icon}`node` | +| `` {icon}`number` `` | {icon}`number` | +| `` {icon}`offline` `` | {icon}`offline` | +| `` {icon}`online` `` | {icon}`online` | +| `` {icon}`package` `` | {icon}`package` | +| `` {icon}`pageSelect` `` | {icon}`pageSelect` | +| `` {icon}`pagesSelect` `` | {icon}`pagesSelect` | +| `` {icon}`paint` `` | {icon}`paint` | +| `` {icon}`palette` `` | {icon}`palette` | +| `` {icon}`paper_clip` `` | {icon}`paper_clip` | +| `` {icon}`partial` `` | {icon}`partial` | +| `` {icon}`pause` `` | {icon}`pause` | +| `` {icon}`payment` `` | {icon}`payment` | +| `` {icon}`pencil` `` | {icon}`pencil` | +| `` {icon}`percent` `` | {icon}`percent` | +| `` {icon}`pin` `` | {icon}`pin` | +| `` {icon}`pin_filled` `` | {icon}`pin_filled` | +| `` {icon}`pipeBreaks` `` | {icon}`pipeBreaks` | +| `` {icon}`pipeNoBreaks` `` | {icon}`pipeNoBreaks` | +| `` {icon}`pivot` `` | {icon}`pivot` | +| `` {icon}`play` `` | {icon}`play` | +| `` {icon}`playFilled` `` | {icon}`playFilled` | +| `` {icon}`plugs` `` | {icon}`plugs` | +| `` {icon}`plus` `` | {icon}`plus` | +| `` {icon}`plus_in_circle` `` | {icon}`plus_in_circle` | +| `` {icon}`plus_in_circle_filled` `` | {icon}`plus_in_circle_filled` | +| `` {icon}`plus_in_square` `` | {icon}`plus_in_square` | +| `` {icon}`popout` `` | {icon}`popout` | +| `` {icon}`push` `` | {icon}`push` | +| `` {icon}`question` `` | {icon}`question` | +| `` {icon}`quote` `` | {icon}`quote` | +| `` {icon}`readOnly` `` | {icon}`readOnly` | +| `` {icon}`refresh` `` | {icon}`refresh` | +| `` {icon}`reporter` `` | {icon}`reporter` | +| `` {icon}`return_key` `` | {icon}`return_key` | +| `` {icon}`save` `` | {icon}`save` | +| `` {icon}`scale` `` | {icon}`scale` | +| `` {icon}`search` `` | {icon}`search` | +| `` {icon}`section` `` | {icon}`section` | +| `` {icon}`securitySignal` `` | {icon}`securitySignal` | +| `` {icon}`securitySignalDetected` `` | {icon}`securitySignalDetected` | +| `` {icon}`securitySignalResolved` `` | {icon}`securitySignalResolved` | +| `` {icon}`sessionViewer` `` | {icon}`sessionViewer` | +| `` {icon}`shard` `` | {icon}`shard` | +| `` {icon}`share` `` | {icon}`share` | +| `` {icon}`single_metric_viewer` `` | {icon}`single_metric_viewer` | +| `` {icon}`snowflake` `` | {icon}`snowflake` | +| `` {icon}`sort_down` `` | {icon}`sort_down` | +| `` {icon}`sort_up` `` | {icon}`sort_up` | +| `` {icon}`sortable` `` | {icon}`sortable` | +| `` {icon}`sortAscending` `` | {icon}`sortAscending` | +| `` {icon}`sortDescending` `` | {icon}`sortDescending` | +| `` {icon}`sortLeft` `` | {icon}`sortLeft` | +| `` {icon}`sortRight` `` | {icon}`sortRight` | +| `` {icon}`spaces` `` | {icon}`spaces` | +| `` {icon}`sparkles` `` | {icon}`sparkles` | +| `` {icon}`star_empty` `` | {icon}`star_empty` | +| `` {icon}`star_empty_space` `` | {icon}`star_empty_space` | +| `` {icon}`star_filled` `` | {icon}`star_filled` | +| `` {icon}`star_filled_space` `` | {icon}`star_filled_space` | +| `` {icon}`star_minus_empty` `` | {icon}`star_minus_empty` | +| `` {icon}`star_minus_filled` `` | {icon}`star_minus_filled` | +| `` {icon}`starPlusEmpty` `` | {icon}`starPlusEmpty` | +| `` {icon}`starPlusFilled` `` | {icon}`starPlusFilled` | +| `` {icon}`stats` `` | {icon}`stats` | +| `` {icon}`stop` `` | {icon}`stop` | +| `` {icon}`stop_filled` `` | {icon}`stop_filled` | +| `` {icon}`stop_slash` `` | {icon}`stop_slash` | +| `` {icon}`storage` `` | {icon}`storage` | +| `` {icon}`streams_classic` `` | {icon}`streams_classic` | +| `` {icon}`streams_wired` `` | {icon}`streams_wired` | +| `` {icon}`string` `` | {icon}`string` | +| `` {icon}`submodule` `` | {icon}`submodule` | +| `` {icon}`sun` `` | {icon}`sun` | +| `` {icon}`swatch_input` `` | {icon}`swatch_input` | +| `` {icon}`symlink` `` | {icon}`symlink` | +| `` {icon}`table_density_compact` `` | {icon}`table_density_compact` | +| `` {icon}`table_density_expanded` `` | {icon}`table_density_expanded` | +| `` {icon}`table_density_normal` `` | {icon}`table_density_normal` | +| `` {icon}`tableOfContents` `` | {icon}`tableOfContents` | +| `` {icon}`tag` `` | {icon}`tag` | +| `` {icon}`tear` `` | {icon}`tear` | +| `` {icon}`temperature` `` | {icon}`temperature` | +| `` {icon}`thumbDown` `` | {icon}`thumbDown` | +| `` {icon}`thumbUp` `` | {icon}`thumbUp` | +| `` {icon}`timeRefresh` `` | {icon}`timeRefresh` | +| `` {icon}`timeline` `` | {icon}`timeline` | +| `` {icon}`timelineWithArrow` `` | {icon}`timelineWithArrow` | +| `` {icon}`timeslider` `` | {icon}`timeslider` | +| `` {icon}`training` `` | {icon}`training` | +| `` {icon}`transitionLeftIn` `` | {icon}`transitionLeftIn` | +| `` {icon}`transitionLeftOut` `` | {icon}`transitionLeftOut` | +| `` {icon}`transitionTopIn` `` | {icon}`transitionTopIn` | +| `` {icon}`transitionTopOut` `` | {icon}`transitionTopOut` | +| `` {icon}`trash` `` | {icon}`trash` | +| `` {icon}`unfold` `` | {icon}`unfold` | +| `` {icon}`unlink` `` | {icon}`unlink` | +| `` {icon}`user` `` | {icon}`user` | +| `` {icon}`users` `` | {icon}`users` | +| `` {icon}`vector` `` | {icon}`vector` | +| `` {icon}`videoPlayer` `` | {icon}`videoPlayer` | +| `` {icon}`vis_area` `` | {icon}`vis_area` | +| `` {icon}`vis_area_stacked` `` | {icon}`vis_area_stacked` | +| `` {icon}`vis_bar_horizontal` `` | {icon}`vis_bar_horizontal` | +| `` {icon}`vis_bar_horizontal_stacked` `` | {icon}`vis_bar_horizontal_stacked` | +| `` {icon}`vis_bar_vertical` `` | {icon}`vis_bar_vertical` | +| `` {icon}`vis_bar_vertical_stacked` `` | {icon}`vis_bar_vertical_stacked` | +| `` {icon}`vis_gauge` `` | {icon}`vis_gauge` | +| `` {icon}`vis_goal` `` | {icon}`vis_goal` | +| `` {icon}`vis_line` `` | {icon}`vis_line` | +| `` {icon}`vis_map_coordinate` `` | {icon}`vis_map_coordinate` | +| `` {icon}`vis_map_region` `` | {icon}`vis_map_region` | +| `` {icon}`vis_metric` `` | {icon}`vis_metric` | +| `` {icon}`vis_pie` `` | {icon}`vis_pie` | +| `` {icon}`vis_table` `` | {icon}`vis_table` | +| `` {icon}`vis_tag_cloud` `` | {icon}`vis_tag_cloud` | +| `` {icon}`vis_text` `` | {icon}`vis_text` | +| `` {icon}`vis_timelion` `` | {icon}`vis_timelion` | +| `` {icon}`vis_visual_builder` `` | {icon}`vis_visual_builder` | +| `` {icon}`warning` `` | {icon}`warning` | +| `` {icon}`warningFilled` `` | {icon}`warningFilled` | +| `` {icon}`web` `` | {icon}`web` | +| `` {icon}`wordWrap` `` | {icon}`wordWrap` | +| `` {icon}`wordWrapDisabled` `` | {icon}`wordWrapDisabled` | +| `` {icon}`wrench` `` | {icon}`wrench` | + +## Usage examples + +You can use icons in various Markdown elements. + +### Headings + +You can include icons in headings: + +::::{tab-set} + +:::{tab-item} Output + +#### Test the {icon}`gear` Settings +#### User Profile {icon}`user` + +::: + +:::{tab-item} Markdown +```markdown +#### Test the {icon}`gear` Settings +#### User Profile {icon}`user` +``` +::: + +:::: + +### Lists + +Icons can be used in both ordered and unordered lists. + + +::::{tab-set} + +:::{tab-item} Output + +**Unordered List:** +* {icon}`check` Task one completed +* {icon}`check` Task two completed +* {icon}`cross` Task three pending + +**Ordered List:** +1. {icon}`check` First item +2. {icon}`check` Second item +3. {icon}`cross` Third item + +::: + +:::{tab-item} Markdown +```markdown +**Unordered List:** +* {icon}`check` Task one completed +* {icon}`check` Task two completed +* {icon}`cross` Task three pending + +**Ordered List:** +1. {icon}`check` First item +2. {icon}`check` Second item +3. {icon}`cross` Third item +``` +::: + +:::: + +### Tables + +Icons can be used within table cells. + +::::{tab-set} + +:::{tab-item} Output + +| Status | Description | +|:--------------:|:------------| +| {icon}`checkCircle` | Success | +| {icon}`warning` | Warning | +| {icon}`error` | Error | + +::: + +:::{tab-item} Markdown +```markdown +| Status | Description | +|:--------------:|:------------| +| {icon}`checkCircle` | Success | +| {icon}`warning` | Warning | +| {icon}`error` | Error | +``` +::: + +:::: + +### Paragraphs + +::::{tab-set} + +:::{tab-item} Output + +{icon}`sparkles` Icons can be placed at the beginning of a paragraph. + +You can also use icons directly in your text for emphasis, like this {icon}`sparkles` magic {icon}`sparkles` moment. + + +::: + +:::{tab-item} Markdown + +```markdown +{icon}`sparkles` Icons can be placed at the beginning of a paragraph. + +You can also use icons directly in your text for emphasis, like this {icon}`sparkles` magic {icon}`sparkles` moment. + +``` +::: + +:::: diff --git a/contribute-docs/syntax/images.md b/contribute-docs/syntax/images.md new file mode 100644 index 0000000000..63f765436c --- /dev/null +++ b/contribute-docs/syntax/images.md @@ -0,0 +1,199 @@ +# Images + +Images include screenshots, inline images, icons, and more. Syntax for images is like the syntax for links, with the following differences: + +1. instead of link text, you provide an image description +2. an image description starts with `![` not just `[` +3. there are restrictions on the scope of image paths + +:::{note} + +If a page uses an image that exists outside the folder that contains the `toc.yml` file or `docset.yml` file that contains that page, the image will fail to render and will generate warnings. Likewise, if a snippet in a [file inclusion](/syntax/file_inclusion.md) includes an image and is used in pages that exist in different `toc.yml`, the images will break. +::: + +## Block-level images + +```markdown +![APM](/syntax/images/apm.png) +``` + +![APM](/syntax/images/apm.png) + +Or, use the `image` directive. + +```markdown +:::{image} /syntax/images/observability.png +:alt: Elasticsearch +:width: 250px +::: +``` + +:::{image} /syntax/images/observability.png +:alt: Elasticsearch +:width: 250px +::: + +### Image centering + +Images that are not full width are automatically centered within their container. This is particularly useful when you specify a width constraint: + +```markdown +:::{image} /syntax/images/apm.png +:alt: APM Logo +:width: 400px +::: +``` + +:::{image} /syntax/images/apm.png +:alt: APM Logo +:width: 400px +::: + +The image above is centered because it has a width of 400px, which is less than the full container width. + +Note that images nested within other content (like lists or admonitions) are not centered: + +- First item in the list +- Second item with an image: + + :::{image} /syntax/images/apm.png + :alt: APM Logo in list + :width: 400px + ::: + +- Third item in the list + +## Screenshots + +Screenshots are images displayed with a box-shadow. Define a screenshot by adding the `:screenshot:` attribute to a block-level image directive. + +```markdown +:::{image} /syntax/images/apm.png +:screenshot: +::: +``` + +:::{image} /syntax/images/apm.png +:screenshot: +::: + +## Inline images + +```markdown +Here is the same image used inline ![Elasticsearch](/syntax/images/observability.png "elasticsearch =50%x50%") +``` + +Here is the same image used inline ![Elasticsearch](/syntax/images/observability.png "elasticsearch =50%x50%") + +### Inline image titles + +Titles are optional making this the minimal syntax required: + +```markdown +![Elasticsearch](/syntax/images/observability.png) +``` + +For inline images, the alt text always overrides any title specified in the Markdown. This ensures consistent accessibility where both the `alt` and `title` attributes contain the same descriptive text. + +```markdown +![Elasticsearch](/syntax/images/observability.png "Different title") +``` + +![Elasticsearch](/syntax/images/observability.png "Different title =50%x50%") + +### Inline image sizing + +Image sizing is specified through the title argument. You can specify just the size without needing to provide a redundant title: + +```markdown +![alt](img.png "=WxH") +![alt](img.png "=W") +``` + +In this case, the alt text will be used as both the `alt` and `title` attributes, and the size parameters will be applied. + +`W` and `H` can be either an absolute number in pixels or a number followed by `%` to indicate relative sizing. + +If `H` is omitted `W` is used as the height as well. + +```markdown +![alt](img.png "=250x330") +![alt](img.png "=50%x40%") +![alt](img.png "=50%") +``` + +When specifying just the size without a title, no space is required before the `=` sign. When combining a title with sizing, a space is required before the `=`: + +```markdown +![alt](img.png "=50%") +![alt](img.png "My Title =50%") +``` + +### SVG + +```markdown +![Elasticsearch](/syntax/images/alerts.svg) +``` + +![Elasticsearch](/syntax/images/alerts.svg) + +### GIF + +```markdown +![Elasticsearch](/syntax/images/timeslider.gif) +``` + +![Elasticsearch](/syntax/images/timeslider.gif) + +## Asciidoc syntax + +```asciidoc +[role="screenshot"] +image::images/metrics-alert-filters-and-group.png[Metric threshold filter and group fields] +``` + +```asciidoc +image::images/synthetics-get-started-projects.png[] +``` + +## Image carousel + +The image carousel directive builds upon the image directive. + +```markdown +::::{carousel} + +:id: nested-carousel-example +:max-height: small ## small, medium, none (none is default if max-height is not specified) + +:::{image} images/apm.png +:alt: First image description +:title: First image title +::: + +:::{image} images/applies.png +:alt: Second image description + +### Title is optional - alt text will be used as title if not specified + +::: + +:::: +``` + +::::{carousel} + +:id: nested-carousel-example +:max-height: small + +:::{image} images/apm.png +:alt: First image description +:title: First image title +::: + +:::{image} images/applies.png +:alt: Second image description +:title: Second image title +::: + +:::: diff --git a/contribute-docs/syntax/images/alerts.svg b/contribute-docs/syntax/images/alerts.svg new file mode 100644 index 0000000000..5e7819dd58 --- /dev/null +++ b/contribute-docs/syntax/images/alerts.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contribute-docs/syntax/images/annotations.png b/contribute-docs/syntax/images/annotations.png new file mode 100644 index 0000000000000000000000000000000000000000..1218597ff0c5f3d7d06ea2d3a844614e933c2462 GIT binary patch literal 46714 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�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"&}%`9ym`-7XzG*MZK9h4Q4Xuu<*+qEt2&-R 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