Skip to content

Commit 8433cf8

Browse files
[Brand Refactor] Fixes CTABanner (#1362)
1 parent 5cbb414 commit 8433cf8

51 files changed

Lines changed: 66 additions & 10 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/soft-banners-sparkle.md

Lines changed: 6 additions & 0 deletions

packages/react/src/ButtonGroup/ButtonGroup.test.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {render, cleanup} from '@testing-library/react'
1+
import {render, cleanup} from '@testing-library/react'
22
import '@testing-library/jest-dom'
33

44
import {ButtonGroup} from './ButtonGroup'
@@ -26,6 +26,19 @@ describe('ButtonGroup', () => {
2626
expect(buttonGroupEl.classList).toContain(expectedClass)
2727
})
2828

29+
it('forwards a custom className alongside the default class', () => {
30+
const {getByTestId} = render(
31+
<ButtonGroup data-testid="test" className="custom-button-group">
32+
<Button>Primary Action</Button>
33+
<Button>Secondary Action</Button>
34+
</ButtonGroup>,
35+
)
36+
37+
const buttonGroupEl = getByTestId('test')
38+
expect(buttonGroupEl).toHaveClass('ButtonGroup')
39+
expect(buttonGroupEl).toHaveClass('custom-button-group')
40+
})
41+
2942
it('renders buttons with the correct element type when buttonAs is set', () => {
3043
const expectedTag = 'a'
3144

packages/react/src/ButtonGroup/ButtonGroup.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, {forwardRef, type Ref} from 'react'
2+
import {clsx} from 'clsx'
23
import type {BaseProps} from '../component-helpers'
34
import {Button, ButtonProps} from '../Button'
45
import styles from './ButtonGroup.module.css'
@@ -29,7 +30,7 @@ export const ButtonGroup = forwardRef(
2930
.slice(0, 2)
3031

3132
return (
32-
<section ref={ref} className={styles.ButtonGroup} {...props}>
33+
<section ref={ref} {...props} className={clsx(styles.ButtonGroup, className)}>
3334
{buttonsToRender as React.ReactElement[]}
3435
</section>
3536
)

packages/react/src/CTABanner/CTABanner.module.css

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,16 @@
7575
}
7676

7777
.CTABanner-container {
78-
padding: var(--base-size-64) var(--base-size-32);
78+
padding: var(--base-size-64) var(--base-size-20);
7979
z-index: 1;
8080
width: 100%;
8181
box-sizing: border-box;
8282
}
8383

84+
.CTABanner-container--rounded {
85+
border-radius: var(--brand-borderRadius-medium);
86+
}
87+
8488
.CTABanner--variant-balanced .CTABanner-container {
8589
padding-inline: var(--base-size-20);
8690
padding-block: var(--base-size-32);
@@ -92,16 +96,17 @@
9296
}
9397

9498
.CTABanner-content {
99+
--CTABanner-content-gap: var(--base-size-16);
95100
display: flex;
96101
flex-direction: column;
97-
gap: var(--base-size-16);
102+
gap: var(--CTABanner-content-gap);
98103
align-items: flex-start;
99104
max-width: 800px;
100105
margin: 0 auto;
101106
}
102107

103108
.CTABanner--variant-minimal .CTABanner-content {
104-
gap: 0;
109+
--CTABanner-content-gap: 0;
105110
}
106111

107112
.CTABanner--variant-balanced .CTABanner-content,
@@ -170,11 +175,8 @@
170175

171176
/* Large breakpoint and up */
172177
@media screen and (min-width: 63.25rem) {
173-
.CTABanner-content {
174-
gap: var(--base-size-24);
175-
}
176178
.CTABanner--variant-balanced .CTABanner-content {
177-
gap: var(--base-size-32);
179+
--CTABanner-content-gap: var(--base-size-32);
178180
}
179181
.CTABanner-container {
180182
padding: var(--base-size-96) var(--base-size-64);
@@ -311,3 +313,8 @@
311313
.CTABanner-description.CTABanner-description:has(code) {
312314
line-height: calc(1lh * 1.25);
313315
}
316+
317+
.CTABanner-buttonGroup {
318+
margin-block-start: calc(-1 * var(--CTABanner-content-gap, 0px));
319+
padding-block-start: var(--base-size-12);
320+
}

packages/react/src/CTABanner/CTABanner.module.css.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ declare const styles: {
55
readonly "CTABanner--variant-balanced": string;
66
readonly "CTABanner--variant-default": string;
77
readonly "CTABanner--variant-minimal": string;
8+
readonly "CTABanner-buttonGroup": string;
89
readonly "CTABanner-container": string;
910
readonly "CTABanner-container--background": string;
1011
readonly "CTABanner-container--border": string;
1112
readonly "CTABanner-container--border-gridlines": string;
13+
readonly "CTABanner-container--rounded": string;
1214
readonly "CTABanner-content": string;
1315
readonly "CTABanner-content--center": string;
1416
readonly "CTABanner-description": string;

packages/react/src/CTABanner/CTABanner.test.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,25 @@ describe('CTABanner', () => {
298298
expect(ctaBannerEl).toHaveClass('CTABanner--variant-minimal')
299299
})
300300

301+
it.each(['default', 'balanced', 'minimal'] as const)(
302+
'applies rounded corners to the %s variant by default',
303+
variant => {
304+
const {getByTestId} = render(
305+
<CTABanner variant={variant} data-testid="test">
306+
<CTABanner.Heading>This is your heading</CTABanner.Heading>
307+
{variant === 'balanced' && <CTABanner.Image src="image.png" alt="test" />}
308+
{variant === 'minimal' && (
309+
<CTABanner.ButtonGroup>
310+
<Button>Action</Button>
311+
</CTABanner.ButtonGroup>
312+
)}
313+
</CTABanner>,
314+
)
315+
316+
expect(getByTestId('test').firstChild).toHaveClass('CTABanner-container--rounded')
317+
},
318+
)
319+
301320
it('can render CTABanner.Image in the default variant alongside other children', () => {
302321
const {getByAltText} = render(
303322
<CTABanner>
@@ -383,6 +402,7 @@ describe('CTABanner', () => {
383402
const sectionEl = getByTestId('test')
384403
expect(sectionEl.parentElement).toHaveClass('CTABanner-outer-container--border')
385404
expect(sectionEl.firstChild).toHaveClass('CTABanner-container--border-gridlines')
405+
expect(sectionEl.firstChild).not.toHaveClass('CTABanner-container--rounded')
386406
})
387407

388408
it('does not render the hasGridLines outer border wrapper by default', () => {

packages/react/src/CTABanner/CTABanner.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ const Root = forwardRef(
237237
styles['CTABanner-container'],
238238
hasBorder && styles['CTABanner-container--border'],
239239
hasGridLines && styles['CTABanner-container--border-gridlines'],
240+
!hasGridLines && styles['CTABanner-container--rounded'],
240241
hasBackground && styles['CTABanner-container--background'],
241242
)}
242243
>
@@ -319,7 +320,13 @@ const _ButtonGroup = forwardRef(
319320
ref: Ref<HTMLDivElement>,
320321
) => {
321322
return (
322-
<ButtonGroup buttonSize={buttonSize} buttonsAs={buttonsAs} className={className} ref={ref} {...props}>
323+
<ButtonGroup
324+
buttonSize={buttonSize}
325+
buttonsAs={buttonsAs}
326+
className={clsx(styles['CTABanner-buttonGroup'], className)}
327+
ref={ref}
328+
{...props}
329+
>
323330
{children}
324331
</ButtonGroup>
325332
)
203 Bytes
206 Bytes

0 commit comments

Comments
 (0)