Skip to content

feat(docs): documentation portal UI improvements#947

Merged
nunoeufrasio merged 26 commits into
mainfrom
feat/documentation-ui-improvements
Jun 15, 2026
Merged

feat(docs): documentation portal UI improvements#947
nunoeufrasio merged 26 commits into
mainfrom
feat/documentation-ui-improvements

Conversation

@nunoeufrasio

Copy link
Copy Markdown
Contributor

What

A set of UI/UX improvements to the public Documentation (docs) portal — landing page, article pages, the docs sidebar, and topic search.

Changes

Layout & spacing

  • Constrain documentation page containers to 1024px max-width (landing + article)
  • 32px side padding across docs pages; 32px top padding on the landing
  • App footer added to all docs pages, constrained to the 1024px content width, with a 100px gap from content

Landing page

  • Header restyled to the standard app typography (Roboto Slab Light); title renamed to "LFX Documentation"
  • Full-width search bar
  • Topic cards: icon tiles aligned with the app menu (lens) icons, reordered by importance, recolored (dark-blue Dashboard, blue primary group, violet secondary, gray tertiary), angle-right chevrons
  • "Groups" topic renamed (was "My Groups")

Article pages

  • Sticky top bar combining breadcrumb + search, with a back button (browser history)
  • Section titles styled at h4 scale (32px top / 12px bottom margins); larger header→body gap
  • "More in this topic" moved into a sticky right rail (1/4 width) with a left divider
  • Search dropdown topic chips now show proper sentence-case topic names

Sidebar

  • Documentation icon goes solid when active (matching the lens buttons)
  • Lens buttons no longer stay highlighted while on docs pages

Notes

  • No JIRA ticket — design-session UI polish.
  • Touches packages/shared (docs taxonomy order constant) and the docs build script (build-manifest.mjs), plus the shared lens-switcher.
  • ~20 commits, small diff (~270 lines).

Verification

All changes verified live in the running app via browser inspection (computed styles, layout measurements, sticky behavior, hover states). Preflight passed: license headers, format, lint, build, protected files, DCO + GPG signing.

🤖 Generated with Claude Code

Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
Copilot AI review requested due to automatic review settings June 15, 2026 17:12
@nunoeufrasio nunoeufrasio requested a review from a team as a code owner June 15, 2026 17:12
@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e4b3a2a1-c560-4fde-90b4-0c05056aa7b6

📥 Commits

Reviewing files that changed from the base of the PR and between fa79fbf and 5a3e77d.

📒 Files selected for processing (2)
  • apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.html
  • apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.html

Walkthrough

Renames "LFX Self Serve Documentation" to "LFX Documentation" across all page titles and branding strings, reorders the docs taxonomy, restructures the article page into a two-column layout with a sticky top bar and browser-history back button, adds per-topic icon/color visuals to topic cards, enhances docs search with a fullWidth input and manifest-driven topic labels, adds an lfx-footer to the docs layout, and fixes lens-switcher active-state logic for docs mode.

Changes

LFX Docs UI Overhaul

Layer / File(s) Summary
Taxonomy order and brand rename
packages/shared/src/constants/docs.constant.ts, apps/lfx-one/scripts/lib/build-manifest.mjs, apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.ts, apps/lfx-one/src/app/modules/docs/pages/docs-not-found/docs-not-found.component.ts, apps/lfx-one/src/app/modules/docs/components/docs-sidebar-nav/docs-sidebar-nav.component.html, docs/user/committees/index.md
Reorders DOCS_TAXONOMY_ORDER in the shared package and build script; replaces all "LFX Self Serve Documentation" title strings with "LFX Documentation" across the build script, page components, sidebar aria-label, and user-facing docs front matter.
DocsSearch fullWidth input and manifest-driven topic labels
apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.ts, apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.html, apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.html
DocsSearchComponent injects DocsManifestService to build a slug→name map, adds a fullWidth signal input, introduces topicLabelRecord for sentence-cased badge text, and conditionally applies max-w-xl; the landing page passes [fullWidth]="true" while updating its title copy and layout classes.
DocsTopicCard per-topic icon and color visuals
apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.ts, apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.html
Adds a topicVisuals mapping and iconClass/containerClass computed properties to DocsTopicCardComponent; updates the card template to use the new bindings and swaps the chevron icon from fa-arrow-right to fa-angle-right.
DocsArticle two-column layout, back navigation, and h2 typography
apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.ts, apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.html, apps/lfx-one/tailwind.config.js
Injects Location and adds goBack(); restructures the article template into a responsive two-column layout with a sticky top bar (back button, breadcrumb, search) and a sticky siblings right rail; reduces the prose h2 font size from 1.75 rem to 1.125 rem and adjusts margins.
DocsLayout footer, schema, and lens-switcher docs active state
apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.ts, apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.html, apps/lfx-one/src/app/shared/components/lens-switcher/lens-switcher.component.html
Adds CUSTOM_ELEMENTS_SCHEMA to DocsLayoutComponent and inserts an lfx-footer custom element with cookie tracking; updates content-wrapper padding; fixes the lens-switcher isActive condition to gate on !isDocsActive() for both mobile and desktop items, and conditionally renders the solid vs light book icon based on isDocsActive().

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • linuxfoundation/lfx-self-serve#713: Directly modifies lens-switcher.component.html with the same isDocsActive() active-state logic and docs book icon variant switching that this PR also changes.

