Skip to content

feat(clavis): design changes first iteration#932

Merged
andypf merged 5 commits into
mainfrom
vlad-clavis-design-changes-first-iteration
Jun 18, 2026
Merged

feat(clavis): design changes first iteration#932
andypf merged 5 commits into
mainfrom
vlad-clavis-design-changes-first-iteration

Conversation

@vlad-schur-external-sap

@vlad-schur-external-sap vlad-schur-external-sap commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Addressed Clavis changes after design review with Marta

Changes Made

  • Introduced nested routing (PCA(Clavis) > Certificate Authority > Certificate)
  • Replaced DataGridHeader with a button aligned to the left
  • Changes custom JSX for CSR and statuses to Juno CodeBlock and Badge components
  • Standardized naming (End-Entity, Self-Signed etc.)
  • Added post-creation navigation to a freshly created CA or Certificate
  • Upgraded CA Badges and Statuses
  • Changed CA and Certificate Table actions (Show/Delete for CA and Show for Certificates)

Related Issues

Testing Instructions

  1. pnpm i
  2. pnpm run test

Checklist

  • I have performed a self-review of my code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have made corresponding changes to the documentation (if applicable).
  • My changes generate no new warnings or errors.

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Added “Show Details” navigation for certificate and CA row menus
    • Redirects to the newly created certificate/PCA details page after successful creation
    • Enhanced breadcrumb trails with optional intermediate navigation
  • UI/UX Improvements

    • Improved certificate CSR and details rendering using a unified code block layout
    • Updated PCA state presentation to include badge-style indicators
    • Standardized “End-Entity” / “Self-Signed” terminology and refreshed German/English translations

Signed-off-by: Vladislav Schur <u.shchur@sap.com>
Signed-off-by: Vladislav Schur <u.shchur@sap.com>
@vlad-schur-external-sap vlad-schur-external-sap requested a review from a team as a code owner June 17, 2026 11:36
@vlad-schur-external-sap vlad-schur-external-sap linked an issue Jun 17, 2026 that may be closed by this pull request
16 tasks
@coderabbitai

coderabbitai Bot commented Jun 17, 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: b41702c0-d98a-489d-97ef-57a389e7b175

📥 Commits

Reviewing files that changed from the base of the PR and between 1d44512 and 6d75ac5.

📒 Files selected for processing (9)
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/$certificateId.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.test.tsx
  • packages/aurora/src/locales/de/messages.po
  • packages/aurora/src/locales/de/messages.ts
  • packages/aurora/src/locales/en/messages.po
  • packages/aurora/src/locales/en/messages.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/$certificateId.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx

📝 Walkthrough

Walkthrough

Adds post-creation navigation to detail pages from modals, introduces an intermediateCrumb breadcrumb tier, replaces CSR display blocks with CodeBlock components, expands STATE_CONFIG with per-state Badge rendering, enables "Show Details" row menu actions, and normalises hyphenated copy across modals, tests, and locale files.

Changes

PCA UI Enhancements

Layer / File(s) Summary
Route schema extension and intermediate breadcrumb rendering
packages/aurora/src/client/routes/routeInfo.ts, packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx
CrumbSchema gains useParentTitleAsLabel and RouteInfoSchema gains intermediateCrumb. ProjectInfoBox inserts a clickable or label-only intermediate crumb before the active leaf crumb when the new field is present.
STATE_CONFIG badges and CodeBlock CSR display in PcaDetailsView
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.test.tsx
PcaDisplayState gains a badge field; STATE_CONFIG provides per-state Badge components and icons. PcaDetailsView switches from an inline badge to STATE_CONFIG[pca.state].badge and replaces the div/divider CSR block with a CodeBlock.
Post-creation navigation in CreatePcaModal and IssueEndEntityCertificateModal
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.tsx, ...CreatePcaModal.test.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueEndEntityCertificateModal.tsx, ...IssueEndEntityCertificateModal.test.tsx
Both modals add useNavigate; submit handlers capture the created resource id, close the modal, then navigate to the resource's detail route. Tests add navigation mocks and assert the destination path and params.
Certificate detail route: intermediate breadcrumb and CodeBlock CSR
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/$certificateId.tsx
The route staticData gains an intermediateCrumb pointing to the parent PCA route. The CSR rendering block is replaced with a CodeBlock. Unused Divider and icon imports are removed.
Show Details row actions and list container layout
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx, packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/PcaListContainer.tsx
"Show Details" popup menu items are added to PcaTableRow and replace the disabled "Create Certificate" in PcaCertificatesTableRow. List containers compute columnsLength once and wrap action buttons in a right-aligned Stack.
Copy normalisation: hyphenated labels, tests, and locales
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueSelfSignedCertificateModal.tsx, ...IssueEndEntityCertificateModal.tsx, ...PcaCertificatesListContainer.test.tsx, ...PcaCertificatesTableRow.test.tsx, ...PcaTableRow.test.tsx, ...constants.test.tsx, packages/aurora/src/locales/*/messages.po, packages/aurora/docs/0011_clavis.md
Modal titles, button labels, test assertions, and locale entries are updated to hyphenated "End-Entity" and "Self-Signed" forms. The unused "Create Certificate" locale entry is removed from both en and de catalogs.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Modal as CreatePcaModal / IssueEndEntityCertificateModal
  participant TRPC as mutateAsync (tRPC)
  participant Router as useNavigate

  User->>Modal: Submit form
  Modal->>TRPC: await mutateAsync(formData)
  TRPC-->>Modal: { id: createdId }
  Modal->>Modal: handleClose()
  Modal->>Router: navigate({ to: detailRoute, params: { projectId, pcaId / certificateId } })
  Router-->>User: Detail page rendered with intermediate breadcrumb
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • cobaltcore-dev/aurora-dashboard#774: Adds BFF endpoints/schemas for certificate creation that the client modals invoke, and supplies the created certificate/PCA ids used for navigation.
  • cobaltcore-dev/aurora-dashboard#855: Refactored the ProjectInfoBox breadcrumb construction, which this PR extends with the intermediateCrumb insertion logic.
  • cobaltcore-dev/aurora-dashboard#859: Implements the initial IssueEndEntityCertificateModal and READY/AWAITING_CERTIFICATE flow that this PR updates with navigation, hyphenated copy, and test coverage.

Suggested reviewers

  • TilmanHaupt
  • mark-karnaukh-extern-sap
  • andypf
  • KirylSAP

🐇 Hop hop, the certificates gleam,
A "Show Details" click fulfills the dream!
End-Entity, Self-Signed — hyphens in line,
The breadcrumb now shows each step so fine.
After creating, we navigate with glee,
A CodeBlock displays the CSR for me! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main objective of design changes to the Clavis component following a design review, which aligns with the substantial modifications across UI components, routing, and styling throughout the changeset.
Description check ✅ Passed The description comprehensively covers the summary, changes made, related issues, testing instructions, and a completed checklist, matching the required template structure with substantive content in all major sections.
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 vlad-clavis-design-changes-first-iteration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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: 4

🧹 Nitpick comments (1)
packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx (1)

89-103: 💤 Low value

Consider adding an explicit array bounds check for robustness.

Accessing projectMatches[projectMatches.length - 2] at line 91 will return undefined if the array has fewer than two elements. While the optional chaining at line 92 prevents a crash, an explicit guard would make the intent clearer and prevent silent label fallback in unexpected route hierarchies.

🛡️ Suggested defensive guard
     if (info.intermediateCrumb) {
       const { to: iTo, useParamAsLabel: iParam, useParentTitleAsLabel } = info.intermediateCrumb
-      const parentMatch = projectMatches[projectMatches.length - 2]
+      const parentMatch = projectMatches.length >= 2 ? projectMatches[projectMatches.length - 2] : undefined
       const parentTitle = parentMatch?.meta?.find((m) => m != null && "title" in m)?.title as string | undefined
🤖 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 `@packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx` around
lines 89 - 103, The code accesses projectMatches array at index
projectMatches.length - 2 without verifying the array has sufficient length,
which could result in undefined parentMatch and silent label fallback behavior.
Add an explicit array bounds check before the assignment of parentMatch to
ensure projectMatches has at least 2 elements; if the condition in the
intermediateCrumb block is true, verify projectMatches.length is greater than or
equal to 2 before proceeding with the parentMatch lookup and subsequent logic.
🤖 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
`@packages/aurora/src/client/routes/_auth/projects/`$projectId/services/pca/-components/-table/constants.tsx:
- Around line 14-37: The STATE_CONFIG object contains hard-coded English strings
in the text property and Badge component text props that will not be translated
for non-English locales. Replace all hard-coded string literals in the text
fields and badge text props within the STATE_CONFIG object (CREATING,
AWAITING_CERTIFICATE, READY, FAILED, UNEXPECTED states) with Lingui macros
following the same localization pattern used in TABLE_COLUMNS elsewhere in this
file. This will ensure these user-facing strings are extractable and
translatable.

In
`@packages/aurora/src/client/routes/_auth/projects/`$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx:
- Around line 104-106: The heading prop in the CodeBlock component contains a
hardcoded English string "Certificate ..." that is not wrapped in Lingui's
translation system, preventing it from being translated. Wrap the heading string
using Lingui's `t` function or `Trans` component (whichever is already in use
throughout the PcaDetailsView component) to make this user-facing text
localizable and consistent with the rest of the view.

In
`@packages/aurora/src/client/routes/_auth/projects/`$projectId/services/pca/$pcaId/$certificateId.tsx:
- Around line 23-27: The intermediateCrumb object's to property contains a
trailing slash in the route path (/projects/$projectId/services/pca/$pcaId/),
which is inconsistent with how the same route is referenced elsewhere in the
file (without a trailing slash). Remove the trailing slash from the to property
in the intermediateCrumb object to ensure consistent path formatting across the
application and prevent potential routing issues based on router configuration.

In `@packages/aurora/src/locales/de/messages.po`:
- Around line 1693-1700: The German locale file (de/messages.po) contains
English text in the msgstr fields for certificate-related messages instead of
proper German translations. Update the msgstr values for "Issue End-Entity
Certificate" (around line 1694) and "Issuing End-Entity Certificate..." (around
line 1700) to use German translations instead of the English text. For each
msgid entry, replace the English msgstr with an appropriate German translation
that conveys the same meaning to German-speaking users.

---

Nitpick comments:
In `@packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx`:
- Around line 89-103: The code accesses projectMatches array at index
projectMatches.length - 2 without verifying the array has sufficient length,
which could result in undefined parentMatch and silent label fallback behavior.
Add an explicit array bounds check before the assignment of parentMatch to
ensure projectMatches has at least 2 elements; if the condition in the
intermediateCrumb block is true, verify projectMatches.length is greater than or
equal to 2 before proceeding with the parentMatch lookup and subsequent logic.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 634fc5ac-de7b-47eb-b7ef-00fceb8dc6d8

📥 Commits

Reviewing files that changed from the base of the PR and between 33ac5e9 and 1d44512.

📒 Files selected for processing (21)
  • packages/aurora/docs/0011_clavis.md
  • packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/$certificateId.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueEndEntityCertificateModal.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueEndEntityCertificateModal.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueSelfSignedCertificateModal.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.test.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.tsx
  • packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/PcaListContainer.tsx
  • packages/aurora/src/client/routes/routeInfo.ts
  • packages/aurora/src/locales/de/messages.po
  • packages/aurora/src/locales/de/messages.ts
  • packages/aurora/src/locales/en/messages.po
  • packages/aurora/src/locales/en/messages.ts

Comment thread packages/aurora/src/locales/de/messages.po

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 PR iterates on the Clavis (PCA) UX by refining PCA/certificate pages (layout + actions), improving breadcrumbs for nested certificate routes, and standardizing certificate-related copy in i18n catalogs.

Changes:

  • Replaced custom CSR/certificate display blocks with CodeBlock on PCA details and certificate detail pages.
  • Added support for an intermediateCrumb (and useParentTitleAsLabel) to generate better breadcrumbs for nested detail routes.
  • Updated PCA list/cert list actions (e.g., “Show Details”, “Issue End-Entity Certificate”), added post-create navigation, and refreshed PCA state display (badge + icon/text).

Reviewed changes

Copilot reviewed 19 out of 21 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/aurora/src/locales/en/messages.ts Updated compiled Lingui catalog for revised PCA/certificate strings.
packages/aurora/src/locales/en/messages.po Updated English msgids/strings (e.g., “End-Entity”, removed obsolete entries).
packages/aurora/src/locales/de/messages.ts Updated compiled German Lingui catalog for revised PCA/certificate strings.
packages/aurora/src/locales/de/messages.po Updated German msgids/strings (e.g., “End-Entity”, removed obsolete entries).
packages/aurora/src/client/routes/routeInfo.ts Extended route metadata schema to support intermediateCrumb + useParentTitleAsLabel.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/$certificateId.tsx Added intermediate crumb metadata and switched CSR rendering to CodeBlock.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.tsx Switched certificate/CSR rendering to CodeBlock and updated state display to use badge.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaDetailsView.test.tsx Updated test strings for “Self-Signed” wording.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.tsx UI tweaks: button label update (“End-Entity”), layout spacing, minor columnsLength refactor.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/PcaCertificatesListContainer.test.tsx Updated tests to match new “End-Entity” wording and modal text.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-table/PcaCertificatesTableRow.tsx Replaced disabled “Create Certificate” menu item with “Show Details”.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueSelfSignedCertificateModal.tsx Updated modal title wording (“Self-Signed”).
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueEndEntityCertificateModal.tsx After issuing a certificate, navigate directly to the certificate detail route; updated wording.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/$pcaId/-components/-modals/IssueEndEntityCertificateModal.test.tsx Mocked navigation and asserted redirect to the new certificate detail route.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/PcaListContainer.tsx Layout tweaks and minor columnsLength refactor; import ordering.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.tsx Added “Show Details” menu item to PCA table row actions.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/constants.tsx Refreshed PCA state presentation (new icons/text + badge field).
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.tsx After creating a CA, navigate directly to the CA detail route.
packages/aurora/src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.test.tsx Mocked navigation and asserted redirect to the new CA detail route.
packages/aurora/src/client/components/ProjectView/ProjectInfoBox.tsx Implemented breadcrumb insertion logic for intermediateCrumb.
packages/aurora/docs/0011_clavis.md Updated docs to match “Issue End-Entity Certificate” wording.

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

Signed-off-by: Vladislav Schur <u.shchur@sap.com>
Signed-off-by: Vladislav Schur <u.shchur@sap.com>
Signed-off-by: Vladislav Schur <u.shchur@sap.com>

@TilmanHaupt TilmanHaupt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Good solution for now

@andypf andypf merged commit cce1fbe into main Jun 18, 2026
22 checks passed
@andypf andypf deleted the vlad-clavis-design-changes-first-iteration branch June 18, 2026 11:39
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.

[Task](clavis): UI/UX questions and refinements

4 participants