Skip to content

Commit c909285

Browse files
Add bg prop to ProgressBar.Item (#5007)
* add bg prop to ProgressBar.Item * Update .changeset/slow-walls-drum.md Co-authored-by: Siddharth Kshetrapal <[email protected]> * fixes --------- Co-authored-by: Siddharth Kshetrapal <[email protected]>
1 parent 09d376b commit c909285

File tree

6 files changed

+41
-21
lines changed

6 files changed

+41
-21
lines changed

.changeset/slow-walls-drum.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/react': minor
3+
---
4+
5+
ProgressBar: Add `bg` prop to `ProgressBar.Item`

packages/react/src/ProgressBar/ProgressBar.features.stories.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export const Color = () => <ProgressBar progress="66" bg="done.emphasis" aria-la
2020

2121
export const MultipleItems = () => (
2222
<ProgressBar aria-valuenow={70} aria-label="Upload test.png">
23-
<ProgressBar.Item progress={33} />
24-
<ProgressBar.Item progress={23} sx={{backgroundColor: 'danger.emphasis'}} />
25-
<ProgressBar.Item progress={14} sx={{backgroundColor: 'severe.emphasis'}} />
23+
<ProgressBar.Item progress={33} sx={{bg: 'accent.emphasis'}} />
24+
<ProgressBar.Item progress={23} bg={'danger.emphasis'} />
25+
<ProgressBar.Item progress={14} bg={'severe.emphasis'} />
2626
</ProgressBar>
2727
)
2828

packages/react/src/ProgressBar/ProgressBar.figma.tsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,16 @@ figma.connect(
2828
{
2929
props: {
3030
color: figma.enum('color', {
31-
green: 'var(--data-green-color)',
32-
teal: 'var(--data-teal-color)',
33-
blue: 'var(--data-blue-color)',
34-
purple: 'var(--data-purple-color)',
35-
orange: 'var(--data-orange-color)',
36-
red: 'var(--data-red-color)',
37-
pink: 'var(--data-pink-color)',
38-
yellow: 'var(--data-yellow-color)',
39-
auburn: 'var(--data-auburn-color)',
40-
gray: 'var(--data-gray-color)',
31+
green: 'success.empahsis',
32+
blue: 'accent.emphasis',
33+
purple: 'done.emphasis',
34+
orange: 'severe.empahsis',
35+
red: 'danger.emphasis',
36+
pink: 'sponsors.emphasis',
37+
yellow: 'attention.emphasis',
38+
gray: 'neutral.epmhasis',
4139
}),
4240
},
43-
example: ({color}) => <ProgressBarItem sx={{background: color}} />,
41+
example: ({color}) => <ProgressBarItem bg={color} />,
4442
},
4543
)

packages/react/src/ProgressBar/ProgressBar.stories.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
import React from 'react'
1+
import React, {useEffect} from 'react'
22
import type {Meta} from '@storybook/react'
33
import {ProgressBar, type ProgressBarProps} from '..'
44

5-
const sectionColors = ['success.emphasis', 'done.emphasis', 'severe.emphasis', 'danger.emphasis', 'attention.emphasis']
5+
const sectionColorsDefault = [
6+
'success.emphasis',
7+
'accent.emphasis',
8+
'done.emphasis',
9+
'severe.emphasis',
10+
'danger.emphasis',
11+
'attention.emphasis',
12+
]
613

714
export default {
815
title: 'Components/ProgressBar',
@@ -12,13 +19,21 @@ export default {
1219
export const Default = () => <ProgressBar aria-label="Upload test.png" />
1320

1421
export const Playground = ({sections, ...args}: ProgressBarProps & {sections: number}) => {
22+
const [sectionColors, setSectionColors] = React.useState(sectionColorsDefault)
23+
24+
useEffect(() => {
25+
if (args.bg && args.bg !== '') {
26+
setSectionColors([args.bg, ...sectionColorsDefault])
27+
}
28+
}, [args.bg])
29+
1530
if (sections === 1) {
1631
return <ProgressBar {...args} sx={args.inline ? {width: '100px'} : {}} aria-label="Upload test.png" />
1732
} else {
1833
return (
1934
<ProgressBar aria-label="Upload test.png">
2035
{[...Array(sections).keys()].map(i => (
21-
<ProgressBar.Item key={i} progress={100 / sections} sx={{bg: sectionColors[i]}} />
36+
<ProgressBar.Item key={i} progress={100 / sections} bg={sectionColors[i]} />
2237
))}
2338
</ProgressBar>
2439
)

packages/react/src/ProgressBar/ProgressBar.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import type {SxProp} from '../sx'
77
import sx from '../sx'
88
import {warning} from '../utils/warning'
99

10-
type ProgressProp = {progress?: string | number}
10+
type ProgressProp = {
11+
progress?: string | number
12+
bg?: string
13+
}
1114

1215
const shimmer = keyframes`
1316
from { mask-position: 200%; }
@@ -16,7 +19,7 @@ const shimmer = keyframes`
1619

1720
export const Item = styled.span<ProgressProp & SxProp>`
1821
width: ${props => (props.progress ? `${props.progress}%` : 0)};
19-
background-color: ${get('colors.success.emphasis')};
22+
background-color: ${props => get(`colors.${props.bg || 'success.emphasis'}`)};
2023
2124
@media (prefers-reduced-motion: no-preference) {
2225
&[data-animated='true'] {
@@ -86,7 +89,7 @@ export const ProgressBar = forwardRef<HTMLSpanElement, ProgressBarProps>(
8689

8790
return (
8891
<ProgressContainer ref={forwardRef} role="progressbar" barSize={barSize} {...ariaAttributes} {...rest}>
89-
{children ?? <Item data-animated={animated} progress={progress} sx={{backgroundColor: bg}} />}
92+
{children ?? <Item data-animated={animated} progress={progress} bg={bg} />}
9093
</ProgressContainer>
9194
)
9295
},

packages/react/src/__tests__/__snapshots__/ProgressBar.test.tsx.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ exports[`ProgressBar respects the "progress" prop 1`] = `
44
.c1 {
55
width: 80%;
66
background-color: var(--bgColor-success-emphasis,var(--color-success-emphasis,#1f883d));
7-
background-color: var(--bgColor-success-emphasis,var(--color-success-emphasis,#1f883d));
87
}
98
109
.c0 {

0 commit comments

Comments
 (0)