[Theme tokens] Recessed/subdued surfaces + control/panel/frame radii - #9903
Draft
ryankeairns wants to merge 20 commits into
Draft
[Theme tokens] Recessed/subdued surfaces + control/panel/frame radii#9903ryankeairns wants to merge 20 commits into
ryankeairns wants to merge 20 commits into
Conversation
Introduce backgroundBaseCanvas (#EAEDF5 light) with quieter backgroundBaseSubdued (#F8F9FB) for inner surfaces, keep plain raised white, and add additive border.radius.control/panel/container (8/12/16) without changing legacy small/medium. Co-authored-by: Cursor <cursoragent@cursor.com>
Apply Interbana dark values for backgroundBaseCanvas (#0B0F17), backgroundBaseSubdued (#14171D), and backgroundBasePlain (#161B22); keep light Nirbana surfaces as already set. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds new theme foundation tokens for Borealis surfaces (canvas/subdued/plain) and new radius tiers (control/panel/container), plus docs updates so consumers can discover and start using the new tokens without changing component defaults.
Changes:
- Introduces
colors.backgroundBaseCanvasand updates Borealis light/dark background +colors.bodymappings accordingly. - Adds
border.radius.control|panel|containertokens (8/12/16px) to Borealis + docs tables. - Extends Borealis primitive/semantic color palettes with new shade steps used by the new background tokens.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/website/docs/getting-started/theming/tokens/colors/special_colors_table.tsx | Updates docs deprecation guidance for colors.body to reference the new canvas/surface tokens. |
| packages/website/docs/getting-started/theming/tokens/colors/background_colors_table.tsx | Adds backgroundBaseCanvas to the background token table. |
| packages/website/docs/getting-started/theming/tokens/borders/border_radii_table.tsx | Adds new radius tiers to the border radii token table. |
| packages/eui-theme-common/src/global_styling/variables/colors.ts | Extends the shared background token type with backgroundBaseCanvas. |
| packages/eui-theme-common/src/global_styling/variables/borders.ts | Extends the shared border radius type with control, panel, and container. |
| packages/eui-theme-borealis/src/variables/colors/_semantic_colors.ts | Adds new semantic shade keys used by the updated background tokens. |
| packages/eui-theme-borealis/src/variables/colors/_semantic_colors.scss | Adds corresponding Sass semantic shade variables and new dark surface Sass variables. |
| packages/eui-theme-borealis/src/variables/colors/_primitive_colors.ts | Adds new primitive palette entries for canvas/sub-surface/raised dark surfaces and new light shade steps. |
| packages/eui-theme-borealis/src/variables/colors/_colors_light.ts | Wires new light-mode backgroundBaseCanvas/backgroundBaseSubdued and updates colors.body. |
| packages/eui-theme-borealis/src/variables/colors/_colors_light.scss | Wires new light-mode Sass background variables for canvas/subdued and updates deprecated page background var. |
| packages/eui-theme-borealis/src/variables/colors/_colors_dark.ts | Wires new dark-mode backgroundBaseCanvas/backgroundBaseSubdued/backgroundBasePlain and updates colors.body. |
| packages/eui-theme-borealis/src/variables/colors/_colors_dark.scss | Wires new dark-mode Sass background variables for canvas/subdued/plain and updates deprecated page background var. |
| packages/eui-theme-borealis/src/variables/_borders.ts | Adds new computed radius tiers (8/12/16px) to the Borealis theme object. |
| packages/eui-theme-borealis/src/variables/_borders.scss | Adds Sass variables for the new radius tiers. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This was referenced Aug 12, 2026
Update form/color expectations for the new dark plain and subdued surfaces, and add missing upcoming changelogs for eui-theme-borealis and eui-theme-common. Co-authored-by: Cursor <cursoragent@cursor.com>
ryankeairns
marked this pull request as draft
August 12, 2026 14:50
6 tasks
ryankeairns
added a commit
that referenced
this pull request
Aug 12, 2026
…nits Clarify deprecated colors.body docs, rename blueGrey12 to lightCanvas so the scale stays monotonic, and drop stale px comments on radius Sass vars. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
ryankeairns
force-pushed
the
rk/round-layered-cake
branch
from
August 12, 2026 20:33
baaa0d0 to
7e0d553
Compare
This was referenced Aug 12, 2026
4px semantic token for reviewed inline/text-adjacent marks. Wire Skeleton, ColorPickerSwatch, and Code; leave legacy small/medium as unreviewed aliases. Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse existing shade8 (#F8F9FB); drop unused shade17/blueGrey17 that only served the darker canvas. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep canvas on shade8 for nested workspace surfaces. Restore body/euiPageBackgroundColor to shade17 (#EAEDF5) for Kibana document chrome. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Update euiPageBackgroundColor and surface backgrounds so Kibana getEuiThemeVars matches SCSS/TS tokens. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Mirror visual-refresh Sass/Emotion tokens for Kibana getEuiThemeVars consumers. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the extra surface levels, but drop the gray/black primitives so dark mode stays on the existing blue tint. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the extra blueGrey8/17 rungs and keep the three surface roles without new primitives. Co-authored-by: Cursor <cursoragent@cursor.com>
Restore the existing colors.body deprecation copy and document recessed as a seldom-used intermediate layer. Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify the 16px token as app/layout chrome rather than a generic container. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the inaccurate textParagraph and JSON-sync lines; keep dark subdued/plain updates explicit. Co-authored-by: Cursor <cursoragent@cursor.com>
💚 Build Succeeded
History
|
💔 Build Failed
Failed CI StepsHistory
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related to #9894 — token foundation for surfaces and radii only (borders and semantic spacing deferred).
Surfaces
main)main)colors.body#ECF1F9(shade15)#F6F9FC(shade10)#07101F(plainDark)#07101F(plainDark)colors.backgroundBaseRecessed#F6F9FC(shade10)#07101F(plainDark)colors.backgroundBaseSubdued#F6F9FC(shade10)#F6F9FC(shade10)#0B1628(shade145)#07101F(plainDark)colors.backgroundBasePlain#FFFFFF(plainLight)#FFFFFF(plainLight)#111C2C(shade140)#0B1628(shade145)Why
backgroundBaseRecessed(vssubdued)Recessed has a few specific use cases as a layout well in apps such as Dashboards and Workflows in dark mode. Recessed is not a strong light mode visual need today. Using it in both places keeps one semantic token for that well so dark can sit on
plainDark(withbody) while light can stay onshade10with Subdued — same values for now, separate tokens if they need to diverge later.plainDark; Subdued =shade145. Using Subdued for the well collapses the stack (weaker sunken panel). Remapping Subdued toplainDarkwould flatten all secondary UI into chrome.shade10for now — same value, different intent — so light can diverge later without migrating consumers.Radii (additive; legacy
small/mediumstay 4px)border.radius.inline— 4pxborder.radius.control— 8pxborder.radius.panel— 12pxborder.radius.frame— 16px (app/layout chrome; e.g. framed shell)No component default flips in this PR — consumers / follow-ups wire to the new tokens.
Out of scope (parked on #9894)
borderSubdued/textSubduedalpha,textNav,shellShadow)Test plan
inline/control/panel/frame)body/ recessed / subdued / plain match table aboveborder.radius.small/mediumstill 4pxpackages/eui/changelogs/upcoming/9903.md