Suggested labels

enhancement

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(docs): documentation portal UI improvements' directly and accurately reflects the main changes—a comprehensive set of UI/UX improvements to the documentation portal across multiple pages and components.
Description check ✅ Passed The description is well-detailed and directly related to the changeset, covering layout updates, landing page restyling, article page improvements, sidebar modifications, and verification steps that align with the actual changes made.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/documentation-ui-improvements

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates the public /docs portal UI to better align with the main app’s visual language and improve navigation/discoverability (layout constraints, search prominence, topic tile visuals, and article-page structure).

Changes:

  • Standardize docs layout spacing with a 1024px max width, consistent padding, and an app footer across docs pages.
  • Improve docs landing + topic tiles (typography, full-width search option, icon/color system, topic label rename “My Groups” → “Groups”).
  • Refine article pages (sticky breadcrumb+search top bar with back button, sticky “More in this topic” rail) and make search topic chips show sentence-cased topic names.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/shared/src/constants/docs.constant.ts Reorders DOCS_TAXONOMY_ORDER to match the updated landing-page topic priority.
docs/user/committees/index.md Renames topic title from “My Groups” to “Groups”.
apps/lfx-one/tailwind.config.js Adjusts typography styling for rendered markdown h2 section headings (visual scale + margins).
apps/lfx-one/src/app/shared/components/lens-switcher/lens-switcher.component.html Prevents lens buttons from appearing active while on docs pages; uses solid docs icon when docs is active.
apps/lfx-one/src/app/modules/docs/pages/docs-not-found/docs-not-found.component.ts Updates docs page title branding to “LFX Documentation”.
apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.ts Updates landing page title branding to “LFX Documentation”.
apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.html Applies new max-width/padding/typography and enables full-width search layout.
apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.ts Adds back-navigation via Location.back() and updates page-title branding.
apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.html Introduces sticky top bar (breadcrumb + search + back button) and sticky right rail for siblings.
apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.ts Adds per-topic visual mapping (icons + container color classes) and computed bindings.
apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.html Updates topic-card layout and chevron icon; uses computed icon/container classes.
apps/lfx-one/src/app/modules/docs/components/docs-sidebar-nav/docs-sidebar-nav.component.html Updates docs branding aria-label and uses solid icon when docs is active.
apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.ts Adds fullWidth input and resolves topic slugs to display names for result chips.
apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.html Makes max-width optional and renders sentence-cased topic labels in result chips.
apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.ts Adds CUSTOM_ELEMENTS_SCHEMA to support custom elements in the docs layout.
apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.html Applies consistent padding, adds constrained app footer, and updates docs shell spacing.
apps/lfx-one/scripts/lib/build-manifest.mjs Keeps taxonomy order + “LFX Documentation” root title in sync with UI changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 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 `@docs/user/committees/index.md`:
- Line 2: Update Line 14 in the body copy to maintain terminology consistency
with the page title changed on Line 2. The sentence currently references "My
Groups" but should use consistent terminology with the "Groups" title
established at the top of the page. Review Line 14 and adjust the phrasing to
align with the new "Groups" terminology throughout the document.
🪄 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: 5d23ebac-417f-44c6-a770-a73f7b03bca7

📥 Commits

Reviewing files that changed from the base of the PR and between eeffb7a and fa79fbf.

📒 Files selected for processing (17)
  • apps/lfx-one/scripts/lib/build-manifest.mjs
  • apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.html
  • apps/lfx-one/src/app/layouts/docs-layout/docs-layout.component.ts
  • apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.html
  • apps/lfx-one/src/app/modules/docs/components/docs-search/docs-search.component.ts
  • apps/lfx-one/src/app/modules/docs/components/docs-sidebar-nav/docs-sidebar-nav.component.html
  • apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.html
  • apps/lfx-one/src/app/modules/docs/components/docs-topic-card/docs-topic-card.component.ts
  • apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.html
  • apps/lfx-one/src/app/modules/docs/pages/docs-article/docs-article.component.ts
  • apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.html
  • apps/lfx-one/src/app/modules/docs/pages/docs-landing/docs-landing.component.ts
  • apps/lfx-one/src/app/modules/docs/pages/docs-not-found/docs-not-found.component.ts
  • apps/lfx-one/src/app/shared/components/lens-switcher/lens-switcher.component.html
  • apps/lfx-one/tailwind.config.js
  • docs/user/committees/index.md
  • packages/shared/src/constants/docs.constant.ts

Comment thread docs/user/committees/index.md
Copilot AI review requested due to automatic review settings June 15, 2026 18:20
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown

🚀 Deployment Status

Your branch has been deployed to: https://ui-pr-947.dev.v2.cluster.linuxfound.info

Deployment Details:

  • Environment: Development
  • Namespace: ui-pr-947
  • ArgoCD App: ui-pr-947

The deployment will be automatically removed when this PR is closed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated no new comments.

@MRashad26 MRashad26 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review + code-standards-enforcer audit (report-only). 22 commits (20 feature + 2 merge commits from rebasing onto main), all signed off by Nuno Eufrásio. No Claude or Cursor co-author trailers. ✅

🔒 Secrets / critical-constants check

Pure UI polish — no auth, API, or data changes. No secrets. ✅

Overview

Polishes the /docs portal: 1024px max-width containers, 32px padding, Roboto Slab Light headers, per-topic icon tiles with importance-tiered colors, sticky top bar (breadcrumb + back + search) on article pages, sticky right rail for "More in this topic", full-width landing search, sentence-cased topic chips in search results, solid docs icon when active, lens buttons cleared on docs pages, taxonomy reordered and ## Test plan — the PR body uses ## Verification (browser-verified, no checklist), which is not a test plan. ✅

Correctness — verified ✅

  • containerClass and iconClass are computed() signals; calling them in templates is correct pattern
  • topicVisuals Record is a plain constant; accessed inside computed() via property lookup — correct
  • isDocsActive() gate in lens-switcher correctly prevents the active-lens highlight from firing while on docs pages
  • Location.back() in goBack() is the Angular-idiomatic browser-history navigation; injecting Location from @angular/common is correct
  • CUSTOM_ELEMENTS_SCHEMA in docs-layout is the correct approach for consuming <lfx-footer> as an external web component (not an Angular component)
  • DOCS_TAXONOMY_ORDER updated in sync in both packages/shared/src/constants/docs.constant.ts (Angular runtime) and apps/lfx-one/scripts/lib/build-manifest.mjs (build-time Node script that can't import the TS package) — duplication is pre-existing and intentional
  • [innerHTML]="a.bodyHtml" pre-existing; Angular's DomSanitizer sanitizes innerHTML bindings by default

Code Standards Audit (~/LFX/code-enforcer-agent.md)

🔴 Critical:

  • docs-search.component.html:48{{ topicLabel(hit.topic) }} is a component method call in a template interpolation. CLAUDE.md rule: no functions in HTML templates — only signals, computed values, or pipes. (see inline)

🟡 Warning: none.

🔵 Info:

  • topicNames is a plain Map built at construction time from this.manifest.getTopics(). This works because DocsManifestService returns a stable synchronous list, but it bypasses Angular's reactivity — if the manifest ever becomes async or signal-based, this would be stale. For consistency with the rest of the codebase, consider wrapping it as a computed() signal.

✅ Correctly followed: computed() signals for iconClass/containerClass/articleCountLabel, ReactiveFormsModule for the search FormControl, standalone components, no CommonModule, DatePipe imported directly, no effect(), Location for routing, MIT headers on changed files, kebab-case filenames, signed-off commits, no co-author trailers, no test plan.

Test coverage

No automated tests added. The topicLabel sentence-case logic and the topicVisuals fallback path are simple pure-function candidates.

Verdict: FAIL (one critical template violation)

Fix the topicLabel method call in the template (see inline) before merging.

Address review comment from @MRashad26:

- docs-search.component: replace the topicLabel() method call in the
  template with a computed topicLabelRecord and indexed property access,
  per the no-functions-in-templates rule (frontend-checklist #4).

Resolves 1 review thread.

Signed-off-by: Nuno Eufrasio <nmeufrasio@gmail.com>
@nunoeufrasio

Copy link
Copy Markdown
Contributor Author

Review Feedback Addressed

Commit: 5a3e77d9

Changes Made

  • docs-search.component.ts / .html: replaced the topicLabel() template method call with a computed topicLabelRecord + indexed property access ({{ topicLabelRecord()[hit.topic] ?? hit.topic }}), per frontend-checklist ci: added github owners and reviewers #4 — no functions in templates. (per @MRashad26)

Threads Resolved

1 of 1 unresolved thread addressed. Branch was also rebased onto the latest main (picked up #948, #941). Validated: lint + build pass.

Copilot AI review requested due to automatic review settings June 15, 2026 19:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings June 15, 2026 22:22
@nunoeufrasio nunoeufrasio merged commit 34b85cb into main Jun 15, 2026
12 checks passed
@nunoeufrasio nunoeufrasio deleted the feat/documentation-ui-improvements branch June 15, 2026 22:23
@github-actions

Copy link
Copy Markdown

🧹 Deployment Removed

The deployment for PR #947 has been removed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 17 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants