diff --git a/.changeset/ten-masks-smoke.md b/.changeset/ten-masks-smoke.md new file mode 100644 index 00000000000..0834f98ea7f --- /dev/null +++ b/.changeset/ten-masks-smoke.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Button bug fixes: `invisible` variant icon colors missing variables + icon button disabled state diff --git a/.playwright/snapshots/components/Dialogv1.test.ts-snapshots/Dialogv1-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/Dialogv1.test.ts-snapshots/Dialogv1-Default-dark-dimmed-linux.png index 80c7a71db68..a56a4905041 100644 Binary files a/.playwright/snapshots/components/Dialogv1.test.ts-snapshots/Dialogv1-Default-dark-dimmed-linux.png and b/.playwright/snapshots/components/Dialogv1.test.ts-snapshots/Dialogv1-Default-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Disabled-dark-high-contrast-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Disabled-dark-high-contrast-linux.png index 343be9e287a..4e176dfdc3b 100644 Binary files a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Disabled-dark-high-contrast-linux.png and b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Disabled-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Invisible-dark-dimmed-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Invisible-dark-dimmed-linux.png index ad85cc35199..7045eef24de 100644 Binary files a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Invisible-dark-dimmed-linux.png and b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Invisible-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-Bad-Example-of-SubNav-and-TrailingAction-dark-dimmed-linux.png b/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-Bad-Example-of-SubNav-and-TrailingAction-dark-dimmed-linux.png index a1e46bf7491..80254e042bc 100644 Binary files a/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-Bad-Example-of-SubNav-and-TrailingAction-dark-dimmed-linux.png and b/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-Bad-Example-of-SubNav-and-TrailingAction-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-TrailingAction-dark-dimmed-linux.png b/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-TrailingAction-dark-dimmed-linux.png index 38c654f0313..7d4a2e3f8c2 100644 Binary files a/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-TrailingAction-dark-dimmed-linux.png and b/.playwright/snapshots/components/NavList.test.ts-snapshots/NavList-With-TrailingAction-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-dark-dimmed-linux.png index 506be05c4ef..35a8c4348c8 100644 Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-on-Narrow-Viewport-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-on-Narrow-Viewport-dark-dimmed-linux.png index 506be05c4ef..35a8c4348c8 100644 Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-on-Narrow-Viewport-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Files-Page-on-Narrow-Viewport-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Leading-and-Trailing-Actions-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Leading-and-Trailing-Actions-dark-dimmed-linux.png index 91f0c662436..513dba4ae40 100644 Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Leading-and-Trailing-Actions-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Leading-and-Trailing-Actions-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/drafts/ActionBar.test.ts-snapshots/drafts-ActionBar-CommentBox-dark-dimmed-linux.png b/.playwright/snapshots/components/drafts/ActionBar.test.ts-snapshots/drafts-ActionBar-CommentBox-dark-dimmed-linux.png index f2773d1d698..049f62e3544 100644 Binary files a/.playwright/snapshots/components/drafts/ActionBar.test.ts-snapshots/drafts-ActionBar-CommentBox-dark-dimmed-linux.png and b/.playwright/snapshots/components/drafts/ActionBar.test.ts-snapshots/drafts-ActionBar-CommentBox-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/drafts/SelectPanel.test.ts-snapshots/drafts-SelectPanel-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/drafts/SelectPanel.test.ts-snapshots/drafts-SelectPanel-Default-dark-dimmed-linux.png index 17e623360e4..6149b1e1f7b 100644 Binary files a/.playwright/snapshots/components/drafts/SelectPanel.test.ts-snapshots/drafts-SelectPanel-Default-dark-dimmed-linux.png and b/.playwright/snapshots/components/drafts/SelectPanel.test.ts-snapshots/drafts-SelectPanel-Default-dark-dimmed-linux.png differ diff --git a/packages/react/src/Button/__tests__/__snapshots__/Button.test.tsx.snap b/packages/react/src/Button/__tests__/__snapshots__/Button.test.tsx.snap index 12ac7733bd7..f070f6eb26c 100644 --- a/packages/react/src/Button/__tests__/__snapshots__/Button.test.tsx.snap +++ b/packages/react/src/Button/__tests__/__snapshots__/Button.test.tsx.snap @@ -285,7 +285,7 @@ exports[`Button respects block prop 1`] = ` color: var(--button-color,undefined); } -.c0[data-component="IconButton"][data-no-visuals] { +.c0[data-component="IconButton"][data-no-visuals]:not(:disabled) { color: fg.muted; } @@ -602,7 +602,7 @@ exports[`Button respects the alignContent prop 1`] = ` color: var(--button-color,undefined); } -.c0[data-component="IconButton"][data-no-visuals] { +.c0[data-component="IconButton"][data-no-visuals]:not(:disabled) { color: fg.muted; } @@ -918,7 +918,7 @@ exports[`Button respects the large size prop 1`] = ` color: var(--button-color,undefined); } -.c0[data-component="IconButton"][data-no-visuals] { +.c0[data-component="IconButton"][data-no-visuals]:not(:disabled) { color: fg.muted; } @@ -1235,7 +1235,7 @@ exports[`Button respects the small size prop 1`] = ` color: var(--button-color,undefined); } -.c0[data-component="IconButton"][data-no-visuals] { +.c0[data-component="IconButton"][data-no-visuals]:not(:disabled) { color: fg.muted; } @@ -1803,7 +1803,7 @@ exports[`Button styles invisible button appropriately 1`] = ` .c0 [data-component="leadingVisual"] { grid-area: leadingVisual; - color: fg.muted; + color: var(--button-invisible-iconColor-rest,undefined); } .c0 [data-component="text"] { @@ -1814,11 +1814,12 @@ exports[`Button styles invisible button appropriately 1`] = ` .c0 [data-component="trailingVisual"] { grid-area: trailingVisual; + color: var(--button-invisible-iconColor-rest,undefined); } .c0 [data-component="trailingAction"] { margin-right: -4px; - color: fg.muted; + color: var(--button-invisible-iconColor-rest,undefined); } .c0 [data-component="buttonContent"] { @@ -1865,7 +1866,7 @@ exports[`Button styles invisible button appropriately 1`] = ` } .c0[data-component="IconButton"][data-no-visuals] { - color: fg.muted; + color: var(--button-invisible-iconColor-rest,undefined); } .c0[data-no-visuals] { diff --git a/packages/react/src/Button/styles.ts b/packages/react/src/Button/styles.ts index f516220219c..0706510094e 100644 --- a/packages/react/src/Button/styles.ts +++ b/packages/react/src/Button/styles.ts @@ -33,7 +33,7 @@ export const getVariantStyles = (variant: VariantType = 'default', theme?: Theme '[data-component=ButtonCounter]': { backgroundColor: 'btn.counterBg', }, - '&[data-component="IconButton"][data-no-visuals]': { + '&[data-component="IconButton"][data-no-visuals]:not(:disabled)': { color: 'fg.muted', }, }, @@ -135,13 +135,16 @@ export const getVariantStyles = (variant: VariantType = 'default', theme?: Theme backgroundColor: 'actionListItem.default.selectedBg', }, '&[data-component="IconButton"][data-no-visuals]': { - color: 'fg.muted', + color: `var(--button-invisible-iconColor-rest, ${theme?.colors.fg.muted})`, }, '[data-component="trailingAction"]': { - color: 'fg.muted', + color: `var(--button-invisible-iconColor-rest, ${theme?.colors.fg.muted})`, }, '[data-component="leadingVisual"]': { - color: 'fg.muted', + color: `var(--button-invisible-iconColor-rest, ${theme?.colors.fg.muted})`, + }, + '[data-component="trailingVisual"]': { + color: `var(--button-invisible-iconColor-rest, ${theme?.colors.fg.muted})`, }, '&[data-no-visuals]': { color: `var(--button-invisible-fgColor-rest, ${theme?.colors.btn.text})`, diff --git a/packages/react/src/__tests__/__snapshots__/TextInput.test.tsx.snap b/packages/react/src/__tests__/__snapshots__/TextInput.test.tsx.snap index a0477bd2d28..42f11ddbd64 100644 --- a/packages/react/src/__tests__/__snapshots__/TextInput.test.tsx.snap +++ b/packages/react/src/__tests__/__snapshots__/TextInput.test.tsx.snap @@ -1879,7 +1879,7 @@ exports[`TextInput renders trailingAction icon button 1`] = ` .c4 [data-component="leadingVisual"] { grid-area: leadingVisual; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="text"] { @@ -1890,11 +1890,12 @@ exports[`TextInput renders trailingAction icon button 1`] = ` .c4 [data-component="trailingVisual"] { grid-area: trailingVisual; + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="trailingAction"] { margin-right: -4px; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="buttonContent"] { @@ -1941,7 +1942,7 @@ exports[`TextInput renders trailingAction icon button 1`] = ` } .c4[data-component="IconButton"][data-no-visuals] { - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4[data-no-visuals] { @@ -2511,7 +2512,7 @@ exports[`TextInput renders trailingAction text button 1`] = ` .c4 [data-component="leadingVisual"] { grid-area: leadingVisual; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="text"] { @@ -2522,11 +2523,12 @@ exports[`TextInput renders trailingAction text button 1`] = ` .c4 [data-component="trailingVisual"] { grid-area: trailingVisual; + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="trailingAction"] { margin-right: -4px; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="buttonContent"] { @@ -2573,7 +2575,7 @@ exports[`TextInput renders trailingAction text button 1`] = ` } .c4[data-component="IconButton"][data-no-visuals] { - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4[data-no-visuals] { @@ -3004,7 +3006,7 @@ exports[`TextInput renders trailingAction text button with a tooltip 1`] = ` .c4 [data-component="leadingVisual"] { grid-area: leadingVisual; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="text"] { @@ -3015,11 +3017,12 @@ exports[`TextInput renders trailingAction text button with a tooltip 1`] = ` .c4 [data-component="trailingVisual"] { grid-area: trailingVisual; + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="trailingAction"] { margin-right: -4px; - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4 [data-component="buttonContent"] { @@ -3066,7 +3069,7 @@ exports[`TextInput renders trailingAction text button with a tooltip 1`] = ` } .c4[data-component="IconButton"][data-no-visuals] { - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); + color: var(--button-invisible-iconColor-rest,var(--fgColor-muted,var(--color-fg-muted,#656d76))); } .c4[data-no-visuals] {