diff --git a/.changeset/clean-mails-accept.md b/.changeset/clean-mails-accept.md deleted file mode 100644 index 00d788b60fc..00000000000 --- a/.changeset/clean-mails-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": minor ---- - -Convert Details to css module behind feature flag diff --git a/.changeset/gold-items-shave.md b/.changeset/gold-items-shave.md deleted file mode 100644 index 3d45affb5f7..00000000000 --- a/.changeset/gold-items-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": patch ---- - -Move Checkbox css module feature flag to staff diff --git a/.changeset/itchy-paws-bake.md b/.changeset/itchy-paws-bake.md deleted file mode 100644 index 532507c7a46..00000000000 --- a/.changeset/itchy-paws-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": patch ---- - -fix(SegmentedControl): set global focus styles diff --git a/.changeset/odd-singers-hammer.md b/.changeset/odd-singers-hammer.md new file mode 100644 index 00000000000..487fa8e0cdb --- /dev/null +++ b/.changeset/odd-singers-hammer.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Update Blankslate description text to always be centered diff --git a/.changeset/old-plums-explode.md b/.changeset/old-plums-explode.md deleted file mode 100644 index 494da343cbb..00000000000 --- a/.changeset/old-plums-explode.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": patch ---- - -fix(DataTable): export datatable utility types diff --git a/.changeset/shy-seahorses-mix.md b/.changeset/shy-seahorses-mix.md deleted file mode 100644 index 1819269fecf..00000000000 --- a/.changeset/shy-seahorses-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@primer/react': minor ---- - -AvatarStack: Adds keyboard support to `AvatarStack` diff --git a/.changeset/six-colts-admire.md b/.changeset/six-colts-admire.md deleted file mode 100644 index 91cdb94123e..00000000000 --- a/.changeset/six-colts-admire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": minor ---- - -Remove CSS modules feature flag from Label component diff --git a/.changeset/tender-dodos-walk.md b/.changeset/tender-dodos-walk.md new file mode 100644 index 00000000000..3ba0bcc752b --- /dev/null +++ b/.changeset/tender-dodos-walk.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +fix(Treevieew):do not add aria-describedby attribute when empty leading/trailing visual diff --git a/.changeset/thirty-worms-accept.md b/.changeset/thirty-worms-accept.md new file mode 100644 index 00000000000..ecb267ba39f --- /dev/null +++ b/.changeset/thirty-worms-accept.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Move ButtonGroup css module feature flag to staff diff --git a/.changeset/twelve-kings-confess.md b/.changeset/twelve-kings-confess.md deleted file mode 100644 index 7d55fca5497..00000000000 --- a/.changeset/twelve-kings-confess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@primer/react': minor ---- - -Adds NavList.GroupHeading component that can be used instead of the ActionList.Group 'title' prop if you need to render something besides a string diff --git a/.changeset/wild-maps-grow.md b/.changeset/wild-maps-grow.md deleted file mode 100644 index e3b514572c5..00000000000 --- a/.changeset/wild-maps-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": patch ---- - -fix(FormControl): allow required check boxes in CheckboxGroup diff --git a/.changeset/wise-llamas-exist.md b/.changeset/wise-llamas-exist.md deleted file mode 100644 index dbd3aeb645d..00000000000 --- a/.changeset/wise-llamas-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@primer/react": patch ---- - -Move CounterLabel css modules feature flag to staff diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-colorblind-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-colorblind-linux.png index 4b1e677fe72..1905f3f847a 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-colorblind-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-dimmed-linux.png index a9efebdc3e3..967f7cbcfb5 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-dimmed-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-high-contrast-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-high-contrast-linux.png index cd1cecebfa0..2c2ce98505b 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-high-contrast-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-linux.png index b07f9bd9b81..a88f2098ed4 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-tritanopia-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-tritanopia-linux.png index 4b1e677fe72..1905f3f847a 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-tritanopia-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-colorblind-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-colorblind-linux.png index 34c94edc143..f1c994fa927 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-colorblind-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-high-contrast-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-high-contrast-linux.png index 04228fc3f0f..7583d11bf8b 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-high-contrast-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-linux.png index e7b61f00caa..df3ba67a85c 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-tritanopia-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-tritanopia-linux.png index 34c94edc143..f1c994fa927 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-tritanopia-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-sm-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-sm-linux.png index 545946dac1e..5d91cc5e880 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-sm-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-sm-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-xs-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-xs-linux.png index 50d632d028a..bfff59ee3ff 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-xs-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Default-primer-breakpoint-xs-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-colorblind-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-colorblind-linux.png index 3c595b1a3ed..1a7786b2ed2 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-colorblind-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-dimmed-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-dimmed-linux.png index 4c4ff17f895..34735079b5a 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-dimmed-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-high-contrast-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-high-contrast-linux.png index 245b66011ef..862b5aa944b 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-high-contrast-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-linux.png index 3c595b1a3ed..1a7786b2ed2 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-tritanopia-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-tritanopia-linux.png index 3c595b1a3ed..1a7786b2ed2 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-tritanopia-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-colorblind-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-colorblind-linux.png index 905d4138bcf..e5720bd3e36 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-colorblind-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-high-contrast-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-high-contrast-linux.png index 2645dbea50a..0116d65f7c4 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-high-contrast-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-linux.png index 905d4138bcf..e5720bd3e36 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-tritanopia-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-tritanopia-linux.png index 905d4138bcf..e5720bd3e36 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-tritanopia-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-primer-breakpoint-sm-linux.png b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-primer-breakpoint-sm-linux.png index 94b2c667b81..2c969788c4b 100644 Binary files a/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-primer-breakpoint-sm-linux.png and b/.playwright/snapshots/components/Blankslate.test.ts-snapshots/Blankslate-Narrow-primer-breakpoint-sm-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-colorblind-linux.png new file mode 100644 index 00000000000..27ccc6c0974 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-dimmed-linux.png new file mode 100644 index 00000000000..01f0ad92d1c Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-high-contrast-linux.png new file mode 100644 index 00000000000..a06106921a3 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-linux.png new file mode 100644 index 00000000000..27ccc6c0974 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-tritanopia-linux.png new file mode 100644 index 00000000000..27ccc6c0974 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-colorblind-linux.png new file mode 100644 index 00000000000..6b41bd53654 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-high-contrast-linux.png new file mode 100644 index 00000000000..c5ffb9f24f7 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-linux.png new file mode 100644 index 00000000000..6b41bd53654 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-tritanopia-linux.png new file mode 100644 index 00000000000..6b41bd53654 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Custom-Required-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-colorblind-linux.png new file mode 100644 index 00000000000..ad84350f1b1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-dimmed-linux.png new file mode 100644 index 00000000000..7bd8d7fceff Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-high-contrast-linux.png new file mode 100644 index 00000000000..d9ca11552d6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-linux.png new file mode 100644 index 00000000000..ad84350f1b1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-tritanopia-linux.png new file mode 100644 index 00000000000..ad84350f1b1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-colorblind-linux.png new file mode 100644 index 00000000000..33e920fd488 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-high-contrast-linux.png new file mode 100644 index 00000000000..60f4358aeb1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-linux.png new file mode 100644 index 00000000000..33e920fd488 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-tritanopia-linux.png new file mode 100644 index 00000000000..33e920fd488 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Default-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-colorblind-linux.png new file mode 100644 index 00000000000..29f000dbf0e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-dimmed-linux.png new file mode 100644 index 00000000000..128bfda301f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-high-contrast-linux.png new file mode 100644 index 00000000000..1a81d7ff028 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-linux.png new file mode 100644 index 00000000000..29f000dbf0e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-tritanopia-linux.png new file mode 100644 index 00000000000..29f000dbf0e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-colorblind-linux.png new file mode 100644 index 00000000000..5671831fe39 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-high-contrast-linux.png new file mode 100644 index 00000000000..7110a8437bb Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-linux.png new file mode 100644 index 00000000000..5671831fe39 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-tritanopia-linux.png new file mode 100644 index 00000000000..5671831fe39 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Disabled-Inputs-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-colorblind-linux.png new file mode 100644 index 00000000000..fca2e5f1da0 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-dimmed-linux.png new file mode 100644 index 00000000000..96658607f36 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-high-contrast-linux.png new file mode 100644 index 00000000000..d06f57dbc20 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-linux.png new file mode 100644 index 00000000000..ccdf6c4d69b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-tritanopia-linux.png new file mode 100644 index 00000000000..ccdf6c4d69b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-colorblind-linux.png new file mode 100644 index 00000000000..6b47ec1a4ec Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-high-contrast-linux.png new file mode 100644 index 00000000000..54715297019 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-linux.png new file mode 100644 index 00000000000..51dab31443a Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-tritanopia-linux.png new file mode 100644 index 00000000000..51dab31443a Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Form-Control-with-Custom-Input-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-colorblind-linux.png new file mode 100644 index 00000000000..818047e9e0b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-dimmed-linux.png new file mode 100644 index 00000000000..95116afc2b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-high-contrast-linux.png new file mode 100644 index 00000000000..a9af5ab7c59 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-linux.png new file mode 100644 index 00000000000..818047e9e0b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-tritanopia-linux.png new file mode 100644 index 00000000000..818047e9e0b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-colorblind-linux.png new file mode 100644 index 00000000000..7f23e3de314 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-high-contrast-linux.png new file mode 100644 index 00000000000..331ab81b7aa Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-linux.png new file mode 100644 index 00000000000..7f23e3de314 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-tritanopia-linux.png new file mode 100644 index 00000000000..7f23e3de314 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Single-Input-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-colorblind-linux.png new file mode 100644 index 00000000000..b21034906ea Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-dimmed-linux.png new file mode 100644 index 00000000000..a49b85d36b4 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-high-contrast-linux.png new file mode 100644 index 00000000000..6878a99f0f6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-linux.png new file mode 100644 index 00000000000..b889aab42b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-tritanopia-linux.png new file mode 100644 index 00000000000..b889aab42b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-colorblind-linux.png new file mode 100644 index 00000000000..cb6c4a7d988 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-high-contrast-linux.png new file mode 100644 index 00000000000..a6094f7ed29 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-linux.png new file mode 100644 index 00000000000..f506c10a981 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-tritanopia-linux.png new file mode 100644 index 00000000000..f506c10a981 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-Validation-Example-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-colorblind-linux.png new file mode 100644 index 00000000000..e9b42e286b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-dimmed-linux.png new file mode 100644 index 00000000000..34608e439e0 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-high-contrast-linux.png new file mode 100644 index 00000000000..d790280bcd8 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-linux.png new file mode 100644 index 00000000000..e9b42e286b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-tritanopia-linux.png new file mode 100644 index 00000000000..e9b42e286b5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-colorblind-linux.png new file mode 100644 index 00000000000..06b5095a388 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-high-contrast-linux.png new file mode 100644 index 00000000000..8cc7e17646b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-linux.png new file mode 100644 index 00000000000..06b5095a388 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-tritanopia-linux.png new file mode 100644 index 00000000000..06b5095a388 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-And-Disabled-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-colorblind-linux.png new file mode 100644 index 00000000000..7b62072e937 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-dimmed-linux.png new file mode 100644 index 00000000000..2f6a6df95bf Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-high-contrast-linux.png new file mode 100644 index 00000000000..7c81e3bc822 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-linux.png new file mode 100644 index 00000000000..7b62072e937 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-tritanopia-linux.png new file mode 100644 index 00000000000..7b62072e937 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-colorblind-linux.png new file mode 100644 index 00000000000..c9902a9b5c6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-high-contrast-linux.png new file mode 100644 index 00000000000..9a9a7f05f12 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-linux.png new file mode 100644 index 00000000000..c9902a9b5c6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-tritanopia-linux.png new file mode 100644 index 00000000000..c9902a9b5c6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Caption-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-colorblind-linux.png new file mode 100644 index 00000000000..cc8fc816ce7 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-dimmed-linux.png new file mode 100644 index 00000000000..7c0b9b0f030 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-high-contrast-linux.png new file mode 100644 index 00000000000..bbad5720b32 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-linux.png new file mode 100644 index 00000000000..cc8fc816ce7 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-tritanopia-linux.png new file mode 100644 index 00000000000..cc8fc816ce7 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-colorblind-linux.png new file mode 100644 index 00000000000..7aa0a55d1eb Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-high-contrast-linux.png new file mode 100644 index 00000000000..1135d8d50ab Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-linux.png new file mode 100644 index 00000000000..7aa0a55d1eb Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-tritanopia-linux.png new file mode 100644 index 00000000000..7aa0a55d1eb Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Checkbox-And-Radio-Inputs-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-colorblind-linux.png new file mode 100644 index 00000000000..3742a470ccf Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-dimmed-linux.png new file mode 100644 index 00000000000..71fa4c0707a Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-high-contrast-linux.png new file mode 100644 index 00000000000..6faa1d8bde1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-linux.png new file mode 100644 index 00000000000..3742a470ccf Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-tritanopia-linux.png new file mode 100644 index 00000000000..3742a470ccf Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-colorblind-linux.png new file mode 100644 index 00000000000..b01fb1a9d6b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-high-contrast-linux.png new file mode 100644 index 00000000000..0d00b56b7bb Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-linux.png new file mode 100644 index 00000000000..b01fb1a9d6b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-tritanopia-linux.png new file mode 100644 index 00000000000..b01fb1a9d6b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Complex-Inputs-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-colorblind-linux.png new file mode 100644 index 00000000000..8d34787037f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-dimmed-linux.png new file mode 100644 index 00000000000..8e5f25e42d2 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-high-contrast-linux.png new file mode 100644 index 00000000000..dd5e2ae9f9a Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-linux.png new file mode 100644 index 00000000000..373fda3c48d Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-tritanopia-linux.png new file mode 100644 index 00000000000..373fda3c48d Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-colorblind-linux.png new file mode 100644 index 00000000000..d43071898c5 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-high-contrast-linux.png new file mode 100644 index 00000000000..334973fc437 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-linux.png new file mode 100644 index 00000000000..251081b4c0e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-tritanopia-linux.png new file mode 100644 index 00000000000..251081b4c0e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Error-Validation-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-colorblind-linux.png new file mode 100644 index 00000000000..92232058483 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-dimmed-linux.png new file mode 100644 index 00000000000..dc786db366e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-high-contrast-linux.png new file mode 100644 index 00000000000..23ec4bc892e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-linux.png new file mode 100644 index 00000000000..92232058483 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-tritanopia-linux.png new file mode 100644 index 00000000000..92232058483 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-colorblind-linux.png new file mode 100644 index 00000000000..ed6233e079f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-high-contrast-linux.png new file mode 100644 index 00000000000..824d42cc5ff Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-linux.png new file mode 100644 index 00000000000..ed6233e079f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-tritanopia-linux.png new file mode 100644 index 00000000000..ed6233e079f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Hidden-Label-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-colorblind-linux.png new file mode 100644 index 00000000000..9a52b1c0a3e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-dimmed-linux.png new file mode 100644 index 00000000000..36aa0dc299e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-high-contrast-linux.png new file mode 100644 index 00000000000..31d053f6114 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-linux.png new file mode 100644 index 00000000000..9a52b1c0a3e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-tritanopia-linux.png new file mode 100644 index 00000000000..9a52b1c0a3e Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-colorblind-linux.png new file mode 100644 index 00000000000..0f7332c086d Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-high-contrast-linux.png new file mode 100644 index 00000000000..224f11711a3 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-linux.png new file mode 100644 index 00000000000..0f7332c086d Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-tritanopia-linux.png new file mode 100644 index 00000000000..0f7332c086d Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Leading-Visual-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-colorblind-linux.png new file mode 100644 index 00000000000..d476063414b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-dimmed-linux.png new file mode 100644 index 00000000000..2fe44e93ef9 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-high-contrast-linux.png new file mode 100644 index 00000000000..c15a8884497 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-linux.png new file mode 100644 index 00000000000..d476063414b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-tritanopia-linux.png new file mode 100644 index 00000000000..d476063414b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-colorblind-linux.png new file mode 100644 index 00000000000..60cd55c3880 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-high-contrast-linux.png new file mode 100644 index 00000000000..12acf3dabe3 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-linux.png new file mode 100644 index 00000000000..60cd55c3880 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-tritanopia-linux.png new file mode 100644 index 00000000000..60cd55c3880 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Required-Indicator-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-colorblind-linux.png new file mode 100644 index 00000000000..19ad990910f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-dimmed-linux.png new file mode 100644 index 00000000000..22af5602305 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-high-contrast-linux.png new file mode 100644 index 00000000000..2f2b522ee0b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-linux.png new file mode 100644 index 00000000000..19ad990910f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-tritanopia-linux.png new file mode 100644 index 00000000000..19ad990910f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-colorblind-linux.png new file mode 100644 index 00000000000..77fea9473a4 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-high-contrast-linux.png new file mode 100644 index 00000000000..937d796678f Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-linux.png new file mode 100644 index 00000000000..77fea9473a4 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-tritanopia-linux.png new file mode 100644 index 00000000000..77fea9473a4 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Select-Panel-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-colorblind-linux.png new file mode 100644 index 00000000000..3cdd7faca59 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-dimmed-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-dimmed-linux.png new file mode 100644 index 00000000000..ea71cee4a1c Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-high-contrast-linux.png new file mode 100644 index 00000000000..f3002384f72 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-linux.png new file mode 100644 index 00000000000..4f35a8dfe0b Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-tritanopia-linux.png new file mode 100644 index 00000000000..3cdd7faca59 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-colorblind-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-colorblind-linux.png new file mode 100644 index 00000000000..07ee06b3fc1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-high-contrast-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-high-contrast-linux.png new file mode 100644 index 00000000000..0af4d6665c6 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-linux.png new file mode 100644 index 00000000000..be194c8e499 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-linux.png differ diff --git a/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-tritanopia-linux.png b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-tritanopia-linux.png new file mode 100644 index 00000000000..07ee06b3fc1 Binary files /dev/null and b/.playwright/snapshots/components/FormControl.test.ts-snapshots/FormControl-With-Success-Validation-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-colorblind-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-colorblind-linux.png new file mode 100644 index 00000000000..0f89572e51a Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-dimmed-linux.png new file mode 100644 index 00000000000..f13182a7a16 Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-high-contrast-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-high-contrast-linux.png new file mode 100644 index 00000000000..47bdf2c53ca Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-linux.png new file mode 100644 index 00000000000..0f89572e51a Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-tritanopia-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-tritanopia-linux.png new file mode 100644 index 00000000000..0f89572e51a Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-colorblind-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-colorblind-linux.png new file mode 100644 index 00000000000..5b522169e8c Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-high-contrast-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-high-contrast-linux.png new file mode 100644 index 00000000000..7215a9c96dc Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-linux.png new file mode 100644 index 00000000000..5b522169e8c Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-linux.png differ diff --git a/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-tritanopia-linux.png b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-tritanopia-linux.png new file mode 100644 index 00000000000..5b522169e8c Binary files /dev/null and b/.playwright/snapshots/components/InlineMessage.test.ts-snapshots/InlineMessage-Dev-Default-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-colorblind-linux.png new file mode 100644 index 00000000000..31d5797d029 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-dimmed-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-dimmed-linux.png new file mode 100644 index 00000000000..54def799148 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-high-contrast-linux.png new file mode 100644 index 00000000000..20df1a58618 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-linux.png new file mode 100644 index 00000000000..31d5797d029 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-tritanopia-linux.png new file mode 100644 index 00000000000..31d5797d029 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-colorblind-linux.png new file mode 100644 index 00000000000..be38e869a34 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-high-contrast-linux.png new file mode 100644 index 00000000000..2c9be3de01e Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-linux.png new file mode 100644 index 00000000000..be38e869a34 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-tritanopia-linux.png new file mode 100644 index 00000000000..be38e869a34 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Default-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-colorblind-linux.png new file mode 100644 index 00000000000..65e722a5bcc Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-dimmed-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-dimmed-linux.png new file mode 100644 index 00000000000..70f0e626d18 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-high-contrast-linux.png new file mode 100644 index 00000000000..84195a877b2 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-linux.png new file mode 100644 index 00000000000..27f0e0be0da Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-tritanopia-linux.png new file mode 100644 index 00000000000..6f5f68b71b4 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-colorblind-linux.png new file mode 100644 index 00000000000..a99147e0059 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-high-contrast-linux.png new file mode 100644 index 00000000000..c3d90cc3a68 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-linux.png new file mode 100644 index 00000000000..4aeddbe6e03 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-tritanopia-linux.png new file mode 100644 index 00000000000..3061962a774 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithCSS-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-colorblind-linux.png new file mode 100644 index 00000000000..860ac151f38 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-dimmed-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-dimmed-linux.png new file mode 100644 index 00000000000..74132d45826 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-high-contrast-linux.png new file mode 100644 index 00000000000..0e560eaf0ea Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-linux.png new file mode 100644 index 00000000000..370ff8df54d Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-tritanopia-linux.png new file mode 100644 index 00000000000..370ff8df54d Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-colorblind-linux.png new file mode 100644 index 00000000000..cf9f751fd88 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-high-contrast-linux.png new file mode 100644 index 00000000000..06e19d5a8cc Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-linux.png new file mode 100644 index 00000000000..58945d4f5af Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-tritanopia-linux.png new file mode 100644 index 00000000000..58945d4f5af Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSx-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-colorblind-linux.png new file mode 100644 index 00000000000..860ac151f38 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-dimmed-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-dimmed-linux.png new file mode 100644 index 00000000000..3011c2dcb6c Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-high-contrast-linux.png new file mode 100644 index 00000000000..0e560eaf0ea Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-linux.png new file mode 100644 index 00000000000..370ff8df54d Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-tritanopia-linux.png new file mode 100644 index 00000000000..370ff8df54d Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-colorblind-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-colorblind-linux.png new file mode 100644 index 00000000000..cf9f751fd88 Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-high-contrast-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-high-contrast-linux.png new file mode 100644 index 00000000000..06e19d5a8cc Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-linux.png new file mode 100644 index 00000000000..58945d4f5af Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-linux.png differ diff --git a/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-tritanopia-linux.png b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-tritanopia-linux.png new file mode 100644 index 00000000000..58945d4f5af Binary files /dev/null and b/.playwright/snapshots/components/SubNav.test.ts-snapshots/SubNav-Dev-WithSxAndCSS-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-colorblind-linux.png new file mode 100644 index 00000000000..f8d0964c5d7 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-dimmed-linux.png new file mode 100644 index 00000000000..37805b608f0 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-high-contrast-linux.png new file mode 100644 index 00000000000..097f4bbc611 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-linux.png new file mode 100644 index 00000000000..f8d0964c5d7 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-tritanopia-linux.png new file mode 100644 index 00000000000..f8d0964c5d7 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-colorblind-linux.png new file mode 100644 index 00000000000..f42efd1779a Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-high-contrast-linux.png new file mode 100644 index 00000000000..f132bf21c32 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-linux.png new file mode 100644 index 00000000000..f42efd1779a Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-tritanopia-linux.png new file mode 100644 index 00000000000..f42efd1779a Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithCSS-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-colorblind-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-dimmed-linux.png new file mode 100644 index 00000000000..7c5497e2b96 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-high-contrast-linux.png new file mode 100644 index 00000000000..36a573d7a12 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-tritanopia-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-colorblind-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-high-contrast-linux.png new file mode 100644 index 00000000000..adef3e640fb Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-tritanopia-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSx-light-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-colorblind-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-dimmed-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-dimmed-linux.png new file mode 100644 index 00000000000..7c5497e2b96 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-dimmed-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-high-contrast-linux.png new file mode 100644 index 00000000000..36a573d7a12 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-tritanopia-linux.png new file mode 100644 index 00000000000..df3df41d174 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-dark-tritanopia-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-colorblind-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-colorblind-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-colorblind-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-high-contrast-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-high-contrast-linux.png new file mode 100644 index 00000000000..adef3e640fb Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-high-contrast-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-linux.png differ diff --git a/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-tritanopia-linux.png b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-tritanopia-linux.png new file mode 100644 index 00000000000..785dcf53bb9 Binary files /dev/null and b/.playwright/snapshots/components/TextInput.test.ts-snapshots/TextInput-Dev-WithSxAndCSS-light-tritanopia-linux.png differ diff --git a/contributor-docs/adrs/adr-002-behavior-isolation.md b/contributor-docs/adrs/adr-002-behavior-isolation.md index 072099e985c..575468dadc1 100644 --- a/contributor-docs/adrs/adr-002-behavior-isolation.md +++ b/contributor-docs/adrs/adr-002-behavior-isolation.md @@ -108,5 +108,7 @@ Some behaviors can be implemented as vanilla JavaScript without introducing addi In general, _portions of behaviors_ that affect or rely on **user interactions and events**, **shared state**, or **CSS styles** should be kept in React Hooks. Parts of the behavior that can be implemented in isolation of these concepts should be built with no dependency on React or other libraries. [^1]: https://codesandbox.io/s/demo-styling-custom-element-g973d?file=/src/index.tsx + [^2]: https://github.com/github/details-dialog-element/blob/main/src/index.ts#L195 + [^3]: https://github.com/github/details-dialog-element#details-dialog-close diff --git a/contributor-docs/migrating-to-css-modules.md b/contributor-docs/migrating-to-css-modules.md index 9c39a9d67ea..50ab7c0781f 100644 --- a/contributor-docs/migrating-to-css-modules.md +++ b/contributor-docs/migrating-to-css-modules.md @@ -21,7 +21,6 @@ This guide outlines the steps to follow when refactoring Primer React components - **Verify VRT (Visual Regression Testing) Coverage:** - Check for missing VRT coverage. We utilize the VRT tests to make sure we're matching styling in production with current expectations. Components should have a Storybook story for every "feature" or option available that impacts the UI for VRT to capture in a screenshot. - - Make sure there are `dev` stories for any edge cases spotted in production for the component (ie. `sx` prop, custom className, styled system attributes). `dev` stories may include things that we wouldn't normally recommend for the purpose of stress testing what happens when PRC components are overridden with custom styles. - **Ensure All Visual Changes Are Completed:** - Make necessary visual changes **before** creating the CSS Modules refactor PR. @@ -121,11 +120,65 @@ This guide outlines the steps to follow when refactoring Primer React components expect(render().container.firstChild).toHaveClass('test-class-name') }) ``` -- **Regression Testing:** - - Validate that no visual regressions occur when the feature flag is enabled. The `vrt*` tests are setup to compare the feature flagged component with the original component and will fail if there is a mismatch. - **Handling `sx` Prop:** - Confirm the `sx` prop behaves correctly with the feature flag enabled. +#### Visual regression testing + +Validate that no visual regressions occur when the feature flag is enabled. The `vrt*` tests are setup to compare the feature flagged component with the original component and will fail if there is a mismatch. + +- Add `dev` stories for any edge cases spotted in production for the component (ie. `sx` prop, custom className, styled system attributes). `dev` stories may include things that we wouldn't normally recommend for the purpose of stress testing what happens when PRC components are overridden with custom styles. +- Setup VRT tests for `dev` stories. Copy an existing test in the corresponding test file in the [e2e directory](https://github.com/primer/react/tree/main/e2e/components) and update the id to match the new `dev` story. + +Example test file: + +```ts +import {test, expect} from '@playwright/test' +import {visit} from '../test-helpers/storybook' +import {themes} from '../test-helpers/themes' + +const stories = [ + { + title: 'Dev: Test color', + id: 'components-{componentname}-dev--customcolor', + }, +] as const + +test.describe('ComponentName', () => { + for (const story of stories) { + test.describe(story.title, () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot({animations: 'disabled'})).toMatchSnapshot( + `ComponentName.${story.title}.${theme}.png`, + ) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, + }, + }) + await expect(page).toHaveNoViolations() + }) + }) + } + }) + } +}) +``` + --- ## Releasing a Component diff --git a/e2e/components/BranchName.test.ts b/e2e/components/BranchName.test.ts index feb776b3101..a735fa8ae31 100644 --- a/e2e/components/BranchName.test.ts +++ b/e2e/components/BranchName.test.ts @@ -2,110 +2,58 @@ import {test, expect} from '@playwright/test' import {visit} from '../test-helpers/storybook' import {themes} from '../test-helpers/themes' -test.describe('BranchName', () => { - test.describe('Default', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-branchname--default', - globals: { - colorScheme: theme, - }, - }) - - // Default state - expect(await page.screenshot()).toMatchSnapshot(`BranchName.Default.${theme}.png`) - - // Focus state - await page.keyboard.press('Tab') - expect(await page.screenshot()).toMatchSnapshot(`BranchName.Default.${theme}.focus.png`) - }) +const stories = [ + { + title: 'Default', + id: 'components-branchname--default', + focus: true, + }, + { + title: 'Not A Link', + id: 'components-branchname-features--not-a-link', + focus: false, + }, + { + title: 'With A Branch Icon', + id: 'components-branchname-features--with-branch-icon', + focus: false, + }, +] as const - test('axe @aat', async ({page}) => { - await visit(page, { - id: 'components-branchname--default', - globals: { - colorScheme: theme, - }, - }) - await expect(page).toHaveNoViolations({ - rules: { - 'color-contrast': { - enabled: theme !== 'dark_dimmed', +test.describe('BranchName', () => { + for (const story of stories) { + test.describe(story.title, () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, }, - }, - }) - }) - }) - } - }) - - test.describe('Not A Link', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-branchname-features--not-a-link', - globals: { - colorScheme: theme, - }, - }) - - // Default state - expect(await page.screenshot()).toMatchSnapshot(`BranchName.Not A Link.${theme}.png`) - }) + }) - test('axe @aat', async ({page}) => { - await visit(page, { - id: 'components-branchname-features--not-a-link', - globals: { - colorScheme: theme, - }, - }) - await expect(page).toHaveNoViolations({ - rules: { - 'color-contrast': { - enabled: theme !== 'dark_dimmed', - }, - }, - }) - }) - }) - } - }) + // Default state + expect(await page.screenshot()).toMatchSnapshot(`BranchName.${story.title}.${theme}.png`) - test.describe('With A Branch Icon', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-branchname-features--with-branch-icon', - globals: { - colorScheme: theme, - }, + // Focus state + if (story.focus) { + await page.keyboard.press('Tab') + expect(await page.screenshot()).toMatchSnapshot(`BranchName.${story.title}.${theme}.focus.png`) + } }) - // Default state - expect(await page.screenshot()).toMatchSnapshot(`BranchName.With A Branch Icon.${theme}.png`) - }) - - test('axe @aat', async ({page}) => { - await visit(page, { - id: 'components-branchname-features--with-branch-icon', - globals: { - colorScheme: theme, - }, - }) - await expect(page).toHaveNoViolations({ - rules: { - 'color-contrast': { - enabled: theme !== 'dark_dimmed', + test('axe @aat', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, }, - }, + }) + await expect(page).toHaveNoViolations() }) }) - }) - } - }) + } + }) + } }) diff --git a/e2e/components/FormControl.test.ts b/e2e/components/FormControl.test.ts new file mode 100644 index 00000000000..a0356b003ea --- /dev/null +++ b/e2e/components/FormControl.test.ts @@ -0,0 +1,104 @@ +import {test, expect} from '@playwright/test' +import {visit} from '../test-helpers/storybook' +import {themes} from '../test-helpers/themes' + +const stories = [ + { + title: 'Default', + id: 'components-formcontrol--default', + }, + { + title: 'Custom Required', + id: 'components-formcontrol-features--custom-required', + }, + { + title: 'Disabled Inputs', + id: 'components-formcontrol-features--disabled-inputs', + }, + { + title: 'Form Control with Custom Input', + id: 'components-formcontrol-features--form-control-with-custom-input', + }, + { + title: 'Single Input', + id: 'components-formcontrol-features--single-input', + }, + { + title: 'Validation Example', + id: 'components-formcontrol-features--validation-example', + }, + { + title: 'With Checkbox And Radio Inputs', + id: 'components-formcontrol-features--with-checkbox-and-radio-inputs', + }, + { + title: 'With Complex Inputs', + id: 'components-formcontrol-features--with-complex-inputs', + }, + { + title: 'With Leading Visual', + id: 'components-formcontrol-features--with-leading-visual', + }, + { + title: 'With Select Panel', + id: 'components-formcontrol-features--with-select-panel', + }, + { + title: 'With Caption', + id: 'components-formcontrol-features--with-caption', + }, + { + title: 'With Caption And Disabled', + id: 'components-formcontrol-features--with-caption-and-disabled', + }, + { + title: 'With Hidden Label', + id: 'components-formcontrol-features--with-hidden-label', + }, + { + title: 'With Required Indicator', + id: 'components-formcontrol-features--with-required-indicator', + }, + { + title: 'With Success Validation', + id: 'components-formcontrol-features--with-success-validation', + }, + { + title: 'With Error Validation', + id: 'components-formcontrol-features--with-error-validation', + }, +] as const + +test.describe('FormControl', () => { + for (const story of stories) { + test.describe(story.title, () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot({animations: 'disabled'})).toMatchSnapshot( + `FormControl.${story.title}.${theme}.png`, + ) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, + }, + }) + await expect(page).toHaveNoViolations() + }) + }) + } + }) + } +}) diff --git a/e2e/components/InlineMessage.test.ts b/e2e/components/InlineMessage.test.ts index cb595a96201..81814c82a20 100644 --- a/e2e/components/InlineMessage.test.ts +++ b/e2e/components/InlineMessage.test.ts @@ -12,6 +12,10 @@ const stories = [ title: 'Multiline', id: 'experimental-components-inlinemessage-features--multiline', }, + { + title: 'Dev Default', + id: 'experimental-components-inlinemessage-dev--dev-default', + }, ] const scenarios = matrix({ diff --git a/e2e/components/SubNav.test.ts b/e2e/components/SubNav.test.ts new file mode 100644 index 00000000000..71336dcad7e --- /dev/null +++ b/e2e/components/SubNav.test.ts @@ -0,0 +1,93 @@ +import {test, expect} from '@playwright/test' +import {visit} from '../test-helpers/storybook' +import {themes} from '../test-helpers/themes' + +test.describe('SubNav', () => { + test.describe('Default', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-subnav--default', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`SubNav.Default.${theme}.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-subnav--default', + globals: { + colorScheme: theme, + }, + }) + await expect(page).toHaveNoViolations({ + rules: { + 'color-contrast': { + enabled: theme !== 'dark_dimmed', + }, + }, + }) + }) + }) + } + }) + + test.describe('Dev: With Sx', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-subnav-dev--with-sx', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`SubNav.Dev.WithSx.${theme}.png`) + }) + }) + } + }) + + test.describe('Dev: With CSS', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-subnav-dev--with-css', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`SubNav.Dev.WithCSS.${theme}.png`) + }) + }) + } + }) + + test.describe('Dev: With Sx and CSS', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-subnav-dev--with-sx-and-css', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`SubNav.Dev.WithSxAndCSS.${theme}.png`) + }) + }) + } + }) +}) diff --git a/e2e/components/TextInput.test.ts b/e2e/components/TextInput.test.ts index dc1af6c6551..34ef7693a0e 100644 --- a/e2e/components/TextInput.test.ts +++ b/e2e/components/TextInput.test.ts @@ -338,4 +338,58 @@ test.describe('TextInput', () => { }) } }) + + test.describe('Dev: With Sx', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-dev--with-sx', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.Dev.WithSx.${theme}.png`) + }) + }) + } + }) + + test.describe('Dev: With CSS', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-dev--with-css', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.Dev.WithCSS.${theme}.png`) + }) + }) + } + }) + + test.describe('Dev: With Sx and CSS', () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-textinput-dev--with-sx-and-css', + globals: { + colorScheme: theme, + }, + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`TextInput.Dev.WithSxAndCSS.${theme}.png`) + }) + }) + } + }) }) diff --git a/examples/app-router/package.json b/examples/app-router/package.json index fa3f5b8c035..faa75d603b7 100644 --- a/examples/app-router/package.json +++ b/examples/app-router/package.json @@ -10,12 +10,12 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@primer/react": "37.0.1", + "@primer/react": "37.2.0", "next": "^14.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "5.x", - "typescript": "^5.4.5" + "typescript": "^5.6.3" }, "devDependencies": { "@next/eslint-plugin-next": "14.1.0", diff --git a/examples/codesandbox/package.json b/examples/codesandbox/package.json index db4f7d97123..92be01382f1 100644 --- a/examples/codesandbox/package.json +++ b/examples/codesandbox/package.json @@ -20,12 +20,12 @@ "@typescript-eslint/eslint-plugin": "^7.11.0", "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-react": "^4.2.1", - "@primer/react": "37.0.1", + "@primer/react": "37.2.0", "eslint": "^8.56.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.7", "styled-components": "5.x", - "typescript": "^5.4.5", + "typescript": "^5.6.3", "vite": "^5.2.14" } } diff --git a/examples/consumer-test/package.json b/examples/consumer-test/package.json index ac945c97926..802eb212402 100644 --- a/examples/consumer-test/package.json +++ b/examples/consumer-test/package.json @@ -9,7 +9,7 @@ "@types/react": "^18.3.11", "@types/react-dom": "^18.2.19", "@types/styled-components": "^5.1.11", - "@primer/react": "37.0.1", + "@primer/react": "37.2.0", "react": "^18.0.0", "react-dom": "^18.0.0", "styled-components": "^5.3.11", diff --git a/examples/theming/package.json b/examples/theming/package.json index f8a15d27c5f..4e8df949a62 100644 --- a/examples/theming/package.json +++ b/examples/theming/package.json @@ -11,13 +11,13 @@ }, "dependencies": { "@primer/octicons-react": "^19.9.0", - "@primer/react": "37.0.1", + "@primer/react": "37.2.0", "clsx": "^1.2.1", "next": "^14.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "5.x", - "typescript": "^5.4.5" + "typescript": "^5.6.3" }, "devDependencies": { "@next/eslint-plugin-next": "14.1.0", diff --git a/package-lock.json b/package-lock.json index 48be07ece77..373dd208b41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,11 +44,11 @@ "jest-watch-typeahead": "2.2.2", "markdownlint-cli2": "^0.11.0", "markdownlint-cli2-formatter-pretty": "0.0.3", - "prettier": "3.0.3", + "prettier": "3.3.3", "rimraf": "5.0.5", "size-limit": "11.1.5", "stylelint": "16.9.0", - "typescript": "5.4.5" + "typescript": "5.6.3" }, "engines": { "node": ">=12", @@ -62,12 +62,12 @@ "name": "example-app-router", "version": "0.0.0", "dependencies": { - "@primer/react": "37.0.1", + "@primer/react": "37.1.0", "next": "^14.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "5.x", - "typescript": "^5.4.5" + "typescript": "^5.6.3" }, "devDependencies": { "@next/eslint-plugin-next": "14.1.0", @@ -81,7 +81,7 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@primer/react": "37.0.1", + "@primer/react": "37.1.0", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.11.0", @@ -91,7 +91,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.7", "styled-components": "5.x", - "typescript": "^5.4.5", + "typescript": "^5.6.3", "vite": "^5.2.14" } }, @@ -99,7 +99,7 @@ "name": "example-consumer-test", "version": "0.0.0", "dependencies": { - "@primer/react": "37.0.1", + "@primer/react": "37.1.0", "@types/react": "^18.3.11", "@types/react-dom": "^18.2.19", "@types/styled-components": "^5.1.11", @@ -125,13 +125,13 @@ "version": "0.0.0", "dependencies": { "@primer/octicons-react": "^19.9.0", - "@primer/react": "37.0.1", + "@primer/react": "37.1.0", "clsx": "^1.2.1", "next": "^14.2.10", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "5.x", - "typescript": "^5.4.5" + "typescript": "^5.6.3" }, "devDependencies": { "@next/eslint-plugin-next": "14.1.0", @@ -4185,8 +4185,9 @@ "license": "MIT" }, "node_modules/@github/relative-time-element": { - "version": "4.4.2", - "license": "MIT" + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-4.4.3.tgz", + "integrity": "sha512-EVKokqx9/DdUAZ2l9WVyY51EtRCO2gQWWMvsRIn7r4glJ91q9CXcnILVHZVCpfD52ucXUhUvtYsAjNJ4qP4uIg==" }, "node_modules/@github/tab-container-element": { "version": "4.8.2", @@ -5994,22 +5995,6 @@ "prettier": "3.3" } }, - "node_modules/@primer/stylelint-config/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@primer/view-components": { "version": "0.27.0", "dev": true, @@ -6324,6 +6309,27 @@ } } }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.1.tgz", + "integrity": "sha512-2sPh9b73dj5IxuMmDAsQWVFT7mR+yoHweBaXG2W/R8vQ+IWZlnaI7BR7J6EguVQUp1hd8Z7XuozpDjEKQAAC2Q==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-terser": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", @@ -7105,21 +7111,6 @@ "node": ">=4.0" } }, - "node_modules/@storybook/addon-storysource/node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@storybook/addon-toolbars": { "version": "8.3.0", "dev": true, @@ -7833,20 +7824,6 @@ "node": ">=4.0" } }, - "node_modules/@storybook/source-loader/node_modules/prettier": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@storybook/test": { "version": "8.3.0", "dev": true, @@ -8186,9 +8163,10 @@ } }, "node_modules/@testing-library/react": { - "version": "16.0.0", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", + "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -23969,9 +23947,10 @@ } }, "node_modules/prettier": { - "version": "3.0.3", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -28368,7 +28347,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.4.5", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -29946,7 +29927,7 @@ "postcss": "^8.4.41", "postcss-custom-properties-fallback": "^1.0.2", "postcss-mixins": "^11.0.1", - "typescript": "^5.5.3" + "typescript": "^5.6.3" }, "peerDependencies": { "postcss": "^8.4.41" @@ -30086,31 +30067,19 @@ "semver": "bin/semver.js" } }, - "packages/postcss-preset-primer/node_modules/typescript": { - "version": "5.6.2", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "packages/react": { "name": "@primer/react", - "version": "37.0.1", + "version": "37.1.0", "license": "MIT", "dependencies": { - "@github/relative-time-element": "^4.4.2", + "@github/relative-time-element": "^4.4.3", "@github/tab-container-element": "^4.8.0", "@lit-labs/react": "1.2.1", "@oddbird/popover-polyfill": "^0.4.4", "@primer/behaviors": "^1.7.2", "@primer/live-region-element": "^0.7.1", "@primer/octicons-react": "^19.9.0", - "@primer/primitives": "^9.0.3", + "@primer/primitives": "9.x || 10.x", "@styled-system/css": "^5.1.5", "@styled-system/props": "^5.1.5", "@styled-system/theme-get": "^5.1.2", @@ -30145,7 +30114,7 @@ "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", - "@rollup/plugin-replace": "5.0.2", + "@rollup/plugin-replace": "6.0.1", "@rollup/plugin-terser": "0.4.4", "@rollup/plugin-typescript": "11.1.5", "@rollup/plugin-virtual": "3.0.2", @@ -30162,7 +30131,7 @@ "@storybook/theming": "^8.3.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.4.5", - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.5.2", "@types/lodash.groupby": "4.6.9", @@ -30226,7 +30195,7 @@ "terser": "5.31.0", "ts-toolbelt": "9.6.0", "tsx": "4.7.0", - "typescript": "5.4.5", + "typescript": "^5.6.3", "typescript-plugin-css-modules": "5.1.0", "unist-util-find": "3.0.0", "unist-util-find-before": "4.0.0", @@ -30259,7 +30228,8 @@ }, "packages/react/node_modules/@prettier/sync": { "version": "0.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@prettier/sync/-/sync-0.5.2.tgz", + "integrity": "sha512-Yb569su456XNx5BsH/Vyem7xD6g/y9iLmLUzRKM1a/dhU/D7HqqvkAG72znulXlMXztbV0iiu9O5AL8K98TzZQ==", "dependencies": { "make-synchronized": "^0.2.8" }, @@ -30271,8 +30241,9 @@ } }, "packages/react/node_modules/@primer/primitives": { - "version": "9.1.1", - "license": "MIT", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-9.1.2.tgz", + "integrity": "sha512-KecRJpUdIf14J3gVpoyMMJeQD6Sh5kcHk93N5bYch4XGB0GOZP3ypxz+NByMjr/2HHPsRfCCO5EEgNjmeWYUGQ==", "dependencies": { "@prettier/sync": "^0.5.2", "prettier": "3.3" @@ -30326,26 +30297,6 @@ } } }, - "packages/react/node_modules/@rollup/plugin-replace": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "packages/react/node_modules/@rollup/plugin-typescript": { "version": "11.1.5", "dev": true, @@ -30478,19 +30429,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/react/node_modules/prettier": { - "version": "3.3.3", - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/react/node_modules/rollup-plugin-visualizer": { "version": "5.9.2", "dev": true, diff --git a/package.json b/package.json index d808896be77..9ac53a5ba2e 100644 --- a/package.json +++ b/package.json @@ -72,11 +72,11 @@ "jest-watch-typeahead": "2.2.2", "markdownlint-cli2": "^0.11.0", "markdownlint-cli2-formatter-pretty": "0.0.3", - "prettier": "3.0.3", + "prettier": "3.3.3", "rimraf": "5.0.5", "size-limit": "11.1.5", "stylelint": "16.9.0", - "typescript": "5.4.5" + "typescript": "5.6.3" }, "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "^4.9.6" diff --git a/packages/postcss-preset-primer/package.json b/packages/postcss-preset-primer/package.json index 309affa373e..3ba7cfd1ec1 100644 --- a/packages/postcss-preset-primer/package.json +++ b/packages/postcss-preset-primer/package.json @@ -29,6 +29,6 @@ "postcss": "^8.4.41", "postcss-custom-properties-fallback": "^1.0.2", "postcss-mixins": "^11.0.1", - "typescript": "^5.5.3" + "typescript": "^5.6.3" } } diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index fba871e038d..7de84c6b740 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,82 @@ # @primer/react +## 37.2.0 + +### Minor Changes + +- [#5168](https://github.com/primer/react/pull/5168) [`b9749d4`](https://github.com/primer/react/commit/b9749d4efccf17b4aa669231a57df55333497ca2) Thanks [@TylerJDev](https://github.com/TylerJDev)! - TreeView: Adds indication of no nodes in a tree item, allows for `aria-expanded even if the item is empty. + +- [#5202](https://github.com/primer/react/pull/5202) [`293c574`](https://github.com/primer/react/commit/293c574a25d49bb52a2f5c17e4c54b1b1b598ddc) Thanks [@hussam-i-am](https://github.com/hussam-i-am)! - Update `SubNav` component to use CSS modules behind the feature flag primer_react_css_modules_team + +### Patch Changes + +- [#5225](https://github.com/primer/react/pull/5225) [`e732591`](https://github.com/primer/react/commit/e732591e939e5a86dc5ce2ce2da25388177b6a54) Thanks [@jonrohan](https://github.com/jonrohan)! - chore(Banner): Move Banner CSS module flag from staff to ga + +- [#5177](https://github.com/primer/react/pull/5177) [`26b54d8`](https://github.com/primer/react/commit/26b54d8a58e83e50127b5c04ac26ec953a89c108) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - Allow primitives dep to be if version 9 OR 10 + +## 37.1.0 + +### Minor Changes + +- [#5156](https://github.com/primer/react/pull/5156) [`8e58e4d`](https://github.com/primer/react/commit/8e58e4d1fc8a6ec9e9329b152f3d43d15d6dd5d5) Thanks [@francinelucca](https://github.com/francinelucca)! - feat(LabelGroup): render as list by default + +- [#5167](https://github.com/primer/react/pull/5167) [`07b75e7`](https://github.com/primer/react/commit/07b75e78f6842713fff12dad1e7a0502596e30bf) Thanks [@jonrohan](https://github.com/jonrohan)! - Convert Details to css module behind feature flag + +- [#5195](https://github.com/primer/react/pull/5195) [`d349cfc`](https://github.com/primer/react/commit/d349cfcb3fca9982040a1389c0fabcaafca5b85e) Thanks [@jonrohan](https://github.com/jonrohan)! - \* Convert SkeletonAvatar to CSS modules behind the feature flag + + - Convert SkeletonBox to CSS modules behind the feature flag + - Convert SkeletonText to CSS modules behind the feature flag + +- [#5187](https://github.com/primer/react/pull/5187) [`2ab7b9e`](https://github.com/primer/react/commit/2ab7b9e649cc2f6a1c290bdbfcf48d3e635d998f) Thanks [@jonrohan](https://github.com/jonrohan)! - Convert Radio to css modules behind feature flag + +- [#5129](https://github.com/primer/react/pull/5129) [`e27decd`](https://github.com/primer/react/commit/e27decdae5fcff3b25c9c58194709abbf4de85f8) Thanks [@TylerJDev](https://github.com/TylerJDev)! - Overlay: Adds `min-width` to container to improve responsiveness + +- [#5040](https://github.com/primer/react/pull/5040) [`8d9a357`](https://github.com/primer/react/commit/8d9a357db49dbf1f00e19c7aa489bd963a0d3dd5) Thanks [@joshblack](https://github.com/joshblack)! - Update BranchName to use CSS Modules behind feature flag + +- [#5188](https://github.com/primer/react/pull/5188) [`573ae51`](https://github.com/primer/react/commit/573ae5168879998946ba1aa3e21af8ddf54351af) Thanks [@randall-krauskopf](https://github.com/randall-krauskopf)! - Migrated `Spinner` component to use support CSS modules + +- [#5193](https://github.com/primer/react/pull/5193) [`ed3d8c1`](https://github.com/primer/react/commit/ed3d8c1d0825502293b7a772a26e2e3865c9c162) Thanks [@randall-krauskopf](https://github.com/randall-krauskopf)! - Migrated `VisuallyHidden` to CSS Modules + +- [#4878](https://github.com/primer/react/pull/4878) [`73312d8`](https://github.com/primer/react/commit/73312d8ceb98ae84c0291f05b0b30f7f06975d3c) Thanks [@TylerJDev](https://github.com/TylerJDev)! - Move `aria-*` attributes to `ProgressBar.Item` and marks `ProgressBar.Item` as `role="progressbar". + +- [#5194](https://github.com/primer/react/pull/5194) [`719def7`](https://github.com/primer/react/commit/719def7ea83f5212dc6ba888fe22d29b6620ce37) Thanks [@randall-krauskopf](https://github.com/randall-krauskopf)! - Migrate `Select` component to css modules + +- [#5192](https://github.com/primer/react/pull/5192) [`cbeed21`](https://github.com/primer/react/commit/cbeed2111c02c6e4457228acdb7d83f11e866197) Thanks [@hussam-i-am](https://github.com/hussam-i-am)! - Update `Header` component to use CSS modules behind the feature flag primer_react_css_modules_team + +- [#5015](https://github.com/primer/react/pull/5015) [`1473c26`](https://github.com/primer/react/commit/1473c26abb37b2de2af5f4ff848107971ee557c7) Thanks [@francinelucca](https://github.com/francinelucca)! - feat(Details): Add summary subcomponent + +- [#5197](https://github.com/primer/react/pull/5197) [`ad84d4f`](https://github.com/primer/react/commit/ad84d4f494cb424b307ed3fa7eb77aec21c2ad40) Thanks [@randall-krauskopf](https://github.com/randall-krauskopf)! - Convert `Pagehead` to CSS Modules + +- [#5134](https://github.com/primer/react/pull/5134) [`6713e72`](https://github.com/primer/react/commit/6713e72124f4b9e594b31d5abc7dda258940c9cc) Thanks [@TylerJDev](https://github.com/TylerJDev)! - AvatarStack: Adds keyboard support to `AvatarStack` + +- [#5060](https://github.com/primer/react/pull/5060) [`33396ea`](https://github.com/primer/react/commit/33396ead24bb25dc042004cd82bbdbe235403c61) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove CSS modules feature flag from Label component + +- [#5185](https://github.com/primer/react/pull/5185) [`461ae57`](https://github.com/primer/react/commit/461ae57b4efd1053449643fe4dbd8c18ff86ddd0) Thanks [@broccolinisoup](https://github.com/broccolinisoup)! - SelectPanel: Allow using SelectPanel in FormControl + +- [#5148](https://github.com/primer/react/pull/5148) [`002be35`](https://github.com/primer/react/commit/002be358676c2a882893dfbe518e1eafbd38db55) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove the CSS modules feature flag from the Link component + +- [#5106](https://github.com/primer/react/pull/5106) [`851c857`](https://github.com/primer/react/commit/851c857f1a69541b6b8b77dac714f2de51419936) Thanks [@mperrotti](https://github.com/mperrotti)! - Adds NavList.GroupHeading component that can be used instead of the ActionList.Group 'title' prop if you need to render something besides a string + +### Patch Changes + +- [#5213](https://github.com/primer/react/pull/5213) [`a5d7fe3`](https://github.com/primer/react/commit/a5d7fe34a20c9eeffe879e10b4f0165b8f1a6da8) Thanks [@langermank](https://github.com/langermank)! - Bug fix: `ButtonBase` sx base styles leaking into CSS modules feat flag + +- [#5214](https://github.com/primer/react/pull/5214) [`916ed95`](https://github.com/primer/react/commit/916ed952d38502b72640dcb07dac69005cb176e3) Thanks [@jonrohan](https://github.com/jonrohan)! - Convert Stack to CSS modules behind feature flag + +- [#5146](https://github.com/primer/react/pull/5146) [`ad554da`](https://github.com/primer/react/commit/ad554da1ed3907e5764f68190c0a3dd1cf7529b7) Thanks [@jonrohan](https://github.com/jonrohan)! - Move Checkbox css module feature flag to staff + +- [#5171](https://github.com/primer/react/pull/5171) [`8138dee`](https://github.com/primer/react/commit/8138dee8d8235475ec8135591c52abf3df90d50b) Thanks [@alondahari](https://github.com/alondahari)! - catch TooltipV2 errors in old browsers as a temp fix for unnecessary Sentry reports + +- [#5140](https://github.com/primer/react/pull/5140) [`73796d3`](https://github.com/primer/react/commit/73796d3b249ade8b69adb5aa720432d77a433103) Thanks [@francinelucca](https://github.com/francinelucca)! - fix(SegmentedControl): set global focus styles + +- [#5201](https://github.com/primer/react/pull/5201) [`29a9770`](https://github.com/primer/react/commit/29a9770ead42b01026e8277f6c30d18d2ccaaf84) Thanks [@joshblack](https://github.com/joshblack)! - Update the foreground color for FormControl.Caption to use the control tokens when disabled + +- [#5182](https://github.com/primer/react/pull/5182) [`31d9a05`](https://github.com/primer/react/commit/31d9a0587eb76f8d786404881b1727213c55fdbc) Thanks [@francinelucca](https://github.com/francinelucca)! - fix(DataTable): export datatable utility types + +- [#5027](https://github.com/primer/react/pull/5027) [`9a30c63`](https://github.com/primer/react/commit/9a30c63dc8e0c2923952f7ffea831446d0ed6122) Thanks [@francinelucca](https://github.com/francinelucca)! - fix(FormControl): allow required check boxes in CheckboxGroup + +- [#5147](https://github.com/primer/react/pull/5147) [`e421f32`](https://github.com/primer/react/commit/e421f32002ad07582d0221862f7afb6e8afbbc51) Thanks [@jonrohan](https://github.com/jonrohan)! - Move CounterLabel css modules feature flag to staff + ## 37.0.1 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index 32b37b76e72..f84e01dba94 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@primer/react", - "version": "37.0.1", + "version": "37.2.0", "description": "An implementation of GitHub's Primer Design System using React", "main": "lib/index.js", "module": "lib-esm/index.js", @@ -78,14 +78,14 @@ "npm": ">=7" }, "dependencies": { - "@github/relative-time-element": "^4.4.2", + "@github/relative-time-element": "^4.4.3", "@github/tab-container-element": "^4.8.0", "@lit-labs/react": "1.2.1", "@oddbird/popover-polyfill": "^0.4.4", "@primer/behaviors": "^1.7.2", "@primer/live-region-element": "^0.7.1", "@primer/octicons-react": "^19.9.0", - "@primer/primitives": "^9.0.3", + "@primer/primitives": "9.x || 10.x", "@styled-system/css": "^5.1.5", "@styled-system/props": "^5.1.5", "@styled-system/theme-get": "^5.1.2", @@ -120,7 +120,7 @@ "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", - "@rollup/plugin-replace": "5.0.2", + "@rollup/plugin-replace": "6.0.1", "@rollup/plugin-terser": "0.4.4", "@rollup/plugin-typescript": "11.1.5", "@rollup/plugin-virtual": "3.0.2", @@ -137,7 +137,7 @@ "@storybook/theming": "^8.3.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.4.5", - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.5.2", "@types/lodash.groupby": "4.6.9", @@ -201,7 +201,7 @@ "terser": "5.31.0", "ts-toolbelt": "9.6.0", "tsx": "4.7.0", - "typescript": "5.4.5", + "typescript": "^5.6.3", "typescript-plugin-css-modules": "5.1.0", "unist-util-find": "3.0.0", "unist-util-find-before": "4.0.0", diff --git a/packages/react/src/ActionList/Group.tsx b/packages/react/src/ActionList/Group.tsx index 1e29f5be58d..d0db9a77ff2 100644 --- a/packages/react/src/ActionList/Group.tsx +++ b/packages/react/src/ActionList/Group.tsx @@ -97,7 +97,7 @@ export const Group: React.FC> = ({ // because the heading is hidden from the accessibility tree and only used for presentation role. // We will instead use aria-label to label the list. See a line below. aria-labelledby={listRole ? undefined : groupHeadingId} - aria-label={listRole ? title ?? (slots.groupHeading?.props.children as string) : undefined} + aria-label={listRole ? (title ?? (slots.groupHeading?.props.children as string)) : undefined} role={role || (listRole && 'group')} > {slots.groupHeading ? childrenWithoutSlots : props.children} diff --git a/packages/react/src/ActionList/List.tsx b/packages/react/src/ActionList/List.tsx index 7786f392682..874ce8195ef 100644 --- a/packages/react/src/ActionList/List.tsx +++ b/packages/react/src/ActionList/List.tsx @@ -39,7 +39,7 @@ export const List = React.forwardRef( enableFocusZone: enableFocusZoneFromContainer, } = React.useContext(ActionListContainerContext) - const ariaLabelledBy = slots.heading ? slots.heading.props.id ?? headingId : listLabelledBy + const ariaLabelledBy = slots.heading ? (slots.heading.props.id ?? headingId) : listLabelledBy const listRole = role || listRoleFromContainer const listRef = useProvidedRefOrCreate(forwardedRef as React.RefObject) diff --git a/packages/react/src/AnchoredOverlay/AnchoredOverlay.features.stories.tsx b/packages/react/src/AnchoredOverlay/AnchoredOverlay.features.stories.tsx index db336516af6..3f914def820 100644 --- a/packages/react/src/AnchoredOverlay/AnchoredOverlay.features.stories.tsx +++ b/packages/react/src/AnchoredOverlay/AnchoredOverlay.features.stories.tsx @@ -2,7 +2,7 @@ import React, {useEffect, useRef, useState} from 'react' import type {Args, Meta} from '@storybook/react' import {FocusKeys} from '@primer/behaviors' -import {Avatar, Box, Text} from '..' +import {Avatar, Box, Link, Text} from '..' import {AnchoredOverlay} from '../AnchoredOverlay' import Heading from '../Heading' import Octicon from '../Octicon' @@ -26,7 +26,9 @@ const hoverCard = ( monalisa - Monalisa Octocat + + Monalisa Octocat + Former beach cat and champion swimmer. Now your friendly octapus with a normal face. @@ -101,6 +103,8 @@ export const CustomAnchorId = () => { onClose={() => setOpen(false)} renderAnchor={props => } anchorId="my-custom-anchor-id" + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -117,6 +121,8 @@ export const Height = () => { onClose={() => setOpen(false)} renderAnchor={props => } height="large" + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -133,8 +139,19 @@ export const Width = () => { onClose={() => setOpen(false)} renderAnchor={props => } width="large" + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > - {hoverCard} + + {hoverCard} + ) } @@ -153,6 +170,8 @@ export const AnchorAlignment = () => { )} align="center" + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -169,6 +188,8 @@ export const AnchorSide = () => { onClose={() => setOpen(false)} renderAnchor={props => } side="outside-right" + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -185,6 +206,8 @@ export const OffsetPositionFromAnchor = () => { onClose={() => setOpen(false)} renderAnchor={props => } anchorOffset={100} + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -201,6 +224,8 @@ export const OffsetAlignmentFromAnchor = () => { onClose={() => setOpen(false)} renderAnchor={props => } alignmentOffset={100} + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}} + focusZoneSettings={{disabled: true}} > {hoverCard} @@ -218,6 +243,8 @@ export const FocusTrapOverrides = () => { onClose={() => setOpen(false)} renderAnchor={props => } focusTrapSettings={{initialFocusRef}} + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'Focus Trap Demo Overlay'}} + focusZoneSettings={{disabled: true}} > @@ -235,6 +262,7 @@ export const FocusZoneOverrides = () => { onClose={() => setOpen(false)} renderAnchor={props => } focusZoneSettings={{bindKeys: FocusKeys.JK}} + overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'Focus Zone Demo Overlay'}} >

