Skip to content

Design improvements#6372

Merged
helloanoop merged 1 commit intousebruno:mainfrom
naman-bruno:design-improvments
Dec 10, 2025
Merged

Design improvements#6372
helloanoop merged 1 commit intousebruno:mainfrom
naman-bruno:design-improvments

Conversation

@naman-bruno
Copy link
Collaborator

@naman-bruno naman-bruno commented Dec 10, 2025

fixes:

  • tabs design fix
  • remove bg from workspace collection card
  • auto focus on sidebar for examples and collection
  • example tab style
  • fix tooltip and input click on workspace create modal

Contribution Checklist:

  • I've used AI significantly to create this pull request
  • The pull request only addresses one issue or adds one feature.
  • The pull request does not introduce any breaking changes
  • I have added screenshots or gifs to help explain the change if applicable.
  • I have read the contribution guidelines.
  • Create an issue and link to the pull request.

Note: Keeping the PR small and focused helps make it easier to review and merge. If you have multiple changes you want to make, please consider submitting them as separate pull requests.

Publishing to New Package Managers

Please see here for more information.

Summary by CodeRabbit

  • New Features

    • Examples automatically scroll into view when activated
    • Collections automatically scroll into view when focused
    • Location input is now clickable with embedded help information
  • Style

    • Tab spacing adjusted and chevron styling refined for improved visual consistency
    • Collection card background styling updated
    • Location input appearance enhanced

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 10, 2025

Walkthrough

The pull request applies UI refinements across multiple components: adjusts RequestTabs spacing and active-tab chevron styling, adds auto-scroll behavior to active sidebar items (ExampleItem and Collection), removes explicit background styling from workspace cards, and updates the CreateWorkspace location input with Help component documentation and click-to-browse functionality.

Changes

Cohort / File(s) Summary
RequestTabs styling refinements
packages/bruno-app/src/components/RequestTabs/ExampleTab/index.js, packages/bruno-app/src/components/RequestTabs/StyledWrapper.js
Adjusted horizontal padding (px-3 to px-2) and removed pl-2 from tab labels; repositioned active-tab chevron pseudo-elements with updated bottom offsets, border-radius, and box-shadow positioning
Sidebar auto-scroll enhancements
packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/ExampleItem/index.js, packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js
Added useEffect hooks with ref-based auto-scroll behavior to bring active items and focused collections into view with smooth scrolling
Workspace styling updates
packages/bruno-app/src/components/WorkspaceHome/WorkspaceOverview/CollectionsList/StyledWrapper.js
Removed explicit background styling from collection cards
CreateWorkspace UI enhancements
packages/bruno-app/src/components/WorkspaceSidebar/CreateWorkspace/index.js
Integrated Help component for location input documentation, added cursor-pointer styling and onClick handler to make input clickable for directory browsing

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Styling changes across multiple tab and card components require visual verification and consistency checks
  • Auto-scroll implementations in two separate sidebar components (ExampleItem and Collection) follow similar patterns but warrant checking for proper ref attachment and error handling
  • CreateWorkspace changes mix styling, component imports, and interaction logic updates across a single file

Possibly related PRs

  • #6345: Overlapping RequestTabs/StyledWrapper.js styling modifications to tab padding and active-tab visuals
  • #6368: Related tab styling changes affecting request tab appearance and spacing
  • #6080: Similar auto-scroll-on-focus pattern for sidebar items

Suggested reviewers

  • lohit-bruno
  • bijin-bruno
  • helloanoop

Poem

✨ Tabs now breathe with gentler spacing,
Chevrons dance in smoother places,
Scroll springs forth when items wake,
Cards shed their background's embrace,
Help whispers where paths are made. 🎯

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Design improvements' is vague and generic, using a non-descriptive term that doesn't convey the specific nature of the changes. Consider a more specific title that highlights the main change, such as 'Improve tab design and collection card styling' or 'UI refinements: tabs, cards, and scrolling behavior'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

Copy link
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: 1

🧹 Nitpick comments (3)
packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js (1)

248-256: Auto-scroll on focused collection is safe; consider a small shared hook

The new effect cleanly scrolls the focused collection into view, guarded by both the flag and ref plus a try/catch, so it’s low-risk and won’t throw in odd DOM states.

If you find yourself repeating this pattern (e.g. with examples), you could extract a tiny hook like useScrollIntoViewOnActive(ref, isActive) to keep behavior consistent and testable, but it’s not required for this PR.

packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/ExampleItem/index.js (1)

29-29: Example auto-scroll behavior is correct and matches collection behavior

exampleRef + the useEffect keyed on isExampleActive is a straightforward, robust way to ensure the active example is brought into view, and attaching the ref to StyledWrapper is appropriate for a styled div.

Given you now have essentially the same scroll-into-view pattern here and in Collection/index.js, you could optionally wrap it in a shared hook (useScrollIntoViewOnActive) to centralize behavior and keep future tweaks (e.g. scroll options) in one place.

Also applies to: 61-69, 151-151

packages/bruno-app/src/components/RequestTabs/ExampleTab/index.js (1)

77-77: Spacing changes look fine; consider aligning not-found state padding

Reducing the outer padding to px-2 and dropping extra padding on .tab-label is consistent with the updated tabs styling and shouldn’t affect behavior.

One minor thing to consider: the “not found” branch above still uses px-3 on its StyledWrapper. If you want perfectly consistent horizontal spacing between normal example tabs and the not-found placeholder, you could switch that to px-2 as well, but it’s cosmetic.

Also applies to: 105-105

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7fe6b47 and c284e31.

📒 Files selected for processing (6)
  • packages/bruno-app/src/components/RequestTabs/ExampleTab/index.js (2 hunks)
  • packages/bruno-app/src/components/RequestTabs/StyledWrapper.js (2 hunks)
  • packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/ExampleItem/index.js (3 hunks)
  • packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js (1 hunks)
  • packages/bruno-app/src/components/WorkspaceHome/WorkspaceOverview/CollectionsList/StyledWrapper.js (0 hunks)
  • packages/bruno-app/src/components/WorkspaceSidebar/CreateWorkspace/index.js (2 hunks)
💤 Files with no reviewable changes (1)
  • packages/bruno-app/src/components/WorkspaceHome/WorkspaceOverview/CollectionsList/StyledWrapper.js
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (CODING_STANDARDS.md)

**/*.{js,jsx,ts,tsx}: Use 2 spaces for indentation. No tabs, just spaces
Stick to single quotes for strings. For JSX/TSX attributes, use double quotes (e.g., )
Always add semicolons at the end of statements
No trailing commas
Always use parentheses around parameters in arrow functions, even for single params
For multiline constructs, put opening braces on the same line, and ensure consistency. Minimum 2 elements for multiline
No newlines inside function parentheses
Space before and after the arrow in arrow functions. () => {} is good
No space between function name and parentheses. func() not func ()
Semicolons go at the end of the line, not on a new line
Names for functions need to be concise and descriptive
Add in JSDoc comments to add more details to the abstractions if needed
Add in meaningful comments instead of obvious ones where complex code flow is explained properly

Files:

  • packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js
  • packages/bruno-app/src/components/RequestTabs/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabs/ExampleTab/index.js
  • packages/bruno-app/src/components/WorkspaceSidebar/CreateWorkspace/index.js
  • packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/ExampleItem/index.js
🧠 Learnings (2)
📚 Learning: 2025-12-05T20:31:33.005Z
Learnt from: CR
Repo: usebruno/bruno PR: 0
File: CODING_STANDARDS.md:0-0
Timestamp: 2025-12-05T20:31:33.005Z
Learning: Applies to **/*.{jsx,tsx} : Styled Components are used as wrappers to define both self and children components style; Tailwind classes are used specifically for layout based styles

Applied to files:

  • packages/bruno-app/src/components/RequestTabs/StyledWrapper.js
📚 Learning: 2025-12-05T20:31:33.005Z
Learnt from: CR
Repo: usebruno/bruno PR: 0
File: CODING_STANDARDS.md:0-0
Timestamp: 2025-12-05T20:31:33.005Z
Learning: Applies to **/*.{jsx,tsx} : Styled Component CSS might also change layout but Tailwind classes shouldn't define colors

Applied to files:

  • packages/bruno-app/src/components/RequestTabs/StyledWrapper.js
🧬 Code graph analysis (2)
packages/bruno-app/src/components/RequestTabs/ExampleTab/index.js (1)
packages/bruno-app/src/components/RequestTabs/RequestTab/StyledWrapper.js (1)
  • StyledWrapper (3-31)
packages/bruno-app/src/components/WorkspaceSidebar/CreateWorkspace/index.js (1)
packages/bruno-app/src/components/Help/index.js (1)
  • Help (11-38)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Playwright E2E Tests
  • GitHub Check: CLI Tests
  • GitHub Check: Unit Tests
  • GitHub Check: SSL Tests - Windows
  • GitHub Check: SSL Tests - macOS
  • GitHub Check: SSL Tests - Linux
🔇 Additional comments (1)
packages/bruno-app/src/components/RequestTabs/StyledWrapper.js (1)

36-36: Visual tweaks to padding and chevron styling in StyledWrapper

Padding adjustment to 0 3px and chevron offset/radius tweaks are CSS-only changes within the styled-component. Verify that colors continue to use theme tokens rather than CSS variables, and consider a quick visual check in both light and dark modes to ensure the new offsets align properly with the tab border.

import { browseDirectory } from 'providers/ReduxStore/slices/collections/actions';
import { multiLineMsg } from 'utils/common/index';
import { formatIpcError } from 'utils/common/error';
import Help from 'components/Help';
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Nice UX improvement on location field; fix the label/input linkage

The Help tooltip and making the read-only location input clickable via onClick={browse} are good usability wins, and cursor-pointer reinforces that.

There’s a small accessibility/linkage issue though: the label’s htmlFor doesn’t match the input’s id, so clicking the label won’t focus/trigger the input, and screen readers won’t associate them correctly.

You can fix this by aligning the htmlFor with the existing input id:

-            <label htmlFor="workspaceLocation" className="font-semibold mb-2 flex items-center">
+            <label htmlFor="workspace-location" className="font-semibold mb-2 flex items-center">

After that, clicking “Location” will also activate the input’s onClick and open the directory picker.

Also applies to: 110-120, 127-127, 133-133

🤖 Prompt for AI Agents
In packages/bruno-app/src/components/WorkspaceSidebar/CreateWorkspace/index.js
around lines 11, 110-120, 127, and 133, the label htmlFor attributes do not
match the corresponding input id(s), breaking click-to-focus and screen reader
association; update each label's htmlFor to exactly match the input's id (or
assign a matching id to the input if missing) for the read-only location field
so clicking the "Location" label triggers the input's onClick and the Help
tooltip remains intact.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants