From 84d1604ecf2c07b5584f7c5db2cd078c18847cbf Mon Sep 17 00:00:00 2001 From: Katie Langerman <18661030+langermank@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:52:00 -0700 Subject: [PATCH] Add `variant` prop to Heading (#4806) * ui mob pair * Create clever-birds-press.md * test(vrt): update snapshots * fix * reset * test(vrt): update snapshots * try to only test light * reset * test(vrt): update snapshots * fix test * test(vrt): update snapshots * lint * Update packages/react/src/Heading/Heading.docs.json Co-authored-by: Siddharth Kshetrapal <siddharthkp@github.com> * fix typo * lint * fix story name * reset * fix test name --------- Co-authored-by: langermank <langermank@users.noreply.github.com> Co-authored-by: Siddharth Kshetrapal <siddharthkp@github.com> Co-authored-by: Josh Black <joshblack@github.com> --- .changeset/clever-birds-press.md | 5 + .../Heading-Default-linux.png | Bin 0 -> 10986 bytes .../Heading-Large-linux.png | Bin 0 -> 9811 bytes .../Heading-Medium-linux.png | Bin 0 -> 8258 bytes .../Heading-Small-linux.png | Bin 0 -> 7464 bytes e2e/components/Heading.test.ts | 93 +++++++++++++----- packages/react/src/Heading/Heading.docs.json | 4 + .../src/Heading/Heading.features.stories.tsx | 24 +++++ .../react/src/Heading/Heading.stories.tsx | 11 ++- packages/react/src/Heading/Heading.tsx | 16 ++- .../__snapshots__/NavList.test.tsx.snap | 12 +++ 11 files changed, 136 insertions(+), 29 deletions(-) create mode 100644 .changeset/clever-birds-press.md create mode 100644 .playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Default-linux.png create mode 100644 .playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Large-linux.png create mode 100644 .playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Medium-linux.png create mode 100644 .playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Small-linux.png create mode 100644 packages/react/src/Heading/Heading.features.stories.tsx diff --git a/.changeset/clever-birds-press.md b/.changeset/clever-birds-press.md new file mode 100644 index 00000000000..e4d6d63354c --- /dev/null +++ b/.changeset/clever-birds-press.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Add `variant` prop to Heading for small, medium and large styles diff --git a/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Default-linux.png b/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Default-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..395d4eeef2c9e2c7752c973331300649903a57b2 GIT binary patch literal 10986 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 literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Large-linux.png b/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Large-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e845c7341d3eb89d4ee6b0b5ff64cedb19dc5a GIT binary patch literal 9811 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 Q+#e-3XAh^EU#_J653DjG_y7O^ literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Medium-linux.png b/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Medium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..bf82b6f4a5a6c0412d7261fbf9e144fe98c92d1b GIT binary patch literal 8258 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 VTSCr#*Y+&z*paxyoI|Jo`9E6wv1tGR literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Small-linux.png b/.playwright/snapshots/components/Heading.test.ts-snapshots/Heading-Small-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..377508c45194464ed7c91f366f83997fb61ce3cd GIT binary patch literal 7464 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 literal 0 HcmV?d00001 diff --git a/e2e/components/Heading.test.ts b/e2e/components/Heading.test.ts index 1c573a8b6e7..9d13fb2110a 100644 --- a/e2e/components/Heading.test.ts +++ b/e2e/components/Heading.test.ts @@ -1,33 +1,74 @@ import {test, expect} from '@playwright/test' import {visit} from '../test-helpers/storybook' -import {themes} from '../test-helpers/themes' test.describe('Heading', () => { test.describe('Default', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-heading--default', - globals: { - colorScheme: theme, - }, - }) - - // Default state - expect(await page.screenshot()).toMatchSnapshot(`Heading.Default.${theme}.png`) - }) - - test('axe @aat', async ({page}) => { - await visit(page, { - id: 'components-heading--default', - globals: { - colorScheme: theme, - }, - }) - await expect(page).toHaveNoViolations() - }) - }) - } + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-heading--default', + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`Heading.Default.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-heading--default', + }) + await expect(page).toHaveNoViolations() + }) + }) + + test.describe('Small', () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-heading-features--small', + }) + + expect(await page.screenshot()).toMatchSnapshot(`Heading.Small.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-heading-features--small', + }) + await expect(page).toHaveNoViolations() + }) + }) + + test.describe('Medium', () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-heading-features--medium', + }) + + expect(await page.screenshot()).toMatchSnapshot(`Heading.Medium.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-heading-features--medium', + }) + await expect(page).toHaveNoViolations() + }) + }) + + test.describe('Large', () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: 'components-heading-features--large', + }) + + // Default state + expect(await page.screenshot()).toMatchSnapshot(`Heading.Large.png`) + }) + + test('axe @aat', async ({page}) => { + await visit(page, { + id: 'components-heading-features--large', + }) + await expect(page).toHaveNoViolations() + }) }) }) diff --git a/packages/react/src/Heading/Heading.docs.json b/packages/react/src/Heading/Heading.docs.json index 5a63b0dd836..05a9a0214dd 100644 --- a/packages/react/src/Heading/Heading.docs.json +++ b/packages/react/src/Heading/Heading.docs.json @@ -14,6 +14,10 @@ "name": "as", "type": "React.ElementType", "defaultValue": "\"h2\"" + }, + { + "name": "variant", + "type": "'large' | 'medium' | 'small'" } ] } diff --git a/packages/react/src/Heading/Heading.features.stories.tsx b/packages/react/src/Heading/Heading.features.stories.tsx new file mode 100644 index 00000000000..59dd2c6cb80 --- /dev/null +++ b/packages/react/src/Heading/Heading.features.stories.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import type {StoryFn} from '@storybook/react' +import Heading from './Heading' + +export default { + title: 'Components/Heading/Features', +} + +export const TestSx: StoryFn<typeof Heading> = () => ( + <Heading + sx={{ + fontSize: 2, + fontWeight: 'normal', + }} + > + Heading with sx override + </Heading> +) + +export const Small: StoryFn<typeof Heading> = () => <Heading variant="small">Small heading</Heading> + +export const Medium: StoryFn<typeof Heading> = () => <Heading variant="medium">Medium heading</Heading> + +export const Large: StoryFn<typeof Heading> = () => <Heading variant="large">Large heading</Heading> diff --git a/packages/react/src/Heading/Heading.stories.tsx b/packages/react/src/Heading/Heading.stories.tsx index 6e1cb334638..ecaa9062e98 100644 --- a/packages/react/src/Heading/Heading.stories.tsx +++ b/packages/react/src/Heading/Heading.stories.tsx @@ -6,6 +6,7 @@ export default { title: 'Components/Heading', component: Heading, } as Meta<typeof Heading> + export const Default: StoryFn<typeof Heading> = () => <Heading>Default H2 Heading</Heading> export const Playground: StoryFn<typeof Heading> = args => <Heading {...args}>Heading</Heading> @@ -17,8 +18,14 @@ Playground.args = { Playground.argTypes = { as: { control: { - type: 'select', - options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + type: 'radio', + }, + options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + }, + variant: { + control: { + type: 'radio', }, + options: ['large', 'medium', 'small'], }, } diff --git a/packages/react/src/Heading/Heading.tsx b/packages/react/src/Heading/Heading.tsx index 048057004bd..78c14c77f58 100644 --- a/packages/react/src/Heading/Heading.tsx +++ b/packages/react/src/Heading/Heading.tsx @@ -9,15 +9,28 @@ import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../uti type StyledHeadingProps = { as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' + variant?: 'large' | 'medium' | 'small' } & SxProp const StyledHeading = styled.h2<StyledHeadingProps>` font-weight: ${get('fontWeights.bold')}; font-size: ${get('fontSizes.5')}; margin: 0; + + &:where([data-variant='large']) { + font: var(--text-title-shorthand-large, 600 32px / 1.5 ${get('fonts.normal')}); + } + + &:where([data-variant='medium']) { + font: var(--text-title-shorthand-medium, 600 20px / 1.6 ${get('fonts.normal')}); + } + + &:where([data-variant='small']) { + font: var(--text-title-shorthand-small, 600 16px / 1.5 ${get('fonts.normal')}); + } ${sx}; ` -const Heading = forwardRef(({as: Component = 'h2', ...props}, forwardedRef) => { +const Heading = forwardRef(({as: Component = 'h2', variant, ...props}, forwardedRef) => { const innerRef = React.useRef<HTMLHeadingElement>(null) useRefObjectAsForwardedRef(forwardedRef, innerRef) @@ -43,6 +56,7 @@ const Heading = forwardRef(({as: Component = 'h2', ...props}, forwardedRef) => { {...props} // @ts-ignore shh ref={innerRef} + data-variant={variant} /> ) }) as PolymorphicForwardRefComponent<'h2', StyledHeadingProps> diff --git a/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap b/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap index dfae7671884..c46f758c1af 100644 --- a/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap +++ b/packages/react/src/NavList/__snapshots__/NavList.test.tsx.snap @@ -480,6 +480,18 @@ exports[`NavList renders with groups 1`] = ` color: var(--fgColor-muted,var(--color-fg-muted,#656d76)); } +.c3:where([data-variant='large']) { + font: var(--text-title-shorthand-large,600 32px / 1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"); +} + +.c3:where([data-variant='medium']) { + font: var(--text-title-shorthand-medium,600 20px / 1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"); +} + +.c3:where([data-variant='small']) { + font: var(--text-title-shorthand-small,600 16px / 1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"); +} + .c0 { margin: 0; padding-inline-start: 0;