Docs site restructure v3#376
Conversation
- Add badge--byoc CSS class with blue styling for BYOC-only features - Add badge--cloud CSS class with purple styling for Cloud features - Define CSS variables for badge colors and backgrounds Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add availability block showing Cloud/BYOC support on ADP pages - Add info icon with Tippy.js tooltip explaining availability - Add BYOC and Cloud badge CSS variables for light/dark modes - Update article.hbs to render availability block for ADP pages - Minor fixes to header, nav, and TOC styling Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
✅ Deploy Preview for docs-ui ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR makes large coordinated changes across styling, templates, helpers, and client scripts: it introduces new landing-page styles and nav/topbar redesign, adds BYOC/Cloud badges and availability UI, refactors doc styling and code/listing presentation, enhances Bloblang tooling and playground UX, replaces Kapa modal triggers with a chat-panel API, adds a persistent chat drawer script and React chat mounting updates, and includes multiple helper utilities and build adjustments. Sequence Diagram(s)sequenceDiagram
participant User
participant Page as Page script / partials
participant Drawer as Chat panel (chat-panel.js + React)
participant ChatSvc as Chat backend / Kapa SDK
User->>Page: Click "Ask AI" or submit ask form
Page->>Page: Build aiPromptText from context (selection, snippet, page metadata)
Page->>Drawer: call window.openChatWithQuery(aiPromptText, true)
Drawer->>Drawer: open panel, focus textarea (restore persisted state)
Drawer->>ChatSvc: submit query (autoSubmit=true)
ChatSvc-->>Drawer: returns AI response
Drawer-->>User: render response (toasts, messages)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (2)
src/css/doc.css (1)
1012-1018: Add the same fallback for the info icon color.Line 1017 uses
--availability-block-borderwithout the fallback used on Line 993, so the icon color can become invalid if a theme omits that variable.🎨 Proposed fallback
.doc .availability-block .availability-info { display: inline-flex; align-items: center; margin-left: 0.5rem; cursor: help; - color: var(--availability-block-border); + color: var(--availability-block-border, var(--note-border-color)); vertical-align: middle; }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/css/doc.css` around lines 1012 - 1018, The color declaration inside the .doc .availability-block .availability-info rule uses var(--availability-block-border) without a fallback; update the color property to use the same fallback pattern as earlier (e.g. var(--availability-block-border, var(--availability-border))) so the info icon color remains valid when --availability-block-border is not defined. Locate the .doc .availability-block .availability-info selector and replace the color value to include the fallback variable.src/partials/article.hbs (1)
80-96: Consider attribute-driving the tooltip content and consolidating the init script.Two small consistency nits for this new inline block:
- The tooltip copy is hardcoded in the template, whereas the existing BYOC/Cloud/beta/limited-availability tooltips read from page attributes (e.g.,
page.attributes.byoc-textat Line 170,page.attributes.cloud-only-textat Line 196). Using something likepage.attributes.availability-textwith a sensible default keeps content editable without a UI rebuild and matches the pattern already established in this file.- Initialization is split across two
DOMContentLoadedhandlers (here and the one starting at Line 103). Folding this tippy init into the existing handler reduces duplicate listeners and keeps all tooltip setup in one place. Note that the existing handler bails early at Line 107–109 if.metadata--main/.metadata--navare missing, so if you consolidate, initialize the availability-info tooltip before that early return (or adjust the guard) so ADP pages still get it.Both are optional; leaving as-is is functional.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/partials/article.hbs` around lines 80 - 96, Replace the hardcoded tooltip text and separate listener by reading content from page.attributes.availability-text (with the current hardcoded string as a sensible default) when creating the tooltip for the element selected as availabilityInfo, and move the tippy initialization into the existing DOMContentLoaded handler that already sets up other tooltips; ensure you reference availabilityInfo and call tippy(...) with the same options but initialize it before the early return that checks for .metadata--main/.metadata--nav (or adjust that guard) so ADP pages still get the availability tooltip.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/css/header.css`:
- Around line 153-155: The desktop override for right-side nav items still uses
var(--navbar-font-color) so custom header text colors from --nav-text-color
aren't applied; update the selector .navbar-end > .navbar-item and .navbar-end
.navbar-link to use color: var(--nav-text-color, var(--navbar-menu-font-color))
(matching the other .navbar-item/.navbar-link rule) so desktop right-side nav
items inherit the custom header text color.
In `@src/css/vars.css`:
- Around line 185-195: Override the badge label text color variables in the
dark-theme block so the bright BYOC/Cloud backgrounds keep good contrast:
add/override --byoc-label-color and --cloud-label-color inside
html[data-theme=dark] (matching the existing --byoc-label-background and
--cloud-label-background variables) and set them to a dark, high-contrast color
instead of inheriting `#fff`; update any usages of these badges that read the
label color variable (e.g., the BYOC/Cloud badge styles that reference
--byoc-label-color / --cloud-label-color) to ensure the new variables are
applied.
In `@src/partials/article.hbs`:
- Around line 55-71: The availability block (class "availability-block" in
article.hbs) fails to render any platform when both page.attributes.byoc and
page.attributes.cloud-only are true; change the conditional logic to explicitly
handle all four states (both true, only byoc, only cloud-only, neither) so the
both-true case emits a sensible label (e.g., "Cloud, BYOC"); implement this by
replacing the nested if/unless chain with an explicit sequence: if both
page.attributes.byoc and page.attributes.cloud-only => "Cloud, BYOC", else if
page.attributes.byoc => "BYOC", else if page.attributes.cloud-only => "Cloud",
else => "Cloud, BYOC" (or equivalent join of computed platforms) so the
availability-block always shows a value.
In `@src/partials/header-content.hbs`:
- Line 18: The anchor element rendering the navbar item currently injects an
inline style for non-standalone pages (using
`@root.page.component.latest.asciidoc.attributes.page-header-data.text-color`),
which overrides stylesheet hover/current states; update the template so the
inline style is only applied for standalone widgets (keep the existing
`@root.isStandaloneWidget` branch that sets style="color: white;") and remove the
else-if branch that sets color from page-header-data.text-color, relying on the
existing --nav-text-color set elsewhere to control non-standalone link color and
hover/is-current states; locate the anchor with class "navbar-item {{`#if` (eq
this.title `@root.page.component.title`)}}is-current{{/if}}" and remove the
non-standalone inline color injection.
In `@src/partials/nav-tree.hbs`:
- Line 8: Add two new helpers is-byoc-feature.js and is-cloud-feature.js in
src/helpers modeled after is-beta-feature.js and is-enterprise.js that use
contentCatalog to look up the target page by URL and return true when target
page attributes include page-byoc and page-cloud-only respectively; then update
the ADP guard logic used in nav-tree.hbs so it checks the target nav item's
attributes (via the same helper/lookup) rather than `@root.page.attributes.adp`,
ensuring BYOC/Cloud badge classes are suppressed only when the target page is an
ADP page.
---
Nitpick comments:
In `@src/css/doc.css`:
- Around line 1012-1018: The color declaration inside the .doc
.availability-block .availability-info rule uses
var(--availability-block-border) without a fallback; update the color property
to use the same fallback pattern as earlier (e.g.
var(--availability-block-border, var(--availability-border))) so the info icon
color remains valid when --availability-block-border is not defined. Locate the
.doc .availability-block .availability-info selector and replace the color value
to include the fallback variable.
In `@src/partials/article.hbs`:
- Around line 80-96: Replace the hardcoded tooltip text and separate listener by
reading content from page.attributes.availability-text (with the current
hardcoded string as a sensible default) when creating the tooltip for the
element selected as availabilityInfo, and move the tippy initialization into the
existing DOMContentLoaded handler that already sets up other tooltips; ensure
you reference availabilityInfo and call tippy(...) with the same options but
initialize it before the early return that checks for
.metadata--main/.metadata--nav (or adjust that guard) so ADP pages still get the
availability tooltip.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 2920838c-1e2e-46cf-b4e4-3cf4e6cf2378
📒 Files selected for processing (10)
src/css/doc.csssrc/css/header.csssrc/css/metadata.csssrc/css/nav.csssrc/css/vars.csssrc/js/vendor/prism/prism-bloblang.jssrc/partials/article.hbssrc/partials/header-content.hbssrc/partials/nav-tree.hbssrc/partials/toc.hbs
- Add is-byoc-feature.js helper to detect page-byoc attribute - Add is-cloud-feature.js helper to detect page-cloud-only attribute - These helpers enable nav badge display for ADP documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix header.css: Use --nav-text-color for navbar-end items - Fix vars.css: Add dark mode label color overrides for BYOC/Cloud badges - Fix article.hbs: Handle case when both byoc and cloud-only attributes are true - Fix header-content.hbs: Remove inline color that overrides CSS hover states - Fix doc.css: Add fallback for availability info icon color Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ADP Cloud is descoped from the 2026-06-15 GA. With BYOC as the only deployment shape, the "Available in: Cloud, BYOC" / "Available in: BYOC" admonition no longer informs the reader and adds visual noise on every ADP page. Drop the entire `page.attributes.adp` availability block from src/partials/article.hbs. Other badges (beta, limited-availability, context-switcher, BYOC/Cloud labels for non-ADP pages) keep working unchanged. Companion PR: redpanda-data/adp-docs#13 ships the same change locally via Antora's supplemental_files mechanism so the deploy preview is fixed immediately. Once a new docs-ui release tag is cut from this branch and the adp-docs / docs-site playbooks are bumped to it, the supplemental override in adp-docs becomes redundant and can be deleted. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ature/badge-byoc-only
699c046 to
2a4cff4
Compare
Adds inline status badges in the sticky header for ADP pages when features are limited to specific platforms: - "Only in BYOC" badge when :page-byoc-only: true is set - "Only in Cloud" badge when :page-cloud-only: true is set Both attributes require :adp: true (set in ADP component antora.yml). Badges are mutually exclusive - set only one. Also includes: - Version dropdown alignment fix (aligns left with button) - Removed the availability block in favor of compact inline badges
2a4cff4 to
30917d0
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 12
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
src/partials/nav-explore.hbs (1)
16-33:⚠️ Potential issue | 🟠 Major | ⚡ Quick winThe default-version path renders an empty dropdown.
When the current version is
'default'andpage.versions.length > 1, line 6 still makes this a dropdown, but lines 19-32 skip rendering every option. That leaves a visible chevron with an empty menu. Remove that inner guard or render the default-version alternatives there as well.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/partials/nav-explore.hbs` around lines 16 - 33, The dropdown shows a chevron but no items because the inner guard "{{`#if` (ne page.componentVersion.displayVersion 'default')}}" prevents rendering when the current displayVersion is 'default'; remove that guard (or change the logic to always iterate page.versions) so the template always runs the "{{`#each` page.versions}}" block and emits version links (still skipping the current version via "{{`#if` (ne ./version `@root.page.version`)}}" and using "{{`#with` (resolve-resource ./url) as |targetPage|}}", the "{{{relativize ../url}}}" href, and the existing "{{../displayVersion}}"/"{{`#if` (is-eol ../asciidoc.attributes)}}" handling).src/partials/article.hbs (1)
95-220:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winCritical: undefined
metadataContainerbreaks all tooltip/observer setup.
metadataContaineris used on Line 154, Line 180, and Line 219 but never defined. This will throw at runtime and abort the entireDOMContentLoadedhandler. Also,navMetadataContainer.querySelector(...)is called without guarding null.💡 Suggested fix
document.addEventListener("DOMContentLoaded", () => { const stickyHeader = document.querySelector(".component-indicator-sticky"); + const metadataContainer = document.querySelector(".metadata--main"); const navMetadataContainer = document.querySelector(".metadata--nav"); @@ - const topByocBadge = metadataContainer.querySelector(".byoc-label p"); - const navByocBadge = navMetadataContainer.querySelector(".nav-byoc-label"); + const topByocBadge = metadataContainer?.querySelector(".byoc-label p"); + const navByocBadge = navMetadataContainer?.querySelector(".nav-byoc-label"); @@ - const topCloudBadge = metadataContainer.querySelector(".cloud-label p"); - const navCloudBadge = navMetadataContainer.querySelector(".nav-cloud-label"); + const topCloudBadge = metadataContainer?.querySelector(".cloud-label p"); + const navCloudBadge = navMetadataContainer?.querySelector(".nav-cloud-label"); @@ - observer.observe(metadataContainer); + if (metadataContainer && navMetadataContainer) { + observer.observe(metadataContainer); + } });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/partials/article.hbs` around lines 95 - 220, The handler uses an undefined metadataContainer and calls querySelector on navMetadataContainer without null checks, causing runtime failures; define and assign metadataContainer at the top of the DOMContentLoaded block (e.g., const metadataContainer = document.querySelector(".metadata") or the actual selector used elsewhere), guard uses of navMetadataContainer (and metadataContainer) before calling .querySelector or accessing properties (wrap tippy initializations for topByocBadge/topCloudBadge and nav*Badge initializations in if (metadataContainer) / if (navMetadataContainer) checks), and only call observer.observe(metadataContainer) when metadataContainer is non-null to avoid errors. Ensure you update references to topByocBadge/topCloudBadge to query from metadataContainer only after that null check.
🧹 Nitpick comments (1)
src/partials/head-scripts.hbs (1)
117-128: 💤 Low valueConsider extracting theme toggle logic to reduce duplication.
The sidebar theme toggle handler (lines 118-128) duplicates the logic from the main theme toggle handler (lines 71-77). Both handlers toggle between light and dark themes, update localStorage, and call
setTheme.♻️ Optional refactor to share toggle logic
+ function toggleTheme() { + const currentTheme = document.documentElement.getAttribute('data-theme') || 'light'; + const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; + localStorage.setItem('theme', newTheme); + setTheme(newTheme); + } + window.addEventListener('DOMContentLoaded', function() { const switchButton = document.getElementById('switch-theme'); // ... existing code ... if (switchButton) { setTheme(initialTheme); // Apply initial theme on load switchButton.addEventListener('click', function() { - // Toggle theme on button click - const currentTheme = document.body.getAttribute('data-theme'); - const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; - localStorage.setItem('theme', newTheme); - setTheme(newTheme); + toggleTheme(); }); } // ... existing code ... }); // Connect sidebar theme toggle to main theme switcher window.addEventListener('DOMContentLoaded', function() { const sidebarThemeToggle = document.getElementById('sidebar-theme-toggle'); if (sidebarThemeToggle) { - sidebarThemeToggle.addEventListener('click', function() { - const currentTheme = document.documentElement.getAttribute('data-theme') || 'light'; - const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; - localStorage.setItem('theme', newTheme); - setTheme(newTheme); - }); + sidebarThemeToggle.addEventListener('click', toggleTheme); } });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/partials/head-scripts.hbs` around lines 117 - 128, Extract the duplicated toggle logic into a reusable function (e.g., toggleTheme) and call it from both the sidebar handler and the main theme handler: move the code that reads data-theme from document.documentElement, computes newTheme, sets localStorage('theme'), and calls setTheme into a single function (referencing setTheme and the new toggleTheme helper), then replace the inline click callbacks on the sidebarThemeToggle element and the main theme toggle element to just call toggleTheme; keep the DOMContentLoaded listener but update it to attach the click handlers to their elements (sidebar-theme-toggle and the main toggle) which both invoke toggleTheme.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/css/bloblang-playground.css`:
- Around line 1203-1209: The CSS rule .bloblang-playground .validation-error
uses the deprecated property value `word-break: break-word`; remove that
declaration and replace it with the modern wrapping rule `overflow-wrap:
anywhere` (keeping existing properties like `white-space: normal` and
`word-break` entirely removed) so lint no longer flags it and text still wraps
correctly. Ensure you update the .bloblang-playground .validation-error block to
drop `word-break: break-word` and add `overflow-wrap: anywhere`.
In `@src/css/header.css`:
- Around line 209-213: Rename the keyframe identifier bcDropdownIn to a
kebab-case name (e.g., bc-dropdown-in) wherever it appears: update the
`@keyframes` rule name and all references to it (for example the animation
property that currently uses bcDropdownIn) to match the kebab-case name so
linting passes; ensure both the declaration (`@keyframes` bc-dropdown-in { ... })
and uses (animation: bc-dropdown-in 0.15s ease-out;) are updated consistently.
In `@src/css/home.css`:
- Around line 394-400: The CSS has stylelint failures: the keyframe name casing
(toastSlideIn) and keyword case in color-mix usage (in sRGB). Rename the
keyframes to follow the configured pattern (e.g., toast-slide-in or other
project keyframes convention) wherever referenced (look for toastSlideIn usage
in `@keyframes` and animation names) and change all occurrences of "in sRGB"
inside color-mix(...) to "in srgb" (apply to the shown block and the other
reported locations) so value-keyword-case passes; run gulp lint to verify.
In `@src/css/nav.css`:
- Around line 329-342: Rename the keyframes and their animation references from
camelCase to kebab-case to satisfy stylelint: change `@keyframes` versionMenuIn
and `@keyframes` statusPulse to `@keyframes` version-menu-in and `@keyframes`
status-pulse, and update every corresponding animation: versionMenuIn ... and
animation: statusPulse ... usages to animation: version-menu-in ... and
animation: status-pulse ... (also apply the same changes in the other occurrence
around lines 721-755).
In `@src/css/toc.css`:
- Line 245: The CSS uses the deprecated property word-wrap: break-word; —
replace that declaration with the modern equivalent overflow-wrap: break-word;
(remove or replace the word-wrap line in src/css/toc.css so the selector that
currently contains "word-wrap" instead uses "overflow-wrap: break-word;") to
clear the Stylelint failure.
In `@src/css/typeface-inter.css`:
- Line 8: The six `@font-face` blocks in src/css/typeface-inter.css use quoted
font-family values (e.g., font-family: "Inter") which triggers stylelint errors;
update each `@font-face` block to use an unquoted identifier (font-family: Inter)
for all occurrences in the file (the font-family declarations inside the
`@font-face` rules at the six blocks) so gulp lint passes.
In `@src/helpers/is-byoc-feature.js`:
- Line 20: The BYOC detection uses the wrong page attribute key; update the
check in the urlCache.set call (currently using the expression
urlCache.set(p.pub.url, !!p.asciidoc?.attributes?.['page-byoc'])) to use the
documented attribute 'page-byoc-only' instead so BYOC-only pages are detected
(i.e., replace 'page-byoc' with 'page-byoc-only' in that expression).
In `@src/js/react/AskAI.jsx`:
- Around line 49-59: The code currently calls createRoot(...).render(<App />)
for both element queries (homeEl and panelEl), which can mount two App instances
if both `#kapa-chat-root` and `#chat-panel-kapa-root` exist; change the logic to
mount to exactly one target by selecting a single element (for example prefer
panelEl over homeEl or use the first non-null) and only call
createRoot(...).render(<App />) once — update the block that references homeEl,
panelEl, createRoot, and App to use an if/else (or a single chosenEl variable)
so only one App is rendered.
In `@src/partials/bloblang-playground.hbs`:
- Around line 1643-1648: The "Ask AI" button still appears when
window.openChatWithQuery isn't available — instead of merely console.warn-ing in
the click handlers (the block that checks typeof window.openChatWithQuery ===
'function'), proactively disable or hide the CTA at render/time and update the
two click-handler locations to not show a non-functional button; specifically,
check typeof window.openChatWithQuery !== 'function' early and either add a
disabled attribute/class and aria-disabled to the Ask AI button (querySelector
for the button element or template variable controlling visibility) or call the
previous modal fallback if you want to preserve behavior; apply this change to
both places where window.openChatWithQuery is checked so the button is never
visible/active when the chat API is absent.
In `@src/partials/head-scripts.hbs`:
- Around line 23-28: The JS sets CSS variable --announcement-bar-height to
'50px' for mobile when announcementType !== 'bloblang' but the CSS for
.announcement-bar.is-active uses max-height: 60px, causing a 10px mismatch and
potential layout shift; fix by making the reserved height match the actual
animated max height — either change the JS assignment for mobile in the if block
where announcementType is checked (the code that sets --announcement-bar-height
and --announcement-bar-height--desktop) to '60px', or change the CSS max-height
in the announcement banner stylesheet (.announcement-bar.is-active) from 60px to
50px so both values are identical.
In `@src/partials/nav-explore.hbs`:
- Around line 6-17: The version selector is currently rendered as non-focusable
spans (container with class "container" and the span "current-version" plus the
material-symbols icon), which prevents keyboard users from opening the versions
menu; replace the clickable trigger (the span.current-version and the adjacent
material icon) with a real <button> element that is focusable and toggles an
aria-expanded attribute and references the menu via aria-controls, ensure the
button keeps the existing classes/markup semantics (e.g., "current-version"
styling) and that the dropdown container retains the "has-dropdown" behavior,
and update any JS that toggles the menu to read/write aria-expanded on that
button and to open/close the element with the matching id used by aria-controls.
In `@src/partials/nav.hbs`:
- Around line 22-28: Replace the non-semantic div used as the search trigger
with a native button element: change the element with class "sb-search" and
data-action="open-search" from <div> to <button type="button">, remove the
redundant tabindex and role attributes, keep the aria-label="Search docs" and
the inner SVG and span.sb-search-text intact, and ensure any JS that queries
".sb-search" still works (or update selectors to target the button) so keyboard
activation and accessibility work correctly.
---
Outside diff comments:
In `@src/partials/article.hbs`:
- Around line 95-220: The handler uses an undefined metadataContainer and calls
querySelector on navMetadataContainer without null checks, causing runtime
failures; define and assign metadataContainer at the top of the DOMContentLoaded
block (e.g., const metadataContainer = document.querySelector(".metadata") or
the actual selector used elsewhere), guard uses of navMetadataContainer (and
metadataContainer) before calling .querySelector or accessing properties (wrap
tippy initializations for topByocBadge/topCloudBadge and nav*Badge
initializations in if (metadataContainer) / if (navMetadataContainer) checks),
and only call observer.observe(metadataContainer) when metadataContainer is
non-null to avoid errors. Ensure you update references to
topByocBadge/topCloudBadge to query from metadataContainer only after that null
check.
In `@src/partials/nav-explore.hbs`:
- Around line 16-33: The dropdown shows a chevron but no items because the inner
guard "{{`#if` (ne page.componentVersion.displayVersion 'default')}}" prevents
rendering when the current displayVersion is 'default'; remove that guard (or
change the logic to always iterate page.versions) so the template always runs
the "{{`#each` page.versions}}" block and emits version links (still skipping the
current version via "{{`#if` (ne ./version `@root.page.version`)}}" and using
"{{`#with` (resolve-resource ./url) as |targetPage|}}", the "{{{relativize
../url}}}" href, and the existing "{{../displayVersion}}"/"{{`#if` (is-eol
../asciidoc.attributes)}}" handling).
---
Nitpick comments:
In `@src/partials/head-scripts.hbs`:
- Around line 117-128: Extract the duplicated toggle logic into a reusable
function (e.g., toggleTheme) and call it from both the sidebar handler and the
main theme handler: move the code that reads data-theme from
document.documentElement, computes newTheme, sets localStorage('theme'), and
calls setTheme into a single function (referencing setTheme and the new
toggleTheme helper), then replace the inline click callbacks on the
sidebarThemeToggle element and the main theme toggle element to just call
toggleTheme; keep the DOMContentLoaded listener but update it to attach the
click handlers to their elements (sidebar-theme-toggle and the main toggle)
which both invoke toggleTheme.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 0ae3d5c1-a924-44aa-96d1-a2cc63b9835e
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (51)
gulp.d/tasks/build.jspreview-src/ui-model.ymlsrc/css/announcement-banner.csssrc/css/bloblang-playground.csssrc/css/body.csssrc/css/breadcrumbs.csssrc/css/dark-mode.csssrc/css/doc.csssrc/css/footer.csssrc/css/header.csssrc/css/home.csssrc/css/main.csssrc/css/markdown-dropdown.csssrc/css/nav.csssrc/css/pagination.csssrc/css/search-bump.csssrc/css/search.csssrc/css/site.csssrc/css/toc.csssrc/css/toolbar.csssrc/css/typeface-inter.csssrc/css/vars.csssrc/helpers/is-byoc-feature.jssrc/helpers/is-cloud-feature.jssrc/helpers/is-eol.jssrc/helpers/resolve-resource.jssrc/js/01-nav.jssrc/js/06-copy-to-clipboard.jssrc/js/11-editable-placeholders.jssrc/js/14-markdown-dropdown.jssrc/js/react/AskAI.jsxsrc/js/react/components/ChatInterface.jsxsrc/layouts/default.hbssrc/layouts/index.hbssrc/layouts/lab.hbssrc/layouts/labs-search.hbssrc/layouts/search.hbssrc/partials/algolia-script.hbssrc/partials/article.hbssrc/partials/bloblang-playground.hbssrc/partials/body.hbssrc/partials/breadcrumbs.hbssrc/partials/footer.hbssrc/partials/head-scripts.hbssrc/partials/head-styles.hbssrc/partials/header-content.hbssrc/partials/home.hbssrc/partials/nav-explore.hbssrc/partials/nav-menu.hbssrc/partials/nav.hbssrc/partials/toc.hbs
✅ Files skipped from review due to trivial changes (5)
- src/partials/footer.hbs
- src/partials/head-styles.hbs
- src/layouts/search.hbs
- src/css/dark-mode.css
- src/css/site.css
Major UI updates for hierarchical navigation system: Navigation System: - Add unified navigation with bucket structure (Self-Managed → Streaming/Connect) - New bucket-header.hbs partial with icons, titles, and per-bucket version selectors - nav-bucket.js for expand/collapse and version selector interactions - Bucket theming with custom CSS properties for colors Layouts & Templates: - component-home-v3.hbs layout for new landing page design - data-platform.hbs layout for umbrella pages - labs-home.hbs layout for labs directory - Updated article.hbs to move page options to sticky header eyebrow - Updated nav-menu-scroll.hbs for unified navigation rendering Styling: - chat-panel.css for Ask AI sidebar - component-home-v3.css for new landing page layouts - data-platform.css for umbrella page styling - labs-home.css for labs directory - product-switcher.css for top-level destination switcher - Updated nav.css with bucket theming - Updated markdown-dropdown.css for eyebrow positioning - Inter Display font for landing pages Components: - product-switcher.hbs partial for three-destination switcher - version-selector.hbs partial for per-bucket version dropdowns - chat-panel.hbs with correct sparkle icon - status-footer.hbs for version status information Helpers: - get-component-color.js, get-header-color.js, get-header-data.js - get-component-header-data.js, get-home-navigation.js - format-release-date.js, support-end-date.js, version-status.js - Utility helpers: gte.js, lt.js, split.js, subtract.js JavaScript: - 19-chat-panel.js for Ask AI interactions - 20-product-switcher.js for destination switching - 21-breadcrumb-collapse.js for responsive breadcrumbs - 22-version-selector.js for version dropdown - 23-nav-bucket.js for bucket interactions - Updated 14-markdown-dropdown.js to remove positioning logic Fixes: - Page options font consistency (11px, 600 weight) - Focus outline visibility with proper padding - Dropdown menu alignment - Icon consistency (Connect plug-connected, Ask AI sparkle) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
- Changed padding-left from 0 to 16px for .prev button - Changed padding-right from 0 to 16px for .next button - Text no longer sits flush against the border - Provides better visual balance in the pagination cells Fixes issue where PREV and NEXT text appeared scrunched up against the borders despite having large empty cells.
- Converted 358+ hardcoded pixel font sizes to rem-based calculations - Increased all font sizes by 1-2px for improved readability - Pattern: font-size: calc(px / var(--rem-base) * 1rem) - Files affected: all CSS, templates, and helper files - Sizes 10px and below increased by 2px - Sizes 11px and above increased by 1px This ensures consistent font scaling across all breakpoints and improves accessibility while maintaining design proportions. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Font Size Improvements: - Increased font sizes across all landing pages for better legibility - Product selector: 19px → 22px (names), 14px → 16px (taglines) - Intent cards: 20px → 23px (titles), 16px → 17px (descriptions) - Deploy cards: 17px → 19px (titles), 13px → 15px (descriptions) - Popular topics: 15px → 17px (titles), 12px → 14px (descriptions) Home Page Enhancements: - Made intent cards clickable (Build agentic workflows → ADP home, Stream and process data → Data Platform home) - JavaScript-based click handling preserves nested link functionality - Added data-href attributes to card elements Bug Fixes: - Fixed sticky header content bleed-through (removed negative margin) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Remove What's New sections from all landing pages - Add component cards section with Streaming, Connect, SQL - Add deployment cards section with Serverless, BYOC, Dedicated - SQL component shows NEW badge and Cloud BYOC badge - Use dynamic component colors from antora.yml metadata - Fix z-index stacking for sticky component indicator - Clean up code comments and fix CSS linting errors Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Review
Highest-stakes PR in the 14-PR rollout. Builds the entire relaunch chrome — but ships scratch/debug files, has lint-blocking CSS in 8+ files that will fail gulp bundle, has internal contradictions in the component-rename "fallback" story, and carries a11y regressions on the version selector and search trigger. None hard to fix, but the volume is high enough that a single dedicated sweep is needed before merge.
Critical
-
The "fallback for old and new component names" claim in the PR body is not consistently implemented. Several helpers/partials hard-switch with no
||fallback:src/helpers/get-page-info.js:52— flippedROOTcheck to'streaming'with no fallback. Any not-yet-renamed content repo will produce wrongisCurrentComponentresults.src/partials/algolia-script.hbs— everysite.components.ROOT.*was flipped tosite.components.streaming.*with no fallback. Search initial-tag / latest-enterprise renders empty if rename PRs haven't merged.src/helpers/get-home-navigation.jslooks upredpanda-adpthenredpanda(old names), butproduct-switcher.hbs,aggregate-whats-new.js, and every other new helper useagentic-data-plane/streaming. Two files contradict each other.
Fix: Pick one naming scheme and add real old-name fallbacks across the board, or strip the "fallback" claim from the PR body and gate this PR on the rename PRs landing first.
-
CodeRabbit-confirmed lint failures will fail
gulp bundle. Per CLAUDE.md, lint must pass:src/css/header.css—@keyframes bcDropdownInsrc/css/home.css—@keyframes toastSlideIn+color-mix(in sRGB,...)(needsin srgb)src/css/nav.css—versionMenuIn,statusPulse,bucketVersionMenuInsrc/css/product-switcher.css—sbProductMenuInsrc/css/chat-panel.css—toastSlideIn, deprecatedclip:,word-break: break-wordsrc/css/bloblang-playground.css:1229andsrc/css/toc.css:236— deprecatedword-break/word-wrapsrc/css/component-home-v3.css:402—currentColorcasingsrc/css/typeface-inter.css— quoted simple font-family identifiers
-
A11y — non-button interactive triggers.
src/partials/nav.hbsuses<div role="button">for searchsrc/partials/nav-explore.hbsandsrc/partials/version-selector.hbsuse<div>/<span>for the version selector with noaria-expandedand no focusability
Keyboard users can't open either menu today. Fix: use real
<button>elements. -
src/partials/nav-explore.hbslines 16-33: empty dropdown bug. WhendisplayVersion === 'default'andversions.length > 1, the chevron renders but the inner guard skips every option. Visible regression. -
src/partials/article.hbslines 95-220: undefinedmetadataContainer. CodeRabbit flagged this critical — variable referenced from tooltip/observer init script but never declared. Verify; if real, this throws on every article page. -
Availability block renders empty in
src/partials/article.hbswhen bothbyocandcloud-onlyare set. Either render "Cloud, BYOC" for that combination or guard the "Available in:" label. -
src/helpers/is-byoc-feature.jschecks wrong attribute key (page-byocvs the documentedpage-byoc-only). BYOC nav classification silently broken. -
src/js/react/AskAI.jsxmounts two App instances if a page has both#kapa-chat-rootand#chat-panel-kapa-root. Duplicate Kapa providers / double-firing callbacks. Mount to exactly one target.
Suggestions
- Inter Display ships 18 .ttf files; only 4 are referenced from
typeface-inter-display.css(Regular, Medium, SemiBold, Bold). Drop the unused 14 (Black, ExtraBold, ExtraLight, all Italic variants, Light, Thin) — straight bundle bloat. - Convert the 4 used Inter Display weights to
.woff2— same for any remaining Inter.ttffiles. Evergreen browser support, much smaller. src/js/22-version-selector.js— document-levelmousedown/keydownlisteners are attached inside theforEach, creating N duplicates. Hoist them out.src/helpers/format-release-date.js— usegetUTCMonth()/getUTCFullYear()to avoid PST off-by-one.src/helpers/has-markdown.js— dedupeexcludedRoles(defined twice).src/js/16-bloblang-interactive.js:704— resetwasmLoading/wasmLoadPromiseon init failure, otherwise every later "Try It" fails until page reload.src/js/21-breadcrumb-collapse.js— use<span>not<a href="#">for non-link breadcrumbs to avoid scroll-to-top.src/css/doc.css:1017— add, var(--note-border-color)fallback to--availability-block-border.
Files that should NOT ship
debug-snapshot.md(292 lines, new) — Playwright accessibility-tree snapshot (generic [ref=e1],listitem [ref=e6]...). Pure scratch artifact. Delete.WHATS-NEW-SYSTEM.md(194 lines, new) — Internal design doc for the What's New attribute system. Useful but not appropriate at the UI repo root; move todocs-extensions-and-macrosREADME, internal Confluence, ordocs/subdir.- 14 of 18 Inter Display
.ttffiles are shipped but never referenced from CSS (only Regular/Medium/SemiBold/Bold are loaded). Delete the unused weights.
CodeRabbit triage (~30 findings across 3 batches)
Keep (valid; post or fix in same sweep):
- All 8 CSS lint failures listed in Critical #2
src/partials/article.hbs:95-220undefinedmetadataContainer(Critical #5)src/partials/article.hbsavailability empty state (Critical #6)src/partials/nav-explore.hbs:16-33empty version dropdown (Critical #4)src/partials/nav-explore.hbs+nav.hbsnon-button keyboard-inaccessible triggers (Critical #3)src/partials/nav-tree.hbs:8ADP per-target-URL check vs page attributesrc/helpers/is-byoc-feature.jswrong attribute key (Critical #7)src/helpers/format-release-date.jsUTC methods (Suggestion #4)src/helpers/has-markdown.jsdedupe excludedRoles (Suggestion #5)src/js/react/AskAI.jsxsingle mount target (Critical #8)src/js/22-version-selector.jslistener leak (Suggestion #3)src/js/16-bloblang-interactive.js:704WASM loader reset (Suggestion #6)src/js/19-chat-panel.jstoggle all triggers not firstsrc/css/bloblang-playground.css:614overflow: hiddenclips Ace scrollbarsrc/js/16-bloblang-interactive.js:715AceminLines: 5
Skip (pedantic / conflicts with conventions):
src/partials/header-content.hbsinlinestyle="color: white"on standalone widget — intentional rendering path; defer to widget redesignsrc/css/header.css:438--nav-text-coloron.navbar-end— minor consistency, not blocking
Defer (worth doing, not blocking):
src/css/vars.css:205dark-mode BYOC/Cloud badge contrast — real but cosmeticsrc/css/doc.css:1012-1018availability info icon CSS fallbacksrc/js/16-bloblang-interactive.js:805preserve metadata in mini-playgroundsrc/partials/bloblang-playground.hbs:1657dead "Ask AI" CTAsrc/partials/head-scripts.hbs:29announcement bar height commentsrc/js/17-bloblang-yaml.js:43-53hyphenated YAML key detection
Coordination risk
- Hard dependency on content-repo rename PRs (
docsredpanda-data/docs#1698-redpanda-data/docs#1705,cloud-docsredpanda-data/cloud-docs#578,rp-connect-docsredpanda-data/rp-connect-docs#427,redpanda-labsredpanda-data/redpanda-labs#285) landing before this UI bundle deploys.algolia-script.hbsandget-page-info.jsboth hard-switch to new component names with no fallback. - Hard dependency on
docs-extensions-and-macrosredpanda-data/docs-extensions-and-macros#197 —nav-menu-scroll.hbsusespage.attributes.has-custom-navandparse-json page.attributes.custom-navigation, both produced by that extension. - Hard dependency on
docs-siteredpanda-data/docs-site#173 playbook adding all umbrella components (agentic-data-plane,data-platform,self-managed,streaming,connect,cloud-data-platform,labs).product-switcher.hbsassumes the fixed hierarchy exists. - Naming inconsistency to resolve BEFORE merging the rename PRs: align
get-home-navigation.js(redpanda-adp/redpanda) with the rest of the UI (agentic-data-plane/streaming) and with whatever name the ADP content repo'santora.ymlactually uses. Right now they disagree.
See docs-site redpanda-data/docs-site#173 for cross-rollout notes (suggested approval order + verification steps).
micheleRP
left a comment
There was a problem hiding this comment.
Approved on the assumption that all 8 Critical items in the review comment above are addressed before merge: component-name fallbacks (or correct the 'fallback' claim in the PR body), the 8 CSS lint failures, the 5 a11y regressions on nav/search/version-selector triggers, the empty-dropdown bug in nav-explore.hbs, the undefined metadataContainer in article.hbs, the availability empty-state, the page-byoc vs page-byoc-only attribute key in is-byoc-feature.js, the AskAI double-mount. Plus delete debug-snapshot.md + WHATS-NEW-SYSTEM.md and the 14 unused Inter Display .ttf weights. Highest-stakes PR in the rollout — please run gulp bundle locally to confirm lint passes before merging.
Automatic formatting improvements applied by ESLint to Ace editor and WASM exec vendor files. Changes are purely stylistic (line breaks, brace placement) for consistency with project linting rules. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Migrates Cloud docs landing page to use the new component-home-v3 layout with configurable content via page attributes. ## Deploy Section - :page-deploy-title: Section heading - :page-deploy-N-title/desc/link/icon: Card content (up to 3) ## Popular Topics Section - :page-popular-title: Section heading - :page-popular-N-title/desc/link/icon: Card content (up to 4) ## Labs Section - :page-labs-title: Section heading - :page-labs-link: Link to all labs - :page-labs-N-title/link: Individual lab links ## Stats Bar - :page-stats: Pipe-separated stats with ;; delimiter Related: redpanda-data/docs-ui#376
* Update Cloud docs landing page to component-home-v3 Migrates Cloud docs landing page to use the new component-home-v3 layout with configurable content via page attributes. ## Deploy Section - :page-deploy-title: Section heading - :page-deploy-N-title/desc/link/icon: Card content (up to 3) ## Popular Topics Section - :page-popular-title: Section heading - :page-popular-N-title/desc/link/icon: Card content (up to 4) ## Labs Section - :page-labs-title: Section heading - :page-labs-link: Link to all labs - :page-labs-N-title/link: Individual lab links ## Stats Bar - :page-stats: Pipe-separated stats with ;; delimiter Related: redpanda-data/docs-ui#376 * Update component xrefs for unified navigation - Updated xrefs and includes: ROOT → streaming - Updated xrefs: redpanda-connect → connect This allows cloud-docs to correctly include single-sourced content from the renamed streaming component. * Rename Redpanda Self-Managed to Redpanda Streaming Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix cloud landing page hero - add missing page-layout and hero-description Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add product-name attribute for single-sourced content Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Update product-name attributes with clear naming - product-name: Redpanda Streaming (for self-managed references) - cloud-product-name: Redpanda Cloud (for cloud references) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove local product-name attributes (now in shared branch) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Rename page-header-data to component-metadata and remove section field - More accurate name: component-level metadata, not page-level - Remove section field (deprecated - breadcrumbs use page-navigation config) - Update Cloud component configuration Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Update Cloud landing page: hero text, remove deploy section, update labs - Hero: Add "Streaming, Connect, and SQL built in" to clarify offerings - Remove "Get started with Redpanda Cloud" deploy section per PM feedback - Update labs links to use Antora resource IDs (labs:ai-agents:langchain-agent.adoc, etc.) - All labs are Cloud-compatible (have page-cloud: true attribute) - Decision matrix remains for Serverless vs BYOC choice Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix mcp-setup xref to use correct module Change xref:home:streaming:mcp-setup.adoc to xref:home:ROOT:mcp-setup.adoc Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Migrate SQL docs (#521) * Add converted SQL reference files * Duplicate file * Add index files * Add SQL reference to Cloud nav * Move reference pages to reference module * Convert remaining docs * Add placeholder index files * Cleanup * Move SQL section after RPCN * Continue cleanup using plugin audit and review * External links open in new window * Minor edit to trigger deploy preview * Migrate degraded state doc * Minor style edits * Address drift from Oxla changes since mid-Oct 2025 * Include CREATE TABLE and DROP changes * Update existing pages with placeholders for pages to be created * Another pass at style fixes * Missing TODO * Add remaining new reference pages to address doc drift * Remove Oxla storage compression references * Remove INSERT/UPDATE/DELETE from psycopg2 supported features * Remove Oxla-specific reasons from java-jdbc unsupported list * Remove DELETE/UPDATE references from php-pdo rowCount * Remove CREATE TABLE/INSERT example from select.adoc Assume that a student_data table is already created and populated with data * Remove table duplication TIP * Fix clumped "SELECTstatement" * Add missing Venn diagrams to JOIN pages * Inconsistent formatting with function names and parentheses * Incorrect COUNT logic with HAVING * Add NULLS FIRST/LAST, fix interval sorting * Replace CREATE TABLE oxlafunctions example in offset.adoc Redpanda SQL does not support CREATE TABLE without an external catalog Example assumes precreated salaryemp table * Unrelated "employees" text * Move column compatibility note to set-operations index Column type compatibility and flexible ordering applies to all set operations (UNION, INTERSECT, EXCEPT) * Both ROWS and RANGE frame modes are supported * Add GEOMETRY/GEOGRAPHY * Create sql-operators section with full operator list * timestamp-with-time-zone formatting * Remove internal memory representation for date type * Add month and day conversion note * Remove internal memory representation from bool type * System catalogs disambiguation note and 7 new pg_* pages * Fix nav * Move bitwise operators * Double check SQL examples and outputs * Remove unix_macros * Reorganize math and trig function pages * Implement some deferred fixes related to old Oxla examples * Fix anchors in xrefs * Apply QA checklist first pass across SQL reference docs Run 11-point QA checklist against all migrated SQL pages (148 files). Fixes applied: remove "Please note" phrasing, fix "here" link text, replace future tense output descriptions with present tense, simplify "allows/enables you to" constructions, remove minimizing language, fix wordy instructions, add missing admonition punctuation, replace verbose output lead-ins, remove "etc.", normalize positional references, and update stale PostgreSQL doc links to /docs/current/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Person 4 edits, including future tense, passive voice * more Person 4 edits * Person 4 edits * Parallelize :description: metadata for SQL language client pages Standardize the Java, PHP, and Python connector pages on the same imperative "Connect to Redpanda SQL from <language> using <tool>" template already used by the C# page and the parent index page. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Apply Feediver1 review suggestions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Apply pending PR suggestion comments Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Minor edit - statements index * keywords.adoc - move in nav tree, make table more scannable * alter-table minor edit * create-redpanda-catalog: Improve Options section * create-storage minor edit * Improve CREATE TABLE reference page clarity Clarify NOTE about CREATE TABLE behavior, convert multi-value option descriptions to lists for scannability, and rename ambiguous example heading. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * select: review fixes * set-show: review fixes * show-tables minor edit * show-nodes: review fixes * describe: review fixes * sql-statements review pass * from - review pass * Minor edit * set-operations: review fixes * More review fixes for sql-clauses * other-functions review fixes * Normalize QA fixes * Apply edits based on doc team review * Standardize "To do X, run:" * Structural improvements * Sweep for passive voice * Person 2 style review: aggregate, window, JSON functions Style fixes across 31 files: - Future tense → present tense ("will return" → "returns") - Wordy instructions ("lets you" → direct verb) - Awkward phrasing ("Here's how" → cleaner alternatives) - First person ("we're going to" → "This example") - Passive "It" patterns in tables → active voice - Positional references ("the above query" → "Output:") - Typo fix ("ouput" → "output") Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Pass to standardize QA * Apply suggestions from review * Minor edits --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com> Co-authored-by: JakeSCahill <jake@redpanda.com> * SQL GA nav (#572) * SQL GA nav * DOC-1993: Move Redpanda Catalogs page to sql module under Query data Relocates redpanda-catalogs.adoc from modules/reference/pages/sql/ to modules/sql/pages/query-data/, adds the entry under SQL > Query data in nav.adoc, removes the old entry from Reference > Redpanda SQL Reference, and updates the cross-link in system-catalogs/index.adoc. Structural-only; no content changes (content rewrite is in DOC-2049). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Add component-whats-new attributes for SQL feature * Fix SQL What's New link to use full component prefix * Add page-level What's New attributes for cloud home page - Duplicate component-whats-new attributes as page-whats-new - page-whats-new displays on cloud home page - component-whats-new displays on data-platform aggregation page - Both point to same SQL content * Remove duplicate page-role attribute from cloud home page Only page-layout is needed; page-role is redundant as the layout automatically sets the correct role class. * Add component-specific AI suggestions for chat drawer Defines 4 cloud-specific AI suggestion questions that appear in the Ask AI chat drawer when viewing Cloud documentation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Restructure cloud landing page and fix SQL nav xrefs - Add component cards section (Streaming, Connect, SQL) with NEW and BYOC badges - Add deployment cards section (Serverless, BYOC, Dedicated) - Remove What's New, Features, Labs, and Path comparison sections - Comment out SQL nav items for pages that don't exist yet - Keep only existing SQL pages active in navigation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix component name from ROOT to streaming in includes * Fix broken includes: salesforce inputs path and cloud-topics placeholder * Add stub pages for salesforce_cdc and salesforce_graphql inputs * Add page-aliases to salesforce stub pages for xref resolution * Enable parent context navigation cards Add page-use-parent-context flag to enable hierarchical navigation with parent context cards in the UI. This shows the Data Platform umbrella in the product selector and the Cloud card in navigation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Remove unused page-use-parent-context flag * Update component color to match design system Changed from #0ea5e9 to #1D4ED8 (Cloud blue from color wheel). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix home page review feedback - Replace em dashes with commas in descriptions - Change lock icon to book (supported v3 icon) - Use active voice in component and popular descriptions - Soften marketing claims (10x faster → high-performance, 99.99% SLA → enterprise SLA) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix unescaped attributes in AsciiDoc files Escape curly braces to prevent AsciiDoc from interpreting them as attribute references: - concepts.adoc: {server-id} - disable-kc.adoc: {id}, {operation.id} - whats-new-cloud.adoc: {subject} Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add Salesforce connector pages to navigation Added salesforce_cdc and salesforce_graphql input pages to the navigation in alphabetical order. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Remove conflicting page-alias from overview.adoc The alias pointed to what-is-redpanda-sql.adoc which exists as a separate file, causing Antora build failure. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Revert "Remove conflicting page-alias from overview.adoc" This reverts commit e20dd61. * Remove conflicting page-alias from SQL overview The alias pointed to what-is-redpanda-sql.adoc which exists as a separate file, causing Antora build failure. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove conflicting page-alias from substring.adoc The alias pointed to substr.adoc which exists as a separate file. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove unlisted SQL pages not in rp-sql branch These files were introduced during rebase but don't exist in the authoritative rp-sql branch: - substr.adoc (duplicate of substring.adoc) - what-is-redpanda-sql.adoc (replaced by overview.adoc) - numeric-type/index.adoc - time-type/index.adoc Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Kat Batuigas <36839689+kbatuigas@users.noreply.github.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com>
…elector xrefs - Fix Bloblang playground Ace editor race condition by dispatching aceReady event when all scripts load and waiting for it before initializing editors - Increase all .doc heading font sizes by 2px (h1: 34/42, h2: 26, h3: 22, h4: 19, h5: 18, h6: 17) - Fix version selector xref resolution by converting module-relative xrefs to fully qualified format (version@component:module:page.adoc) - Ensure Bloblang playground title visible on mobile with explicit styles - Align bump integration fonts with main site (JetBrains Mono) - Remove unused Inter Display font files - Various CSS and template cleanups Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Notification text: 14px → 16px - Validation indicator: 12px → 14px Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Search Ask AI button now opens chat drawer instead of Kapa modal - Add missing #labs-results-num container for Algolia stats widget Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use purple gradient background matching .tb-ai-btn - Add light/dark mode support with hover effects - SVG icon uses currentColor for proper color inheritance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Include .tb-ai-btn, .tb-btn, .tb-link, and .tb-dropdown styles for the standalone header widget used in API docs. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Include compact footer styles used by API docs and embedded pages. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add click handlers to TOC links that immediately set the correct active state, preventing the wrong item from being highlighted during scroll animations. The fix also temporarily skips scroll-based updates for 100ms after a click to prevent flicker. Applies to both sidebar TOC and embedded dropdown TOC (mobile). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Simplified beta badge to show only text without the SVG icon. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Migrate SQL docs (#521) * Add converted SQL reference files * Duplicate file * Add index files * Add SQL reference to Cloud nav * Move reference pages to reference module * Convert remaining docs * Add placeholder index files * Cleanup * Move SQL section after RPCN * Continue cleanup using plugin audit and review * External links open in new window * Minor edit to trigger deploy preview * Migrate degraded state doc * Minor style edits * Address drift from Oxla changes since mid-Oct 2025 * Include CREATE TABLE and DROP changes * Update existing pages with placeholders for pages to be created * Another pass at style fixes * Missing TODO * Add remaining new reference pages to address doc drift * Remove Oxla storage compression references * Remove INSERT/UPDATE/DELETE from psycopg2 supported features * Remove Oxla-specific reasons from java-jdbc unsupported list * Remove DELETE/UPDATE references from php-pdo rowCount * Remove CREATE TABLE/INSERT example from select.adoc Assume that a student_data table is already created and populated with data * Remove table duplication TIP * Fix clumped "SELECTstatement" * Add missing Venn diagrams to JOIN pages * Inconsistent formatting with function names and parentheses * Incorrect COUNT logic with HAVING * Add NULLS FIRST/LAST, fix interval sorting * Replace CREATE TABLE oxlafunctions example in offset.adoc Redpanda SQL does not support CREATE TABLE without an external catalog Example assumes precreated salaryemp table * Unrelated "employees" text * Move column compatibility note to set-operations index Column type compatibility and flexible ordering applies to all set operations (UNION, INTERSECT, EXCEPT) * Both ROWS and RANGE frame modes are supported * Add GEOMETRY/GEOGRAPHY * Create sql-operators section with full operator list * timestamp-with-time-zone formatting * Remove internal memory representation for date type * Add month and day conversion note * Remove internal memory representation from bool type * System catalogs disambiguation note and 7 new pg_* pages * Fix nav * Move bitwise operators * Double check SQL examples and outputs * Remove unix_macros * Reorganize math and trig function pages * Implement some deferred fixes related to old Oxla examples * Fix anchors in xrefs * Apply QA checklist first pass across SQL reference docs Run 11-point QA checklist against all migrated SQL pages (148 files). Fixes applied: remove "Please note" phrasing, fix "here" link text, replace future tense output descriptions with present tense, simplify "allows/enables you to" constructions, remove minimizing language, fix wordy instructions, add missing admonition punctuation, replace verbose output lead-ins, remove "etc.", normalize positional references, and update stale PostgreSQL doc links to /docs/current/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Person 4 edits, including future tense, passive voice * more Person 4 edits * Person 4 edits * Parallelize :description: metadata for SQL language client pages Standardize the Java, PHP, and Python connector pages on the same imperative "Connect to Redpanda SQL from <language> using <tool>" template already used by the C# page and the parent index page. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Apply Feediver1 review suggestions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Apply pending PR suggestion comments Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Minor edit - statements index * keywords.adoc - move in nav tree, make table more scannable * alter-table minor edit * create-redpanda-catalog: Improve Options section * create-storage minor edit * Improve CREATE TABLE reference page clarity Clarify NOTE about CREATE TABLE behavior, convert multi-value option descriptions to lists for scannability, and rename ambiguous example heading. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * select: review fixes * set-show: review fixes * show-tables minor edit * show-nodes: review fixes * describe: review fixes * sql-statements review pass * from - review pass * Minor edit * set-operations: review fixes * More review fixes for sql-clauses * other-functions review fixes * Normalize QA fixes * Apply edits based on doc team review * Standardize "To do X, run:" * Structural improvements * Sweep for passive voice * Person 2 style review: aggregate, window, JSON functions Style fixes across 31 files: - Future tense → present tense ("will return" → "returns") - Wordy instructions ("lets you" → direct verb) - Awkward phrasing ("Here's how" → cleaner alternatives) - First person ("we're going to" → "This example") - Passive "It" patterns in tables → active voice - Positional references ("the above query" → "Output:") - Typo fix ("ouput" → "output") Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Pass to standardize QA * Apply suggestions from review * Minor edits --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com> Co-authored-by: JakeSCahill <jake@redpanda.com> * SQL GA nav (#572) * SQL GA nav * DOC-1993: Move Redpanda Catalogs page to sql module under Query data Relocates redpanda-catalogs.adoc from modules/reference/pages/sql/ to modules/sql/pages/query-data/, adds the entry under SQL > Query data in nav.adoc, removes the old entry from Reference > Redpanda SQL Reference, and updates the cross-link in system-catalogs/index.adoc. Structural-only; no content changes (content rewrite is in DOC-2049). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Add stub pages to nav * Names sweep * Minor style edit for list items * Revert default_redpanda_catalog rename * SQL: bytea support (#585) * Add bytea reference * Apply suggestions from SME review * Update modules/reference/pages/sql/sql-data-types/bytea.adoc Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions from doc review * Reorganize SQL reference nav --------- Co-authored-by: Michele Cyran <michele@redpanda.com> * SQL overview (#573) * Draft SQL overview rewrite * DOC-2049: Apply v1 Iceberg scope and Postgres positioning to overview and catalogs Tightens the PostgreSQL framing in the overview (compatible query engine implementing the Postgres wire protocol and a Postgres-based dialect, not a full Postgres database). Aligns Iceberg references with the v1 product scope: only Iceberg tables created from Iceberg-enabled Redpanda topics are queryable; no external Iceberg lakehouses or REST catalogs. Collapses the overview's "Query Iceberg tables" and "Bridge queries" sections into "Query Iceberg topics". Rewrites the Redpanda Catalogs page with the named-collection-of-source-data framing, leads with default_redpanda_connection auto-creation, and adds a storage > catalog > tables hierarchy. Replaces the prior CREATE-flow walkthrough with a smaller demo using default_redpanda_connection. Per PM SME 2026-05-07. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Add TODO to flesh out sql v pg * Move why RP SQL up * Minor edits * Review pass * Change to default_redpanda_catalog * Tweak overview learning objectives * Review pass * Intro rephrase * Remove tables not describing meaningful differences with Postgres * Clarify Iceberg benefit of querying data outside of topic retention * Minor edit * Apply suggestions from SME feedback * Apply suggestions from PM review * Minor edit * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions from review --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Michele Cyran <michele@redpanda.com> * SQL GA - Get started (#571) * Add quickstart draft * Add deploy doc (use case 1) * Add to nav * Remove create kafka source * Move show/inspect statements to deploy doc * DOC-1856: Apply 9-node scale cap, admin framing, and GRANT mini-step Updates the Enable Redpanda SQL page so the horizontal-scaling range is 1 to 9 nodes (down from 1 to 12) per the PM SME 2026-05-07. Adds a TODO on the Disable Redpanda SQL section listing the specific behaviors to confirm with engineering before publication: what state is purged, what is deleted from object storage, the effect on topic and Schema Registry data, in-flight query error behavior, and re-enable semantics. Updates the quickstart so it explicitly targets an admin who can view the SQL connection details in the Cloud Console, and adds an optional admin-run mini-section showing how to grant a non-admin user SELECT access on a Redpanda SQL table. Includes a TODO referencing qa-questions.md #21 to refine the role/grant example once engineering confirms whether the SQL GRANT statement alone enforces per-user table access or whether an additional ACL/Kafka-side step is required. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Update modules/sql/pages/get-started/sql-quickstart.adoc Co-authored-by: Andrew Hsu <xuzuan@gmail.com> * Change quickstart path to use UI to produce instead of rpk * Add deployment/connection UI updates * Apply suggestions from SME * Review pass * Add wire protocol option when producing via Console * Edits per SME input * Apply suggestions from SME review * Use JSON in quickstart * Add SQL deployment UI changes * schema subject is optional (default to topic name strategy) * Apply suggestions from code review Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Andrew Hsu <xuzuan@gmail.com> Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> * SQL: OIDC and access management (#580) * Draft OIDC content * Update draft with source findings and TODO * Review pass * Review pass * Add reference docs for GRANT, REVOKE, ROLE/USER * Preference for USER instead of ROLE * Review pass * Move Connect with OIDC up in nav * Clarify "deny-all" * Change name and title to broaden scope * Update user names * Add learning objectives * Apply suggestions from SME review * Apply suggestions from SME review * Review pass * SQL: Query topics (#574) * Start query RP topics doc * DOC-1990: Move query directory and rewrite streaming-topics how-to Renames modules/sql/pages/query/ to modules/sql/pages/query-data/ and renames the streaming-topic how-to from query-redpanda-topics.adoc to query-streaming-topics.adoc to match the SQL GA IA. Retitles the page "Query streaming topics" and reframes the description and learning objectives around live streaming data; bridge-query and Iceberg content stays out of this page (DOC-2006 owns the Iceberg-topics how-to). Adds a pointer to the Iceberg topics how-to under the intro and lists it under Next steps. Updates the enable-prereq xref to point to the Enable Redpanda SQL page. Drops the CREATE REDPANDA CATALOG link from Next steps to align with the v1 framing that users do not typically create their own Redpanda catalog. Reframes the Query data index page description for v1 Iceberg scope (live and historical data in Redpanda topics; no external Iceberg lakehouse). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Change rp connection to catalog * Add wire protocol option * schema_subject required * Review pass * Review pass * Address review comments * Add info on redpanda and redpanda_raw structs * Review pass * Adjust column widths --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SQL: Auto union Iceberg and Redpanda topic (#575) * Start reference update for SQL / Iceberg catalog * Draft bridge queries doc * Update query-iceberg-topics per SME feedback * Add new iceberg catalog statements * Clarify Iceberg benefit of querying data aged out of topic retention * Links to Iceberg catalog docs * Update example names * Update based on new-features list * Sync options from source * Apply suggestions from SME feedback * Apply suggestions * Note about default schema * Update page title * Reframe per SME input * Remove TODO * SQL: struct support (#586) * Draft struct support reference * How to query structs/nested fields * Review pass * Apply suggestions from SME review * Apply suggestions from SME review * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> * Review pass * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions --------- Co-authored-by: Michele Cyran <michele@redpanda.com> * SQL: OOM (#584) * Start OOM doc draft * Review pass * Capitalization * Rename file * Update page attributes * Rename and structure doc per SME feedback * Apply suggestions from review * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> --------- Co-authored-by: Michele Cyran <michele@redpanda.com> * SQL: Expand virtual tables reference, add SHOW/DESCRIBE for new objects (#590) * Expand virtual tables reference, add SHOW/DESCRIBE for new objects * Title case * Review pass * Apply suggestions from SME review * Fix nav * Apply suggestion from @micheleRP Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions from review * Update modules/reference/pages/sql/information-schema.adoc Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions from review --------- Co-authored-by: Michele Cyran <michele@redpanda.com> * SQL: What's New + landing page + style sweep (#597) * Built out SQL landing page * Add SQL to What's New in Cloud * Page title capitalization * Add catalog qualifier * Backticks pass * Edit landing page * Remove index auto page layout * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> * Apply suggestions from review; sweep * Update modules/get-started/pages/whats-new-cloud.adoc Co-authored-by: Michele Cyran <michele@redpanda.com> * Lowercase subsection headings and xref labels per PG convention - numeric.adoc: H2 subsections use backticked-lowercase type names (`int` type, `bigint` type, etc.) to match numeric-data-type-aliases.adoc. - create-table.adoc, query-nested-fields.adoc: xref labels for type pages (ROW, JSON) now use lowercase backticked form. - aggregate-functions/index.adoc, aggregate-functions/statistics/index.adoc, window-functions/index.adoc: function-name xref labels lowercased to backticked function-call form (sum() instead of SUM, regr_avgx() instead of REGR_AVGX, etc.). DISTINCT xref label preserved as uppercase (SQL keyword, not a function). - substring.adoc, position.adoc: cross-reference labels for substr and strpos lowercased. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * DOC-2207: Document SELECT DISTINCT Add a SELECT DISTINCT section to select.adoc covering the supported form and the unsupported PostgreSQL-specific DISTINCT ON form. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Minor edit * Consolidate substr and substring * Uppercase keyword-syntax and conditional functions per PG/CockroachDB convention Function-like operators that use SQL keyword syntax (EXTRACT, POSITION, SUBSTRING, SUBSTR) and conditional expressions (COALESCE, NULLIF, GREATEST, LEAST) get UPPERCASE in H1, body prose, and xref labels, matching how PostgreSQL and CockroachDB docs classify them. Regular call-syntax functions (sum, count, avg, abs, log, concat, length, etc.) stay lowercase. SQL keyword DISTINCT stays uppercase. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Add missing index page --------- Co-authored-by: Michele Cyran <michele@redpanda.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Apply suggestions from code review Co-authored-by: Michele Cyran <michele@redpanda.com> * Address PR 570 review comments - sql/index.adoc: rewrite with AsciiDoc list-continuation format and align order/contents with nav.adoc, adding Operators, System Catalogs, System Virtual Tables, and Transactions entries (per micheleRP). - starts-with.adoc: reconcile the prose, INSERT, and results table for the empty-string-second-argument case. The example uses '' (not an omitted argument or NULL), so update the special-case bullet, section heading, intro, and results-table empty-string row to match (per coderabbitai). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Suggestions from auto review * Audit pass * Apply nav order suggestion * Add new gloss terms * SQL schema reference page rewrite * Minor edit * Nav title case * Update Cloud docs landing page to component-home-v3 (#578) * Update Cloud docs landing page to component-home-v3 Migrates Cloud docs landing page to use the new component-home-v3 layout with configurable content via page attributes. ## Deploy Section - :page-deploy-title: Section heading - :page-deploy-N-title/desc/link/icon: Card content (up to 3) ## Popular Topics Section - :page-popular-title: Section heading - :page-popular-N-title/desc/link/icon: Card content (up to 4) ## Labs Section - :page-labs-title: Section heading - :page-labs-link: Link to all labs - :page-labs-N-title/link: Individual lab links ## Stats Bar - :page-stats: Pipe-separated stats with ;; delimiter Related: redpanda-data/docs-ui#376 * Update component xrefs for unified navigation - Updated xrefs and includes: ROOT → streaming - Updated xrefs: redpanda-connect → connect This allows cloud-docs to correctly include single-sourced content from the renamed streaming component. * Rename Redpanda Self-Managed to Redpanda Streaming Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix cloud landing page hero - add missing page-layout and hero-description Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add product-name attribute for single-sourced content Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Update product-name attributes with clear naming - product-name: Redpanda Streaming (for self-managed references) - cloud-product-name: Redpanda Cloud (for cloud references) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove local product-name attributes (now in shared branch) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Rename page-header-data to component-metadata and remove section field - More accurate name: component-level metadata, not page-level - Remove section field (deprecated - breadcrumbs use page-navigation config) - Update Cloud component configuration Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Update Cloud landing page: hero text, remove deploy section, update labs - Hero: Add "Streaming, Connect, and SQL built in" to clarify offerings - Remove "Get started with Redpanda Cloud" deploy section per PM feedback - Update labs links to use Antora resource IDs (labs:ai-agents:langchain-agent.adoc, etc.) - All labs are Cloud-compatible (have page-cloud: true attribute) - Decision matrix remains for Serverless vs BYOC choice Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix mcp-setup xref to use correct module Change xref:home:streaming:mcp-setup.adoc to xref:home:ROOT:mcp-setup.adoc Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Migrate SQL docs (#521) * Add converted SQL reference files * Duplicate file * Add index files * Add SQL reference to Cloud nav * Move reference pages to reference module * Convert remaining docs * Add placeholder index files * Cleanup * Move SQL section after RPCN * Continue cleanup using plugin audit and review * External links open in new window * Minor edit to trigger deploy preview * Migrate degraded state doc * Minor style edits * Address drift from Oxla changes since mid-Oct 2025 * Include CREATE TABLE and DROP changes * Update existing pages with placeholders for pages to be created * Another pass at style fixes * Missing TODO * Add remaining new reference pages to address doc drift * Remove Oxla storage compression references * Remove INSERT/UPDATE/DELETE from psycopg2 supported features * Remove Oxla-specific reasons from java-jdbc unsupported list * Remove DELETE/UPDATE references from php-pdo rowCount * Remove CREATE TABLE/INSERT example from select.adoc Assume that a student_data table is already created and populated with data * Remove table duplication TIP * Fix clumped "SELECTstatement" * Add missing Venn diagrams to JOIN pages * Inconsistent formatting with function names and parentheses * Incorrect COUNT logic with HAVING * Add NULLS FIRST/LAST, fix interval sorting * Replace CREATE TABLE oxlafunctions example in offset.adoc Redpanda SQL does not support CREATE TABLE without an external catalog Example assumes precreated salaryemp table * Unrelated "employees" text * Move column compatibility note to set-operations index Column type compatibility and flexible ordering applies to all set operations (UNION, INTERSECT, EXCEPT) * Both ROWS and RANGE frame modes are supported * Add GEOMETRY/GEOGRAPHY * Create sql-operators section with full operator list * timestamp-with-time-zone formatting * Remove internal memory representation for date type * Add month and day conversion note * Remove internal memory representation from bool type * System catalogs disambiguation note and 7 new pg_* pages * Fix nav * Move bitwise operators * Double check SQL examples and outputs * Remove unix_macros * Reorganize math and trig function pages * Implement some deferred fixes related to old Oxla examples * Fix anchors in xrefs * Apply QA checklist first pass across SQL reference docs Run 11-point QA checklist against all migrated SQL pages (148 files). Fixes applied: remove "Please note" phrasing, fix "here" link text, replace future tense output descriptions with present tense, simplify "allows/enables you to" constructions, remove minimizing language, fix wordy instructions, add missing admonition punctuation, replace verbose output lead-ins, remove "etc.", normalize positional references, and update stale PostgreSQL doc links to /docs/current/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Person 4 edits, including future tense, passive voice * more Person 4 edits * Person 4 edits * Parallelize :description: metadata for SQL language client pages Standardize the Java, PHP, and Python connector pages on the same imperative "Connect to Redpanda SQL from <language> using <tool>" template already used by the C# page and the parent index page. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Apply Feediver1 review suggestions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Apply pending PR suggestion comments Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Minor edit - statements index * keywords.adoc - move in nav tree, make table more scannable * alter-table minor edit * create-redpanda-catalog: Improve Options section * create-storage minor edit * Improve CREATE TABLE reference page clarity Clarify NOTE about CREATE TABLE behavior, convert multi-value option descriptions to lists for scannability, and rename ambiguous example heading. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * select: review fixes * set-show: review fixes * show-tables minor edit * show-nodes: review fixes * describe: review fixes * sql-statements review pass * from - review pass * Minor edit * set-operations: review fixes * More review fixes for sql-clauses * other-functions review fixes * Normalize QA fixes * Apply edits based on doc team review * Standardize "To do X, run:" * Structural improvements * Sweep for passive voice * Person 2 style review: aggregate, window, JSON functions Style fixes across 31 files: - Future tense → present tense ("will return" → "returns") - Wordy instructions ("lets you" → direct verb) - Awkward phrasing ("Here's how" → cleaner alternatives) - First person ("we're going to" → "This example") - Passive "It" patterns in tables → active voice - Positional references ("the above query" → "Output:") - Typo fix ("ouput" → "output") Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Pass to standardize QA * Apply suggestions from review * Minor edits --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com> Co-authored-by: JakeSCahill <jake@redpanda.com> * SQL GA nav (#572) * SQL GA nav * DOC-1993: Move Redpanda Catalogs page to sql module under Query data Relocates redpanda-catalogs.adoc from modules/reference/pages/sql/ to modules/sql/pages/query-data/, adds the entry under SQL > Query data in nav.adoc, removes the old entry from Reference > Redpanda SQL Reference, and updates the cross-link in system-catalogs/index.adoc. Structural-only; no content changes (content rewrite is in DOC-2049). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Add component-whats-new attributes for SQL feature * Fix SQL What's New link to use full component prefix * Add page-level What's New attributes for cloud home page - Duplicate component-whats-new attributes as page-whats-new - page-whats-new displays on cloud home page - component-whats-new displays on data-platform aggregation page - Both point to same SQL content * Remove duplicate page-role attribute from cloud home page Only page-layout is needed; page-role is redundant as the layout automatically sets the correct role class. * Add component-specific AI suggestions for chat drawer Defines 4 cloud-specific AI suggestion questions that appear in the Ask AI chat drawer when viewing Cloud documentation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Restructure cloud landing page and fix SQL nav xrefs - Add component cards section (Streaming, Connect, SQL) with NEW and BYOC badges - Add deployment cards section (Serverless, BYOC, Dedicated) - Remove What's New, Features, Labs, and Path comparison sections - Comment out SQL nav items for pages that don't exist yet - Keep only existing SQL pages active in navigation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix component name from ROOT to streaming in includes * Fix broken includes: salesforce inputs path and cloud-topics placeholder * Add stub pages for salesforce_cdc and salesforce_graphql inputs * Add page-aliases to salesforce stub pages for xref resolution * Enable parent context navigation cards Add page-use-parent-context flag to enable hierarchical navigation with parent context cards in the UI. This shows the Data Platform umbrella in the product selector and the Cloud card in navigation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Remove unused page-use-parent-context flag * Update component color to match design system Changed from #0ea5e9 to #1D4ED8 (Cloud blue from color wheel). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Fix home page review feedback - Replace em dashes with commas in descriptions - Change lock icon to book (supported v3 icon) - Use active voice in component and popular descriptions - Soften marketing claims (10x faster → high-performance, 99.99% SLA → enterprise SLA) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix unescaped attributes in AsciiDoc files Escape curly braces to prevent AsciiDoc from interpreting them as attribute references: - concepts.adoc: {server-id} - disable-kc.adoc: {id}, {operation.id} - whats-new-cloud.adoc: {subject} Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add Salesforce connector pages to navigation Added salesforce_cdc and salesforce_graphql input pages to the navigation in alphabetical order. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Remove conflicting page-alias from overview.adoc The alias pointed to what-is-redpanda-sql.adoc which exists as a separate file, causing Antora build failure. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Revert "Remove conflicting page-alias from overview.adoc" This reverts commit e20dd61. * Remove conflicting page-alias from SQL overview The alias pointed to what-is-redpanda-sql.adoc which exists as a separate file, causing Antora build failure. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove conflicting page-alias from substring.adoc The alias pointed to substr.adoc which exists as a separate file. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Remove unlisted SQL pages not in rp-sql branch These files were introduced during rebase but don't exist in the authoritative rp-sql branch: - substr.adoc (duplicate of substring.adoc) - what-is-redpanda-sql.adoc (replaced by overview.adoc) - numeric-type/index.adoc - time-type/index.adoc Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Kat Batuigas <36839689+kbatuigas@users.noreply.github.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: micheleRP <michele@redpanda.com> Co-authored-by: Joyce Fee <joyce@redpanda.com> Co-authored-by: JakeSCahill <jake@redpanda.com> Co-authored-by: Andrew Hsu <xuzuan@gmail.com> Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> Co-authored-by: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com>
These elements don't work in the bump widget context since the chat functionality and main site JavaScript aren't available on API pages. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated filter on .theme-image to show dark icon in light mode and light icon in dark mode, matching the main site styling. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add search button (DocSearch) for standalone API widget - Restore Ask AI button (was incorrectly hidden in widget) - Restore mobile overflow menu (was incorrectly hidden in widget) - Add CSS styles for new search button with light/dark mode support The search button only appears in the standalone widget context (isStandaloneWidget=true) as regular pages have search elsewhere. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Ask AI button with data-action="open-chat" now works in the standalone widget context (API pages) by directly opening Kapa when no chat panel element exists. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add CSS to hide .tb-overflow-menu by default (desktop) and only show it on mobile (max-width: 480px). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Breadcrumbs are not needed in API docs since Bump.sh has its own navigation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace navbar-brand with sb-head structure for standalone widget (shows "Redpanda / Documentation" with logo) - Exclude Ask AI button from standalone widget (not working in that context) - Keep breadcrumbs excluded from standalone widget - Keep Search button for standalone widget - Add CSS styles for sb-head component in header-bump.css Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Implements unified navigation system for Redpanda documentation with Data Platform hierarchy, component-themed navigation buckets, and enhanced user experience features.
Overview
This PR introduces a complete redesign of the documentation navigation to support a unified sidebar for Data Platform that combines Streaming and Connect navigation in a single, collapsible bucket structure. The implementation includes 77 files with 9,046 additions across templates, styles, and JavaScript.
Major Features
1. Unified Navigation System
New files:
src/partials/bucket-header.hbs- Bucket header with icon, title, version selectorsrc/partials/nav-menu-scroll.hbs- Unified navigation rendering logicsrc/js/23-nav-bucket.js- Bucket expand/collapse and version selector interactionssrc/css/nav.css- Updated with bucket theming styles2. Product Switcher
New files:
src/partials/product-switcher.hbs- Product switching UIsrc/js/20-product-switcher.js- Dropdown interactionssrc/css/product-switcher.css- Product switcher styling3. Version Selector
New files:
src/partials/version-selector.hbs- Version selector UIsrc/js/22-version-selector.js- Version selector logicsrc/css/version-selector.css- Version selector styling4. Component Home Pages (v3 Layout)
New files:
src/layouts/component-home-v3.hbs- New home page layoutsrc/partials/component-home-v3.hbs- Component home partialsrc/css/component-home-v3.css- Component home styling5. Data Platform Landing Page
New files:
src/layouts/data-platform.hbs- Data Platform layoutsrc/partials/data-platform.hbs- Data Platform content partialsrc/css/data-platform.css- Data Platform page styling6. Labs Home Page
New files:
src/layouts/labs-home.hbs- Labs landing page layoutsrc/css/labs-home.css- Labs home styling7. Ask AI Chat Panel
New files:
src/partials/chat-panel.hbs- Chat panel structuresrc/js/19-chat-panel.js- Chat panel interactionssrc/js/react/AskAI.jsx- React chat interface (updated)src/css/chat-panel.css- Chat panel styling8. Enhanced Header Features
New files:
src/js/21-breadcrumb-collapse.js- Breadcrumb collapse logicsrc/css/markdown-dropdown.css- Page options dropdown styling (updated)9. Typography Improvements
New files:
src/css/typeface-inter-display.css- Inter Display font definitionssrc/font/inter-display/- Inter Display font files (24 .ttf files)Design System
Component Colors
Each component has a defined color used across the UI:
#4b44ff(purple) - Umbrella component#107569(teal) - Self-Managed docs#54478C(purple) - Connect docs#0ea5e9(blue) - Cloud docs#e24328(orange) - ADP docsDark Mode
All new features include full dark mode support with appropriate contrast adjustments.
Accessibility
Updated Files
Templates
src/partials/header-content.hbs- Updated header structuresrc/partials/nav.hbs- Updated for unified navigationsrc/partials/home.hbs- Updated home page linksHelpers
src/helpers/get-component-color.js- Component color lookupsrc/helpers/get-header-data.js- Header data extractionsrc/helpers/get-component-header-data.js- Component-specific header datasrc/helpers/get-page-info.js- Updated page info extractionsrc/helpers/add-suggested-labs.js- Updated component referencessrc/helpers/list-related-labs.js- Updated component referencesStyles
src/css/doc.css- Article page improvementssrc/css/home.css- Home page styling updatessrc/css/nav.css- Unified navigation bucket stylessrc/css/vars.css- New component color variablesScripts
src/js/06-copy-to-clipboard.js- Updated for new layoutssrc/js/16-bloblang-interactive.js- Updated for chat panelBreaking Changes
Component Renames (Anticipated)
This UI is designed to work with renamed components:
ROOT→streamingredpanda-cloud→cloud-data-platformredpanda-connect→connectredpanda-labs→labsThe UI bundle includes fallback logic to handle both old and new component names during transition.
Related PRs
Antora Extension
Content Repository Updates
docs-site Playbook
Playbook updates needed to:
Testing
Local Testing
Test Scenarios
Deployment Notes
This UI bundle is compatible with existing Antora content but requires:
page-header-dataattributes (section, color, order, icon)The bundle can be deployed independently for visual testing before content/extension PRs are merged.