Use J and K keys to move focus. @@ -258,7 +286,11 @@ export const OverlayPropsOverrides = () => { overlayProps={{ overflow: 'auto', maxHeight: 'xsmall', + role: 'dialog', + 'aria-modal': true, + 'aria-label': 'User Card Overlay', }} + focusZoneSettings={{disabled: true}} >

Overlay props have been overridden to set:
diff --git a/packages/react/src/AnchoredOverlay/AnchoredOverlay.stories.tsx b/packages/react/src/AnchoredOverlay/AnchoredOverlay.stories.tsx
index 5a7dcbf50da..84ec0727c24 100644
--- a/packages/react/src/AnchoredOverlay/AnchoredOverlay.stories.tsx
+++ b/packages/react/src/AnchoredOverlay/AnchoredOverlay.stories.tsx
@@ -2,7 +2,7 @@ import React, {useState} from 'react'
 import type {Args, Meta} from '@storybook/react'
 import {LocationIcon, RepoIcon} from '@primer/octicons-react'
 
-import {Avatar, Text} from '..'
+import {Avatar, Link, Text} from '..'
 import {AnchoredOverlay} from '../AnchoredOverlay'
 import {Button} from '../Button'
 import Octicon from '../Octicon'
@@ -23,7 +23,9 @@ const hoverCard = (
     
       monalisa
       
-        Monalisa Octocat
+        
+          Monalisa Octocat
+        
       
     
     Former beach cat and champion swimmer. Now your friendly octapus with a normal face.
@@ -51,6 +53,8 @@ export const Default = () => {
       onOpen={() => setOpen(true)}
       onClose={() => setOpen(false)}
       renderAnchor={props => }
+      overlayProps={{role: 'dialog', 'aria-modal': true, 'aria-label': 'User Card Overlay'}}
+      focusZoneSettings={{disabled: true}}
     >
       {hoverCard}
     
@@ -74,8 +78,14 @@ export const Playground = (args: Args) => {
       width={args.width}
       height={args.height}
       renderAnchor={props => }
-      overlayProps={args.portalContainerName}
+      overlayProps={{
+        ...args.portalContainerName,
+        role: 'dialog',
+        'aria-modal': true,
+        'aria-label': 'User Card Overlay',
+      }}
       side={args.side}
+      focusZoneSettings={{disabled: true}}
     >
       {hoverCard}
     
diff --git a/packages/react/src/AnchoredOverlay/AnchoredOverlay.tsx b/packages/react/src/AnchoredOverlay/AnchoredOverlay.tsx
index 88260c2c8a2..bfc08cf041a 100644
--- a/packages/react/src/AnchoredOverlay/AnchoredOverlay.tsx
+++ b/packages/react/src/AnchoredOverlay/AnchoredOverlay.tsx
@@ -198,6 +198,7 @@ export const AnchoredOverlay: React.FC
           {children}
diff --git a/packages/react/src/Banner/Banner.tsx b/packages/react/src/Banner/Banner.tsx
index f33021d67d7..c61f130fd2e 100644
--- a/packages/react/src/Banner/Banner.tsx
+++ b/packages/react/src/Banner/Banner.tsx
@@ -88,7 +88,7 @@ const labels: Record = {
   warning: 'Warning',
 }
 
-const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_staff'
+const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_ga'
 
 export const Banner = React.forwardRef(function Banner(
   {
diff --git a/packages/react/src/Blankslate/Blankslate.module.css b/packages/react/src/Blankslate/Blankslate.module.css
index 05fa2c0a442..5f0029cbcfd 100644
--- a/packages/react/src/Blankslate/Blankslate.module.css
+++ b/packages/react/src/Blankslate/Blankslate.module.css
@@ -31,6 +31,7 @@
 .Description {
   margin: 0;
   margin-bottom: var(--base-size-8);
+  text-align: center;
 }
 
 .Heading {
diff --git a/packages/react/src/BranchName/BranchName.module.css b/packages/react/src/BranchName/BranchName.module.css
new file mode 100644
index 00000000000..66e9abc2d50
--- /dev/null
+++ b/packages/react/src/BranchName/BranchName.module.css
@@ -0,0 +1,14 @@
+.BranchName {
+  display: inline-block;
+  padding: var(--base-size-2) var(--base-size-6);
+  font-family: var(--fontStack-monospace);
+  font-size: var(--text-body-size-small);
+  color: var(--fgColor-link);
+  text-decoration: none;
+  background-color: var(--bgColor-accent-muted);
+  border-radius: var(--borderRadius-medium);
+
+  &:is(:not(a)) {
+    color: var(--fgColor-muted);
+  }
+}
diff --git a/packages/react/src/BranchName/BranchName.tsx b/packages/react/src/BranchName/BranchName.tsx
index 010777c4a2a..4b6d7697c9f 100644
--- a/packages/react/src/BranchName/BranchName.tsx
+++ b/packages/react/src/BranchName/BranchName.tsx
@@ -1,10 +1,14 @@
+import React, {type ForwardedRef} from 'react'
+import {clsx} from 'clsx'
 import styled from 'styled-components'
 import {get} from '../constants'
 import type {SxProp} from '../sx'
 import sx from '../sx'
-import type {ComponentProps} from '../utils/types'
+import {useFeatureFlag} from '../FeatureFlags'
+import Box from '../Box'
+import classes from './BranchName.module.css'
 
-const BranchName = styled.a`
+const StyledBranchName = styled.a`
   display: inline-block;
   padding: 2px 6px;
   font-size: var(--text-body-size-small, ${get('fontSizes.0')});
@@ -19,5 +23,50 @@ const BranchName = styled.a`
   ${sx};
 `
 
-export type BranchNameProps = ComponentProps
-export default BranchName
+type BranchNameProps = {
+  as?: As
+} & DistributiveOmit, 'as'> &
+  SxProp
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function BranchName(props: BranchNameProps, ref: ForwardedRef) {
+  const {as: BaseComponent = 'a', className, children, sx, ...rest} = props
+  const enabled = useFeatureFlag('primer_react_css_modules_team')
+
+  if (enabled) {
+    if (sx) {
+      return (
+        
+          {children}
+        
+      )
+    }
+
+    return (
+      
+        {children}
+      
+    )
+  }
+
+  return (
+    
+      {children}
+    
+  )
+}
+
+// eslint-disable-next-line @typescript-eslint/ban-types
+type FixedForwardRef = (
+  render: (props: P, ref: React.Ref) => React.ReactNode,
+) => (props: P & React.RefAttributes) => React.ReactNode
+
+const fixedForwardRef = React.forwardRef as FixedForwardRef
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+type DistributiveOmit = T extends any ? Omit : never
+
+BranchName.displayName = 'BranchName'
+
+export type {BranchNameProps}
+export default fixedForwardRef(BranchName)
diff --git a/packages/react/src/BranchName/__tests__/BranchName.test.tsx b/packages/react/src/BranchName/__tests__/BranchName.test.tsx
index 9b533e2ed34..4a9445e1421 100644
--- a/packages/react/src/BranchName/__tests__/BranchName.test.tsx
+++ b/packages/react/src/BranchName/__tests__/BranchName.test.tsx
@@ -3,9 +3,15 @@ import BranchName from '../BranchName'
 import {render, behavesAsComponent, checkExports} from '../../utils/testing'
 import {render as HTMLRender} from '@testing-library/react'
 import axe from 'axe-core'
+import {FeatureFlags} from '../../FeatureFlags'
 
 describe('BranchName', () => {
-  behavesAsComponent({Component: BranchName})
+  behavesAsComponent({
+    Component: BranchName,
+    options: {
+      skipDisplayName: true,
+    },
+  })
 
   checkExports('BranchName', {
     default: BranchName,
@@ -20,4 +26,23 @@ describe('BranchName', () => {
   it('renders an  by default', () => {
     expect(render().type).toEqual('a')
   })
+
+  it('should support `className` on the outermost element', () => {
+    const Element = () => 
+    const FeatureFlagElement = () => {
+      return (
+        
+          
+        
+      )
+    }
+    expect(HTMLRender().container.firstChild).toHaveClass('test-class-name')
+    expect(HTMLRender().container.firstChild).toHaveClass('test-class-name')
+  })
 })
diff --git a/packages/react/src/BranchName/__tests__/BranchName.types.test.tsx b/packages/react/src/BranchName/__tests__/BranchName.types.test.tsx
index 35330c2da72..4b7db3d4ba7 100644
--- a/packages/react/src/BranchName/__tests__/BranchName.types.test.tsx
+++ b/packages/react/src/BranchName/__tests__/BranchName.types.test.tsx
@@ -9,3 +9,43 @@ export function shouldNotAcceptSystemProps() {
   // @ts-expect-error system props should not be accepted
   return 
 }
+
+export function shouldAcceptAs() {
+  return (
+     {
+        // eslint-disable-next-line @typescript-eslint/no-unused-vars
+        type test = Expect>>
+      }}
+    />
+  )
+}
+
+export function defaultAsIsAnchor() {
+  return (
+     {
+        // eslint-disable-next-line @typescript-eslint/no-unused-vars
+        type test = Expect>>
+      }}
+    />
+  )
+}
+
+export function ShouldAcceptRef() {
+  const ref = React.useRef(null)
+  return (
+     {
+        // eslint-disable-next-line @typescript-eslint/no-unused-vars
+        type test = Expect>>
+      }}
+    />
+  )
+}
+
+type Expect = T
+type Equal = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? true : false
diff --git a/packages/react/src/Button/ButtonBase.tsx b/packages/react/src/Button/ButtonBase.tsx
index dc4ffdcfad1..752525b1ad9 100644
--- a/packages/react/src/Button/ButtonBase.tsx
+++ b/packages/react/src/Button/ButtonBase.tsx
@@ -118,7 +118,7 @@ const ButtonBase = forwardRef(
           >
             
                   {
@@ -314,8 +314,13 @@ const ButtonBase = forwardRef(
                           true,
                         )
                       : TrailingVisual
-                      ? renderModuleVisual(TrailingVisual, Boolean(loading) && !LeadingVisual, 'trailingVisual', false)
-                      : null
+                        ? renderModuleVisual(
+                            TrailingVisual,
+                            Boolean(loading) && !LeadingVisual,
+                            'trailingVisual',
+                            false,
+                          )
+                        : null
                   }
                 
                 {
@@ -420,8 +425,8 @@ const ButtonBase = forwardRef(
                         'trailingVisual',
                       )
                     : TrailingVisual
-                    ? renderVisual(TrailingVisual, Boolean(loading) && !LeadingVisual, 'trailingVisual')
-                    : null
+                      ? renderVisual(TrailingVisual, Boolean(loading) && !LeadingVisual, 'trailingVisual')
+                      : null
                 }
               
               {
diff --git a/packages/react/src/ButtonGroup/ButtonGroup.tsx b/packages/react/src/ButtonGroup/ButtonGroup.tsx
index e3398885b3f..74f9ff32e15 100644
--- a/packages/react/src/ButtonGroup/ButtonGroup.tsx
+++ b/packages/react/src/ButtonGroup/ButtonGroup.tsx
@@ -9,7 +9,7 @@ import {clsx} from 'clsx'
 import {useFeatureFlag} from '../FeatureFlags'
 
 const StyledButtonGroup = toggleStyledComponent(
-  'primer_react_css_modules_team',
+  'primer_react_css_modules_staff',
   'div',
   styled.div`
     display: inline-flex;
@@ -78,7 +78,7 @@ const ButtonGroup = React.forwardRef(function But
   {children, className, ...rest},
   forwardRef,
 ) {
-  const enabled = useFeatureFlag('primer_react_css_modules_team')
+  const enabled = useFeatureFlag('primer_react_css_modules_staff')
   return (
      (
   
 )
 
-export const Playground = (args: DataTableProps & ColWidthArgTypes) => {
-  const getColWidth = (colIndex: number) => {
-    return args[`colWidth${colIndex}`] !== 'explicit width'
-      ? args[`colWidth${colIndex}`]
-      : args[`explicitColWidth${colIndex}`]
-      ? args[`explicitColWidth${colIndex}`]
-      : 'grow'
-  }
+export const Playground: StoryObj & ColWidthArgTypes> = {
+  render: (args: DataTableProps & ColWidthArgTypes) => {
+    const getColWidth = (colIndex: number) => {
+      return args[`colWidth${colIndex}`] !== 'explicit width'
+        ? args[`colWidth${colIndex}`]
+        : args[`explicitColWidth${colIndex}`]
+          ? args[`explicitColWidth${colIndex}`]
+          : 'grow'
+    }
 
-  const align = args.align as CellAlignment
+    const align = args.align as CellAlignment
 
-  const [pageIndex, setPageIndex] = React.useState(0)
-  const start = pageIndex * parseInt(args.pageSize, 10)
-  const end = start + parseInt(args.pageSize, 10)
-  const rows = data.slice(start, end)
+    const [pageIndex, setPageIndex] = React.useState(0)
+    const start = pageIndex * parseInt(args.pageSize, 10)
+    const end = start + parseInt(args.pageSize, 10)
+    const rows = data.slice(start, end)
 
-  return (
-    
-      
-        Repositories
-      
-      
-        A subtitle could appear here to give extra context to the data.
-      
-       {
-              return 
+    return (
+      
+        
+          Repositories
+        
+        
+          A subtitle could appear here to give extra context to the data.
+        
+         {
-              return 
+            {
+              header: 'Type',
+              field: 'type',
+              renderCell: row => {
+                return 
+              },
+              width: getColWidth(1),
+              minWidth: args.minColWidth1,
+              maxWidth: args.maxColWidth1,
+              align,
             },
-            width: getColWidth(2),
-            minWidth: args.minColWidth2,
-            maxWidth: args.maxColWidth2,
-            align,
-          },
-          {
-            header: 'Dependabot',
-            field: 'securityFeatures.dependabot',
-            renderCell: row => {
-              return row.securityFeatures.dependabot.length > 0 ? (
-                
-                  {row.securityFeatures.dependabot.map(feature => {
-                    return 
-                  })}
-                
-              ) : null
+            {
+              header: 'Updated',
+              field: 'updatedAt',
+              renderCell: row => {
+                return 
+              },
+              width: getColWidth(2),
+              minWidth: args.minColWidth2,
+              maxWidth: args.maxColWidth2,
+              align,
             },
-            width: getColWidth(3),
-            minWidth: args.minColWidth3,
-            maxWidth: args.maxColWidth3,
-            align,
-          },
-          {
-            header: 'Code scanning',
-            field: 'securityFeatures.codeScanning',
-            renderCell: row => {
-              return row.securityFeatures.codeScanning.length > 0 ? (
-                
-                  {row.securityFeatures.codeScanning.map(feature => {
-                    return 
-                  })}
-                
-              ) : null
+            {
+              header: 'Dependabot',
+              field: 'securityFeatures.dependabot',
+              renderCell: row => {
+                return row.securityFeatures.dependabot.length > 0 ? (
+                  
+                    {row.securityFeatures.dependabot.map(feature => {
+                      return 
+                    })}
+                  
+                ) : null
+              },
+              width: getColWidth(3),
+              minWidth: args.minColWidth3,
+              maxWidth: args.maxColWidth3,
+              align,
             },
-            width: getColWidth(4),
-            minWidth: args.minColWidth4,
-            maxWidth: args.maxColWidth4,
-            align,
-          },
-        ]}
-      />
-       {
-          setPageIndex(pageIndex)
-        }}
-        defaultPageIndex={parseInt(args.defaultPageIndex, 10)}
-      />
-    
-  )
-}
-
-Playground.args = {
-  cellPadding: 'normal',
-  pageSize: 5,
-}
-
-Playground.argTypes = {
-  align: {
-    control: {
-      type: 'radio',
-    },
-    type: {
-      name: 'enum',
-      value: ['start', 'end'],
-    },
+            {
+              header: 'Code scanning',
+              field: 'securityFeatures.codeScanning',
+              renderCell: row => {
+                return row.securityFeatures.codeScanning.length > 0 ? (
+                  
+                    {row.securityFeatures.codeScanning.map(feature => {
+                      return 
+                    })}
+                  
+                ) : null
+              },
+              width: getColWidth(4),
+              minWidth: args.minColWidth4,
+              maxWidth: args.maxColWidth4,
+              align,
+            },
+          ]}
+        />
+         {
+            setPageIndex(pageIndex)
+          }}
+          defaultPageIndex={parseInt(args.defaultPageIndex, 10)}
+        />
+      
+    )
   },
-  'aria-describedby': {
-    control: false,
-    table: {
-      disable: true,
-    },
+  args: {
+    cellPadding: 'normal',
+    // @ts-expect-error it seems like args is not being correctly inferred
+    pageSize: 5,
   },
-  'aria-labelledby': {
-    control: false,
-    table: {
-      disable: true,
+  // @ts-expect-error it seems like arg types with column helpers are not working as intended
+  argTypes: {
+    align: {
+      control: {
+        type: 'radio',
+      },
+      type: {
+        name: 'enum',
+        value: ['start', 'end'],
+      },
     },
-  },
-  columns: {
-    control: false,
-    table: {
-      disable: true,
+    'aria-describedby': {
+      control: false,
+      table: {
+        disable: true,
+      },
     },
-  },
-  data: {
-    control: false,
-    table: {
-      disable: true,
+    'aria-labelledby': {
+      control: false,
+      table: {
+        disable: true,
+      },
     },
-  },
-  pageSize: {
-    control: {
-      defaultValue: 5,
-      type: 'number',
-      min: 1,
+    columns: {
+      control: false,
+      table: {
+        disable: true,
+      },
     },
-  },
-  defaultPageIndex: {
-    control: {
-      type: 'number',
+    data: {
+      control: false,
+      table: {
+        disable: true,
+      },
     },
-  },
-  cellPadding: {
-    control: {
-      type: 'radio',
+    pageSize: {
+      control: {
+        defaultValue: 5,
+        type: 'number',
+        min: 1,
+      },
+    },
+    defaultPageIndex: {
+      control: {
+        type: 'number',
+      },
     },
-    type: {
-      name: 'enum',
-      value: ['condensed', 'normal', 'spacious'],
+    cellPadding: {
+      control: {
+        type: 'radio',
+      },
+      type: {
+        name: 'enum',
+        value: ['condensed', 'normal', 'spacious'],
+      },
     },
+    ...getColumnWidthArgTypes(5),
   },
-  ...getColumnWidthArgTypes(5),
 }
diff --git a/packages/react/src/DataTable/Pagination.tsx b/packages/react/src/DataTable/Pagination.tsx
index 7a3bfdfea70..42ee2a1fccb 100644
--- a/packages/react/src/DataTable/Pagination.tsx
+++ b/packages/react/src/DataTable/Pagination.tsx
@@ -373,7 +373,7 @@ function Range({pageStart, pageEnd, totalCount}: RangeProps) {
       
       

{start} -  through  +  through  {end} of {totalCount}

diff --git a/packages/react/src/DataTable/useTable.ts b/packages/react/src/DataTable/useTable.ts index c5a9140744c..28fd042b2a4 100644 --- a/packages/react/src/DataTable/useTable.ts +++ b/packages/react/src/DataTable/useTable.ts @@ -135,8 +135,8 @@ export function useTable({ header.column.sortBy === true ? strategies.basic : typeof header.column.sortBy === 'string' - ? strategies[header.column.sortBy] - : header.column.sortBy + ? strategies[header.column.sortBy] + : header.column.sortBy setRowOrder(rowOrder => { return rowOrder.slice().sort((a, b) => { diff --git a/packages/react/src/DataTable/utils.ts b/packages/react/src/DataTable/utils.ts index e28c1d362aa..779a4598468 100644 --- a/packages/react/src/DataTable/utils.ts +++ b/packages/react/src/DataTable/utils.ts @@ -12,9 +12,9 @@ type MaxLength = ArrayOfLength<10>[number] type ArrayIndex
, Keys extends number = never> = A extends readonly [] ? Keys : // eslint-disable-next-line @typescript-eslint/no-unused-vars - A extends readonly [infer _, ...infer Tail] - ? ArrayIndex - : Keys + A extends readonly [infer _, ...infer Tail] + ? ArrayIndex + : Keys // Check if the given type is within the bounds set by `MaxLength` // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -30,25 +30,25 @@ type ArrayWithinBounds = T extends ReadonlyArray & {length: infer Length export type ObjectPaths = T extends readonly any[] & ArrayWithinBounds ? `${ArrayIndex}` | PrefixPath> : // eslint-disable-next-line @typescript-eslint/no-explicit-any - T extends any[] - ? never & 'Unable to determine keys of potentially boundless array' - : T extends Date - ? never - : T extends object - ? Extract | PrefixPath> - : never + T extends any[] + ? never & 'Unable to determine keys of potentially boundless array' + : T extends Date + ? never + : T extends object + ? Extract | PrefixPath> + : never -type PrefixPath = Prefix extends Extract - ? `${Prefix}.${ObjectPaths}` - : never +type PrefixPath = + Prefix extends Extract ? `${Prefix}.${ObjectPaths}` : never // Get the value of a given path within an object -export type ObjectPathValue = ObjectType extends Record< - string | number, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - any -> - ? Path extends `${infer Key}.${infer NestedPath}` - ? ObjectPathValue - : ObjectType[Path] - : never +export type ObjectPathValue = + ObjectType extends Record< + string | number, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + any + > + ? Path extends `${infer Key}.${infer NestedPath}` + ? ObjectPathValue + : ObjectType[Path] + : never diff --git a/packages/react/src/Details/Details.docs.json b/packages/react/src/Details/Details.docs.json index 51e5275b585..0dff5c8d6da 100644 --- a/packages/react/src/Details/Details.docs.json +++ b/packages/react/src/Details/Details.docs.json @@ -11,5 +11,26 @@ "type": "SystemStyleObject" } ], - "subcomponents": [] + "subcomponents": [ + { + "name": "Details.Summary", + "props": [ + { + "name": "as", + "type": "React.ElementType>", + "defaultValue": "summary", + "required": false, + "description": "HTML element to render summary as." + }, + { + "name": "children", + "type": "React.ReactNode" + }, + { + "name": "sx", + "type": "SystemStyleObject" + } + ] + } + ] } diff --git a/packages/react/src/Details/Details.stories.tsx b/packages/react/src/Details/Details.stories.tsx index cdebdccce97..799fee5ac5e 100644 --- a/packages/react/src/Details/Details.stories.tsx +++ b/packages/react/src/Details/Details.stories.tsx @@ -12,7 +12,7 @@ export const Default: StoryFn = () => { const {getDetailsProps} = useDetails({closeOnOutsideClick: true}) return (
- + See Details This is some content
) diff --git a/packages/react/src/Details/Details.tsx b/packages/react/src/Details/Details.tsx index d90f76a7e2a..927edb6091f 100644 --- a/packages/react/src/Details/Details.tsx +++ b/packages/react/src/Details/Details.tsx @@ -1,4 +1,4 @@ -import React, {type ComponentPropsWithoutRef, type ReactElement} from 'react' +import React, {useEffect, useState, type ComponentPropsWithoutRef, type ReactElement} from 'react' import styled from 'styled-components' import type {SxProp} from '../sx' import sx from '../sx' @@ -6,6 +6,7 @@ import {toggleStyledComponent} from '../internal/utils/toggleStyledComponent' import {useFeatureFlag} from '../FeatureFlags' import {clsx} from 'clsx' import classes from './Details.module.css' +import {useMergedRefs} from '../internal/hooks/useMergedRefs' const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team' @@ -24,18 +25,76 @@ const StyledDetails = toggleStyledComponent( `, ) -const Details = React.forwardRef( - ({className, children, ...rest}, ref): ReactElement => { +const Root = React.forwardRef( + ({className, children, ...rest}, forwardRef): ReactElement => { const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG) + const detailsRef = React.useRef(null) + const ref = useMergedRefs(forwardRef, detailsRef) + const [hasSummary, setHasSummary] = useState(false) + + useEffect(() => { + const {current: details} = detailsRef + if (!details) { + return + } + + const updateSummary = () => { + const summary = details.querySelector('summary:not([data-default-summary])') + setHasSummary(!!summary) + } + + // Update summary on mount + updateSummary() + + const observer = new MutationObserver(() => { + updateSummary() + }) + + observer.observe(details, { + childList: true, + subtree: true, + }) + + return () => { + observer.disconnect() + } + }, []) + return ( + {/* Include default summary if summary is not provided */} + {!hasSummary && {'See Details'}} {children} ) }, ) -Details.displayName = 'Details' +Root.displayName = 'Details' + +export type SummaryProps = { + /** + * HTML element to render summary as. + */ + as?: As + children?: React.ReactNode +} & React.ComponentPropsWithoutRef + +function Summary({as, children, ...props}: SummaryProps) { + const Component = as ?? 'summary' + return ( + + {children} + + ) +} +Summary.displayName = 'Summary' + +export {Summary} + +const Details = Object.assign(Root, { + Summary, +}) export type DetailsProps = ComponentPropsWithoutRef<'details'> & SxProp export default Details diff --git a/packages/react/src/Details/__tests__/Details.test.tsx b/packages/react/src/Details/__tests__/Details.test.tsx index bac07624624..28be85e0945 100644 --- a/packages/react/src/Details/__tests__/Details.test.tsx +++ b/packages/react/src/Details/__tests__/Details.test.tsx @@ -1,6 +1,6 @@ -import {render} from '@testing-library/react' +import {render, screen} from '@testing-library/react' import userEvent from '@testing-library/user-event' -import React from 'react' +import React, {act} from 'react' import {Details, useDetails, Box, Button} from '../..' import type {ButtonProps} from '../../Button' import {behavesAsComponent, checkExports} from '../../utils/testing' @@ -14,29 +14,36 @@ describe('Details', () => { }) it('should have no axe violations', async () => { - const {container} = render(
) - const results = await axe.run(container) + const {container} = render( +
+ SummaryContent +
, + ) + let results + await act(async () => { + results = await axe.run(container) + }) expect(results).toHaveNoViolations() }) - it('Toggles when you click outside', () => { + it('Toggles when you click outside', async () => { const Component = () => { const {getDetailsProps} = useDetails({closeOnOutsideClick: true}) return (
- hi + hi
) } - const {getByTestId} = render() + const {findByTestId} = render() document.body.click() - expect(getByTestId('details')).not.toHaveAttribute('open') + expect(await findByTestId('details')).not.toHaveAttribute('open') }) - it('Accurately passes down open state', () => { + it('Accurately passes down open state', async () => { const Component = () => { const {getDetailsProps, open} = useDetails({closeOnOutsideClick: true}) return ( @@ -46,12 +53,12 @@ describe('Details', () => { ) } - const {getByTestId} = render() + const {findByTestId} = render() document.body.click() - expect(getByTestId('summary')).toHaveTextContent('Closed') - expect(getByTestId('details')).not.toHaveAttribute('open') + expect(await findByTestId('summary')).toHaveTextContent('Closed') + expect(await findByTestId('details')).not.toHaveAttribute('open') }) it('Can manipulate state with setOpen', async () => { @@ -95,4 +102,53 @@ describe('Details', () => { expect(getByTestId('summary')).toHaveTextContent('Open') }) + + it('Adds default summary if no summary supplied', async () => { + const {getByText} = render(
content
) + + expect(getByText('See Details')).toBeInTheDocument() + expect(getByText('See Details').tagName).toBe('SUMMARY') + }) + + it('Does not add default summary if summary supplied', async () => { + const {findByTestId, findByText} = render( +
+ summary + content +
, + ) + + await expect(findByText('See Details')).rejects.toThrow() + expect(await findByTestId('summary')).toBeInTheDocument() + expect((await findByTestId('summary')).tagName).toBe('SUMMARY') + }) + + it('Does not add default summary if supplied as different element', async () => { + const {findByTestId, findByText} = render( +
+ + custom summary + + content +
, + ) + + await expect(findByText('See Details')).rejects.toThrow() + expect(await findByTestId('summary')).toBeInTheDocument() + expect((await findByTestId('summary')).tagName).toBe('SUMMARY') + }) + + describe('Details.Summary', () => { + behavesAsComponent({Component: Details.Summary, options: {skipSx: true}}) + + it('should support a custom `className` on the container element', () => { + render(test summary) + expect(screen.getByText('test summary')).toHaveClass('custom-class') + }) + + it('should pass extra props onto the container element', () => { + render(test summary) + expect(screen.getByText('test summary')).toHaveAttribute('data-testid', 'test') + }) + }) }) diff --git a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts index 3ab756ea60f..b10d4e35447 100644 --- a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts +++ b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts @@ -6,4 +6,5 @@ export const DefaultFeatureFlags = FeatureFlagScope.create({ primer_react_css_modules_ga: false, primer_react_action_list_item_as_button: false, primer_react_select_panel_with_modern_action_list: false, + primer_react_overlay_overflow: false, }) diff --git a/packages/react/src/FormControl/FormControl.features.stories.tsx b/packages/react/src/FormControl/FormControl.features.stories.tsx index ac040fb057c..d1e7a284ef4 100644 --- a/packages/react/src/FormControl/FormControl.features.stories.tsx +++ b/packages/react/src/FormControl/FormControl.features.stories.tsx @@ -4,12 +4,14 @@ import { Autocomplete, BaseStyles, Box, + Button, Checkbox, CheckboxGroup, FormControl, Radio, RadioGroup, Select, + SelectPanel, Text, TextInput, TextInputWithTokens, @@ -17,7 +19,8 @@ import { ThemeProvider, theme, } from '..' -import {MarkGithubIcon} from '@primer/octicons-react' +import {MarkGithubIcon, TriangleDownIcon} from '@primer/octicons-react' +import type {ItemInput} from '../deprecated/ActionList/List' export default { title: 'Components/FormControl/Features', @@ -273,6 +276,68 @@ export const ValidationExample = () => { ) } +function getColorCircle(color: string) { + return function () { + return ( + + ) + } +} + +const items: ItemInput[] = [ + {leadingVisual: getColorCircle('#a2eeef'), text: 'enhancement', description: 'New feature or request', id: 1}, + {leadingVisual: getColorCircle('#d73a4a'), text: 'bug', description: "Something isn't working", id: 2}, + {leadingVisual: getColorCircle('#0cf478'), text: 'good first issue', description: 'Good for newcomers', id: 3}, + {leadingVisual: getColorCircle('#ffd78e'), text: 'design', id: 4}, + {leadingVisual: getColorCircle('#ff0000'), text: 'blocker', id: 5}, + {leadingVisual: getColorCircle('#a4f287'), text: 'backend', id: 6}, + {leadingVisual: getColorCircle('#8dc6fc'), text: 'frontend', id: 7}, +].map(item => ({...item, descriptionVariant: 'block'})) + +export const WithSelectPanel = () => { + const [selected, setSelected] = React.useState([items[0], items[1]]) + const [filter, setFilter] = React.useState('') + const filteredItems = items.filter(item => item.text?.toLowerCase().startsWith(filter.toLowerCase())) + const [open, setOpen] = useState(false) + + return ( + + Select Labels + ( + + )} + open={open} + onOpenChange={setOpen} + items={filteredItems} + selected={selected} + onSelectedChange={setSelected} + onFilterChange={setFilter} + /> + + ) +} + export const WithLeadingVisual = () => ( @@ -342,3 +407,49 @@ export const CustomRequired = () => ( ) + +export const WithCaption = () => ( + + Example label + + Example caption + +) + +export const WithCaptionAndDisabled = () => ( + + Example label + + Example caption + +) + +export const WithHiddenLabel = () => ( + + Example label + + +) + +export const WithRequiredIndicator = () => ( + + Example label + + +) + +export const WithSuccessValidation = () => ( + + Example label + + Example success validation message + +) + +export const WithErrorValidation = () => ( + + Example label + + Example error validation message + +) diff --git a/packages/react/src/FormControl/FormControl.stories.tsx b/packages/react/src/FormControl/FormControl.stories.tsx index a8d30f8aa16..602d581fae4 100644 --- a/packages/react/src/FormControl/FormControl.stories.tsx +++ b/packages/react/src/FormControl/FormControl.stories.tsx @@ -1,21 +1,10 @@ import React, {useState} from 'react' import type {Meta} from '@storybook/react' -import {BaseStyles, Box, Checkbox, FormControl, TextInput, TextInputWithTokens, ThemeProvider, theme} from '..' +import {Box, Checkbox, FormControl, TextInput, TextInputWithTokens} from '..' import type {FormValidationStatus} from '../utils/types/FormValidationStatus' export default { title: 'Components/FormControl', - decorators: [ - Story => { - return ( - - - - - - ) - }, - ], argTypes: { disabled: { type: 'boolean', diff --git a/packages/react/src/FormControl/FormControl.tsx b/packages/react/src/FormControl/FormControl.tsx index 257163c753a..f2eb061b594 100644 --- a/packages/react/src/FormControl/FormControl.tsx +++ b/packages/react/src/FormControl/FormControl.tsx @@ -3,7 +3,8 @@ import Autocomplete from '../Autocomplete' import Box from '../Box' import Checkbox from '../Checkbox' import Radio from '../Radio' -import Select from '../Select' +import Select from '../Select/Select' +import {SelectPanel} from '../SelectPanel' import TextInput from '../TextInput' import TextInputWithTokens from '../TextInputWithTokens' import Textarea from '../Textarea' @@ -50,7 +51,16 @@ const FormControl = React.forwardRef( leadingVisual: FormControlLeadingVisual, validation: FormControlValidation, }) - const expectedInputComponents = [Autocomplete, Checkbox, Radio, Select, TextInput, TextInputWithTokens, Textarea] + const expectedInputComponents = [ + Autocomplete, + Checkbox, + Radio, + Select, + TextInput, + TextInputWithTokens, + Textarea, + SelectPanel, + ] const choiceGroupContext = useContext(CheckboxOrRadioGroupContext) const disabled = choiceGroupContext.disabled || disabledProp const id = useId(idProp) diff --git a/packages/react/src/Header/Header.dev.module.css b/packages/react/src/Header/Header.dev.module.css new file mode 100644 index 00000000000..8d90de7725a --- /dev/null +++ b/packages/react/src/Header/Header.dev.module.css @@ -0,0 +1,11 @@ +.HeaderDev { + background-color: var(--label-olive-bgColor-active); +} + +.HeaderDevItem { + padding-left: var(--base-size-24); +} + +.HeaderDevLink { + color: var(--color-prettylights-syntax-markup-inserted-text); +} diff --git a/packages/react/src/Header/Header.dev.stories.tsx b/packages/react/src/Header/Header.dev.stories.tsx new file mode 100644 index 00000000000..66756f36e93 --- /dev/null +++ b/packages/react/src/Header/Header.dev.stories.tsx @@ -0,0 +1,76 @@ +import React from 'react' +import type {Meta} from '@storybook/react' +import {MarkGithubIcon} from '@primer/octicons-react' + +import Header from './Header' +import Avatar from '../Avatar' +import Octicon from '../Octicon' + +import classes from './Header.dev.module.css' +import {FeatureFlags} from '../FeatureFlags' + +export default { + title: 'Components/Header/Dev', + component: Header, +} as Meta + +export const WithCss = () => ( + +
+ + + + GitHub + + + Menu + + + +
+
+) + +export const WithSx = () => ( +
+ + + + GitHub + + + Menu + + + +
+) + +export const WithSxAndCSS = () => ( + +
+ + + + GitHub + + + Menu + + + +
+
+) diff --git a/packages/react/src/Header/Header.module.css b/packages/react/src/Header/Header.module.css new file mode 100644 index 00000000000..0d8a055fea9 --- /dev/null +++ b/packages/react/src/Header/Header.module.css @@ -0,0 +1,39 @@ +.Header { + z-index: 32; + display: flex; + padding: var(--base-size-16); + overflow: auto; + font-size: var(--text-body-size-medium); + line-height: var(--text-title-lineHeight-large); + color: var(--header-fgColor-default); + background-color: var(--header-bgColor); + align-items: center; + flex-wrap: nowrap; +} + +.HeaderItem { + display: flex; + margin-right: var(--base-size-16); + align-self: stretch; + align-items: center; + flex-wrap: nowrap; + + &:where([data-full]) { + flex: auto; + } +} + +.HeaderLink { + display: flex; + font-weight: var(--text-title-weight-large); + color: var(--header-fgColor-logo); + text-decoration: none; + white-space: nowrap; + cursor: pointer; + align-items: center; + + &:hover, + &:focus { + color: var(--header-fgColor-default); + } +} diff --git a/packages/react/src/Header/Header.tsx b/packages/react/src/Header/Header.tsx index c676ccd2d4c..3c7c194ca43 100644 --- a/packages/react/src/Header/Header.tsx +++ b/packages/react/src/Header/Header.tsx @@ -4,68 +4,132 @@ import {get} from '../constants' import type {SxProp} from '../sx' import sx from '../sx' import type {ComponentProps} from '../utils/types' +import {toggleStyledComponent} from '../internal/utils/toggleStyledComponent' +import {useFeatureFlag} from '../FeatureFlags' +import React from 'react' +import {clsx} from 'clsx' +import classes from './Header.module.css' +import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic' -type StyledHeaderItemProps = {full?: boolean} & SxProp -type StyledHeaderProps = SxProp -type StyledHeaderLinkProps = {to?: Location | Pathname} & SxProp - -const Header = styled.header` - z-index: 32; - display: flex; - padding: ${get('space.3')}; - font-size: ${get('fontSizes.1')}; - line-height: ${get('lineHeights.default')}; - color: ${get('colors.header.text')}; - background-color: ${get('colors.header.bg')}; - align-items: center; - flex-wrap: nowrap; - overflow: auto; - - ${sx}; -` -const HeaderItem = styled.div` - display: flex; - margin-right: ${get('space.3')}; - align-self: stretch; - align-items: center; - flex-wrap: nowrap; - - ${({full}) => - full && - css` - flex: auto; - `}; - - ${sx}; -` +type StyledHeaderProps = React.ComponentProps<'header'> & SxProp +type StyledHeaderItemProps = React.ComponentProps<'div'> & SxProp & {full?: boolean} +type StyledHeaderLinkProps = React.ComponentProps<'a'> & SxProp & {to?: Location | Pathname} -HeaderItem.displayName = 'Header.Item' +const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team' -const HeaderLink = styled.a.attrs(({to}) => { - const isReactRouter = typeof to === 'string' - if (isReactRouter) { - // according to their docs, NavLink supports aria-current: - // https://reacttraining.com/react-router/web/api/NavLink/aria-current-string - return {'aria-current': 'page'} - } else { - return {} - } -})` - font-weight: ${get('fontWeights.bold')}; - color: ${get('colors.header.logo')}; - white-space: nowrap; - cursor: pointer; - text-decoration: none; - display: flex; - align-items: center; - - &:hover, - &:focus { +const StyledHeader = toggleStyledComponent( + CSS_MODULES_FEATURE_FLAG, + 'header', + styled.header` + z-index: 32; + display: flex; + padding: ${get('space.3')}; + font-size: ${get('fontSizes.1')}; + line-height: ${get('lineHeights.default')}; color: ${get('colors.header.text')}; - } + background-color: ${get('colors.header.bg')}; + align-items: center; + flex-wrap: nowrap; + overflow: auto; + + ${sx}; + `, +) + +const Header = React.forwardRef(function Header( + {children, className, ...rest}, + forwardRef, +) { + const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG) + return ( + + {children} + + ) +}) as PolymorphicForwardRefComponent<'header', StyledHeaderProps> + +Header.displayName = 'Header' + +const StyledHeaderItem = toggleStyledComponent( + CSS_MODULES_FEATURE_FLAG, + 'div', + styled.div` + display: flex; + margin-right: ${get('space.3')}; + align-self: stretch; + align-items: center; + flex-wrap: nowrap; + + ${({full}) => + full && + css` + flex: auto; + `}; + + ${sx}; + `, +) + +const HeaderItem = React.forwardRef(function HeaderItem( + {children, className, ...rest}, + forwardRef, +) { + const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG) + return ( + + {children} + + ) +}) + +HeaderItem.displayName = 'Header.Item' + +const StyledHeaderLink = toggleStyledComponent( + CSS_MODULES_FEATURE_FLAG, + 'a', + styled.a.attrs(({to}) => { + const isReactRouter = typeof to === 'string' + if (isReactRouter) { + // according to their docs, NavLink supports aria-current: + // https://reacttraining.com/react-router/web/api/NavLink/aria-current-string + return {'aria-current': 'page'} + } else { + return {} + } + })` + font-weight: ${get('fontWeights.bold')}; + color: ${get('colors.header.logo')}; + white-space: nowrap; + cursor: pointer; + text-decoration: none; + display: flex; + align-items: center; + + &:hover, + &:focus { + color: ${get('colors.header.text')}; + } + + ${sx}; + `, +) - ${sx}; -` +const HeaderLink = React.forwardRef(function HeaderLink( + {children, className, ...rest}, + forwardRef, +) { + const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG) + return ( + + {children} + + ) +}) HeaderLink.displayName = 'Header.Link' diff --git a/packages/react/src/InlineMessage/InlineMessage.dev.stories.tsx b/packages/react/src/InlineMessage/InlineMessage.dev.stories.tsx new file mode 100644 index 00000000000..31428524b11 --- /dev/null +++ b/packages/react/src/InlineMessage/InlineMessage.dev.stories.tsx @@ -0,0 +1,14 @@ +import type {Meta} from '@storybook/react' +import React from 'react' +import {InlineMessage} from '.' + +const meta = { + title: 'Experimental/Components/InlineMessage/Dev', + component: InlineMessage, +} satisfies Meta + +export default meta + +export const DevDefault = () => { + return An example inline message +} diff --git a/packages/react/src/LabelGroup/LabelGroup.docs.json b/packages/react/src/LabelGroup/LabelGroup.docs.json index 34fafdde94f..51e64eef176 100644 --- a/packages/react/src/LabelGroup/LabelGroup.docs.json +++ b/packages/react/src/LabelGroup/LabelGroup.docs.json @@ -17,6 +17,12 @@ "description": "How many tokens to show. `'auto'` truncates the tokens to fit in the parent container. Passing a number will truncate after that number tokens. If this is undefined, tokens will never be truncated.", "defaultValue": "", "type": "'auto' | number" + }, + { + "name": "as", + "description": "Customize the element type of the rendered container.", + "defaultValue": "ul", + "type": "React.ElementType" } ], "subcomponents": [] diff --git a/packages/react/src/LabelGroup/LabelGroup.stories.tsx b/packages/react/src/LabelGroup/LabelGroup.stories.tsx index 639446335d2..d123757c6ed 100644 --- a/packages/react/src/LabelGroup/LabelGroup.stories.tsx +++ b/packages/react/src/LabelGroup/LabelGroup.stories.tsx @@ -69,6 +69,10 @@ export const Playground: StoryFn = ({ ) } +Playground.args = { + as: 'ul', +} + Playground.argTypes = { overflowStyle: { control: { diff --git a/packages/react/src/LabelGroup/LabelGroup.tsx b/packages/react/src/LabelGroup/LabelGroup.tsx index e39d389ddd1..5aaf6f8edd8 100644 --- a/packages/react/src/LabelGroup/LabelGroup.tsx +++ b/packages/react/src/LabelGroup/LabelGroup.tsx @@ -12,6 +12,8 @@ import type {SxProp} from '../sx' import sx from '../sx' export type LabelGroupProps = { + /** Customize the element type of the rendered container */ + as?: React.ElementType /** How hidden tokens should be shown. `'inline'` shows the hidden tokens after the visible tokens. `'overlay'` shows all tokens in an overlay that appears on top of the visible tokens. */ overflowStyle?: 'inline' | 'overlay' /** How many tokens to show. `'auto'` truncates the tokens to fit in the parent container. Passing a number will truncate after that number tokens. If this is undefined, tokens will never be truncated. */ @@ -30,6 +32,13 @@ const StyledLabelGroupContainer = styled.div` flex-wrap: wrap; } + &[data-list] { + padding-inline-start: 0; + margin-block-start: 0; + margin-block-end: 0; + list-style-type: none; + } + ${sx}; ` @@ -54,7 +63,7 @@ const ItemWrapper = styled.div` // Calculates the width of the overlay to cover the labels/tokens and the expand button. const getOverlayWidth = ( buttonClientRect: DOMRect, - containerRef: React.RefObject, + containerRef: React.RefObject, overlayPaddingPx: number, ) => overlayPaddingPx + buttonClientRect.right - (containerRef.current?.getBoundingClientRect().left || 0) @@ -148,8 +157,9 @@ const LabelGroup: React.FC> = ({ visibleChildCount, overflowStyle = 'overlay', sx: sxProp, + as = 'ul', }) => { - const containerRef = React.useRef(null) + const containerRef = React.useRef(null) const collapseButtonRef = React.useRef(null) const firstHiddenIndexRef = React.useRef(undefined) const [visibilityMap, setVisibilityMap] = React.useState>({}) @@ -317,50 +327,63 @@ const LabelGroup: React.FC> = ({ } }, [overflowStyle, isOverflowShown]) + const isList = as === 'ul' || as === 'ol' + const ToggleWrapper = isList ? 'li' : React.Fragment + // If truncation is enabled, we need to render based on truncation logic. return visibleChildCount ? ( {React.Children.map(children, (child, index) => ( {child} ))} - {overflowStyle === 'inline' ? ( - - ) : ( - - {children} - - )} + + {overflowStyle === 'inline' ? ( + + ) : ( + + {children} + + )} + ) : ( - - {children} + + {isList + ? React.Children.map(children, (child, index) => { + return
  • {child}
  • + }) + : children}
    ) } diff --git a/packages/react/src/Link/Link.tsx b/packages/react/src/Link/Link.tsx index 608ca582edf..9c27320a776 100644 --- a/packages/react/src/Link/Link.tsx +++ b/packages/react/src/Link/Link.tsx @@ -1,18 +1,14 @@ import {clsx} from 'clsx' import React, {forwardRef, useEffect} from 'react' -import styled from 'styled-components' -import {system} from 'styled-system' -import {get} from '../constants' import {useRefObjectAsForwardedRef} from '../hooks' import type {SxProp} from '../sx' -import sx from '../sx' import classes from './Link.module.css' -import {useFeatureFlag} from '../FeatureFlags' import Box from '../Box' import type {ComponentProps} from '../utils/types' import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic' type StyledLinkProps = { + /** @deprecated use CSS modules to style hover color */ hoverColor?: string muted?: boolean /** @deprecated use `inline` to specify the type of link instead */ @@ -21,49 +17,7 @@ type StyledLinkProps = { inline?: boolean } & SxProp -const hoverColor = system({ - hoverColor: { - property: 'color', - scale: 'colors', - }, -}) - -const StyledLink = styled.a` - color: ${props => (props.muted ? get('colors.fg.muted')(props) : get('colors.accent.fg')(props))}; - - /* By default, Link does not have underline */ - text-decoration: none; - - /* You can add one by setting underline={true} */ - text-decoration: ${props => (props.underline ? 'underline' : undefined)}; - - /* Inline links (inside a text block), however, should have underline based on accessibility setting set in data-attribute */ - /* Note: setting underline={false} does not override this */ - [data-a11y-link-underlines='true'] &[data-inline='true'] { - text-decoration: underline; - } - - &:hover { - text-decoration: ${props => (props.muted ? 'none' : 'underline')}; - ${props => (props.hoverColor ? hoverColor : props.muted ? `color: ${get('colors.accent.fg')(props)}` : '')}; - } - &:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - user-select: none; - background-color: transparent; - border: 0; - appearance: none; - } - ${sx}; -` - const Link = forwardRef(({as: Component = 'a', className, inline, underline, ...props}, forwardedRef) => { - const enabled = useFeatureFlag('primer_react_css_modules_ga') - const innerRef = React.useRef(null) useRefObjectAsForwardedRef(forwardedRef, innerRef) @@ -91,24 +45,10 @@ const Link = forwardRef(({as: Component = 'a', className, inline, underline, ... }, [innerRef]) } - if (enabled) { - if (props.sx) { - return ( - - ) - } - + if (props.sx) { return ( - `; exports[`Link passes href down to link element 1`] = ` -.c1 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; -} - -[data-a11y-link-underlines='true'] .c0[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c1:hover { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c1:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -
    `; exports[`Link respects hoverColor prop 1`] = ` -.c1 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; -} - -[data-a11y-link-underlines='true'] .c0[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c1:hover { - -webkit-text-decoration: underline; - text-decoration: underline; - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); -} - -.c1:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - `; exports[`Link respects the "sx" prop when "muted" prop is also passed 1`] = ` -.c1 { - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); - -webkit-text-decoration: none; - text-decoration: none; +.c0 { color: var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)); } -[data-a11y-link-underlines='true'] .c0[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c1:hover { - -webkit-text-decoration: none; - text-decoration: none; - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); -} - -.c1:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - `; exports[`Link respects the "muted" prop 1`] = ` -.c1 { - color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); - -webkit-text-decoration: none; - text-decoration: none; -} - -[data-a11y-link-underlines='true'] .c0[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c1:hover { - -webkit-text-decoration: none; - text-decoration: none; - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); -} - -.c1:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - `; diff --git a/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap b/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap index c425395d008..1d4bccc1f5a 100644 --- a/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap +++ b/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap @@ -1,7 +1,30 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`NavList renders a simple list 1`] = ` -.c5 { +.c3 { + padding-left: 8px; + padding-right: 8px; + padding-top: 6px; + padding-bottom: 6px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-radius: 6px; + color: inherit; +} + +.c3:hover { + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; +} + +.c4 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -16,7 +39,7 @@ exports[`NavList renders a simple list 1`] = ` min-width: 0; } -.c6 { +.c5 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -25,7 +48,7 @@ exports[`NavList renders a simple list 1`] = ` word-break: break-word; } -.c8 { +.c7 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -151,7 +174,7 @@ exports[`NavList renders a simple list 1`] = ` border-radius: 6px; } -.c7 { +.c6 { position: relative; display: -webkit-box; display: -webkit-flex; @@ -183,27 +206,27 @@ exports[`NavList renders a simple list 1`] = ` margin-bottom: unset; } -.c7[data-loading] { +.c6[data-loading] { cursor: default; } -.c7[aria-disabled], -.c7[data-inactive] { +.c6[aria-disabled], +.c6[data-inactive] { cursor: not-allowed; } -.c7[aria-disabled] [data-component="ActionList.Checkbox"], -.c7[data-inactive] [data-component="ActionList.Checkbox"] { +.c6[aria-disabled] [data-component="ActionList.Checkbox"], +.c6[data-inactive] [data-component="ActionList.Checkbox"] { cursor: not-allowed; background-color: var(--control-bgColor-disabled,rgba(175,184,193,0.2)); border-color: var(--color-input-disabled-bg,rgba(175,184,193,0.2)); } -.c7 [data-component="ActionList.Item--DividerContainer"] { +.c6 [data-component="ActionList.Item--DividerContainer"] { position: relative; } -.c7 [data-component="ActionList.Item--DividerContainer"]::before { +.c6 [data-component="ActionList.Item--DividerContainer"]::before { content: " "; display: block; position: absolute; @@ -214,7 +237,7 @@ exports[`NavList renders a simple list 1`] = ` border-color: var(--divider-color,transparent); } -.c7:not(:first-of-type) { +.c6:not(:first-of-type) { --divider-color: var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48))); } @@ -222,22 +245,22 @@ exports[`NavList renders a simple list 1`] = ` --divider-color: transparent !important; } -.c7:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]), -.c7[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]) { +.c6:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]), +.c6[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]) { --divider-color: transparent; } -.c7:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c1, -.c7[data-focus-visible-added] + li { +.c6:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c1, +.c6[data-focus-visible-added] + li { --divider-color: transparent; } -.c7[data-is-active-descendant] { +.c6[data-is-active-descendant] { font-weight: 400; background-color: var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24))); } -.c7[data-is-active-descendant]::after { +.c6[data-is-active-descendant]::after { position: absolute; top: calc(50% - 12px); left: -8px; @@ -248,59 +271,6 @@ exports[`NavList renders a simple list 1`] = ` border-radius: 6px; } -.c4 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; - padding-left: 8px; - padding-right: 8px; - padding-top: 6px; - padding-bottom: 6px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - border-radius: 6px; - color: inherit; -} - -[data-a11y-link-underlines='true'] .c3[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c4:hover { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c4:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.c4:hover { - color: inherit; - -webkit-text-decoration: none; - text-decoration: none; -} - @media (forced-colors:active) { .c2:focus, .c2:focus-visible, @@ -332,30 +302,30 @@ exports[`NavList renders a simple list 1`] = ` } @media (forced-colors:active) { - .c7:focus, - .c7:focus-visible, - .c7 > a.focus-visible, - .c7[data-is-active-descendant] { + .c6:focus, + .c6:focus-visible, + .c6 > a.focus-visible, + .c6[data-is-active-descendant] { outline: solid 1px transparent !important; } } @media (hover:hover) and (pointer:fine) { - .c7:hover:not([aria-disabled]):not([data-inactive]) { + .c6:hover:not([aria-disabled]):not([data-inactive]) { background-color: var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); box-shadow: inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent)); } - .c7:focus-visible, - .c7 > a.focus-visible, - .c7:focus.focus-visible { + .c6:focus-visible, + .c6 > a.focus-visible, + .c6:focus.focus-visible { outline: none; border: 2 solid; box-shadow: 0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da)); } - .c7:active:not([aria-disabled]):not([data-inactive]) { + .c6:active:not([aria-disabled]):not([data-inactive]) { background-color: var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } @@ -374,17 +344,17 @@ exports[`NavList renders a simple list 1`] = `
    Home @@ -393,21 +363,21 @@ exports[`NavList renders a simple list 1`] = `
  • Contact @@ -496,7 +466,30 @@ exports[`NavList renders with groups 1`] = ` padding-inline-start: 0; } -.c9 { +.c7 { + padding-left: 8px; + padding-right: 8px; + padding-top: 6px; + padding-bottom: 6px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-radius: 6px; + color: inherit; +} + +.c7:hover { + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; +} + +.c8 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -511,7 +504,7 @@ exports[`NavList renders with groups 1`] = ` min-width: 0; } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -520,7 +513,7 @@ exports[`NavList renders with groups 1`] = ` word-break: break-word; } -.c12 { +.c11 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -646,7 +639,7 @@ exports[`NavList renders with groups 1`] = ` border-radius: 6px; } -.c11 { +.c10 { position: relative; display: -webkit-box; display: -webkit-flex; @@ -678,27 +671,27 @@ exports[`NavList renders with groups 1`] = ` margin-bottom: unset; } -.c11[data-loading] { +.c10[data-loading] { cursor: default; } -.c11[aria-disabled], -.c11[data-inactive] { +.c10[aria-disabled], +.c10[data-inactive] { cursor: not-allowed; } -.c11[aria-disabled] [data-component="ActionList.Checkbox"], -.c11[data-inactive] [data-component="ActionList.Checkbox"] { +.c10[aria-disabled] [data-component="ActionList.Checkbox"], +.c10[data-inactive] [data-component="ActionList.Checkbox"] { cursor: not-allowed; background-color: var(--control-bgColor-disabled,rgba(175,184,193,0.2)); border-color: var(--color-input-disabled-bg,rgba(175,184,193,0.2)); } -.c11 [data-component="ActionList.Item--DividerContainer"] { +.c10 [data-component="ActionList.Item--DividerContainer"] { position: relative; } -.c11 [data-component="ActionList.Item--DividerContainer"]::before { +.c10 [data-component="ActionList.Item--DividerContainer"]::before { content: " "; display: block; position: absolute; @@ -709,7 +702,7 @@ exports[`NavList renders with groups 1`] = ` border-color: var(--divider-color,transparent); } -.c11:not(:first-of-type) { +.c10:not(:first-of-type) { --divider-color: var(--borderColor-muted,var(--color-action-list-item-inline-divider,rgba(208,215,222,0.48))); } @@ -717,22 +710,22 @@ exports[`NavList renders with groups 1`] = ` --divider-color: transparent !important; } -.c11:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]), -.c11[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]) { +.c10:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]), +.c10[data-focus-visible-added]:not([aria-disabled]):not([data-inactive]) { --divider-color: transparent; } -.c11:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c5, -.c11[data-focus-visible-added] + li { +.c10:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c5, +.c10[data-focus-visible-added] + li { --divider-color: transparent; } -.c11[data-is-active-descendant] { +.c10[data-is-active-descendant] { font-weight: 400; background-color: var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24))); } -.c11[data-is-active-descendant]::after { +.c10[data-is-active-descendant]::after { position: absolute; top: calc(50% - 12px); left: -8px; @@ -743,59 +736,6 @@ exports[`NavList renders with groups 1`] = ` border-radius: 6px; } -.c8 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; - padding-left: 8px; - padding-right: 8px; - padding-top: 6px; - padding-bottom: 6px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - border-radius: 6px; - color: inherit; -} - -[data-a11y-link-underlines='true'] .c7[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c8:hover { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c8:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.c8:hover { - color: inherit; - -webkit-text-decoration: none; - text-decoration: none; -} - @media (forced-colors:active) { .c6:focus, .c6:focus-visible, @@ -827,30 +767,30 @@ exports[`NavList renders with groups 1`] = ` } @media (forced-colors:active) { - .c11:focus, - .c11:focus-visible, - .c11 > a.focus-visible, - .c11[data-is-active-descendant] { + .c10:focus, + .c10:focus-visible, + .c10 > a.focus-visible, + .c10[data-is-active-descendant] { outline: solid 1px transparent !important; } } @media (hover:hover) and (pointer:fine) { - .c11:hover:not([aria-disabled]):not([data-inactive]) { + .c10:hover:not([aria-disabled]):not([data-inactive]) { background-color: var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); box-shadow: inset 0 0 0 max(1px,0.0625rem) var(--control-transparent-borderColor-active,var(--color-action-list-item-default-active-border,transparent)); } - .c11:focus-visible, - .c11 > a.focus-visible, - .c11:focus.focus-visible { + .c10:focus-visible, + .c10 > a.focus-visible, + .c10:focus.focus-visible { outline: none; border: 2 solid; box-shadow: 0 0 0 2px var(--bgColor-accent-emphasis,var(--color-accent-emphasis,#0969da)); } - .c11:active:not([aria-disabled]):not([data-inactive]) { + .c10:active:not([aria-disabled]):not([data-inactive]) { background-color: var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } @@ -892,17 +832,17 @@ exports[`NavList renders with groups 1`] = `
    Getting started @@ -936,21 +876,21 @@ exports[`NavList renders with groups 1`] = ` class="c4" >
  • Avatar @@ -1020,7 +960,32 @@ exports[`NavList.Item with NavList.SubNav does not have active styles if SubNav color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c14 { +.c12 { + padding-left: 16px; + padding-right: 8px; + padding-top: 6px; + padding-bottom: 6px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-radius: 6px; + color: inherit; + font-size: 12px; + font-weight: 400; +} + +.c12:hover { + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; +} + +.c13 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -1046,8 +1011,8 @@ exports[`NavList.Item with NavList.SubNav does not have active styles if SubNav --divider-color: transparent !important; } -.c15:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, -.c15[data-focus-visible-added] + li { +.c14:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, +.c14[data-focus-visible-added] + li { --divider-color: transparent; } @@ -1258,61 +1223,6 @@ exports[`NavList.Item with NavList.SubNav does not have active styles if SubNav border-radius: 6px; } -.c13 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; - padding-left: 16px; - padding-right: 8px; - padding-top: 6px; - padding-bottom: 6px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - border-radius: 6px; - color: inherit; - font-size: 12px; - font-weight: 400; -} - -[data-a11y-link-underlines='true'] .c12[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c13:hover { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c13:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.c13:hover { - color: inherit; - -webkit-text-decoration: none; - text-decoration: none; -} - .c9 { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); @@ -1453,7 +1363,7 @@ exports[`NavList.Item with NavList.SubNav does not have active styles if SubNav Sub Item @@ -1531,6 +1441,31 @@ exports[`NavList.Item with NavList.SubNav has active styles if SubNav contains t display: none; } +.c12 { + padding-left: 16px; + padding-right: 8px; + padding-top: 6px; + padding-bottom: 6px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-radius: 6px; + color: inherit; + font-size: 12px; + font-weight: 400; +} + +.c12:hover { + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; +} + .c7 { -webkit-box-flex: 1; -webkit-flex-grow: 1; @@ -1551,8 +1486,8 @@ exports[`NavList.Item with NavList.SubNav has active styles if SubNav contains t --divider-color: transparent !important; } -.c14:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, -.c14[data-focus-visible-added] + li { +.c13:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, +.c13[data-focus-visible-added] + li { --divider-color: transparent; } @@ -1670,8 +1605,8 @@ exports[`NavList.Item with NavList.SubNav has active styles if SubNav contains t --divider-color: transparent !important; } -.c15:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, -.c15[data-focus-visible-added] + li { +.c14:hover:not([aria-disabled]):not([data-inactive]):not([data-loading]) + .c3, +.c14[data-focus-visible-added] + li { --divider-color: transparent; } @@ -1784,61 +1719,6 @@ exports[`NavList.Item with NavList.SubNav has active styles if SubNav contains t border-radius: 6px; } -.c13 { - color: var(--fgColor-accent,var(--color-accent-fg,#0969da)); - -webkit-text-decoration: none; - text-decoration: none; - padding-left: 16px; - padding-right: 8px; - padding-top: 6px; - padding-bottom: 6px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; - border-radius: 6px; - color: inherit; - font-size: 12px; - font-weight: 400; -} - -[data-a11y-link-underlines='true'] .c12[data-inline='true'] { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c13:hover { - -webkit-text-decoration: underline; - text-decoration: underline; -} - -.c13:is(button) { - display: inline-block; - padding: 0; - font-size: inherit; - white-space: nowrap; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: transparent; - border: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.c13:hover { - color: inherit; - -webkit-text-decoration: none; - text-decoration: none; -} - .c9 { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); @@ -1987,7 +1867,7 @@ exports[`NavList.Item with NavList.SubNav has active styles if SubNav contains t { role={role} aria-modal={role === 'dialog' ? 'true' : undefined} ref={primaryContainer} + preventOverflow={false} >
    Loading @@ -5008,11 +4980,11 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r34:" >
  • Loading @@ -5316,11 +5281,11 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r39:" > Loading @@ -5624,11 +5582,11 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r3e:" > Loading @@ -6160,7 +6104,7 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r3n:" >
    Loading @@ -6774,7 +6704,7 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r40:" >
    Loading @@ -7121,7 +7044,7 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r45:" >
    Loading @@ -7475,7 +7391,7 @@ exports[`TextInput renders with a loading indicator 1`] = ` id=":r4a:" >
    , - .c5 { + .c4 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -7066,7 +7059,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c5 > * { +.c4 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -7074,7 +7067,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c6 { +.c5 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -7093,25 +7086,18 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` } .c3 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; visibility: visible; } -.c12 { +.c11 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; visibility: hidden; } -.c10 { +.c9 { position: absolute; width: 1px; height: 1px; @@ -7224,7 +7210,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 12px; } -.c7 { +.c6 { border: 0; font-size: inherit; font-family: inherit; @@ -7235,11 +7221,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c7:focus { +.c6:focus { outline: 0; } -.c8 { +.c7 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -7272,13 +7258,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8:hover { +.c7:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c11 { +.c10 { background-color: transparent; font-family: inherit; color: currentColor; @@ -7318,16 +7304,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 32px; } -.c11:hover, -.c11:focus { +.c10:hover, +.c10:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c11:active { +.c10:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c9 { +.c8 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -7352,11 +7338,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c9:is(a,button,[tabIndex='0']) { +.c8:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c9:is(a,button,[tabIndex='0']):after { +.c8:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -7388,11 +7374,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` display="flex" >
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove)
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove) , - .c6 { + .c5 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9570,7 +9542,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c6 > * { +.c5 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -9578,7 +9550,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c7 { +.c6 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -9596,24 +9568,17 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c4 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - .c3 { visibility: hidden; } -.c13 { +.c12 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; visibility: hidden; } -.c5 { +.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -9624,7 +9589,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` left: 0; } -.c11 { +.c10 { position: absolute; width: 1px; height: 1px; @@ -9737,7 +9702,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 12px; } -.c8 { +.c7 { border: 0; font-size: inherit; font-family: inherit; @@ -9748,11 +9713,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c8:focus { +.c7:focus { outline: 0; } -.c9 { +.c8 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -9785,13 +9750,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c9:hover { +.c8:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c12 { +.c11 { background-color: transparent; font-family: inherit; color: currentColor; @@ -9831,16 +9796,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 32px; } -.c12:hover, -.c12:focus { +.c11:hover, +.c11:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c12:active { +.c11:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -9865,11 +9830,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c10:is(a,button,[tabIndex='0']) { +.c9:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c10:is(a,button,[tabIndex='0']):after { +.c9:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -9926,11 +9891,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = `
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove) , - .c6 { + .c5 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -10447,7 +10412,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c6 > * { +.c5 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -10455,7 +10420,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c7 { +.c6 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -10473,24 +10438,17 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c4 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - .c3 { visibility: visible; } -.c13 { +.c12 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; visibility: visible; } -.c5 { +.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -10501,7 +10459,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` left: 0; } -.c11 { +.c10 { position: absolute; width: 1px; height: 1px; @@ -10614,7 +10572,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8 { +.c7 { border: 0; font-size: inherit; font-family: inherit; @@ -10625,11 +10583,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c8:focus { +.c7:focus { outline: 0; } -.c9 { +.c8 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -10662,13 +10620,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c9:hover { +.c8:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c12 { +.c11 { background-color: transparent; font-family: inherit; color: currentColor; @@ -10708,16 +10666,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 32px; } -.c12:hover, -.c12:focus { +.c11:hover, +.c11:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c12:active { +.c11:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -10742,11 +10700,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c10:is(a,button,[tabIndex='0']) { +.c9:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c10:is(a,button,[tabIndex='0']):after { +.c9:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -10803,11 +10761,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = `
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove)
    , - .c5 { + .c4 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -12152,7 +12103,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c5 > * { +.c4 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -12160,7 +12111,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c6 { +.c5 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -12178,24 +12129,17 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c3 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.c12 { +.c11 { visibility: visible; } -.c4 { +.c3 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; visibility: visible; } -.c13 { +.c12 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -12206,7 +12150,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` right: 0; } -.c10 { +.c9 { position: absolute; width: 1px; height: 1px; @@ -12319,7 +12263,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c7 { +.c6 { border: 0; font-size: inherit; font-family: inherit; @@ -12330,11 +12274,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c7:focus { +.c6:focus { outline: 0; } -.c8 { +.c7 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -12367,13 +12311,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8:hover { +.c7:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c11 { +.c10 { background-color: transparent; font-family: inherit; color: currentColor; @@ -12413,16 +12357,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 32px; } -.c11:hover, -.c11:focus { +.c10:hover, +.c10:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c11:active { +.c10:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c9 { +.c8 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -12447,11 +12391,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c9:is(a,button,[tabIndex='0']) { +.c8:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c9:is(a,button,[tabIndex='0']):after { +.c8:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -12483,11 +12427,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` display="flex" >
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove)
    , - .c6 { + .c5 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -13857,7 +13794,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c6 > * { +.c5 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -13865,7 +13802,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c7 { +.c6 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -13883,22 +13820,15 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c4 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - .c3 { visibility: hidden; } -.c13 { +.c12 { visibility: visible; } -.c5 { +.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -13909,7 +13839,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` left: 0; } -.c14 { +.c13 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -13920,7 +13850,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` right: 0; } -.c11 { +.c10 { position: absolute; width: 1px; height: 1px; @@ -14040,7 +13970,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8 { +.c7 { border: 0; font-size: inherit; font-family: inherit; @@ -14051,11 +13981,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c8:focus { +.c7:focus { outline: 0; } -.c9 { +.c8 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -14086,13 +14016,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c9:hover { +.c8:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c12 { +.c11 { background-color: transparent; font-family: inherit; color: currentColor; @@ -14132,16 +14062,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 16px; } -.c12:hover, -.c12:focus { +.c11:hover, +.c11:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c12:active { +.c11:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -14166,11 +14096,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c10:is(a,button,[tabIndex='0']) { +.c9:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c10:is(a,button,[tabIndex='0']):after { +.c9:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -14227,11 +14157,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = `
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove) , - .c6 { + .c5 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -14778,7 +14708,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c6 > * { +.c5 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -14786,7 +14716,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c7 { +.c6 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -14804,22 +14734,15 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c4 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - .c3 { visibility: hidden; } -.c13 { +.c12 { visibility: visible; } -.c5 { +.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -14830,7 +14753,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` left: 0; } -.c14 { +.c13 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -14841,7 +14764,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` right: 0; } -.c11 { +.c10 { position: absolute; width: 1px; height: 1px; @@ -14954,7 +14877,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8 { +.c7 { border: 0; font-size: inherit; font-family: inherit; @@ -14965,11 +14888,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c8:focus { +.c7:focus { outline: 0; } -.c9 { +.c8 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -15002,13 +14925,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c9:hover { +.c8:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c12 { +.c11 { background-color: transparent; font-family: inherit; color: currentColor; @@ -15048,16 +14971,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 32px; } -.c12:hover, -.c12:focus { +.c11:hover, +.c11:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c12:active { +.c11:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -15082,11 +15005,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c10:is(a,button,[tabIndex='0']) { +.c9:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c10:is(a,button,[tabIndex='0']):after { +.c9:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -15143,11 +15066,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = `
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove) , - .c6 { + .c5 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -15694,7 +15617,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` flex-grow: 1; } -.c6 > * { +.c5 > * { -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0; @@ -15702,7 +15625,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` margin-bottom: 0.25rem; } -.c7 { +.c6 { -webkit-order: 1; -ms-flex-order: 1; order: 1; @@ -15720,14 +15643,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` position: relative; } -.c4 { - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.c13 { +.c12 { visibility: hidden; } @@ -15735,7 +15651,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` visibility: visible; } -.c5 { +.c4 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -15746,7 +15662,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` left: 0; } -.c14 { +.c13 { -webkit-animation: rotate-keyframes 1s linear infinite; animation: rotate-keyframes 1s linear infinite; position: absolute; @@ -15757,7 +15673,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` right: 0; } -.c11 { +.c10 { position: absolute; width: 1px; height: 1px; @@ -15870,7 +15786,7 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c8 { +.c7 { border: 0; font-size: inherit; font-family: inherit; @@ -15881,11 +15797,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` height: 100%; } -.c8:focus { +.c7:focus { outline: 0; } -.c9 { +.c8 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -15916,13 +15832,13 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` padding-right: 0; } -.c9:hover { +.c8:hover { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); box-shadow: var(--shadow-resting-medium,var(--color-shadow-medium,0 3px 6px rgba(140,149,159,0.15))); color: var(--fgColor-default,var(--color-fg-default,#1F2328)); } -.c12 { +.c11 { background-color: transparent; font-family: inherit; color: currentColor; @@ -15962,16 +15878,16 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` width: 24px; } -.c12:hover, -.c12:focus { +.c11:hover, +.c11:focus { background-color: var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2))); } -.c12:active { +.c11:active { background-color: var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))); } -.c10 { +.c9 { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; @@ -15996,11 +15912,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = ` text-decoration: none; } -.c10:is(a,button,[tabIndex='0']) { +.c9:is(a,button,[tabIndex='0']) { cursor: pointer; } -.c10:is(a,button,[tabIndex='0']):after { +.c9:is(a,button,[tabIndex='0']):after { content: ''; position: absolute; left: 0; @@ -16057,11 +15973,11 @@ exports[`TextInputWithTokens renders with a loading indicator 1`] = `
    zero (press backspace or delete to remove) one (press backspace or delete to remove) two (press backspace or delete to remove) three (press backspace or delete to remove) four (press backspace or delete to remove) five (press backspace or delete to remove) six (press backspace or delete to remove) seven (press backspace or delete to remove)