Skip to content

Comments

UIK-4841/button-link-underline-v-17#2730

Open
slizhevskyv-semrush wants to merge 39 commits intorelease/v17from
UIK-4841/button-link-underline-v-17
Open

UIK-4841/button-link-underline-v-17#2730
slizhevskyv-semrush wants to merge 39 commits intorelease/v17from
UIK-4841/button-link-underline-v-17

Conversation

@slizhevskyv-semrush
Copy link
Contributor

Changelog

@semcore/button

Fixed

  • Changed box-shadow to text-decoration for ButtonLink component.

Motivation and Context

How has this been tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue).
  • New feature (non-breaking change which adds functionality).
  • Breaking change (fix or feature that would cause existing functionality to not work as expected).
  • Nice improve.

Checklist:

  • I have updated the documentation accordingly.
  • I have added new tests on added of fixed functionality.

ilyabrower and others added 30 commits February 13, 2026 14:21
…#2711)

<!--- Provide a general summary of your changes in the Title above -->

## Motivation and Context

<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->

## How has this been tested?

<!--- Please describe in detail how you tested your changes. -->
<!--- For example: -->
<!--- I have added unit tests -->
<!--- I have added Voice Over tests -->
<!--- Code cannot be tested automatically so I have tested it only
manually -->

## Screenshots (if appropriate):

## Types of changes

<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] Bug fix (non-breaking change which fixes an issue).
- [ ] New feature (non-breaking change which adds functionality).
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected).
- [ ] Nice improve.

## Checklist:

<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->

- [ ] I have updated the documentation accordingly.
- [ ] I have added new tests on added of fixed functionality.

---------

Co-authored-by: Valeryia Zimnitskaya <valeryia.zimnitskaya@semrush.com>
…nents (#2719)

<!--- Provide a general summary of your changes in the Title above -->

## Motivation and Context

<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->

## How has this been tested?

<!--- Please describe in detail how you tested your changes. -->
<!--- For example: -->
<!--- I have added unit tests -->
<!--- I have added Voice Over tests -->
<!--- Code cannot be tested automatically so I have tested it only
manually -->

## Screenshots (if appropriate):

## Types of changes

<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] Bug fix (non-breaking change which fixes an issue).
- [ ] New feature (non-breaking change which adds functionality).
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected).
- [ ] Nice improve.

## Checklist:

<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->

- [ ] I have updated the documentation accordingly.
- [ ] I have added new tests on added of fixed functionality.
… folder (#2720)

<!--- Provide a general summary of your changes in the Title above -->

## Motivation and Context

<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->

## How has this been tested?

<!--- Please describe in detail how you tested your changes. -->
<!--- For example: -->
<!--- I have added unit tests -->
<!--- I have added Voice Over tests -->
<!--- Code cannot be tested automatically so I have tested it only
manually -->

## Screenshots (if appropriate):

## Types of changes

<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] Bug fix (non-breaking change which fixes an issue).
- [ ] New feature (non-breaking change which adds functionality).
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected).
- [ ] Nice improve.

## Checklist:

<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->

- [ ] I have updated the documentation accordingly.
- [ ] I have added new tests on added of fixed functionality.
## Changelog

### @semcore/base-components

#### BREAK

- Removed using `getNodeByRef` in `Portal`, `OutsideClick`, `ScrollArea` components. Use `React.RefObject` instead.

#### Added

- `Hint` component.
## Changelog

### @semcore/core

#### BREAK

- New major version.
- Removed `WithI18n`. Use `useI18n`.
- Removed `WithCSS`. Use `useCss`.
- Removed `WithAutoFocus` and `autoFocusEnhance`.
- Removed `WithKeyboardFocus`. Just don't use.
- Removed `WithRef`. Use `useForkRef`.
## Changelog

### @semcore/icon

#### BREAK

- New major version as a separate package with icons.
## Changelog

### @semcore/accordion

#### BREAK

- New major version.

### @semcore/add-filter

#### BREAK

- New major version.

### @semcore/badge

#### BREAK

- New major version. Added property `type`. Deprecated `color` and `bg`.

### @semcore/breadcrumbs

#### BREAK

- New major version.

### @semcore/bulk-textarea

#### BREAK

- New major version.

### @semcore/card

#### BREAK

- New major version.

### @semcore/carousel

#### BREAK

- New major version.

### @semcore/checkbox

#### BREAK

- New major version.

### @semcore/color-picker

#### BREAK

- New major version.

### @semcore/data-table

#### BREAK

- New major version.

### @semcore/date-picker

#### BREAK

- New major version.

### @semcore/divider

#### BREAK

- New major version.

### @semcore/dot

#### BREAK

- New major version.

### @semcore/drag-and-drop

#### BREAK

- New major version.

### @semcore/dropdown

#### BREAK

- New major version.

### @semcore/dropdown-menu

#### BREAK

- New major version.

