Skip to content

feat(ui): Savanna and Cloud Classic theme, scoped so other docs stay the same - #47

Merged
Tushar-TG-14 merged 13 commits into
tigergraph:mainfrom
ngarakapati:feat/savanna-docs-and-ui
Aug 26, 2026
Merged

feat(ui): Savanna and Cloud Classic theme, scoped so other docs stay the same#47
Tushar-TG-14 merged 13 commits into
tigergraph:mainfrom
ngarakapati:feat/savanna-docs-and-ui

Conversation

@ngarakapati

Copy link
Copy Markdown
Contributor

Summary

This updates the shared Antora UI so Savanna and Cloud Classic pages get a new look, while every other product (Server, GraphStudio, GSQL, Insights, and the rest) keeps the current default theme.

The new look only turns on when the page is Savanna or Cloud Classic. Those pages get a theme-cloud class. All of the new colors, fonts, nav pills, video player, and “Copy page” actions are tied to that class. If a page is not Savanna or Cloud Classic, none of this styling runs.

What readers will notice on Savanna and Cloud Classic

  • New typography (Inter, Outfit, JetBrains Mono) and spacing
  • Sidebar nav with clearer current-page highlighting
  • Page actions next to the title: copy the page as Markdown, or open it in ChatGPT / Claude / Cursor
  • Embedded videos that fill the content width and use a play button overlay
  • The extra “explore other products” drawer in the left nav is hidden here, because the top Products menu already covers that
  • “Edit this page” is hidden on these two products (it still shows on other docs)

What does not change for other docs

  • Shared files like doc.css, nav.css, and vars.css are left as they are on main
  • Other products still use Roboto, the old nav, and “Edit this page”
  • One UI bundle (build/ui-bundle.zip) is used for the whole docs site. We do not need a separate ui-bundle-cloud.zip anymore, because the theme is scoped in CSS instead of a second zip

Other changes

  • Local preview output, pack leftovers, logs, and editor files are gitignored. build/ui-bundle.zip is still tracked so production can fetch it.
  • The gulp build keeps CSS variables at runtime so the cloud theme can override them only on Savanna/Classic pages.

Merge order

Merge this PR first, then merge the companion cloud-docs PR. Production builds fetch build/ui-bundle.zip from tigergraph/antora-ui on main.

This replaces the older closed PR: #45

Test plan

  • npx gulp build && npx gulp bundle:pack succeeds
  • Preview with cloud-docs antora-playbook.local.yml
  • Savanna: new theme, nav, page actions, video overlay on the database secret page
  • Cloud Classic: same theme, no broken layout
  • A non-Savanna/Classic page (or a page without theme-cloud) still looks like today’s default docs
  • Confirm build/ui-bundle.zip is the bundle cloud-docs points at (not ui-bundle-cloud.zip)

Introduce the theme-cloud stylesheet for Savanna and Cloud Classic, switch
docs typography to Inter, Outfit, and JetBrains Mono, refine navigation and
tabs, add page-level copy and view-in-LLM actions, and rebuild ui-bundle.zip.
Add videoblock.css and a 09-video-player.js click-to-play overlay, wire
videoblock.css into site.css, and rebuild build/ui-bundle.zip so the
theme ships the new video styling and behavior.
Remove the 760px cap so embedded videos use the full article column and
rebuild ui-bundle.zip for production.
The cloud/Savanna theme now lives in src/ on main so CI can rebuild the
cloud bundle, but other product docs still consume build/ui-bundle.zip.
Restore that shared default bundle to the pre-theme build; only
build/ui-bundle-cloud.zip carries the cloud theme.
On every push to main, build the UI with gulp, refresh
build/ui-bundle-cloud.zip from source, commit it back to main (with
[skip ci] to avoid loops), then ping the Netlify build hook so cloud-docs
rebuilds with the latest Savanna/Cloud theme. The shared ui-bundle.zip is
left untouched so other product docs are unaffected.
Harden the cloud bundle workflow so it can never leak the cloud theme
into the shared build/ui-bundle.zip that other product docs consume:
restore the neutral ui-bundle.zip after gulp rebuilds it, stage only
ui-bundle-cloud.zip by explicit path, and add a tripwire that fails the
run if the shared bundle is ever staged.
Make the gulp bundle filename configurable via UI_BUNDLE_FILENAME so CI
emits build/ui-bundle-cloud.zip directly instead of building
ui-bundle.zip and copying it. The shared ui-bundle.zip is never produced
by the cloud build, so other product docs stay on their current look.
Default behavior (ui-bundle.zip) is unchanged.
…bundle

Move cloud-specific styling into theme-cloud.css, add Roboto typefaces,
and drop the separate ui-bundle-cloud.zip gulp/CI path so this branch
publishes the default ui-bundle.zip.
Scope page-actions CSS and JS to .theme-cloud, load Inter/Outfit only
from the cloud stylesheet, and use one is-cloud-theme helper so the
shared default bundle stays unchanged for every other component.
Keep build/ui-bundle.zip tracked so cloud-docs can still fetch the
published bundle; ignore everything else gulp leaves in build/.
@ngarakapati

Copy link
Copy Markdown
Contributor Author

Closing this. A new PR will be opened from ngarakapati:main instead of feat/savanna-docs-and-ui.

@ngarakapati ngarakapati reopened this Aug 26, 2026
Savanna notes use page-role release-notes, so the cloud theme selectors must match that class.
@ngarakapati

Copy link
Copy Markdown
Contributor Author

@Tushar-TG-14 Please review this and merge. Thanks.

@Tushar-TG-14

Tushar-TG-14 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

@ngarakapati
Here are a few doubts I have before we merge this PR:

  1. Roboto dependency: The PR removes typeface-roboto and typeface-roboto-mono from the dependencies (package.json / package-lock.json), but the existing/default theme for Server, GSQL, GraphStudio, Insights, etc. is expected to continue using Roboto. Could you confirm where Roboto is now sourced from and that removing these dependencies will not affect the existing products?

  2. Regression testing: Since this is a shared antora-ui bundle, can we confirm that the existing products have been regression-tested after these changes, especially navigation, fonts, header, search, and overall page layout?

  3. Clean build: Since the PR changes dependencies, font handling, PostCSS processing, and the generated ui-bundle.zip, can we confirm that a clean npm install followed by a production build and bundle generation has been tested successfully?

  4. Unused helper: I noticed has-current-page.js is added in this PR, but I don't see it being used in the changed templates or JavaScript. Is this required for the companion cloud-docs PR, or can it be removed if it is no longer needed?

  5. Markdown/LLM links: The new page actions generate the Markdown URL by converting .html to .md. Can we confirm that the corresponding .md pages will be available for all supported Savanna and Cloud Classic pages/versions in production?

  6. AI integrations: The new page actions add direct integrations for ChatGPT, Claude, and Cursor. Can we confirm that these links/deep links are intentionally supported for production and have been tested with the expected browsers/environments?

@ngarakapati

ngarakapati commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author
  1. Roboto is still in the bundle. I did not remove typeface-roboto or typeface-roboto-mono. Those packages are still in package.json, and site.css still loads typeface-roboto.css / typeface-roboto-mono.css the same way as today. The default theme still uses Roboto in vars.css. The new fonts (Inter, Outfit, JetBrains Mono) only apply on Savanna and Cloud Classic, via the theme-cloud class. Server, GSQL, GraphStudio, Insights, etc. never get that class, so they should keep Roboto.
  2. I previewed Savanna and Cloud Classic with this UI. We did not rebuild Server, GSQL, GraphStudio, or Insights against the new zip. The cloud look is scoped to theme-cloud only. Shared files like vars.css, doc.css, and nav.css were left as they are on main. That was the intent so other products stay on the current theme, but a pass on those products with the new ui-bundle.zip would still be good before merge.
  3. I ran gulp build and gulp bundle:pack and updated ui-bundle.zip. We have not done a fully clean npm install + gulp bundle on the CI Node version in this round (local Node 26 also hits lint issues in the old gulp/PostCSS stack). Happy to run that on the usual Node version if you want it as a merge check.
  4. has-current-page.js is leftover and not used by any template or JS. Cloud-docs does not need it. I can remove it from this PR.
  5. The page actions swap .html for .md. The cloud-docs playbook still generates those .md files for every Savanna and Cloud Classic page in this repo (version main). That works for this playbook’s output / Netlify preview. It only shows up on tigergraph.com/docs if production also runs that markdown extension. Other products are not getting .md pages from this PR.
  6. Yes, those links are intentional for Savanna and Cloud Classic only. They open ChatGPT, Claude, and Cursor in the browser with a prompt that points at the page’s .md URL. They do not run on other products.

@Tushar-TG-14

has-current-page.js was unused. npm install now matches package.json so typeface-roboto is in the lock again, and the packed zip still includes Roboto plus the cloud fonts.
@ngarakapati

Copy link
Copy Markdown
Contributor Author
  1. I ran a clean npm install and rebuilt the production zip (gulp build + gulp bundle:pack). npm ci works now. The lockfile had dropped typeface-roboto even though it was still in package.json, which is why a clean install was failing. That’s restored, and the zip includes Roboto for the default theme plus the Savanna/Classic fonts. Full gulp bundle still fails on CSS lint because of the old stylelint/PostCSS setup. That’s existing gulp tooling, not this theme change. The zip itself builds.

  2. Removed has-current-page.js. Nothing was using it, and cloud-docs doesn’t need it.

@Tushar-TG-14

Copy link
Copy Markdown
Collaborator

@ngarakapati Thanks, that addresses the build/dependency concerns.

One remaining check from my side: can we do a quick validation of at least one existing non-Cloud product with the new ui-bundle.zip before merge, to confirm the default theme, navigation, fonts, and Edit this page behavior are unchanged? Since this is the shared production bundle, I'd prefer to have that regression check explicitly confirmed.

For the page actions, can we confirm that the production cloud-docs deployment will generate and publish the .md version of every Savanna and Cloud Classic page? Since Copy page and the ChatGPT/Claude/Cursor actions depend on that URL, we want to make sure this isn't only true for the current Netlify preview/playbook.

@ngarakapati

ngarakapati commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

@Tushar-TG-14 I did that check with GSQL against this ui-bundle.zip.

GSQL stays on the current look. No theme-cloud class, still Roboto, classic left nav, and Edit this page is still there. None of the new page actions or cloud nav show up. On the same build, Savanna and Cloud Classic do get the new theme, so the split is working as expected.

On the .md files: the cloud-docs playbook already generates a .md copy for every Savanna and Cloud Classic page. That's in the committed antora-playbook.yml, so once the companion cloud-docs PR is merged, the production Netlify build from that repo will publish those URLs. Copy page and the ChatGPT / Claude / Cursor links only run on those two products, and they point at those .md files. Other docs are not getting markdown pages from this.

@Tushar-TG-14
Tushar-TG-14 merged commit 75b4b53 into tigergraph:main Aug 26, 2026
1 check failed
@ngarakapati
ngarakapati deleted the feat/savanna-docs-and-ui branch September 5, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants