Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
dae9fc0
feat(hubs): add Product.Hub field for product hub URL mapping
florent-leborgne Apr 30, 2026
dbda3a4
feat(hubs): add 'hub' page layout with full-width chrome
florent-leborgne Apr 30, 2026
e9676c6
feat(hubs): add {hero} directive for landing-page heroes
florent-leborgne Apr 30, 2026
ec6ff07
feat(hubs): add {card-group} and {link-card} directives
florent-leborgne Apr 30, 2026
8817c8c
feat(hubs): add 'Product hubs' top-bar section to nav-v2
florent-leborgne Apr 30, 2026
e3d365f
feat(hubs): render product badges linking to hub pages
florent-leborgne Apr 30, 2026
28cbaca
feat(hubs): style hub pages, cards, and product badges + port Kibana hub
florent-leborgne Apr 30, 2026
a7ff220
fix(hubs): suppress page preamble on hub layout, widen hub content
florent-leborgne Apr 30, 2026
26b4886
feat(hubs): rewrite hub directives to match gist prototypes
florent-leborgne Apr 30, 2026
705bd15
feat(hubs): restore full section coverage matching the gist prototypes
florent-leborgne Apr 30, 2026
7cc21db
feat(hubs): render fake search box in hero
florent-leborgne Apr 30, 2026
9179599
fix(hubs): align hero icon with H1, push description to its own row
florent-leborgne Apr 30, 2026
7940d99
feat(hubs): turn hero version pill into a real dropdown
florent-leborgne Apr 30, 2026
1908fee
feat(hubs): centralize What's new content in config/whats-new.yml
florent-leborgne Apr 30, 2026
f6ce8b8
feat(hubs): wire hub pages under testing/hubs in docs-builder nav
florent-leborgne Apr 30, 2026
24cee85
feat(hubs): rename URL segment hubs/ -> products/
florent-leborgne Apr 30, 2026
40538ef
docs(hubs): add reference pages for the hub-page directives
florent-leborgne Apr 30, 2026
171b72a
feat(hubs): make hero title and description explicit options
florent-leborgne Apr 30, 2026
9979af7
fix(hubs): make Product hubs section an external link to the gist
florent-leborgne May 1, 2026
35aa23b
feat(hubs): redesign product badges as inline-with-title pills
florent-leborgne May 1, 2026
4481051
feat(hubs): point product badge URLs at the gist previews
florent-leborgne May 1, 2026
39fb863
Rename hub markdown 9.0.md → v9.md
florent-leborgne May 1, 2026
57ea08e
Replace page-top product badges + applies-block with a metadata box
florent-leborgne May 1, 2026
d0c4497
Restructure page-top metadata: product pills above H1, Requirements b…
florent-leborgne May 1, 2026
22a6dcb
Merge remote-tracking branch 'origin/nav-v2-sections' into hub-pages
theletterf May 4, 2026
f5fea77
fix: remove unnecessary null-forgiving operators flagged as IDE0370
theletterf May 4, 2026
04f59da
fix(tests): filter page-title-row div from HTML assertions
theletterf May 4, 2026
563b460
Merge remote-tracking branch 'origin/nav-v2-sections' into hub-pages
theletterf May 4, 2026
20a3966
feat(hub-pages): wire hub pages through assembler preview
theletterf May 4, 2026
c4d5edb
Merge remote-tracking branch 'origin/nav-v2-sections' into hub-pages
theletterf May 4, 2026
ca9489e
style: fix Prettier formatting in pages-nav-v2.ts and styles.css
theletterf May 4, 2026
10330f7
fix(assembler): warn instead of error when branch has no link index e…
theletterf May 4, 2026
a1262cd
fix(assembler): gracefully handle unpublished branches in cross-link …
theletterf May 4, 2026
c6b9d67
fix(nav): resolve V2 page entries from nested TOCs
theletterf May 4, 2026
d556dff
fix(nav): register files from unseen child TOCs
theletterf May 4, 2026
65bc6de
Refine page-top metadata: pills inside Availability box, text+? tooltips
florent-leborgne May 4, 2026
8c4af37
Merge remote-tracking branch 'origin/hub-pages' into hub-pages
florent-leborgne May 4, 2026
63f927e
Repoint product hub URLs at the real /products/<product>/v9/ pages
florent-leborgne May 4, 2026
1fab04a
Add Product hubs landing page to V2 nav
florent-leborgne May 4, 2026
1c18fa1
Update authoring snapshot tests for new applies-to tooltip copy
florent-leborgne May 4, 2026
54c3a7e
Stop pill click from toggling the metadata box
florent-leborgne May 4, 2026
3357eb6
Make hub-page navigation work cleanly from htmx-boosted swaps
florent-leborgne May 4, 2026
0bf256a
Merge branch 'nav-v2-sections' into hub-pages
florent-leborgne May 4, 2026
588260f
Update top navigation order
theletterf May 7, 2026
9206684
Merge branch 'nav-v2-sections' into hub-pages
florent-leborgne May 7, 2026
3e262e4
Subsection product hubs nav island into Stack products + Deployment r…
florent-leborgne May 7, 2026
17bbea5
Top-bar dropdown for sections + restore Products rename and reorder
florent-leborgne May 7, 2026
6d5be8b
Make Products section index a placeholder leaf
theletterf May 8, 2026
80a366e
Revert "Make Products section index a placeholder leaf"
florent-leborgne May 8, 2026
113403a
Drop all-caps from dropdown subsection labels
florent-leborgne May 8, 2026
03efffb
Merge remote-tracking branch 'origin/nav-v2-sections' into hub-pages
florent-leborgne May 11, 2026
d7b6360
Prefix hub directive URLs with the site path prefix
florent-leborgne May 11, 2026
0a758eb
Hub links opt out of body-level hx-boost
florent-leborgne May 11, 2026
de8dec6
HubUrl strips .md and /index.md so authors can write file paths
florent-leborgne May 11, 2026
5bc32e3
fix(nav-v2): restore V2 page lookup registration lost in merge
florent-leborgne May 11, 2026
393f73b
Validate links in {hero}, {link-card}, {whats-new} directives
florent-leborgne May 11, 2026
4de184e
Merge remote-tracking branch 'origin/nav-v2' into hub-pages
florent-leborgne Jun 23, 2026
4d2c04b
Simplify hero, make on-this-page sticky, trim Products dropdown
florent-leborgne Jun 23, 2026
13cca74
Merge remote-tracking branch 'origin/nav-v2' into hub-pages
florent-leborgne Jun 23, 2026
d9f2ab3
Fix hub layout/dropdown and add hub indicator
florent-leborgne Jun 23, 2026
87a8fbb
Add "Browse all Elastic docs" link to hub hero eyebrow
florent-leborgne Jun 24, 2026
07dbf61
Redesign hub page body to match Figma
florent-leborgne Jul 6, 2026
e3342d8
Bump Microsoft.OpenApi to 3.5.4 to fix NU1903 audit failure
florent-leborgne Jul 6, 2026
fa6182f
Fix Prettier formatting in hub.css
florent-leborgne Jul 6, 2026
c0651e8
Merge remote-tracking branch 'origin/nav-v2' into hub-pages
florent-leborgne Jul 6, 2026
d84fa3f
Set required Cta on placeholder page view model
florent-leborgne Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/assembler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ shared_configuration:
###
narrative:
checkout_strategy: full
current: hub-pages

###
# 'references' defines a map of `elastic/<repository_name> * <repository_config>
Expand Down
11 changes: 11 additions & 0 deletions config/navigation-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4266,6 +4266,17 @@ nav:
- page: docs-content://solutions/security/apis.md
title: APIs

- section: Products
url: /products/
dropdown: true
children:
- label: Stack products
children:
- page: docs-content://products/elasticsearch/v9.md
title: Elasticsearch
- page: docs-content://products/kibana/v9.md
title: Kibana

- section: APIs
url: https://www.elastic.co/docs/api

Expand Down
1 change: 1 addition & 0 deletions config/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ toc:
#############
# NARRATIVE #
#############
- toc: products
- toc: get-started
- toc: solutions
- toc: manage-data
Expand Down
2 changes: 2 additions & 0 deletions config/products.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ products:
elasticsearch:
display: 'Elasticsearch'
versioning: 'stack'
hub: 'products/elasticsearch/v9'
elasticsearch-client:
display: 'Elasticsearch Client'
versioning: 'stack'
Expand Down Expand Up @@ -211,6 +212,7 @@ products:
kibana:
display: 'Kibana'
versioning: 'stack'
hub: 'products/kibana/v9'
logstash:
display: 'Logstash'
versioning: 'stack'
Expand Down
86 changes: 86 additions & 0 deletions config/whats-new.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
###
# Centralized "What's new" feed used by the {whats-new} directive.
#
# Any page can render a product's recent highlights with:
#
# :::{whats-new}
# :product: kibana
# :::
#
# The {whats-new} directive looks the product up in this file and renders the
# full panel (header + items). Authors only edit this file, and the directive
# stays trivial in markdown.
#
# An optional `id` and `badge` per product control the section anchor and the
# small badge shown to the left of the title. The default badge is "New".
###

