Skip to content

Commit cbcaff0

Browse files
Revert "Chore: remove styled system components" (#6964)
1 parent 8641c7a commit cbcaff0

24 files changed

+631
-405
lines changed

.changeset/chilled-spoons-roll.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/react/src/DialogV1/Dialog.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const Component = () => {
2323
<div data-testid="inner">
2424
<Dialog.Header id="header">Title</Dialog.Header>
2525
<div style={{padding: 'var(--stack-gap-normal)'}}>
26-
<Text style={{fontFamily: 'sans-serif'}}>Some content</Text>
26+
<Text fontFamily="sans-serif">Some content</Text>
2727
</div>
2828
</div>
2929
</Dialog>
@@ -37,7 +37,7 @@ const ClosedDialog = () => {
3737
<div data-testid="inner">
3838
<Dialog.Header id="header">Title</Dialog.Header>
3939
<div style={{padding: 'var(--stack-gap-normal)'}}>
40-
<Text style={{fontFamily: 'sans-serif'}}>Some content</Text>
40+
<Text fontFamily="sans-serif">Some content</Text>
4141
</div>
4242
</div>
4343
</Dialog>
@@ -51,7 +51,7 @@ const DialogWithCustomFocusRef = () => {
5151
<div data-testid="inner">
5252
<Dialog.Header id="header">Title</Dialog.Header>
5353
<div style={{padding: 'var(--stack-gap-normal)'}}>
54-
<Text style={{fontFamily: 'sans-serif'}}>Some content</Text>
54+
<Text fontFamily="sans-serif">Some content</Text>
5555
<button type="button" data-testid="inner-button" ref={buttonRef}>
5656
hi
5757
</button>
@@ -80,7 +80,7 @@ const DialogWithCustomFocusRefAndReturnFocusRef = () => {
8080
<div data-testid="inner">
8181
<Dialog.Header id="header">Title</Dialog.Header>
8282
<div style={{padding: 'var(--stack-gap-normal)'}}>
83-
<Text style={{fontFamily: 'sans-serif'}}>Some content</Text>
83+
<Text fontFamily="sans-serif">Some content</Text>
8484
<button type="button" data-testid="inner-button" ref={buttonRef}>
8585
hi
8686
</button>

packages/react/src/FormControl/FormControlLeadingVisual.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type React from 'react'
2+
import {get} from '../constants'
23
import type {SxProp} from '../sx'
34
import {useFormControlContext} from './_FormControlContext'
45
import styled from 'styled-components'
@@ -23,7 +24,7 @@ const FormControlLeadingVisual: React.FC<React.PropsWithChildren<SxProp & {style
2324
}
2425

2526
const StyledLeadingVisual = styled.div`
26-
--leadingVisual-size: var(--text-title-size-small);
27+
--leadingVisual-size: ${get('fontSizes.2')};
2728
2829
color: var(--fgColor-default);
2930
@@ -41,7 +42,7 @@ const StyledLeadingVisual = styled.div`
4142
}
4243
4344
&:where([data-has-caption]) {
44-
--leadingVisual-size: var(--base-size-24);
45+
--leadingVisual-size: ${get('fontSizes.4')};
4546
}
4647
4748
${sx}

packages/react/src/LabelGroup/LabelGroup.module.css

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,3 @@
1-
.Container {
2-
display: flex;
3-
flex-wrap: nowrap;
4-
gap: var(--base-size-4);
5-
/* stylelint-disable-next-line primer/typography */
6-
line-height: 1;
7-
max-width: 100%;
8-
overflow: hidden;
9-
10-
&:where([data-overflow='inline']) {
11-
flex-wrap: wrap;
12-
}
13-
14-
&:where([data-list]) {
15-
padding-inline-start: 0;
16-
margin-block-start: 0;
17-
margin-block-end: 0;
18-
list-style-type: none;
19-
}
20-
}
21-
22-
.ItemWrapper {
23-
display: flex;
24-
align-items: center;
25-
/* This min-height matches the height of the expand/collapse button.
26-
Without it, the labels/tokens will do a slight layout shift when expanded.
27-
This is because the height of the first row will match the token sizes,
28-
but the height of the second row will be the height of the collapse button.
29-
*/
30-
min-height: 28px;
31-
}
32-
33-
.ItemWrapper--hidden {
34-
order: 9999;
35-
pointer-events: none;
36-
visibility: hidden;
37-
}
38-
391
.OverlayContainer {
402
align-items: flex-start;
413
display: flex;

packages/react/src/LabelGroup/LabelGroup.tsx

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import React from 'react'
2+
import styled from 'styled-components'
23
import {XIcon} from '@primer/octicons-react'
34
import {getFocusableChild} from '@primer/behaviors/utils'
5+
import {get} from '../constants'
46
import VisuallyHidden from '../_VisuallyHidden'
57
import {AnchoredOverlay} from '../AnchoredOverlay'
68
import {Button, IconButton} from '../Button'
7-
import {clsx} from 'clsx'
89
import theme from '../theme'
910
import classes from './LabelGroup.module.css'
1011

@@ -17,6 +18,45 @@ export type LabelGroupProps = {
1718
visibleChildCount?: 'auto' | number
1819
className?: string
1920
}
21+
22+
const StyledLabelGroupContainer = styled.div`
23+
display: flex;
24+
flex-wrap: nowrap;
25+
gap: ${get('space.1')};
26+
line-height: 1;
27+
max-width: 100%;
28+
overflow: hidden;
29+
30+
&[data-overflow='inline'] {
31+
flex-wrap: wrap;
32+
}
33+
34+
&[data-list] {
35+
padding-inline-start: 0;
36+
margin-block-start: 0;
37+
margin-block-end: 0;
38+
list-style-type: none;
39+
}
40+
`
41+
42+
const ItemWrapper = styled.div`
43+
display: flex;
44+
align-items: center;
45+
46+
/* This min-height matches the height of the expand/collapse button.
47+
Without it, the labels/tokens will do a slight layout shift when expanded.
48+
This is because the height of the first row will match the token sizes,
49+
but the height of the second row will be the height of the collapse button.
50+
*/
51+
min-height: 28px;
52+
53+
&.ItemWrapper--hidden {
54+
order: 9999;
55+
pointer-events: none;
56+
visibility: hidden;
57+
}
58+
`
59+
2060
// Calculates the width of the overlay to cover the labels/tokens and the expand button.
2161
const getOverlayWidth = (
2262
buttonClientRect: DOMRect,
@@ -111,7 +151,7 @@ const LabelGroup: React.FC<React.PropsWithChildren<LabelGroupProps>> = ({
111151
children,
112152
visibleChildCount,
113153
overflowStyle = 'overlay',
114-
as: Component = 'ul',
154+
as = 'ul',
115155
className,
116156
}) => {
117157
const containerRef = React.useRef<HTMLElement>(null)
@@ -280,30 +320,28 @@ const LabelGroup: React.FC<React.PropsWithChildren<LabelGroupProps>> = ({
280320
}
281321
}, [overflowStyle, isOverflowShown])
282322

283-
const isList = Component === 'ul' || Component === 'ol'
323+
const isList = as === 'ul' || as === 'ol'
284324
const ToggleWrapper = isList ? 'li' : React.Fragment
285325

286-
const ItemWrapperComponent = isList ? 'li' : 'span'
287-
288326
// If truncation is enabled, we need to render based on truncation logic.
289327
return visibleChildCount ? (
290-
<Component
328+
<StyledLabelGroupContainer
291329
ref={containerRef}
292330
data-overflow={overflowStyle === 'inline' && isOverflowShown ? 'inline' : undefined}
293331
data-list={isList || undefined}
294-
className={clsx(className, classes.Container)}
332+
className={className}
333+
as={as}
295334
>
296335
{React.Children.map(children, (child, index) => (
297-
<ItemWrapperComponent
336+
<ItemWrapper
298337
// data-index is used as an identifier we can use in the IntersectionObserver
299338
data-index={index}
300-
className={clsx(classes.ItemWrapper, {
301-
[classes['ItemWrapper--hidden']]: hiddenItemIds.includes(index.toString()),
302-
})}
339+
className={hiddenItemIds.includes(index.toString()) ? 'ItemWrapper--hidden' : undefined}
340+
as={isList ? 'li' : 'span'}
303341
key={index}
304342
>
305343
{child}
306-
</ItemWrapperComponent>
344+
</ItemWrapper>
307345
))}
308346
<ToggleWrapper>
309347
{overflowStyle === 'inline' ? (
@@ -331,15 +369,15 @@ const LabelGroup: React.FC<React.PropsWithChildren<LabelGroupProps>> = ({
331369
</OverlayToggle>
332370
)}
333371
</ToggleWrapper>
334-
</Component>
372+
</StyledLabelGroupContainer>
335373
) : (
336-
<Component data-overflow="inline" data-list={isList || undefined} className={clsx(className, classes.Container)}>
374+
<StyledLabelGroupContainer data-overflow="inline" data-list={isList || undefined} as={as} className={className}>
337375
{isList
338376
? React.Children.map(children, (child, index) => {
339377
return <li key={index}>{child}</li>
340378
})
341379
: children}
342-
</Component>
380+
</StyledLabelGroupContainer>
343381
)
344382
}
345383

0 commit comments

Comments
 (0)