Skip to content
This repository was archived by the owner on Sep 30, 2025. It is now read-only.

Commit 04b8fb3

Browse files
authored
Add storybook example for all icons in @shopify/polaris-icons (#11263)
### WHY are these changes introduced? This will help us test and debug icon changes with visual regressions ### WHAT is this pull request doing? Generating a list of every icon in Polaris icons so that we can visually test them when changes occur.
1 parent 61cacbf commit 04b8fb3

File tree

2 files changed

+44
-20
lines changed

2 files changed

+44
-20
lines changed

.changeset/twenty-maps-applaud.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/polaris': minor
3+
---
4+
5+
Add storybook example for all icons in @shopify/polaris-icons

polaris-react/src/components/Icon/Icon.stories.tsx

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import React from 'react';
22
import type {ComponentMeta} from '@storybook/react';
3-
import {Icon, Text, BlockStack} from '@shopify/polaris';
4-
import {CirclePlusMinor} from '@shopify/polaris-icons';
3+
import {Icon, Text, BlockStack, InlineStack} from '@shopify/polaris';
4+
import * as polarisIcons from '@shopify/polaris-icons';
5+
import iconMetadata from '@shopify/polaris-icons/metadata';
56

67
export default {
78
component: Icon,
89
} as ComponentMeta<typeof Icon>;
910

11+
interface Icons {
12+
[key: string]: any;
13+
}
14+
const icons: Icons = polarisIcons;
15+
1016
export function Default() {
11-
return <Icon source={CirclePlusMinor} />;
17+
return <Icon source={icons.CirclePlusMinor} />;
1218
}
1319

1420
export function Colored() {
@@ -17,71 +23,71 @@ export function Colored() {
1723
<Text as="p" variant="bodyMd" alignment="center">
1824
Base tone
1925
</Text>
20-
<Icon source={CirclePlusMinor} tone="base" />
26+
<Icon source={icons.CirclePlusMinor} tone="base" />
2127
<Text as="p" variant="bodyMd" alignment="center">
2228
Subdued tone
2329
</Text>
24-
<Icon source={CirclePlusMinor} tone="subdued" />
30+
<Icon source={icons.CirclePlusMinor} tone="subdued" />
2531
<Text as="p" variant="bodyMd" alignment="center">
2632
Primary tone
2733
</Text>
28-
<Icon source={CirclePlusMinor} tone="primary" />
34+
<Icon source={icons.CirclePlusMinor} tone="primary" />
2935
<Text as="p" variant="bodyMd" alignment="center">
3036
Info tone
3137
</Text>
32-
<Icon source={CirclePlusMinor} tone="info" />
38+
<Icon source={icons.CirclePlusMinor} tone="info" />
3339
<Text as="p" variant="bodyMd" alignment="center">
3440
Success tone
3541
</Text>
36-
<Icon source={CirclePlusMinor} tone="success" />
42+
<Icon source={icons.CirclePlusMinor} tone="success" />
3743
<Text as="p" variant="bodyMd" alignment="center">
3844
Caution tone
3945
</Text>
40-
<Icon source={CirclePlusMinor} tone="caution" />
46+
<Icon source={icons.CirclePlusMinor} tone="caution" />
4147
<Text as="p" variant="bodyMd" alignment="center">
4248
Warning tone
4349
</Text>
44-
<Icon source={CirclePlusMinor} tone="warning" />
50+
<Icon source={icons.CirclePlusMinor} tone="warning" />
4551
<Text as="p" variant="bodyMd" alignment="center">
4652
Critical tone
4753
</Text>
48-
<Icon source={CirclePlusMinor} tone="critical" />
54+
<Icon source={icons.CirclePlusMinor} tone="critical" />
4955
<Text as="p" variant="bodyMd" alignment="center">
5056
Emphasis tone
5157
</Text>
52-
<Icon source={CirclePlusMinor} tone="emphasis" />
58+
<Icon source={icons.CirclePlusMinor} tone="emphasis" />
5359
<Text as="p" variant="bodyMd" alignment="center">
5460
Magic tone
5561
</Text>
56-
<Icon source={CirclePlusMinor} tone="magic" />
62+
<Icon source={icons.CirclePlusMinor} tone="magic" />
5763
<Text as="p" variant="bodyMd" alignment="center">
5864
Text Primary tone
5965
</Text>
60-
<Icon source={CirclePlusMinor} tone="textPrimary" />
66+
<Icon source={icons.CirclePlusMinor} tone="textPrimary" />
6167
<Text as="p" variant="bodyMd" alignment="center">
6268
Text Caution tone
6369
</Text>
64-
<Icon source={CirclePlusMinor} tone="textCaution" />
70+
<Icon source={icons.CirclePlusMinor} tone="textCaution" />
6571
<Text as="p" variant="bodyMd" alignment="center">
6672
Text Warning tone
6773
</Text>
68-
<Icon source={CirclePlusMinor} tone="textWarning" />
74+
<Icon source={icons.CirclePlusMinor} tone="textWarning" />
6975
<Text as="p" variant="bodyMd" alignment="center">
7076
Text Critical tone
7177
</Text>
72-
<Icon source={CirclePlusMinor} tone="textCritical" />
78+
<Icon source={icons.CirclePlusMinor} tone="textCritical" />
7379
<Text as="p" variant="bodyMd" alignment="center">
7480
Text Info tone
7581
</Text>
76-
<Icon source={CirclePlusMinor} tone="textInfo" />
82+
<Icon source={icons.CirclePlusMinor} tone="textInfo" />
7783
<Text as="p" variant="bodyMd" alignment="center">
7884
Text Success tone
7985
</Text>
80-
<Icon source={CirclePlusMinor} tone="textSuccess" />
86+
<Icon source={icons.CirclePlusMinor} tone="textSuccess" />
8187
<Text as="p" variant="bodyMd" alignment="center">
8288
Text Magic tone
8389
</Text>
84-
<Icon source={CirclePlusMinor} tone="textMagic" />
90+
<Icon source={icons.CirclePlusMinor} tone="textMagic" />
8591
</BlockStack>
8692
);
8793
}
@@ -115,3 +121,16 @@ export function WithCustomSVGAndColor() {
115121

116122
return <Icon source={iconContent} tone="warning" />;
117123
}
124+
125+
export function PolarisIconsLibrary() {
126+
return (
127+
<BlockStack gap="100" inlineAlign="start">
128+
{Object.keys(iconMetadata).map((icon) => (
129+
<InlineStack key={icon} gap="200">
130+
<Icon source={polarisIcons[icon]} />
131+
<Text as="span">{icon}</Text>
132+
</InlineStack>
133+
))}
134+
</BlockStack>
135+
);
136+
}

0 commit comments

Comments
 (0)