products:

kibana:
title: What's new in Kibana
id: whats-new
release-links:
- label: Stack 9.4.1
url: https://www.elastic.co/docs/release-notes/kibana
- label: Serverless · Apr 1, 2026
url: https://www.elastic.co/docs/release-notes/cloud-serverless
upgrade-link:
label: Upgrade guide
url: https://www.elastic.co/docs/deploy-manage/upgrade/deployment-or-cluster
items:
- title: Dashboards and visualizations APIs
description: Programmatically create and manage dashboards and visualizations, so you can automate reporting and version-control your analytics.
link: https://www.elastic.co/docs/api/doc/kibana
date: 9.4 preview
tag: Dashboards
featured: true
- title: AI agent skills
description: Teach AI coding agents to work with the Elastic stack.
link: https://www.elastic.co/docs/explore-analyze/ai-features/agent-skills
date: Mar 2026
tag: AI Assistant
- title: Agent Builder
description: Build custom AI agents that reason over your data.
link: https://www.elastic.co/docs/explore-analyze/ai-features/elastic-agent-builder
date: 9.3 GA
tag: AI Assistant
- title: Workflows
description: Automate tasks with Kibana actions, HTTP calls, and AI agents.
link: https://www.elastic.co/docs/explore-analyze/workflows
date: 9.3 preview
tag: Automation

elasticsearch:
title: What's new in Elasticsearch
id: whats-new
release-links:
- label: Stack 9.4.1
url: https://www.elastic.co/docs/release-notes/elasticsearch
- label: Serverless · Apr 1, 2026
url: https://www.elastic.co/docs/release-notes/cloud-serverless
upgrade-link:
label: Upgrade guide
url: https://www.elastic.co/docs/deploy-manage/upgrade/deployment-or-cluster
items:
- title: semantic_text field type
description: Simplify semantic search. No pipeline setup needed, just define the field and start querying.
link: https://www.elastic.co/docs/solutions/search/semantic-search/semantic-search-semantic-text
date: 9.4 GA
tag: Search
featured: true
- title: ES|QL improvements
description: New functions, cross-cluster support, and dense vector operations directly in ES|QL queries.
link: https://www.elastic.co/docs/reference/query-languages/esql/esql-getting-started
date: '9.4'
tag: Query languages
- title: Inference API expansion
description: Connect to external AI models for embeddings and reranking.
link: https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-inference-put
date: '9.4'
tag: AI
- title: Breaking changes in 9.x
description: Review removed settings, deprecated APIs, and behavioral changes before upgrading from 8.x.
link: https://www.elastic.co/docs/release-notes/elasticsearch/breaking-changes
date: Upgrade guide
tag: Upgrade
16 changes: 16 additions & 0 deletions docs/_docset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ toc:
- file: applies-switch.md
- file: automated_settings.md
- file: buttons.md
- file: card-group.md
- file: changelog.md
- file: code.md
- file: comments.md
Expand All @@ -153,13 +154,18 @@ toc:
- file: dropdowns.md
- file: definition-lists.md
- file: example_blocks.md
- file: explore.md
- file: file_inclusion.md
- file: footnotes.md
- file: frontmatter.md
- file: hero.md
- file: hub-pages.md
- file: icons.md
- file: get-started.md
- file: images.md
- file: videos.md
- file: kbd.md
- file: link-card.md
- file: math.md
- file: diagrams.md
- file: lists.md
Expand All @@ -168,6 +174,7 @@ toc:
- file: storybook.md
- file: links.md
- file: list-sub-pages.md
- file: on-this-page.md
- file: page-card.md
- file: passthrough.md
- file: sidebars.md
Expand All @@ -179,6 +186,7 @@ toc:
- file: tabs.md
- file: tagged_regions.md
- file: titles.md
- file: whats-new.md
- cli: cli-schema.json
folder: cli
children:
Expand Down Expand Up @@ -213,6 +221,14 @@ toc:
- folder: testing
children:
- file: index.md
- folder: products
children:
- folder: elasticsearch
children:
- file: v9.md
- folder: kibana
children:
- file: v9.md
- file: kibana-settings-yaml-samples.md
- file: security-settings.md
- file: req.md
Expand Down
47 changes: 47 additions & 0 deletions docs/syntax/card-group.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Card group

