Skip to content

Conversation

@Yantrio
Copy link
Member

@Yantrio Yantrio commented Jun 20, 2025

Major visual overhaul of the registry UI to create a cohesive brand experience. Improving the layout to match what we did on opentofu.org.

@Yantrio Yantrio requested a review from a team as a code owner June 20, 2025 16:23
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Jun 20, 2025

Deploying registry-ui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9547e5a
Status: ✅  Deploy successful!
Preview URL: https://c6b70b9b.registry-ui-dxi.pages.dev
Branch Preview URL: https://cleanup-design.registry-ui-dxi.pages.dev

View logs

@diofeher
Copy link
Member

Screenshot 2025-07-14 at 11 20 13

Provider page looking really good :)

For the docs page itself:

Screenshot 2025-07-14 at 11 20 32

I think this opentofu-registry adds unnecessary noise. And I think we can add more left spacing on the right block

Screenshot 2025-07-14 at 11 21 26

In this another page, for example, information is looking really cluttered. But this is a problem on the current version that we have it too, so maybe we can fix it in a different PR.

@Yantrio
Copy link
Member Author

Yantrio commented Jul 15, 2025

@diofeher

I think this opentofu-registry adds unnecessary noise. And I think we can add more left spacing on the right block

I've implemented breadcrumbs in this space now, let me know if you think this is a good usage of this space.

@diofeher
Copy link
Member

@Yantrio Oh, loved this idea! Looking way better :)

Screenshot 2025-07-15 at 11 26 33

@yottta
Copy link

yottta commented Jul 15, 2025

Looks really nice! Well done. 🙌

One thing that bothers me visually: is there a particular reason not to keep all the general information about the provider in one place? 🤔
image

@diofeher
Copy link
Member

diofeher commented Jul 15, 2025

That's a good point @yottta ! I think it would be better to move the LICENSE to the top instead of moving the rest to the right sidebar.

@Yantrio
Copy link
Member Author

Yantrio commented Jul 15, 2025

The issue with the license is that repos can be multi-licensed and so this list could be quite large. I couldn't come up with a nice way to move that up top yet but im open to some ideas.

@yottta
Copy link

yottta commented Jul 16, 2025

The issue with the license is that repos can be multi-licensed and so this list could be quite large. I couldn't come up with a nice way to move that up top yet but im open to some ideas.

Some random ideas:

  • we could put the rest of the information under or above the license section, as shown in my previous screenshot
  • we can have a license info on top, but followed by an ℹ️ icon which can show all the registered license of the provider

Yantrio added 16 commits August 15, 2025 11:47
Major visual overhaul of the registry UI to create a cohesive brand experience:

Design System Updates:
- Add fixed gradient background pattern matching OpenTofu.org
- Implement modern color scheme with improved dark mode support
- Add custom scrollbar styling for consistency

Navigation & Layout:
- Redesign navbar with transparent background and absolute positioning
- Modernize announcement bar with subtle transparent styling
- Add IDE-style terminal title bar with integrated breadcrumbs
- Update tree view navigation with cleaner indentation (no connecting lines)
- Implement tab-style language picker with underline indicators

Component Modernization:
- Enhance provider header with GitHub org avatars and metadata (stars, forks, repository)
- Consolidate version displays into single modern component
- Redesign sidebar blocks with better typography and spacing
- Update code blocks with distinct background colors for visibility
- Modernize all hover states and transitions

Information Architecture:
- Move repository link from sidebar to header for prominence
- Add clear "Latest" and "Older versions" sections in version sidebar
- Improve metadata display with consistent styling
- Better visual hierarchy throughout with refined spacing

This brings the registry UI in line with the main OpenTofu.org site design,
creating a more professional and cohesive user experience.

Signed-off-by: James Humphries <[email protected]>
- Update module header with GitHub avatars and enriched metadata
- Add stars, forks, and repository information to header
- Modernize version info display with consistent styling
- Remove repository from sidebar (moved to header)
- Update sidebar menu with proper padding and modern styling
- Enhance tab links with rounded corners and smooth transitions
- Simplify "How to use" instructions with cleaner code styling
- Add target system display in module header

This brings the module pages in line with the provider design,
creating a consistent experience across all registry pages.

Signed-off-by: James Humphries <[email protected]>
- Created rehypeCodeListAnchors plugin to detect list items that start with inline code
- Wraps code elements in clickable anchor tags linking to themselves
- Adds IDs to list items for direct linking (e.g., #attr-stack_id)
- Handles hash scrolling on page load for direct links to schema attributes
- Useful for schema documentation where attributes are listed with code formatting

Signed-off-by: James Humphries <[email protected]>
- Flash anchored elements with yellow background for 2.5 seconds
- Helps users identify the target element after navigation
- Smooth fade-in/fade-out animation for better UX

Signed-off-by: James Humphries <[email protected]>
- Changed scroll behavior from 'start' to 'center' for better visibility
- Anchored elements now appear in the middle of the screen
- Improves user experience when navigating to specific schema items

Signed-off-by: James Humphries <[email protected]>
- Add line-clamp-1 to CardItemTitle to prevent multi-line titles
- Update CardItemTitle component to accept className prop
- Filter out providers without versions before virtualization
- Remove conditional rendering that caused gaps during fast scrolling
- Add safe navigation for latestVersion properties

Signed-off-by: James Humphries <[email protected]>
- Add GitHub avatars to module cards
- Display metadata badges (stars, forks, target, version)
- Implement search functionality with debouncing
- Switch from Virtuoso to VirtuosoGrid for responsive grid layout
- Ensure consistent card heights with min-height and fallback text
- Add 'Forked' indicator for forked modules
- Update card styling to be more compact and informative

Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
Signed-off-by: James Humphries <[email protected]>
@Yantrio Yantrio changed the title Experiment: comprehensive UI redesign to match OpenTofu.org aesthetic Comprehensive UI redesign to match OpenTofu.org aesthetic Aug 18, 2025
@Yantrio Yantrio requested a review from a team August 18, 2025 14:16
Copy link

@yottta yottta left a comment

Choose a reason for hiding this comment

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

Looks good.

I wonder if you consider the change suggested here.

And in the new version, for the modules/provider search, the switch from the centered search box to the detailed view for the searched modules/providers is kinda disruptive. Maybe it's only me, but I don't find it to be a good UX. 🤷 Maybe we could have the detailed view directly shown? 🤔

@Yantrio
Copy link
Member Author

Yantrio commented Aug 19, 2025

Maybe we could have the detailed view directly shown? 🤔

Would you be able to elaborate or sketch out what you had in mind? I'm not sure I understand

@yottta
Copy link

yottta commented Aug 19, 2025

Maybe we could have the detailed view directly shown? 🤔

Would you be able to elaborate or sketch out what you had in mind? I'm not sure I understand

IMO, when I start typing, I look at the field that I started typing into.
Look at this:
https://github.com/user-attachments/assets/453f4641-3d6d-465b-82d6-9c837260f7b6

Personally I find it quite disruptive when the field that I focus on moves in a glimpse.

Now that you asked, I am thinking on either leave the field as it is and when clicked/focused, the second view is shown, before starting typing. Another approach would be to change the initial text field to a button and when pressed, show directly the second view with the top left text field focused.

aria-label="OpenTofu Registry"
className="flex items-center transition-colors text-gray-900 hover:text-brand-500 dark:text-gray-50 dark:hover:text-brand-500"
>
<HeaderLogo />

Choose a reason for hiding this comment

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

Although the markup for the HeaderLogo component hasn't changed here (as far as I can tell?), it seems like the CSS has changed in a way that has upset the relative positioning of the "OpenTofu" logotype and the "Registry" text that appears after the logomark:

OpenTofu Registry header logo, but the word Registry doesn't have its baseline aligned with the baseline of the OpenTofu logotype

Even on the current site the baselines don't quite line up, at least on my system:

As in the previous image, except that the misalignment isn't as severe

Since we have the whole thing wrapped in a link with aria-label="OpenTofu Registry" anyway, it might be better to incorporate the word "Registry" into the SVG image as path(s), just like we are already doing for the logotype, so that they'll always line up without relying on any CSS position trickery. 🤔

Copy link
Member

Choose a reason for hiding this comment

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

Yeah, it is way off for me

Copy link

@apparentlymart apparentlymart left a comment

Choose a reason for hiding this comment

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

This is kinda dense and so I ran out of time partway through reviewing it. I'm sharing what I have so far, but I've not read through everything yet.

@Gogotchuri
Copy link
Member

Generally, the more consistent the design, the smoother the experience. So here are some inconsistencies I have noticed so far.

  1. Colors on active menu items are different between docs and provider/module. And honestly, neither looks appealing to me. Let's standardize that. After I have tried a few other combinations for active items, I like
  • background color: brand-300 with 40% transparency
  • text color brand-800 - it is dark enough to read well under the background color, here are two old ones and a new one.
    Old:
{0EF48446-745F-46E8-9140-60AE245E6E2F} {4FFD44E1-2571-42C6-8103-D87FCDE538DF}

New:
{2119CB6C-FCC1-4C39-83A7-85B523E66062}
{E1877A4A-2CBD-4B9F-8236-5A94D22BC97A}

I haven't experimented in dark mode, but the same should work there too

  1. The fact that the "path" section, including the home icon, jumps up after going into the docs or a specific provider/module, doesn't feel smooth. Not only that, but the font size and spacing are also changing. I would keep it in the same place and the same size when applying the gray borders and background. It will mean adding additional padding on the left on the exploration page and reducing the height of the "path" section. Below are the examples:
{E954B58A-130E-45D2-9A0E-6DD9F858A76C} {F076DD5A-7F86-43FD-A340-9BB2A153ED9D}
  1. Search bars are identical except for the one in a provider filter. Grey background in dark mode is necessary, of course. But the outline colors are different for no reason. One is brand-500 and another one is brand-500 with transparency. Let's set brand-500 to the provider filter with no transparency value.
{4F0CCBFA-2805-4F0F-B32E-5DB78CB9EF0E} {F4F3FA17-3852-4B6D-8E03-08F81FB6A77D}

@Yantrio
Copy link
Member Author

Yantrio commented Aug 21, 2025

Thanks for the feedback @Gogotchuri and @apparentlymart , I've addressed those issues.

I'll try and play with the licensing information moving to the header now to see if I can find a nice approach.

Signed-off-by: James Humphries <[email protected]>
Copy link

@apparentlymart apparentlymart left a comment

Choose a reason for hiding this comment

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

This is quite dense and hard to review thoroughly but it seems broadly good and so I'd be in favor of merging it and then dealing with any remaining concerns as separate PRs.

In particular, since the misaligned text in the logo was already present before this change (albeit not quite as bad), and since fixing it likely means adding a bunch of extra paths to an SVG asset, I'd support dealing with that particular change as a separate PR after this is landed.

Copy link
Member

@Gogotchuri Gogotchuri left a comment

Choose a reason for hiding this comment

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

I agree with @apparentlymart. Conducting a comprehensive review of this change line by line, with 4,000 lines of front-end code changes, is challenging. However, since most of the changes concern the UI, this version feels and looks better than the current one.
I am for merging this. Thanks for doing this work @Yantrio!

@Yantrio
Copy link
Member Author

Yantrio commented Aug 27, 2025

I know that @yottta expressed some concern over how jarring the new landing search experience is so if we are to merge this, I would like to do the following:

Have a child PR from this branch, in which I work on the search experience. We can review that separately and then merge all the way down into main.

(Sidenote: I just want to play with the mermaid gitgraph feature here to explain )

gitGraph
   commit id: "initial"
   
   branch cleanup-design
   checkout cleanup-design
   commit id: "design updates"
   commit id: "more cleanup"
   
   branch rework-search-landing
   checkout rework-search-landing
   commit id: "search experience improvements"
   
   checkout cleanup-design
   merge rework-search-landing
   
   checkout main
   merge cleanup-design
Loading

Does this approach sound okay @opentofu/maintainers ?

@yottta
Copy link

yottta commented Aug 27, 2025

I know that @yottta expressed some concern over how jarring the new landing search experience is so if we are to merge this, I would like to do the following:

Have a child PR from this branch, in which I work on the search experience. We can review that separately and then merge all the way down into main.

(Sidenote: I just want to play with the mermaid gitgraph feature here to explain )

gitGraph
   commit id: "initial"
   
   branch cleanup-design
   checkout cleanup-design
   commit id: "design updates"
   commit id: "more cleanup"
   
   branch rework-search-landing
   checkout rework-search-landing
   commit id: "search experience improvements"
   
   checkout cleanup-design
   merge rework-search-landing
   
   checkout main
   merge cleanup-design
Loading

Does this approach sound okay @opentofu/maintainers ?

Of course! All in for that

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.

6 participants