From 17e117472e51f2c7e37bf96915bc8ff116051a7c Mon Sep 17 00:00:00 2001 From: Mike Perrotti Date: Mon, 16 Dec 2024 16:05:40 -0500 Subject: [PATCH 01/14] adds 'count' prop to IconButton --- .../react/src/Button/ButtonBase.module.css | 14 ++++++++ packages/react/src/Button/ButtonBase.tsx | 32 +++++++++++++++++-- .../Button/IconButton.features.stories.tsx | 2 ++ packages/react/src/Button/IconButton.tsx | 11 +++++-- packages/react/src/Button/types.ts | 1 + 5 files changed, 56 insertions(+), 4 deletions(-) diff --git a/packages/react/src/Button/ButtonBase.module.css b/packages/react/src/Button/ButtonBase.module.css index af5ef685034..dd279e566df 100644 --- a/packages/react/src/Button/ButtonBase.module.css +++ b/packages/react/src/Button/ButtonBase.module.css @@ -85,6 +85,20 @@ } } + &.IconButton--withCount { + width: unset; + min-width: var(--control-medium-size); + padding-inline: var(--control-small-paddingInline-condensed); + + &:where([data-size='small']) { + min-width: var(--control-small-size); + } + + &:where([data-size='large']) { + min-width: var(--control-large-size); + } + } + /* LinkButton */ &[href] { diff --git a/packages/react/src/Button/ButtonBase.tsx b/packages/react/src/Button/ButtonBase.tsx index d49124a624f..e5fdcfd88b0 100644 --- a/packages/react/src/Button/ButtonBase.tsx +++ b/packages/react/src/Button/ButtonBase.tsx @@ -123,7 +123,21 @@ const ButtonBase = forwardRef( ) : isElement(Icon) ? ( Icon ) : ( - + + + {count !== undefined + ? renderModuleVisual( + () => ( + + {count} + + ), + Boolean(loading) && !LeadingVisual, + 'trailingVisual', + true, + ) + : null} + ) ) : ( <> @@ -244,7 +258,21 @@ const ButtonBase = forwardRef( ) : isElement(Icon) ? ( Icon ) : ( - + + + {count !== undefined + ? renderModuleVisual( + () => ( + + {count} + + ), + Boolean(loading) && !LeadingVisual, + 'trailingVisual', + true, + ) + : null} + ) ) : ( <> diff --git a/packages/react/src/Button/IconButton.features.stories.tsx b/packages/react/src/Button/IconButton.features.stories.tsx index d8db5c4b4c2..c1bf82f57d4 100644 --- a/packages/react/src/Button/IconButton.features.stories.tsx +++ b/packages/react/src/Button/IconButton.features.stories.tsx @@ -94,3 +94,5 @@ export const KeybindingHintOnDescription = () => ( ) export const KeybindingHint = () => + +export const TrailingCounter = () => diff --git a/packages/react/src/Button/IconButton.tsx b/packages/react/src/Button/IconButton.tsx index 4b86ea1bd48..a48836892c3 100644 --- a/packages/react/src/Button/IconButton.tsx +++ b/packages/react/src/Button/IconButton.tsx @@ -18,6 +18,7 @@ const IconButton = forwardRef( description, disabled, tooltipDirection, + count, // This is planned to be a temporary prop until the default tooltip on icon buttons are fully rolled out. unsafeDisableTooltip = false, keyshortcuts, @@ -47,12 +48,15 @@ const IconButton = forwardRef( return ( Date: Mon, 16 Dec 2024 16:08:41 -0500 Subject: [PATCH 02/14] adds VRT for IconButton with trailing counter --- e2e/components/IconButton.test.ts | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/e2e/components/IconButton.test.ts b/e2e/components/IconButton.test.ts index 83b00e325e1..2fbc554995b 100644 --- a/e2e/components/IconButton.test.ts +++ b/e2e/components/IconButton.test.ts @@ -371,4 +371,38 @@ test.describe('IconButton', () => { }) } }) + + test.describe('Trailing Counter', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-iconbutton-features--trailing-counter', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`IconButton.Trailing Counter.${theme}.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-iconbutton-features--trailing-counter', + globals: { + colorScheme: theme, + }, + }) + await expect(page).toHaveNoViolations({ + rules: { + 'color-contrast': { + enabled: theme !== 'dark_dimmed', + }, + }, + }) + }) + }) + } + }) }) From 6b025a825096cbc2d54f7138f9bf358874f9ef08 Mon Sep 17 00:00:00 2001 From: Mike Perrotti Date: Mon, 16 Dec 2024 16:11:29 -0500 Subject: [PATCH 03/14] updates IconButton component API docs --- packages/react/src/Button/IconButton.docs.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/react/src/Button/IconButton.docs.json b/packages/react/src/Button/IconButton.docs.json index 88d7ae75938..d6ed0d42f13 100644 --- a/packages/react/src/Button/IconButton.docs.json +++ b/packages/react/src/Button/IconButton.docs.json @@ -51,6 +51,9 @@ }, { "id": "components-iconbutton-features--keybinding-hint" + }, + { + "id": "components-iconbutton-features--trailing-counter" } ], "importPath": "@primer/react", @@ -117,6 +120,11 @@ "description": "If `description` is provided, we will use a Tooltip to describe the button. Then `aria-label` is used to label the button.", "defaultValue": "" }, + { + "name": "count", + "type": "number", + "description": "For counter buttons, the number to display." + }, { "name": "sx", "type": "SystemStyleObject" From 274d9a859faa4970dff76ca1e6c8c4ea879a0522 Mon Sep 17 00:00:00 2001 From: Mike Perrotti Date: Mon, 16 Dec 2024 16:12:25 -0500 Subject: [PATCH 04/14] adds changeset --- .changeset/brave-penguins-clap.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/brave-penguins-clap.md diff --git a/.changeset/brave-penguins-clap.md b/.changeset/brave-penguins-clap.md new file mode 100644 index 00000000000..fc4c3e216e7 --- /dev/null +++ b/.changeset/brave-penguins-clap.md @@ -0,0 +1,5 @@ +--- +"@primer/react": minor +--- + +Adds 'count' prop to IconButton component From 001bdc81ceaf682980f3ad9551fcb0725c913643 Mon Sep 17 00:00:00 2001 From: mperrotti Date: Mon, 16 Dec 2024 21:24:15 +0000 Subject: [PATCH 05/14] test(vrt): update snapshots --- ...on-Trailing-Counter-dark-colorblind-linux.png | Bin 0 -> 5961 bytes ...Button-Trailing-Counter-dark-dimmed-linux.png | Bin 0 -> 5864 bytes ...Trailing-Counter-dark-high-contrast-linux.png | Bin 0 -> 6112 bytes .../IconButton-Trailing-Counter-dark-linux.png | Bin 0 -> 5961 bytes ...on-Trailing-Counter-dark-tritanopia-linux.png | Bin 0 -> 5961 bytes ...n-Trailing-Counter-light-colorblind-linux.png | Bin 0 -> 5898 bytes ...railing-Counter-light-high-contrast-linux.png | Bin 0 -> 6180 bytes .../IconButton-Trailing-Counter-light-linux.png | Bin 0 -> 5898 bytes ...n-Trailing-Counter-light-tritanopia-linux.png | Bin 0 -> 5898 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-linux.png create mode 100644 .playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-tritanopia-linux.png diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-colorblind-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..702a092cc1e8c1105458d3970c974a99ee1d80d3 GIT binary patch literal 5961 zcmeI0>sON59>;e%WmB51nvSWBPUoDgwBmHr%nMEFIA&^tgyjV)X4LUUUP48YX1Z9K zvO4D|nuv{thKg2-sHluxq%^Wdkqi;k3~z`E2#Uygd~yDP>6~}Gc-CHPuk}1@@89qH z{e1VcZ=dn^HeYYO9spqO^Svhm023ATfOV^(nKhoAW6-cF5#fCT)V$d~4uGYJkLS0@ z6slYtb|+L#K*tVr*fZHegb>H5V|Gthd_Gr z*`Dv49`+&`NJb?h@4+qmFN9wrzr4BDjDbYl*RI~wdy#Lwf%_^YIkx-F)ay9d-t)aF zIl|WjIjlR8btr8)f|RJ4oh>wsha9dig;upcoxWfTjbrBV769yc?he59O&S0;oft3y z$JhOt$%j;R=gyP9uwZ;V_S-T9V?ODDOYit;C-M;s+xN}{t$cyD1^_}e?%mt0x^oQ) zg0p#1EOA_bzrVkqAHV%VVky$$Y!!>p>d}Aiz5A2sHr^_5740CjF{ulyo9nD{5KL&b zDQraJ>8VB2BmRq@|!zJv%$wR4ChS zWoK6VF;O(KhTwQiPtR&L!HUA&7UeBs4@8+^)X;2f#3eWS1W$y~8RBF-1 zH;h-W@YwcW7ids33E_S57zPq{ANQ8l(c9a*roJ00TT4ZqWWAEQC$AIQNodW#yYdh} zcaU;U`}tkr6vwf93aQk46Eu<4DsW-BSQak{QYdN#)xJ5IND2ioo^_rdQ zg288>kMOv+(_UJeYzN9uZa-j=PN}&{0(-b3v1R%vRkrxg@12Rar~? zBy@)Brbvb{9+@~*##Omuw9J3y)(RH8hdUr|G;UHKOsDL%vbM5HmAMxCM~E7DS(gZv zIs?Aj?edH?Q%FiFSN2Y*+pOA7=)6f<(*Tbq{WNFVZTX2f4&L(9q_bgKkzLw2SwpTx z6Gwe`8nyatv^uU%>EZDg07ADBtTb3`S+*t2W1K%UG?Z-TQvYLQQcMSD$d_2rwj-ja zJOGU!r(^V0wI#Q7c1ttwM&Q-lX-mrfuL*MudBxF?CW^sz6(k%c`lh0dm=*-71_f7t zePowP(fnX$GnSWIxUpc`^~L^UT>XN?EoJO&ps2*^ z+|e^%c`;E{!f3A_sxc(7Bx9tOZ0kDDBh5wN>n5m8J6`NygBK|XZzrW zg-P8!ZSm>SD5bV#yu1iMJ&-yh{iX0tk38v=;DZltMTSA7NHy1RxoehE!co*^uU*@w zhgoFkqe%;WA!!Cx7se%B+pAefa*b&x`Dq)h|F*#+>2g-IkQv6F z%oz$-esteWLDwfKD->VD4=!J0h6E^67zs_G3}gU7DF`xXZkH^5MH4AeH?^kUl zV>FOU_&9cVpP_;7-tWQpu@}jMnT7}E ziD;snH3By?+q*aG64XgfGB;I_SCv)zzJ8WA!nKAcsB{*%R9WTt_&A;;=pnDrg3;!6 z(lMMRy;+1yRr19Z@N#r5ZlG~C%MqoQ1&|h(HgsEh#Vh@sC3u}YZGI|Mb=NyM;*5wz zDC2SuRJHpv1ThUC4tYGEnCl8^(=K%n8ZZ!YmF?82zxPD38sfwRR4d;Z%sAhgIZNIU>G^@0LMmzRQhA6f;MMp4EcH6c^vhC;Z zv>cF(0B{_p-e(;gk9VZ(4Qr0+f1%I$j*gJ4k%@F@fssxYQxZ5q`!>CM<;(c_l}x4v zZFXXP0l-RLfBek6HopF+k2=QE8B6!SIyM`%WYm&TOP~MyY4nlNM@AnRee^k3SVo2z j8DeC}|C1rZ2EYkR+WJq!Umrua&%npa-?Qe#gsOOk7RHZS#VG}xftFDeY8_iINVFI(Aq2G|T3XN|AaaRTxd<2tAp{5n6@@_z zw55%MT%uqnHAo^j5J(^qg~W1|LI^QHK#+S9LINQPN&3#eFrVf_KD_I!wbx$j?6dc? zpWj+H%^FNx)4{(1%? zx1bo7G9zVTRW?^Y%F&?o*<4!0^UIH+il%w|2pDwE+F)$}*xl|8!0l}s0JfbN*#wSl z{a=D{y}Hh}wzi20-`bEGI-Tn>cVIphAxqPDm)0qj%H}9b0MugVNz&XO(d1KbPce#^ zR>fE#G3Vp=ch!rZ=H=ztJ6}kD*AAsxL#YFajqjZ!*-xDvCMRuWtAoe``l@~NYz&Lm zTUilzl>V##{hpN+03K3fc4~5SbAyHD|MDQ@R5U~7(UerfWv!4gb|Ui@M$M~ zK1}U&mJ%Hn;(Kl|SSb4j?=_n6>=*z|B(Obhlm=ezWHw@wUg0Bh+4ZaDb) zOmh3ux{&&Ti#s}@dKqwIZmKRy_eHRm6$Xi*I?xw^@yAUM4;+N9@cIGQnBU!%;+ zsH7U3>2&EjnTZ)|c@hTKaE&?^cSTm`dS%9s5?xKFA2bz0di<>0IJDL=^fatBNy?q8 zhuy7`$dLNQ=eD-Cv3*5~w=0T)XtZ6&qp$LXG16mj<Ir`)m>i%RF0@#Iaym-+xzy%H*DE* z(f8a_-W3DYFh_+pDa)`R^}sJr<(FFlu&l;~_x4x&`T5!0yLWF<;-iZyc2KcK(am2T|^xIJ|_b3CUJ5jVZeKL-{!w>2YzAB7tcw0Zml2R_7SWJdbQ$ zDpQPlsrUc@)v1QX>G0Upws#%=e8Cr)t;F#cvuymr5EJd5IsT%({mv_jOE?sG72A8y zTRSyikNjSL99lyd;!v!KYv2$RBzZHW0Ig4BVzXX5gC174m+)4HLx&iVs_M|3mMrbE zm;3@RZDpP{M$+H1T)?nGr8ZVpl?Wkj!3ThDShn%@Tind&tR!h2bWd@XHnfryGo!t7 zq_C=KB{s?MYrZ3bxY|7#h!kR2FxN9I$sq^fW{q4UllmAs-n_YV&d#rRmsi%>Qs>79 zA(^~v)qKOlPcMpTkaos{@sR|!BW*Jn&pXQyAO5o1GK3LaHBgJPs5V}PS@Bu$rAl$4Z&uJ0$G3WnEgKeYH0BB%nRXhL(d#BI42C|%$N zaAV;(RWTCi<(?sbLNl%~e&o0%js0iUHlZxI0eW{U5lx)9WA8I%y@p{04MkTA@&`$$ z@hpifHM6|tF92L)d_59KeDBBHiAbMqvrxbs-cNc}BGo?msCHiy%}cmHoE&yPBhqeH zv<-Mco;tucsI{I_Z7(5~a6M8KR8m5w_y6|5^=mbI-+X|8_Qyt$T;0sZn))HlxcD2;Le zez?lVN-?Z5gU92PUU-@CeX+y>+|Wkzu{qP-7i!=(ZmNj>7snD37u69=$nSMAe5?-& zH8z*J#lk+KVkKfvZmy+7w%Xp_9sz@Nri*c-{tXXd2E+0~B8TJQGa{qD-Z{K>dTHqr zOX8Wa4CPrsdDkcoi2>yv+~nls{-vskiAVGY?%_*b6#<-4l&hN?>Ih1d05u*}W{_(O zl*$5Z0py&bLUCf(1^^gey>kTM#6O7uY~3y206x9l1XaDw95gq?EC%x;n4Q7wie@61 tX=tXQnTBQ>nrUdJp_zvNFEmv0uA;CG_vNU~&<{Cq#y8+3R;lDY3FeHmA*IX@1E$I-`iJ8 z>v`>Jb$$COLXS&Q%nqv~`wLEAY9BA^_D1CYBlcFyyDzF85129M%xtEmGav zCQN|my_YySIpw(GrqbG*d?F(w{rq}25C{qdazdaUquW{laB%W_5qZL`YBV&Sn zMJ&f?<{SYyVijuGt0?Rau(Gmhin_Z$npczNd%I+QZY@0bb!aBkzCW$LuI>_d`?bJ; zfB|@~loU9$_V>1Rk&FgC^>=KaZCkNlj!v`ZK}iV!slU2wQQ@{N+iZtYf%gK}ddAl_Hl7)A@Ic}`l)196U zL2G@!I@4pv$=)HG$iZ*x++haVZav6~6EawQ@!rG7u&l-+ zrX*OHO<+6eY(XkFm@hysGq^HNcV=yy%D2BoE!i~(Ce>y>%wlV|b)kBgJiFMncFJ>>3R zH$kd0Wb#N>w^XIqaE(7a$1d_VWnjr_6x!)Ytf;Y^m9Ve{!3xCg8Gp9MVwG)3(;+zY z9hj|RL*Z@zQ&9NmmWInu^kNHXFY(>2Yl(9HLbsyQsq$*s-v|lxTN_dJm7x$aQ7;x6 z$Ix`hsDc`BLc=s=SDe_%xR}dJWCXLqwOjYkpA-%c2VpRY)re03K>Z4PSErU)SXwu7 zpGUH3PT2bMc{i6@ScYicG;ufq0Rf}^BTdHn4Fd*kVsyFGFuIi3uqa)H;3q(#K1c7n zN58$k)IUk4z^dX89EyqY!zuQLt^~k3{NM&nIfmh-s2gCj*{hyZh+apaZmfTlqMqWc z8yp<0QzA6~?6M{H9>?(ArGlGC&v_m}cdkR#s3@*~Y$t&978>4AfB&)IjWE(^L+m5@ z&S4?K2E6b(#bu_A&0$SHZ6!h5su-&C?aHxcjZmv*kdqZnYVNj_()|2<`}6{;R})@X zkdeQ0Rx_o{Awm<>`jEJx$Ff&=`%VG?ZL3SO(Cm}7XL{dD*j(256*r_nF3(ta(}B+2 zPJW7HT`pi2F>7aC+}tpj>!de^z}c?&N97+-coL_47$w=k0RYGZ6Crqx4QrD`!6AV_ZGa<)%G zAteWojwG+@^=$La&dDj8&wwaRYAmF7a8A$1CNIcUeBB&1Pj7gFVlZ_MT{alzyP{3s z6r;DMpN8rctGsmDE!48AvQxEZ{Cu5P17I1jDHC!EuJ56fq`zUvq=}vwCCk{_Lha6Ykk;|T?Lsjnf2gmM*iKe z2=D2kIj)pCG=G(q%h{K+c~j;M0K^tLILP$DWMdOG${_nGrs`hu_zsC)N19}`x}1LY zvpL!+Dg0%AO-;?rn$3rEJaCe--!#HR;qcNsdfR~#w6IAb)^+9zXvT9l>^$cm7G$RA zCQCemW2L#ZC5N-8PkO<0Xlb{}FhQmoc{LI`QAyt!C#owQ;CRGeVhCDdqNAr|*p$T? zJEfpSHgG@Ou((irW~{G&+2#5U9AMyuNbcE7WOgtXX zfa!rAZdv-`#f$j_e4RP?97Piw#*RC{F8Dx6W%cz5L+xJaF!NdNhZ*T7uH(aU&jMna zd*OFCt<*gOv&26siKNd!j=n)X`iXq}Sdv&yZo|lP3ZA{h6f~T-ESd@a;aBjQ-0##7DLursXEj|F7Cv zQ!bfu$&^bU|66FPBU2rj>c~__AM>sON59>;e%WmB51nvSWBPUoDgwBmHr%nMEFIA&^tgyjV)X4LUUUP48YX1Z9K zvO4D|nuv{thKg2-sHluxq%^Wdkqi;k3~z`E2#Uygd~yDP>6~}Gc-CHPuk}1@@89qH z{e1VcZ=dn^HeYYO9spqO^Svhm023ATfOV^(nKhoAW6-cF5#fCT)V$d~4uGYJkLS0@ z6slYtb|+L#K*tVr*fZHegb>H5V|Gthd_Gr z*`Dv49`+&`NJb?h@4+qmFN9wrzr4BDjDbYl*RI~wdy#Lwf%_^YIkx-F)ay9d-t)aF zIl|WjIjlR8btr8)f|RJ4oh>wsha9dig;upcoxWfTjbrBV769yc?he59O&S0;oft3y z$JhOt$%j;R=gyP9uwZ;V_S-T9V?ODDOYit;C-M;s+xN}{t$cyD1^_}e?%mt0x^oQ) zg0p#1EOA_bzrVkqAHV%VVky$$Y!!>p>d}Aiz5A2sHr^_5740CjF{ulyo9nD{5KL&b zDQraJ>8VB2BmRq@|!zJv%$wR4ChS zWoK6VF;O(KhTwQiPtR&L!HUA&7UeBs4@8+^)X;2f#3eWS1W$y~8RBF-1 zH;h-W@YwcW7ids33E_S57zPq{ANQ8l(c9a*roJ00TT4ZqWWAEQC$AIQNodW#yYdh} zcaU;U`}tkr6vwf93aQk46Eu<4DsW-BSQak{QYdN#)xJ5IND2ioo^_rdQ zg288>kMOv+(_UJeYzN9uZa-j=PN}&{0(-b3v1R%vRkrxg@12Rar~? zBy@)Brbvb{9+@~*##Omuw9J3y)(RH8hdUr|G;UHKOsDL%vbM5HmAMxCM~E7DS(gZv zIs?Aj?edH?Q%FiFSN2Y*+pOA7=)6f<(*Tbq{WNFVZTX2f4&L(9q_bgKkzLw2SwpTx z6Gwe`8nyatv^uU%>EZDg07ADBtTb3`S+*t2W1K%UG?Z-TQvYLQQcMSD$d_2rwj-ja zJOGU!r(^V0wI#Q7c1ttwM&Q-lX-mrfuL*MudBxF?CW^sz6(k%c`lh0dm=*-71_f7t zePowP(fnX$GnSWIxUpc`^~L^UT>XN?EoJO&ps2*^ z+|e^%c`;E{!f3A_sxc(7Bx9tOZ0kDDBh5wN>n5m8J6`NygBK|XZzrW zg-P8!ZSm>SD5bV#yu1iMJ&-yh{iX0tk38v=;DZltMTSA7NHy1RxoehE!co*^uU*@w zhgoFkqe%;WA!!Cx7se%B+pAefa*b&x`Dq)h|F*#+>2g-IkQv6F z%oz$-esteWLDwfKD->VD4=!J0h6E^67zs_G3}gU7DF`xXZkH^5MH4AeH?^kUl zV>FOU_&9cVpP_;7-tWQpu@}jMnT7}E ziD;snH3By?+q*aG64XgfGB;I_SCv)zzJ8WA!nKAcsB{*%R9WTt_&A;;=pnDrg3;!6 z(lMMRy;+1yRr19Z@N#r5ZlG~C%MqoQ1&|h(HgsEh#Vh@sC3u}YZGI|Mb=NyM;*5wz zDC2SuRJHpv1ThUC4tYGEnCl8^(=K%n8ZZ!YmF?82zxPD38sfwRR4d;Z%sAhgIZNIU>G^@0LMmzRQhA6f;MMp4EcH6c^vhC;Z zv>cF(0B{_p-e(;gk9VZ(4Qr0+f1%I$j*gJ4k%@F@fssxYQxZ5q`!>CM<;(c_l}x4v zZFXXP0l-RLfBek6HopF+k2=QE8B6!SIyM`%WYm&TOP~MyY4nlNM@AnRee^k3SVo2z j8DeC}|C1rZ2EYkR+WJq!Umrua&%npa-?Qe#gsON59>;e%WmB51nvSWBPUoDgwBmHr%nMEFIA&^tgyjV)X4LUUUP48YX1Z9K zvO4D|nuv{thKg2-sHluxq%^Wdkqi;k3~z`E2#Uygd~yDP>6~}Gc-CHPuk}1@@89qH z{e1VcZ=dn^HeYYO9spqO^Svhm023ATfOV^(nKhoAW6-cF5#fCT)V$d~4uGYJkLS0@ z6slYtb|+L#K*tVr*fZHegb>H5V|Gthd_Gr z*`Dv49`+&`NJb?h@4+qmFN9wrzr4BDjDbYl*RI~wdy#Lwf%_^YIkx-F)ay9d-t)aF zIl|WjIjlR8btr8)f|RJ4oh>wsha9dig;upcoxWfTjbrBV769yc?he59O&S0;oft3y z$JhOt$%j;R=gyP9uwZ;V_S-T9V?ODDOYit;C-M;s+xN}{t$cyD1^_}e?%mt0x^oQ) zg0p#1EOA_bzrVkqAHV%VVky$$Y!!>p>d}Aiz5A2sHr^_5740CjF{ulyo9nD{5KL&b zDQraJ>8VB2BmRq@|!zJv%$wR4ChS zWoK6VF;O(KhTwQiPtR&L!HUA&7UeBs4@8+^)X;2f#3eWS1W$y~8RBF-1 zH;h-W@YwcW7ids33E_S57zPq{ANQ8l(c9a*roJ00TT4ZqWWAEQC$AIQNodW#yYdh} zcaU;U`}tkr6vwf93aQk46Eu<4DsW-BSQak{QYdN#)xJ5IND2ioo^_rdQ zg288>kMOv+(_UJeYzN9uZa-j=PN}&{0(-b3v1R%vRkrxg@12Rar~? zBy@)Brbvb{9+@~*##Omuw9J3y)(RH8hdUr|G;UHKOsDL%vbM5HmAMxCM~E7DS(gZv zIs?Aj?edH?Q%FiFSN2Y*+pOA7=)6f<(*Tbq{WNFVZTX2f4&L(9q_bgKkzLw2SwpTx z6Gwe`8nyatv^uU%>EZDg07ADBtTb3`S+*t2W1K%UG?Z-TQvYLQQcMSD$d_2rwj-ja zJOGU!r(^V0wI#Q7c1ttwM&Q-lX-mrfuL*MudBxF?CW^sz6(k%c`lh0dm=*-71_f7t zePowP(fnX$GnSWIxUpc`^~L^UT>XN?EoJO&ps2*^ z+|e^%c`;E{!f3A_sxc(7Bx9tOZ0kDDBh5wN>n5m8J6`NygBK|XZzrW zg-P8!ZSm>SD5bV#yu1iMJ&-yh{iX0tk38v=;DZltMTSA7NHy1RxoehE!co*^uU*@w zhgoFkqe%;WA!!Cx7se%B+pAefa*b&x`Dq)h|F*#+>2g-IkQv6F z%oz$-esteWLDwfKD->VD4=!J0h6E^67zs_G3}gU7DF`xXZkH^5MH4AeH?^kUl zV>FOU_&9cVpP_;7-tWQpu@}jMnT7}E ziD;snH3By?+q*aG64XgfGB;I_SCv)zzJ8WA!nKAcsB{*%R9WTt_&A;;=pnDrg3;!6 z(lMMRy;+1yRr19Z@N#r5ZlG~C%MqoQ1&|h(HgsEh#Vh@sC3u}YZGI|Mb=NyM;*5wz zDC2SuRJHpv1ThUC4tYGEnCl8^(=K%n8ZZ!YmF?82zxPD38sfwRR4d;Z%sAhgIZNIU>G^@0LMmzRQhA6f;MMp4EcH6c^vhC;Z zv>cF(0B{_p-e(;gk9VZ(4Qr0+f1%I$j*gJ4k%@F@fssxYQxZ5q`!>CM<;(c_l}x4v zZFXXP0l-RLfBek6HopF+k2=QE8B6!SIyM`%WYm&TOP~MyY4nlNM@AnRee^k3SVo2z j8DeC}|C1rZ2EYkR+WJq!Umrua&%npa-?Qe#gKk&|}@5lUb&zv*o&fK}5?`N5r z>;6b@)74v70{~2YemoKg!14v?0V|h5J;q09?oeZt6zF{j)Uhom0rX)0 z(9_N{H*iNs`A#G+DEN+-aaF+eT+_{eRruNjY#0S1hwZ+WMeVFsiCo%TRDeIh-O)Ix za3tfY)H**JIflJ|ex{PFpD*$y4cY^6IAKC!t9b60N=D90N}UvN&wa$8eI-N zR{ovN&H3|ijBJ>e&S{S%2S4C59Dmuyjpcsu!gc-G`?GnDrHlfA2Qe5+7g!1uSFPaP z3FydH|0f6C{A+sJ{uFsu?k=oV2yl0oQ+N$TYq+4>2wcHGJUYs3JQq{`^rl0E8{(+@ z*C|rL&%16!RZgY@koXoW!YfPYQBCQAdANX$N6nq4?|t&?w9Qc-0^kuk+DeITrecy? zXEnP;`CF~F2;_ZpV|1uu6NRCj+8{FjsTrGdHmAx9cd>f-pr8gqhEZ^NG>)Dg95@20UL!nHi00%Zi~Xp30aw$j&5kKoS7tl|9-hfR*_x?^^7 z!Jd{vpHmSs)c230)Y))!O-PJo$)p^c^RJYe)s`KB?u>I$i`xS-_-< zujY{inpvAZQolqlsiP@!M$n`nyFynqezIIDwkMEn8 z769-^8S&gcSwy|2AcjaBf~Be2SW0AEy7U^EebTwlh%fl2Vy07>BTN_KngpLavjyJ= zBjQJrIJGoMUHQ?xx>ID)`k47LJBXuOmbNJKPGNn>T;9S2%#1L^`suc7cx|^MJyLYo z&V;#e%@lRg-L(-bpPHk83yZ^%Z#qXeJx zsfd~}Os!$#&(A+t!-0#RVVn@-&Lbs+x!g|XHGcd)hiTk;7Ddrdu$Qr%JCi2~+yc zyuoA5dajP)xoQDS+on>b25hV(rtk{vLz*>j>^%cA&W*A3`h{HRm5Yx!!VLf*kKq`J zi1@Q-g_#7+l*>p7Q_(~!!Uu9i4tib7AdI2R!_N&ACY;=pFu*Hu0p@UF0Tb@G(Z<8DfHgca}4fHKWfjlJNGvHr^JytZqwERYIE)-4|AB7YW zDRR_*(?=!1QDWsU%Cq->Tn(=LGwHfIf&|;UcP|4S%V`fHb9d4Bi=p9qZZ+2nce?lW z?8L9Ecklem1NRB+m;Gn{qoaQI-3>*8G<;o*o5JqCFD0y&8%wz>W|~4yb5FDlirAJ_ z9bU38O4=_BYQylqy~i;?XMpbiwO=-H$-pH8m%jYmY0!~DM+O}kbo3>6R|XF;c!(-H@)-DdB9GJ^I{oXv0Zb;nrvLx| literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-high-contrast-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1045fc66a9b4e578be6191b335014c9c92db09be GIT binary patch literal 6180 zcmeHL`&Uy}7QX5zwN|MGUm!_4E<3ggv_lnnglGk+Rf$MRiV z-?``dF+bn6AKHBg0KnQq-+3PgfEA0-1AMR?@~re`xkJOU*yFz60*v0RGXStjbjW-E z4~g_SA@LSkOYT-b|7XSJu&IqFLusta6F)_kNLCJbfBm_Q^U0y16Q|h+k4)B_^XBfY zIV-s_m{?To?JyRaJMf+NxvY%SK9RZT{p>aApKXr+iMxthm(jfDmCpL}%%J7b>Y$BY zNo}T4M4yT-BbtbPN|hUmHat8GWhKyL$LXM~_MN>(1b`1dQ!WEOz1nOAT>4l71AuS; zinBAsgDj;uCWo6QQHB^^?Qkt&*UWbg6~)E;`Jw}UTg>mG@l@q(5CGioY-wn0RCbFRaJJi zXm<7sDBI9c2T);e58g-hEBE>MuwjdIH~_pYi8uM@uzD0b(Yvs^m`KQig{ft0$FS&- z5U-#6@5|-;OMGwIxy5uc^49}^yI2VWL9w}`rAhp5@zSz1xSMona3@i>ODuX-R#w&| zS3o9nCK-O+6hik*k}&dZp{StilTX3|I8;@kae-6Y${+VUKiywK^^#xP=7qIo_nBle zGuYl|is4m}!I3jV)Bb1ta{FtDAo3!!x*SJ*yWZE2PLg&fDHi@?x2<45+Ol0x$T;ny zBFdm_IvkAxfVwj~!o~^7W}`i!wUQCVogPTj%?!%eo9+tZK!jqrCSqi0VY)=4*Ufo^ z_pDb8w;A8u$q3J7jSlwae05$>m!I=S@UVLh=Qf`k(XP#>JejZ= z{}=#f4}HG{)W{qws+YdC!8~-$O?GyoM10sx6tw^GxY8T?RGc}y;}VLp z_(CKEy;Ri!Wk=ka#zNXb=PN7LZEg;aH0l@{Nj*&us@mt&P^(fN&ve3hl-Rmf8#^)#=ih-E+rtRyR1+=MGkO^u6OmkA?JSNNwj zx(WK{^OB8Akt%m4lc~p`qlkuy$FcHr3a93I1sry7@4E+-X1UxcxTW>2LDNo_&8?qoaL%eDY`^L~V9;ZSw=1*(A$HGP#GdvsXk!C`OZ@{;Bi*GHjfpd^?HV z!|cJ;{nE{WC50w)%I;25;Z4Tv!6&d|u$G8n2eKYSPITVcb6#-FmMuM+mz$TDQJkoL zSGtKDd5&6u2=8qvM~UZ5t`M6^vKP*}rC4F$F)u#TNF6J-ATA2(iYUKuBRDv0!}N8C zXn28vV=O=3{rvOEA&6Yj^eF~e;GB!<WR?BEzSilmD{Jf|oQNvlBe*R&OkALeE$<2E% zs&PVlI>)&!R7?hiPkj#FbieQvpE0`CbNUuiymTM{kN3CLTR+(989H5+y%Vb88>Gyn z6cP)_y^rCD>Y}2F4BTcM0CW^ya;h1NB8ZFBxB?O%R0-6%3DBGjmMZuO>D^TqKRD9V z31PDvhFyG3Pdk{oHF}_74N_a_kZnX;_axUH4&vjxVSL8OXyQ4wgb~K>TwP8eJY7j~ zjhuLHP5P|~04@oAubX4q1F0~CQ`;MrjEkFxrYgYJhiarC|3Ogfv(=NmUW%UjdMb1M z&kMh=9;|(b4hx%_U%w66wSauB<>PQViAMZn0-m6}0O{FeR$`ygH-F*RJGJ*rTnM3i zTwQVTGi-`B`w=pHgrF6w#^+z4;K|aN@_0#2;R(YV{2J*OkocK?zwn}w{zs8$;R5wpE$N!xK*uR7)0n|7W9spTPP_@d~L&A(dJ8QIQl zi+}tfD+q3DX{@X~OWeufaH^}TS79&|b(Z>hn)MhHzZ}>n8xu}G*^z#GTPk(y*R7Ar z-U_k?|7x7+YBZjxWcAVAVm-nOf z@(~d8W%WSXjfRuvpIX65bzz*lj@ZVmi&dG&(eG`T8Np`+v*LBTpbwn(fP)YMqe_MF z3TQF$sK0y~`J0CsOSq--|Eq(s1xpqzS+Ml?e=se5Wa%SIA6fe7?_5$@IK;vs77np+ f$p4c=49FdE71WPLU*^`7pdaLj literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a38530359c5d8bb5b54831cf08ca60e1b5b58790 GIT binary patch literal 5898 zcmeHL`BziN9v@U5Zit?0Q30{?S`-ANJP8stR0Rs!uoO^0i3^KGAPPtzki=6fR8cH$ zfGkmD5fCE8fH5S20zpI)DTF1ELKk&|}@5lUb&zv*o&fK}5?`N5r z>;6b@)74v70{~2YemoKg!14v?0V|h5J;q09?oeZt6zF{j)Uhom0rX)0 z(9_N{H*iNs`A#G+DEN+-aaF+eT+_{eRruNjY#0S1hwZ+WMeVFsiCo%TRDeIh-O)Ix za3tfY)H**JIflJ|ex{PFpD*$y4cY^6IAKC!t9b60N=D90N}UvN&wa$8eI-N zR{ovN&H3|ijBJ>e&S{S%2S4C59Dmuyjpcsu!gc-G`?GnDrHlfA2Qe5+7g!1uSFPaP z3FydH|0f6C{A+sJ{uFsu?k=oV2yl0oQ+N$TYq+4>2wcHGJUYs3JQq{`^rl0E8{(+@ z*C|rL&%16!RZgY@koXoW!YfPYQBCQAdANX$N6nq4?|t&?w9Qc-0^kuk+DeITrecy? zXEnP;`CF~F2;_ZpV|1uu6NRCj+8{FjsTrGdHmAx9cd>f-pr8gqhEZ^NG>)Dg95@20UL!nHi00%Zi~Xp30aw$j&5kKoS7tl|9-hfR*_x?^^7 z!Jd{vpHmSs)c230)Y))!O-PJo$)p^c^RJYe)s`KB?u>I$i`xS-_-< zujY{inpvAZQolqlsiP@!M$n`nyFynqezIIDwkMEn8 z769-^8S&gcSwy|2AcjaBf~Be2SW0AEy7U^EebTwlh%fl2Vy07>BTN_KngpLavjyJ= zBjQJrIJGoMUHQ?xx>ID)`k47LJBXuOmbNJKPGNn>T;9S2%#1L^`suc7cx|^MJyLYo z&V;#e%@lRg-L(-bpPHk83yZ^%Z#qXeJx zsfd~}Os!$#&(A+t!-0#RVVn@-&Lbs+x!g|XHGcd)hiTk;7Ddrdu$Qr%JCi2~+yc zyuoA5dajP)xoQDS+on>b25hV(rtk{vLz*>j>^%cA&W*A3`h{HRm5Yx!!VLf*kKq`J zi1@Q-g_#7+l*>p7Q_(~!!Uu9i4tib7AdI2R!_N&ACY;=pFu*Hu0p@UF0Tb@G(Z<8DfHgca}4fHKWfjlJNGvHr^JytZqwERYIE)-4|AB7YW zDRR_*(?=!1QDWsU%Cq->Tn(=LGwHfIf&|;UcP|4S%V`fHb9d4Bi=p9qZZ+2nce?lW z?8L9Ecklem1NRB+m;Gn{qoaQI-3>*8G<;o*o5JqCFD0y&8%wz>W|~4yb5FDlirAJ_ z9bU38O4=_BYQylqy~i;?XMpbiwO=-H$-pH8m%jYmY0!~DM+O}kbo3>6R|XF;c!(-H@)-DdB9GJ^I{oXv0Zb;nrvLx| literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-tritanopia-linux.png b/.playwright/snapshots/components/IconButton.test.ts-snapshots/IconButton-Trailing-Counter-light-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a38530359c5d8bb5b54831cf08ca60e1b5b58790 GIT binary patch literal 5898 zcmeHL`BziN9v@U5Zit?0Q30{?S`-ANJP8stR0Rs!uoO^0i3^KGAPPtzki=6fR8cH$ zfGkmD5fCE8fH5S20zpI)DTF1ELKk&|}@5lUb&zv*o&fK}5?`N5r z>;6b@)74v70{~2YemoKg!14v?0V|h5J;q09?oeZt6zF{j)Uhom0rX)0 z(9_N{H*iNs`A#G+DEN+-aaF+eT+_{eRruNjY#0S1hwZ+WMeVFsiCo%TRDeIh-O)Ix za3tfY)H**JIflJ|ex{PFpD*$y4cY^6IAKC!t9b60N=D90N}UvN&wa$8eI-N zR{ovN&H3|ijBJ>e&S{S%2S4C59Dmuyjpcsu!gc-G`?GnDrHlfA2Qe5+7g!1uSFPaP z3FydH|0f6C{A+sJ{uFsu?k=oV2yl0oQ+N$TYq+4>2wcHGJUYs3JQq{`^rl0E8{(+@ z*C|rL&%16!RZgY@koXoW!YfPYQBCQAdANX$N6nq4?|t&?w9Qc-0^kuk+DeITrecy? zXEnP;`CF~F2;_ZpV|1uu6NRCj+8{FjsTrGdHmAx9cd>f-pr8gqhEZ^NG>)Dg95@20UL!nHi00%Zi~Xp30aw$j&5kKoS7tl|9-hfR*_x?^^7 z!Jd{vpHmSs)c230)Y))!O-PJo$)p^c^RJYe)s`KB?u>I$i`xS-_-< zujY{inpvAZQolqlsiP@!M$n`nyFynqezIIDwkMEn8 z769-^8S&gcSwy|2AcjaBf~Be2SW0AEy7U^EebTwlh%fl2Vy07>BTN_KngpLavjyJ= zBjQJrIJGoMUHQ?xx>ID)`k47LJBXuOmbNJKPGNn>T;9S2%#1L^`suc7cx|^MJyLYo z&V;#e%@lRg-L(-bpPHk83yZ^%Z#qXeJx zsfd~}Os!$#&(A+t!-0#RVVn@-&Lbs+x!g|XHGcd)hiTk;7Ddrdu$Qr%JCi2~+yc zyuoA5dajP)xoQDS+on>b25hV(rtk{vLz*>j>^%cA&W*A3`h{HRm5Yx!!VLf*kKq`J zi1@Q-g_#7+l*>p7Q_(~!!Uu9i4tib7AdI2R!_N&ACY;=pFu*Hu0p@UF0Tb@G(Z<8DfHgca}4fHKWfjlJNGvHr^JytZqwERYIE)-4|AB7YW zDRR_*(?=!1QDWsU%Cq->Tn(=LGwHfIf&|;UcP|4S%V`fHb9d4Bi=p9qZZ+2nce?lW z?8L9Ecklem1NRB+m;Gn{qoaQI-3>*8G<;o*o5JqCFD0y&8%wz>W|~4yb5FDlirAJ_ z9bU38O4=_BYQylqy~i;?XMpbiwO=-H$-pH8m%jYmY0!~DM+O}kbo3>6R|XF;c!(-H@)-DdB9GJ^I{oXv0Zb;nrvLx| literal 0 HcmV?d00001 From 6dbcecf70085c8f41ecadcdb2ee50326c0a440e5 Mon Sep 17 00:00:00 2001 From: Mike Perrotti Date: Mon, 16 Dec 2024 16:35:03 -0500 Subject: [PATCH 06/14] adds 'count' to IconButton Playground story --- packages/react/src/Button/IconButton.stories.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react/src/Button/IconButton.stories.tsx b/packages/react/src/Button/IconButton.stories.tsx index 845fa4b5415..cf0a7cc3c3c 100644 --- a/packages/react/src/Button/IconButton.stories.tsx +++ b/packages/react/src/Button/IconButton.stories.tsx @@ -35,6 +35,11 @@ Playground.argTypes = { }, options: ['default', 'primary', 'danger', 'invisible'], }, + count: { + control: { + type: 'number', + }, + }, icon: OcticonArgType([EyeClosedIcon, EyeIcon, SearchIcon, XIcon, HeartIcon]), } Playground.args = { From f4a26e4aa445af50a50df94167391652403c96d8 Mon Sep 17 00:00:00 2001 From: Mike Perrotti Date: Wed, 18 Dec 2024 16:03:35 -0500 Subject: [PATCH 07/14] addresses feedback to modify component API --- .../src/Button/Button.features.stories.tsx | 8 ++++- .../react/src/Button/ButtonBase.module.css | 28 +++++++-------- packages/react/src/Button/ButtonBase.tsx | 34 +++---------------- .../react/src/Button/IconButton.docs.json | 8 ----- packages/react/src/Button/IconButton.tsx | 11 ++---- packages/react/src/Button/types.ts | 1 - 6 files changed, 27 insertions(+), 63 deletions(-) diff --git a/packages/react/src/Button/Button.features.stories.tsx b/packages/react/src/Button/Button.features.stories.tsx index 61bceaafd6f..1688770a928 100644 --- a/packages/react/src/Button/Button.features.stories.tsx +++ b/packages/react/src/Button/Button.features.stories.tsx @@ -62,7 +62,13 @@ export const TrailingCounter = () => { } export const TrailingCounterWithNoText = () => { - return