Skip to content

fix(ui): object browser & bulk operations – ui/ux improvements from design review 15/18.05#818

Open
mark-karnaukh-extern-sap wants to merge 12 commits into
mainfrom
mark-ui-improvements-part-2
Open

fix(ui): object browser & bulk operations – ui/ux improvements from design review 15/18.05#818
mark-karnaukh-extern-sap wants to merge 12 commits into
mainfrom
mark-ui-improvements-part-2

Conversation

@mark-karnaukh-extern-sap
Copy link
Copy Markdown
Contributor

@mark-karnaukh-extern-sap mark-karnaukh-extern-sap commented May 21, 2026

Summary

Apply UI/UX improvements to the object browser and bulk action components based on findings from the design review session with Marta Wright on 15/18.05, documented in Figma – Object storage review 15/18.05.

Background

During the design review, Marta identified a set of visual and interaction improvements across the object browser views and related modals. This PR implements those findings.

Scope

This PR covers the object browser and bulk action components only. Changes to the container list view or other sub-components are tracked separately.

Components covered by this review:

Design Reference

  • Figma: Object storage review 15/18.05
  • Reviewer: Marta Wright (User Exp Engineering Specialist, external)
  • Review date: 15/18.05

Notes

  • Cross-referenced Figma comments from Marta before implementation — some items may have been updated or closed since the review
  • Changes remain consistent with the Aurora design system and do not introduce bespoke styling
  • All changes verified against Aurora Juno UI component library
  • Existing tests updated; new snapshot/unit tests added as needed

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

  • Style
    • Refined storage management modal visual design and layout consistency
    • Enhanced error message and form guidance text display throughout the interface
    • Updated destructive action buttons with improved visual distinction
    • Adjusted confirmation prompts and field guidance positioning

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 21, 2026

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: UI/UX improvements to object browser and bulk operations from a design review, with specific scope (15/18.05) indicating this is part of a series.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description check ✅ Passed PR description provides clear summary, scope, background, design reference, and completed checklist items, but lacks detailed changes list and testing instructions.

✏️ 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 mark-ui-improvements-part-2

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.

…ntainer modals

- Remove <Message> component from DeleteObjectModal, DeleteContainerModal,
  EmptyContainerModal, ManageContainerAccessModal, EditContainerMetadataModal
- Replace all Message usages with plain <p> elements using text-theme-error
  (errors) and text-theme-default (informational content)
- Move mutation errors to the top of modal body in ManageContainerAccessModal
  and EditContainerMetadataModal (previously rendered at the bottom of the form)
- Replace native <label><input type="checkbox"> with Juno <Checkbox> in DeleteObjectModal
- Add missing confirmButtonVariant="primary-danger" to DeleteObjectModal
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 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
`@apps/aurora-portal/src/client/routes/_auth/projects/`$projectId/storage/-components/Swift/Containers/DeleteContainerModal.tsx:
- Around line 163-178: The error messages for objectsError and metaError in
DeleteContainerModal are rendered as plain <p> elements and need live/alert
semantics so assistive tech is notified; update the rendering of both error
blocks (the branches that reference objectsError.message and metaError.message)
to use an element with role="alert" and aria-live="assertive" (or
aria-live="polite" if you prefer softer notification) and keep the existing
"text-theme-error" styling and Trans wrapper so the error text is announced when
inserted.

In
`@apps/aurora-portal/src/client/routes/_auth/projects/`$projectId/storage/-components/Swift/Objects/DeleteObjectModal.tsx:
- Line 118: The DeleteObjectModal currently allows the destructive
Confirm/Delete action when metadata fetch fails; update the confirm-button
disable conditions to include the metadata error state so users cannot delete
blindly. In the DeleteObjectModal component, change places that use isLoading ||
isPending (e.g., the disableConfirmButton prop and any
confirmButtonDisabled/primary action checks between lines ~118 and ~168) to use
isLoading || isPending || !!metadataError (or an equivalent check) so the
confirm control is disabled whenever metadataError is truthy and the
confirmation body is suppressed.

In
`@apps/aurora-portal/src/client/routes/_auth/projects/`$projectId/storage/-components/Swift/Objects/EditObjectMetadataModal.tsx:
- Line 447: In EditObjectMetadataModal.tsx, unify the timestamp format tokens
used in the UI: replace the incorrect uppercase minute/token usage (`HH:MM:SS`)
with the correct lowercase minutes/seconds format (`HH:mm:ss`) so both the
helper text (currently showing `Enter a timestamp like "YYYY-MM-DD HH:mm:ss"`)
and the validation/error message(s) (the occurrences around the Trans/validation
strings at the referenced locations) use the same `YYYY-MM-DD HH:mm:ss` format;
update the string literals in the EditObjectMetadataModal component so all UX
text is consistent.

In
`@apps/aurora-portal/src/client/routes/_auth/projects/`$projectId/storage/-components/Swift/Objects/GenerateTempUrlModal.tsx:
- Around line 291-299: The error paragraphs in GenerateTempUrlModal render
dynamic text (generalError and copyError) but lack live-region semantics, so
update the JSX that renders generalError and copyError inside
GenerateTempUrlModal to include ARIA live/alert attributes (for example add
role="alert" and/or aria-live="assertive" on the <p> elements that render
generalError and copyError) so screen readers will announce them when they
appear; ensure the attributes are placed on the exact elements that output the
variables generalError and copyError.
🪄 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: abf809b1-856a-474f-b12f-3eed6a8c8a88

📥 Commits

Reviewing files that changed from the base of the PR and between c87fa70 and b566288.

📒 Files selected for processing (24)
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/DeleteContainerModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/EditContainerMetadataModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/EmptyContainerModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/EmptyContainersModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/EmptyContainersModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/ManageContainerAccessModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/CopyObjectModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/CreateFolderModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/CreateFolderModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteFolderModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteFolderModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteObjectModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteObjectModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteObjectsModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteObjectsModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/EditObjectMetadataModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/EditObjectMetadataModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/GenerateTempUrlModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/MoveRenameObjectModal.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/UploadObjectModal.tsx
  • apps/aurora-portal/src/locales/de/messages.po
  • apps/aurora-portal/src/locales/de/messages.ts
  • apps/aurora-portal/src/locales/en/messages.po
  • apps/aurora-portal/src/locales/en/messages.ts
💤 Files with no reviewable changes (2)
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Objects/DeleteObjectsModal.test.tsx
  • apps/aurora-portal/src/client/routes/_auth/projects/$projectId/storage/-components/Swift/Containers/EmptyContainersModal.test.tsx

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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.

object-storage-ui: ObjectBrowser & BulkActions – UI/UX improvements from design review 15/18.05

5 participants