### @semcore/ellipsis

#### BREAK

- Deprecated component. Use the new `ellipsis` prop that's built into various components.

### @semcore/errors

#### BREAK

- New major version.

### @semcore/feature-highlight

#### BREAK

- New major version.

### @semcore/feature-popover

#### BREAK

- New major version.

### @semcore/feedback-form

#### BREAK

- New major version.

### @semcore/flags

#### BREAK

- New major version.

### @semcore/inline-edit

#### BREAK

- New major version.

### @semcore/inline-input

#### BREAK

- New major version.

### @semcore/input-mask

#### BREAK

- New major version.

### @semcore/input-number

#### BREAK

- New major version.

### @semcore/input-tags

#### BREAK

- New major version.

### @semcore/link

#### BREAK

- New major version.

### @semcore/mini-chart

#### BREAK

- New major version.

### @semcore/modal

#### BREAK

- New major version.

### @semcore/notice

#### BREAK

- New major version.

### @semcore/notice-bubble

#### BREAK

- New major version.

### @semcore/pagination

#### BREAK

- New major version.

### @semcore/pills

#### BREAK

- New major version.

### @semcore/product-head

#### BREAK

- New major version.

### @semcore/progress-bar

#### BREAK

- New major version.

### @semcore/radio

#### BREAK

- New major version.

### @semcore/select

#### BREAK

- New major version.

#### Added

- `Select.Option.Text` component. Use it if you have an options that should be ellipsized.

### @semcore/side-panel

#### BREAK

- New major version.

### @semcore/skeleton

#### BREAK

- New major version.

### @semcore/slider

#### BREAK

- New major version.

### @semcore/spin

#### BREAK

- New major version.

### @semcore/spin-container

#### BREAK

- New major version.

### @semcore/switch

#### BREAK

- New major version.

### @semcore/tab-line

#### BREAK

- New major version.

### @semcore/tab-panel

#### BREAK

- New major version.

### @semcore/tag

#### BREAK

- New major version.

### @semcore/textarea

#### BREAK

- New major version.

### @semcore/tooltip

#### BREAK

- New major version. Deprecated `Tooltip.Hint`.

### @semcore/widget-empty

#### BREAK

- New major version.
- Removed unnecessary `margin-bottom` for the widget container.
## Chandelog

### @semcore/base-trigger

#### BREAK

- New major version.

### @semcore/button

#### BREAK

- New major version.

### @semcore/counter

#### BREAK

- New major version.

### @semcore/fullscreen-modal

#### BREAK

- New major version.

### @semcore/input

#### BREAK

- New major version.

### @semcore/time-picker

#### BREAK

- New major version.

### @semcore/typography

#### BREAK

- New major version.

### @semcore/wizard

#### BREAK

- New major version.
## Changelog

### @semcore/base-trigger

#### BREAK

- New major version.

### @semcore/button

#### BREAK

- New major version.

### @semcore/counter

#### BREAK

- New major version.

### @semcore/fullscreen-modal

#### BREAK

- New major version.

### @semcore/input

#### BREAK

- New major version.

### @semcore/time-picker

#### BREAK

- New major version.

### @semcore/typography

#### BREAK

- New major version.

#### Added

- `ellipsis` property to crop the text out of the box.

### @semcore/wizard

#### BREAK

- New major version.
text-decoration-thickness: 1px;
text-decoration-color: transparent;
text-underline-position: under;
text-underline-offset: 1px;
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe offset should be 2px?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

idk, it could be tweaked :)
probably some input is required from @j-mnizhek or @sheila-semrush

Copy link
Contributor

Choose a reason for hiding this comment

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

you can check whether the offset looks the same as in Link on hover
(also offset should be the same in primary buttonlink on hover and in secondary buttonlink)
we will look at it on design review and change the value if needed, but it will be nice if you make sure everything looks consistent at least in some degree

Copy link
Contributor

Choose a reason for hiding this comment

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

(but 2px sounds legit)

Copy link
Contributor Author

@slizhevskyv-semrush slizhevskyv-semrush Feb 19, 2026

Choose a reason for hiding this comment

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

yeah, I tried to make it unified as it possible, but the text-decoration depends on some font variables that could affect at which point offset the text-decoration is painted. You could check how ButtonLink looks like for different sizes in comparison to box-shadow.

I just left 1px since it's the most closest to the old implementation value.

Copy link
Contributor Author

@slizhevskyv-semrush slizhevskyv-semrush Feb 19, 2026

Choose a reason for hiding this comment

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

In Figma, this component has slightly different css properties. At least it has text-underline-position: from-font; which work fine for lines like ButtonLink but doesn't work fine for lines like this Buttonyes. Where the text-decoration will be stuck to the baseline of letter y.

@ilyabrower ilyabrower force-pushed the release/v17 branch 3 times, most recently from 8c13dc0 to 635119e Compare February 20, 2026 11:06
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.

4 participants