Skip to content

Conversation

@mgadewoll
Copy link
Contributor

@mgadewoll mgadewoll commented Jan 9, 2026

Summary

Important

This PR merges into a feature branch.

closes https://github.com/elastic/eui-private/issues/496

Changes

  • Updated EuiFormAppend/EuiFormPrepend styling:
    • Removed background color
    • Changed the padding
    • Changed the divider styling
    • Changed the interactive variant style to match EuiButtonEmpty with variant primary
    • Updated the gap value from xs to s
  • Updated EuiFormAppend/EuiFormPrepend to inherit isDisabled state from EuiFormControlLayout
  • Updated EuiFormControlLayout styling:
    • Updated hover styling from the control element to the layout wrapper element
    • Added disabled and autofill background color to the layout wrapper instead of only the form control
    • Removed border radius overrides for child form control elements (rendering with euiTheme.border.radius.small instead of 0 now)
  • Updated EuiFormControlButton to inherit isDisabled, readOnly and isInvalid states from EuiFormControlLayout
  • Added iconSide prop on EuiDatePickerRange
  • Updated EuiSuperDatePicker styling:
    • Added a checkCircle icon on valid input data
    • Removed valid state background color
  • Removed background color transition on EuiButtonEmpty (other button variants don't have a transition anymore either)

Breaking changes

  • Removed components.superDatePickerBackgroundSuccees token

Why are we making this change?

✨ UI modernization: The design updates are part of the global UI modernization efforts.

Screenshots #

EuiFormControlLayout append/prepend - New API (using EuiFormAppend/EuiFormPrepend)

before (feature branch) after
Screenshot 2026-01-13 at 11 23 03 Screenshot 2026-01-19 at 13 08 34
Screenshot 2026-01-13 at 11 23 49 Screenshot 2026-01-19 at 13 09 04
Screenshot 2026-01-13 at 11 24 19 Screenshot 2026-01-19 at 13 09 15
Screenshot 2026-01-13 at 11 24 59 Screenshot 2026-01-19 at 13 09 10

EuiFormControlLayout append/prepend - Custom (old) API (custom content)

production feature branch after
Screenshot 2026-01-13 at 10 52 05 Screenshot 2026-01-13 at 10 52 09 Screenshot 2026-01-19 at 13 10 19
Screenshot 2026-01-13 at 10 53 58 Screenshot 2026-01-13 at 10 54 02 Screenshot 2026-01-19 at 13 10 23
Screenshot 2026-01-13 at 10 55 15 Screenshot 2026-01-13 at 10 55 20 Screenshot 2026-01-19 at 13 10 27
Screenshot 2026-01-13 at 11 19 27 Screenshot 2026-01-13 at 11 19 31 Screenshot 2026-01-19 at 13 10 31

EuiFormControlLayoutDelimited

production feature branch after
Screenshot 2026-01-13 at 11 47 20 Screenshot 2026-01-13 at 11 46 12 Screenshot 2026-01-13 at 11 45 52
Screenshot 2026-01-13 at 11 47 44 Screenshot 2026-01-13 at 11 47 49 Screenshot 2026-01-13 at 11 47 54
Screenshot 2026-01-13 at 11 48 30 Screenshot 2026-01-13 at 11 48 38 Screenshot 2026-01-13 at 11 48 45
Screenshot 2026-01-13 at 11 48 50 Screenshot 2026-01-13 at 11 48 56 Screenshot 2026-01-13 at 11 49 01

EuiFormControlButton inside EuiFormControlLayout

light dark
Screenshot 2026-01-13 at 11 42 28 Screenshot 2026-01-13 at 11 42 31

Autofill styles (Chrome)

before after
Screenshot 2026-01-13 at 11 27 28 Screenshot 2026-01-13 at 11 27 43
Screenshot 2026-01-13 at 11 28 13 Screenshot 2026-01-13 at 11 28 19

EuiSuperDatePicker valid styles

before after
Screenshot 2026-01-13 at 11 31 27 Screenshot 2026-01-19 at 13 12 40
Screenshot 2026-01-13 at 11 31 34 Screenshot 2026-01-19 at 13 12 46

EuiDatePickerRange iconSide="right" + iconType

Screenshot 2026-01-13 at 11 35 49

Impact to users

⚠️ This PR contains breaking changes due to the removed components.superDatePickerBackgroundSuccees token

ℹ️ The token is not in use but e.g. Kibana requires snapshot updates:

  • x-pack/platform/plugins/shared/security/public/authentication/login/components/login_form/__snapshots__/login_form.test.tsx.snap
  • x-pack/platform/plugins/shared/security/public/management/roles/edit_role/collapsible_panel/__snapshots__/collapsible_panel.test.tsx.snap
  • x-pack/platform/plugins/shared/security/public/management/roles/edit_role/privileges/kibana/simple_privilege_section/__snapshots__/simple_privilege_section.test.tsx.snap

QA

Review stories:

Review checks:

  • verify the updated design changes for form layout append/prepend and EuiFormAppend/EuiFormPrepend match design specs
  • verify form control layouts render as expected for:
    • default state
    • hover
    • focus
    • invalid
    • disabled
    • readonly
    • autofill
  • verify there are no unexpected regressions for
    • EuiFormControlLayout
    • EuiFormControlLayoutDelimited
    • single form controls like EuiFieldText and EuiFieldNumber
    • EuiSuperDatePicker and EuiDatePickerRange
  • verify EuiSuperDatePicker renders an icon and no background when a valid time span is selected

General checklist

  • Browser QA
    • Checked in both light and dark modes
    • Checked in both MacOS and Windows high contrast modes
    • Checked in mobile
    • Checked in Chrome, Safari, Edge, and Firefox
    • Checked for accessibility including keyboard-only and screenreader modes
  • Docs site QA
  • Code quality checklist
  • Release checklist
    • A changelog entry exists and is marked appropriately
    • If applicable, added the breaking change issue label (and filled out the breaking change checklist)
    • If the changes unblock an issue in a different repo, smoke tested carefully (see Testing EUI features in Kibana ahead of time)
  • Designer checklist
    • If applicable, file an issue to update EUI's Figma library with any corresponding UI changes. (This is an internal repo, if you are external to Elastic, ask a maintainer to submit this request)

@mgadewoll mgadewoll self-assigned this Jan 9, 2026
@mgadewoll mgadewoll force-pushed the inputs/496-append-prepend-design-update branch 3 times, most recently from ad10709 to 668534a Compare January 9, 2026 16:49
- updates append/prepend styling, border radius, background colors
- base and filled buttons don't have a transition anymore either, it seems logical to remove and align
- mainly due to the added wrapper element on append/prepend
@mgadewoll mgadewoll force-pushed the inputs/496-append-prepend-design-update branch from 668534a to c275d28 Compare January 12, 2026 12:55
- the entire layout wrapper has a background
- that's not the final proposal yet, just an update
@mgadewoll mgadewoll force-pushed the inputs/496-append-prepend-design-update branch 2 times, most recently from 68418c9 to a7bbf0d Compare January 13, 2026 08:59
@mgadewoll mgadewoll added breaking change PRs with breaking changes. (Don't delete - used for automation) visual refresh labels Jan 13, 2026
@github-actions
Copy link

github-actions bot commented Jan 13, 2026

This PR contains breaking changes. The opener of this pull request is asked to perform the following due diligence steps below, to assist EUI in our next Kibana upgrade:

  • If this PR contains prop/API changes:
    • Search through Kibana for <EuiComponent usages (example search)
    • In the PR description or in a PR comment, include a count or list with the number of component usages in Kibana that will need to be updated (if that amount is "none", include that information as well)
  • If this PR contains CSS changes:
    • Search through Kibana for the changed EUI selectors, e.g. .euiComponent (example search)
    • In the PR description or in a PR comment, include a count or list with the number of custom CSS overrides in Kibana that will need to be updated (if that amount is "none", include that information as well)
  • 🔍 Tip: When searching through Kibana, consider excluding **/target, **/*.snap, **/*.storyshot files to reduce noise and only look at source code usages
  • ⚠️ For extremely risky changes, the EUI team should potentially consider the following precautions:
    • Using a pre-release release candidate to test Kibana CI ahead of time
    • Using kibana-a-la-carte for manual QA, and to give other Kibana teams a staging server to quickly test against

- we'll use the custom style version going forward
@mgadewoll mgadewoll marked this pull request as ready for review January 13, 2026 13:10
@mgadewoll mgadewoll requested a review from a team as a code owner January 13, 2026 13:10
…pend

- there might be use cases where custom content purposefully looks different; we instead want to ensure expected usage through guidance and patterns
@acstll
Copy link
Contributor

acstll commented Jan 14, 2026

A couple of mid-review comments, mostly so you know I'm at it:

  • code is looking good, I want to have a second look at components/form/form_control_layout/form_control_layout.styles.ts where most of the meat is, I guess
  • (not a change in this PR though): the story for EuiFormAppend is being rendered as prepend and it looks weird, is that intended @mgadewoll? (link)
  • I will do a round of visual QA, as usual

@mgadewoll
Copy link
Contributor Author

(not a change in this PR though): the story for EuiFormAppend is being rendered as prepend and it looks weird, is that intended @mgadewoll? (link)

@acstll Woops, that's a mistake, it should use append 😅 Thanks for the catch!
Fixed in cd52c39

Copy link
Contributor

@acstll acstll left a comment

Choose a reason for hiding this comment

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

Code-wise it looks correct, only a single comment which is a nit!

I followed the guide for the QA — thanks a lot for providing it!

I found 3 things design-wise worth pointing out (I left a brief comment in the code where I thought it might be related but it could be wrong 😛)

(1) padding in FormControlLayout's side

I think the 4px padding in the "side" in the FormControlLayout is not present in the spec when there's a label, only when there's a button

code spec
Image Image

(2) gap in prepend/append

this seems to be 8px and not 4px in the spec, otherwise items are too close to each other when there's no label

code spec
Image Image

(3) font size for buttons

in the spec, font size for buttons seems larger (~2px) than labels only, I wonder if that should be the case for element="button"

code spec
Image Image

- additionally adjusts the spacing around form labels for visual balance as those already have their own spacing
…xpectedly

- prevents e.g. EuiCheckbox label from being displayed as disabled if the form layout is disabled but the checkbox is not
- we don't want the badge being automatically adjusted on parents disabled state
@mgadewoll
Copy link
Contributor Author

(3) font size for buttons
in the spec, font size for buttons seems larger (~2px) than labels only, I wonder if that should be the case for element="button"

@acstll We aligned with @JoseLuisGJ that we keep the matching xs font size, meaning buttons are adjusted.
Effectively nothing to change here as it's already being applied.

- due to spacing changes
@mgadewoll
Copy link
Contributor Author

@acstll I added a couple small additional updates to this PR that I noticed while checking Kibana usages:

  • ensure expected styling for EuiFieldPassword when readOnly (commit)
before after
Screenshot 2026-01-19 at 12 15 08 Screenshot 2026-01-19 at 12 15 18
  • ensure that custom nested form element label text color is not adjusted when the layout is disabled (e.g. nested EuiCheckbox) (commit)
before after
Screenshot 2026-01-19 at 12 16 59 Screenshot 2026-01-19 at 12 17 12
  • prevent EuiNotificationBadge text color inheriting automatically -webkit-text-fill-color (commit) - we'd rather want to adjust it where/if needed manually

Copy link
Contributor

@acstll acstll left a comment

Choose a reason for hiding this comment

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

Thanks for the updates @mgadewoll! I checked the ones from my comments and the other ones you described (#9305 (comment)).

All changes look good and the outcome is correct.

I was about to approve but there is this one suggestion about the label padding I think is worth sharing. Let me know what you think!

@mgadewoll mgadewoll force-pushed the inputs/496-append-prepend-design-update branch from 23bf918 to 9a55d71 Compare January 19, 2026 16:18
Copy link
Contributor

@acstll acstll left a comment

Choose a reason for hiding this comment

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

🟢 Thanks a lot for that last one update!

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

cc @mgadewoll

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

cc @mgadewoll

@mgadewoll mgadewoll merged commit 6a2422c into elastic:feat/visual-refresh-append-prepend-updates Jan 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change PRs with breaking changes. (Don't delete - used for automation) visual refresh

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants