Skip to content

[Project Solar / Phase 1 / Cherry-pick] Cherry-pick updates to the HDS components#3947

Open
didoo wants to merge 15 commits into
project-solar/phase-1/HDS-6480/cherry-pick-tokens-updatesfrom
project-solar/phase-1/HDS-6479/cherry-pick-component-updates
Open

[Project Solar / Phase 1 / Cherry-pick] Cherry-pick updates to the HDS components#3947
didoo wants to merge 15 commits into
project-solar/phase-1/HDS-6480/cherry-pick-tokens-updatesfrom
project-solar/phase-1/HDS-6479/cherry-pick-component-updates

Conversation

@didoo

@didoo didoo commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Note

Code cherry picked (and in some cases tweaked) from #3237

📌 Summary

There are some minor changes made to the HDS components in #3237 that can be cherry picked and imported directly and safely to the main branch.

🛠️ Detailed description

See commits descriptions for details about the changes.

🔗 External links

Jira ticket: https://hashicorp.atlassian.net/browse/HDS-6479


👀 Component checklist

💬 Please consider using conventional comments when reviewing this PR.

📋 PCI review checklist
  • If applicable, I've documented a plan to revert these changes if they require more than reverting the pull request.
  • If applicable, I've worked with GRC to document the impact of any changes to security controls.
    Examples of changes to controls include access controls, encryption, logging, etc.
  • If applicable, I've worked with GRC to ensure compliance due to a significant change to the in-scope PCI environment.
    Examples include changes to operating systems, ports, protocols, services, cryptography-related components, PII processing code, etc.

@didoo didoo requested a review from a team as a code owner June 24, 2026 12:42
@vercel

vercel Bot commented Jun 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hds-showcase Ready Ready Preview Jun 29, 2026 1:05pm
hds-website Ready Ready Preview Jun 29, 2026 1:05pm

Request Review

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 cherry-picks a set of updates from the Project Solar Phase 1 work into main, spanning component styling tweaks, additional modifier classes for targeting, and integration test stabilization in the showcase app.

Changes:

  • Updated multiple component templates to add/adjust CSS modifier classes (Dropdown list items, Pagination variants, Tag variants).
  • Adjusted component SCSS (Flyout shadow token usage, LinkStandalone hover color, and substantial Badge/BadgeCount styling changes).
  • Stabilized Tooltip integration testing by removing timing-based waits and using waitUntil.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
showcase/tests/integration/components/hds/tooltip/tooltip-button-test.gts Replaces fixed waits with waitUntil + disables tippy animation timing for more reliable assertions.
showcase/tests/integration/components/hds/tag/index-test.gts Adds integration coverage for Tag “interactive vs static” rendering and classes.
packages/components/src/styles/components/link/standalone.scss Sets an explicit secondary hover color to avoid unintended overrides.
packages/components/src/styles/components/flyout.scss Switches Flyout box-shadow to the --token-elevation-overlay-box-shadow token.
packages/components/src/styles/components/badge.scss Refactors Badge styles to use --token-badge-* variables for sizing and color/type combinations.
packages/components/src/styles/components/badge-count.scss Refactors BadgeCount styles to use --token-badge-* / --token-badge-count-* variables.
packages/components/src/components/hds/tag/index.gts Adds hds-tag--is-interactive / hds-tag--is-static modifier classes based on @href/@route.
packages/components/src/components/hds/pagination/size-selector/index.gts Removes extra whitespace in the label markup.
packages/components/src/components/hds/pagination/numbered/index.gts Adds hds-pagination--numbered modifier class on the root element.
packages/components/src/components/hds/pagination/compact/index.gts Adds hds-pagination--compact modifier class on the root element.
packages/components/src/components/hds/dropdown/toggle/button.gts Simplifies badgeType conditional logic (no functional change).
packages/components/src/components/hds/dropdown/list-item/radio.gts Adds missing hds-dropdown-list-item--color-action class to the list item.
packages/components/src/components/hds/dropdown/list-item/checkbox.gts Adds missing hds-dropdown-list-item--color-action class to the list item.
.changeset/rare-falcons-guess.md Adds a changeset for the cherry-picked updates (needs formatting/content fixes).

Comment thread packages/components/src/styles/components/badge.scss
Comment thread packages/components/src/styles/components/badge-count.scss
Comment thread .changeset/rare-falcons-guess.md
@didoo didoo force-pushed the project-solar/phase-1/HDS-6479/cherry-pick-component-updates branch from 42ca5ff to 3383d0d Compare June 24, 2026 15:34
@didoo didoo changed the base branch from main to project-solar/phase-1/HDS-6480/cherry-pick-tokens-updates June 24, 2026 15:35
@didoo didoo force-pushed the project-solar/phase-1/HDS-6480/cherry-pick-tokens-updates branch from db5282c to 1f353a6 Compare June 24, 2026 15:36
@didoo didoo force-pushed the project-solar/phase-1/HDS-6479/cherry-pick-component-updates branch from 3383d0d to d995067 Compare June 24, 2026 15:37
@didoo didoo force-pushed the project-solar/phase-1/HDS-6479/cherry-pick-component-updates branch from d995067 to 8f01e6f Compare June 24, 2026 17:54
@dchyun dchyun added this to the design-system-components@6.3.0 milestone Jun 24, 2026
@didoo didoo force-pushed the project-solar/phase-1/HDS-6480/cherry-pick-tokens-updates branch from e90162e to 20078d4 Compare June 24, 2026 18:43
@didoo didoo force-pushed the project-solar/phase-1/HDS-6479/cherry-pick-component-updates branch from 8f01e6f to 7cbff96 Compare June 24, 2026 19:54
<template>
<li class="hds-dropdown-list-item hds-dropdown-list-item--variant-checkbox">
<li
class="hds-dropdown-list-item hds-dropdown-list-item--color-action hds-dropdown-list-item--variant-checkbox"

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.

[Issue] For this class name addition to have an effect, the dropdown styles need to be adjusted for this selector. The .hds-dropdown-list-item__label selector needs to be added to the child selector list

.hds-dropdown-list-item--color-action {
  a,
  button,
  .hds-dropdown-list-item__label {

<template>
<li class="hds-dropdown-list-item hds-dropdown-list-item--variant-checkbox">
<li
class="hds-dropdown-list-item hds-dropdown-list-item--color-action hds-dropdown-list-item--variant-checkbox"

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.

[Note][Non-blocker] Not for this PR, but an improvement could be made to the showcase page to show the hover/active states on the label as well. Right now the mock hover is only applied to the checkbox input, not the label. So there is no way to see the label interactive states besides manually triggering them.

(From the carbonization main feature branch)
Existing mock hover view

Image

Actual hover state (triggered via mouse)

Image

---

<!-- START components/dropdown -->
`Dropdown` - Added missing `hds-dropdown-list-item--color-action` class to `DropdownListItemCheckbox/Radio` list items.

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.

[Suggestion] Once implemented correctly (see previous comment) this will result in a visual change to the hover state for the checkbox and radio. That could be worth mentioning.

<template>
<li class="hds-dropdown-list-item hds-dropdown-list-item--variant-checkbox">
<li
class="hds-dropdown-list-item hds-dropdown-list-item--color-action hds-dropdown-list-item--variant-checkbox"

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.

[Question][Design] Does this update to the hover color need to be made in Figma as well?

Image

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.

[todo] Add changeset for icon tile about changing color argument classes and border radii

<!-- END -->

<!-- START components/pagination -->
`Pagination`

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.

[Suggestion] I think the script may get hung up with this format since there isn't a - after the component name. Recommended formatting from confluence is more like this

<!-- START {components/component-name} -->
`{component-name}` - Changed {...additional details}, including:
- {change 1}
- {change 2}
<!-- END -->

Could also split these into two entries

<!-- START components/pagination -->
`Pagination` - Added extra modifier classes `hds-pagination--numbered`/`hds-pagination—compact` to variants.
<!-- END -->

<!-- START components/pagination -->
`Pagination` - Removed extra whitespace in label for `PaginationSizeSelector`.
<!-- END -->


<template>
<div class="hds-pagination" ...attributes>
<div class="hds-pagination hds-pagination--compact" ...attributes>

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.

[Suggestion] Is it worth updating the tests to use the more specific class name for each component?

test('it should render the component with a CSS class that matches the component name', async function (assert) {
    await render(
      <template>
        <HdsPaginationCompact id="test-pagination-compact" />
      </template>,
    );
    assert.dom('#test-pagination-compact').hasClass('hds-pagination');
  });

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.

[Note] These changes will fix the issues I raised with #3946 for the showcase updates.

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.

[todo] Add changeset for badge and badge count style changes

if (this.args.logo) {
// for the logo version we use the colored versions directly
return `${this.args.logo}-color`;
return this.args.logo;

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.

I noticed theres no changelog entry for icon tile, does this not change anything for the consumer?

assert.dom('#test-tag').doesNotHaveClass('hds-tag--is-static');
assert.dom('#test-tag').hasClass('hds-tag--is-interactive');
assert.dom('#test-tag .hds-tag__text').doesNotExist();
assert.dom('#test-tag .hds-tag__link').exists();

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.

Suggestion: also check that the element with .hds-tag__link is actually an anchor

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.

5 participants