A section heading + a card grid container. Wraps one or more [`{link-card}`](link-card.md) directives.

## Basic

```markdown
::::{card-group}
:title: Install and administer
:id: install

:::{link-card}
title: Self-managed
link: /deploy/self-managed
description: Run on your own infrastructure.
links:
- { label: Docker, url: /deploy/docker }
:::

:::{link-card}
title: Elastic Cloud Hosted
link: /deploy/cloud
description: Managed deployments on AWS, GCP, or Azure.
:::
::::
```

The outer fence uses **four** colons (`::::`) so the inner three-colon `:::` fences for the cards aren't interpreted as a closing fence. Use as many extra colons on the outer fence as you need to nest cleanly.

## Options

| Option | Notes |
|---|---|
| `:title:` | H2 heading. Optional — without it, only the grid renders. |
| `:intro:` | Optional intro paragraph below the heading. |
| `:id:` | Section anchor. Picked up by [`{on-this-page}`](on-this-page.md). |
| `:variant:` | Optional layout variant. Set to `solutions` to lock a 3-up grid that steps down to 2 then 1 column and tolerates a fourth card without shrinking into a narrow fourth column. |

## Layout

By default the grid auto-fills 1, 2, or 3 columns based on viewport width using `grid-template-columns: repeat(auto-fill, minmax(310px, 1fr))`. Card heights match within a row.

With `:variant: solutions`, the grid is locked to three equal columns (two below 980px, one below 640px). A fourth card wraps to the next row rather than compressing the layout.

## Inside `{explore}`

When a card-group sits inside an [`{explore}`](explore.md) section, it renders as a collapsible **accordion group** instead of a titled grid: the `:title:` becomes the accordion header and the child [`{link-card}`](link-card.md)s render as link columns. No extra options are needed — the `{explore}` ancestor drives the change.
74 changes: 74 additions & 0 deletions docs/syntax/explore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Explore

The **Explore {product}** section of a [hub page](hub-pages.md): a titled band that
houses a stack of collapsible **accordion groups**. It wraps one or more
[`{card-group}`](card-group.md) directives. Inside `{explore}`, each card-group
renders as an accordion and each [`{link-card}`](link-card.md) renders as a titled
link **column** instead of a bordered card.

The first accordion in the stack is expanded by default, and the rest are collapsed.
Toggling uses native `<details>`/`<summary>`, so it works without JavaScript.

## Basic

```markdown
:::::{explore}
:title: Explore Kibana
:intro: Explore the apps and capabilities that help you act on your data.

::::{card-group}
:title: Install & admin
:id: install

:::{link-card}
title: Self-managed
link: /deploy-manage/deploy/self-managed
links:
- { label: Docker, url: /deploy/docker }
- { label: Configure, url: /deploy/configure }
aside:
label: Even more
links:
- { label: RPM, url: /deploy/rpm }
- { label: Windows, url: /deploy/windows }
:::
::::

::::{card-group}
:title: Visualize & analyze
:id: visualize

:::{link-card}
title: Dashboards
link: /explore-analyze/dashboards
links:
- { label: Create a dashboard, url: /dashboards/create }
:::
::::
:::::
```

The outer `{explore}` fence uses **five** colons so the four-colon `::::` card-group
fences and three-colon `:::` link-card fences nest without closing it early. Add more
colons on the outer fence if you need to nest deeper.

## Options

| Option | Notes |
|---|---|
| `:title:` | H2 heading for the section (for example, `Explore Kibana`). Required. |
| `:intro:` | Optional intro paragraph below the heading. |
| `:id:` | Section anchor. |

## How nested directives change

Inside `{explore}`, the same authoring you already use for card grids is reinterpreted:

| Directive | Standalone rendering | Inside `{explore}` |
|---|---|---|
| `{card-group}` | Section heading + card grid | A collapsible accordion group (title in the header, cards inside) |
| `{link-card}` | A bordered card | A titled link **column** (title and link list, with the `description` not shown in column mode) |
| `{link-card}` `aside` | Inline "label: A · B · C" line | An **"Even more"** badge cluster under the column |

Because the effect is driven by the `{explore}` ancestor, the card-group and link-card
bodies don't need any extra options. Wrapping them is enough.
67 changes: 67 additions & 0 deletions docs/syntax/get-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Get started section

The first section of a hub-page body: a short onboarding funnel with an intro line and a set of numbered steps. A step can present two equally-weighted start **options** (for example, run locally versus try on Cloud), be a plain informational step, or link out as a whole card.

## Basic

```markdown
:::{get-started}
title: Get started in 3 steps
intro: Spin up Elasticsearch and Kibana, connect your data, and start exploring in minutes.
steps:
- title: Run Elasticsearch and Kibana
options:
- label: Run locally
description: Spin up Elasticsearch and Kibana on your machine for development.
code: curl -fsSL https://elastic.co/start-local | sh
language: sh
url: /deploy-manage/deploy/self-managed/install-kibana
url-label: Install self-managed
- label: Try on Cloud
description: Start a free Elastic Cloud trial. No local setup needed.
url: https://cloud.elastic.co/registration
url-label: Start a free trial
- title: Connect your data
description: Point Kibana at your data and create a data view.
link: /manage-data/ingest
link-label: Ingest data
- title: Explore and visualize
description: Open Discover, then build your first chart and dashboard.
link: /explore-analyze/kibana-data-exploration-learning-tutorial
link-label: Start the tutorial
:::
```

## Fields

| Field | Required | Description |
|---|---|---|
| `title` | yes | Section heading, for example `Get started in 3 steps`. |
| `intro` | no | One-line lead sentence. Rendered as inline markdown. |
| `steps[].title` | yes | Step heading, shown next to the step number. |
| `steps[].description` | no | Short supporting sentence. Rendered as inline markdown. |
| `steps[].link` | no | When set, the whole step is a clickable card linking here. |
| `steps[].link-label` | no | Call-to-action label for a link step. Defaults to `Open`. |
| `steps[].options[]` | no | Two or more equally-weighted start options, rendered side by side. |
| `steps[].options[].label` | no | Option heading, for example `Run locally`. |
| `steps[].options[].description` | no | Short supporting sentence. Rendered as inline markdown. |
| `steps[].options[].code` | no | A command shown in a copyable snippet (the "run locally" path). |
| `steps[].options[].language` | no | Syntax-highlighting language for the snippet (for example `sh`). |
| `steps[].options[].url` | no | Destination for the option. Rendered as a text link when the option also has `code`, or as a button otherwise. |
| `steps[].options[].url-label` | no | Label for the option link/button. |

An earlier top-level `install` / `tutorial` pair is still accepted for backward compatibility, but new pages should express the two start paths as `options` on the first step instead.

## Linking the hero to this section

The rendered section carries `id="get-started"`, so a [`{hero}`](hero.md) action can scroll to it instead of adding a competing entry point:

```markdown
:primary-action: [Get started](#get-started)
```

## When to use

`{get-started}` is the standard "front door" section between the [`{hero}`](hero.md) and the rest of the hub body. It's optional. Skip it when the hero already says what readers need to know next.

It is **not** an admonition. For caution / note / tip-style callouts inside body content, use the existing [admonitions](admonitions.md).
Loading
Loading