Skip to content

feat(react-button): [CAP] Introduce new Button appearance prop ("tint")#35844

Draft
GianoglioEnrico wants to merge 6 commits intomicrosoft:masterfrom
GianoglioEnrico:feat/cap-visual-refresh-button
Draft

feat(react-button): [CAP] Introduce new Button appearance prop ("tint")#35844
GianoglioEnrico wants to merge 6 commits intomicrosoft:masterfrom
GianoglioEnrico:feat/cap-visual-refresh-button

Conversation

@GianoglioEnrico
Copy link
Copy Markdown
Contributor

@GianoglioEnrico GianoglioEnrico commented Mar 6, 2026

Overview

The goal of this PR is to kickoff a discussion with the Fluent team on the right approach to introduce these new appearance variants needed for CAP visual refresh.

The styles used in this PR are not yet finalized and are still in progress.

Context

The CAP visual refresh requires an additional Button appearance beyond what Fluent currently offers:

  • tint — A button with a tinted background using brand colors

As discussed previously, the plan is to introduce as many CAP styles as possible through customStyleHooks_unstable. However, some components will require API changes.

What this PR does

Adds a new appearance (tint) to the Button type definitions and style hooks (useButtonStyles.styles.ts, etc.). This appearance has no Fluent-specific styles — it currently falls back to the secondary appearance. CAP applies its own styles through custom hooks.

Open question:

We are looking for guidance on how this appearance should be handled on the Fluent side — specifically, whether Fluent should define its own base styles for tint.

cc: @jurokapsiar @layershifter @tudorpopams @dmytrokirpa

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 6, 2026

Pull request demo site: URL

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 6, 2026

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
react-breadcrumb
@fluentui/react-breadcrumb - package
114.911 kB
31.405 kB
114.959 kB
31.421 kB
48 B
16 B
react-button
Button
33.962 kB
9.022 kB
34.01 kB
9.041 kB
48 B
19 B
react-button
CompoundButton
40.843 kB
10.379 kB
40.915 kB
10.401 kB
72 B
22 B
react-button
MenuButton
38.866 kB
10.414 kB
38.962 kB
10.433 kB
96 B
19 B
react-button
SplitButton
47.663 kB
12.057 kB
47.783 kB
12.079 kB
120 B
22 B
react-button
ToggleButton
50.938 kB
10.877 kB
51.034 kB
10.897 kB
96 B
20 B
react-charts
AreaChart
412.28 kB
126.425 kB
412.376 kB
126.457 kB
96 B
32 B
react-charts
DeclarativeChart
762.928 kB
220.39 kB
763.024 kB
220.421 kB
96 B
31 B
react-charts
DonutChart
322.715 kB
96.946 kB
322.811 kB
96.971 kB
96 B
25 B
react-charts
FunnelChart
314.268 kB
93.991 kB
314.364 kB
94.021 kB
96 B
30 B
react-charts
GanttChart
395.399 kB
119.927 kB
395.495 kB
119.961 kB
96 B
34 B
react-charts
GaugeChart
322.146 kB
96.373 kB
322.242 kB
96.405 kB
96 B
32 B
react-charts
GroupedVerticalBarChart
403.269 kB
122.494 kB
403.365 kB
122.529 kB
96 B
35 B
react-charts
HeatMapChart
397.47 kB
121.788 kB
397.566 kB
121.818 kB
96 B
30 B
react-charts
HorizontalBarChart
302.442 kB
89.116 kB
302.538 kB
89.142 kB
96 B
26 B
react-charts
Legends
242.388 kB
71.585 kB
242.484 kB
71.62 kB
96 B
35 B
react-charts
LineChart
423.621 kB
128.472 kB
423.717 kB
128.504 kB
96 B
32 B
react-charts
PolarChart
351.333 kB
107.364 kB
351.429 kB
107.395 kB
96 B
31 B
react-charts
ScatterChart
402.996 kB
122.603 kB
403.092 kB
122.637 kB
96 B
34 B
react-charts
VerticalBarChart
439.74 kB
128.215 kB
439.836 kB
128.244 kB
96 B
29 B
react-charts
VerticalStackedBarChart
409.183 kB
123.955 kB
409.279 kB
123.987 kB
96 B
32 B
react-components
react-components: Button, FluentProvider & webLightTheme
70.397 kB
19.96 kB
70.445 kB
19.98 kB
48 B
20 B
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
236.537 kB
68.697 kB
236.585 kB
68.716 kB
48 B
19 B
react-components
react-components: entire library
1.292 MB
323.177 kB
1.292 MB
323.206 kB
192 B
29 B
Unchanged fixtures
Package & Exports Size (minified/GZIP)
react-card
Card - All
105.131 kB
29.449 kB
react-card
Card
97.799 kB
27.572 kB
react-card
CardFooter
12.756 kB
5.109 kB
react-card
CardHeader
15.289 kB
5.972 kB
react-card
CardPreview
12.84 kB
5.248 kB
react-charts
HorizontalBarChartWithAxis
63 B
83 B
react-charts
SankeyChart
220.381 kB
67.866 kB
react-charts
Sparkline
91.393 kB
28.708 kB
react-components
react-components: FluentProvider & webLightTheme
43.612 kB
14.022 kB
react-dialog
Dialog (including children components)
102.12 kB
30.394 kB
react-message-bar
MessageBar (all components)
23.294 kB
8.63 kB
react-portal-compat
PortalCompatProvider
8.386 kB
2.624 kB
react-tag-picker
@fluentui/react-tag-picker - package
186.596 kB
55.849 kB
react-teaching-popover
TeachingPopover
112.414 kB
34.219 kB
react-timepicker-compat
TimePicker
108.174 kB
35.695 kB
react-tree
FlatTree
147.635 kB
42.134 kB
react-tree
PersonaFlatTree
149.463 kB
42.517 kB
react-tree
PersonaTree
145.523 kB
41.338 kB
react-tree
Tree
143.701 kB
40.972 kB
🤖 This report was generated against 80f357995c67265a761717b3ea4bd4ca300dc220

@GianoglioEnrico GianoglioEnrico force-pushed the feat/cap-visual-refresh-button branch from 6b10c1d to fbfe3eb Compare March 10, 2026 17:08
@@ -1,9 +1,10 @@
import * as rootPreview from '../../../.storybook/preview';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/Avatar Converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Avatar Converged.badgeMask - RTL.normal.chromium.png 3 Changed
vr-tests-react-components/Charts-DonutChart 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic - Dark Mode.default.chromium.png 7530 Changed
vr-tests-react-components/Charts-DonutChart.Dynamic.default.chromium.png 5581 Changed
vr-tests-react-components/Menu Converged - submenuIndicator slotted content 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default.submenus open.chromium.png 413 Changed
vr-tests-react-components/Portal 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Portal.Apply Class Names.should have green border.chromium.png 15 Changed
vr-tests-react-components/Positioning 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 975 Changed
vr-tests-react-components/TagPicker 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/TagPicker.disabled - Dark Mode.disabled input hover.chromium.png 658 Changed
vr-tests-react-components/TagPicker.disabled - RTL.disabled input hover.chromium.png 635 Changed
vr-tests-react-components/TagPicker.disabled.disabled input hover.chromium.png 677 Changed

There were 3 duplicate changes discarded. Check the build logs for more information.

@GianoglioEnrico GianoglioEnrico changed the title DRAFT: Introduce new Button appearance props ("tint" and "outlineColor") for CAP visual refresh DRAFT: Introduce new Button appearance prop ("tint") for CAP visual refresh Mar 31, 2026
@GianoglioEnrico GianoglioEnrico force-pushed the feat/cap-visual-refresh-button branch from fbfe3eb to 98f40e4 Compare March 31, 2026 14:25
@GianoglioEnrico GianoglioEnrico self-assigned this Mar 31, 2026
@GianoglioEnrico GianoglioEnrico changed the title DRAFT: Introduce new Button appearance prop ("tint") for CAP visual refresh DRAFT: [CAP] Introduce new Button appearance prop ("tint") Mar 31, 2026
@GianoglioEnrico GianoglioEnrico changed the title DRAFT: [CAP] Introduce new Button appearance prop ("tint") feat(react-button): [CAP] Introduce new Button appearance prop ("tint") Apr 2, 2026
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.

1 participant