diff --git a/.changeset/chilled-frogs-lick.md b/.changeset/chilled-frogs-lick.md
new file mode 100644
index 000000000..d48d57d61
--- /dev/null
+++ b/.changeset/chilled-frogs-lick.md
@@ -0,0 +1,5 @@
+---
+"@cloudfour/patterns": minor
+---
+
+Add `size` and `muted` props to Icon
diff --git a/src/components/icon/icon.scss b/src/components/icon/icon.scss
index ada62deb6..82dc314f5 100644
--- a/src/components/icon/icon.scss
+++ b/src/components/icon/icon.scss
@@ -1,4 +1,6 @@
@use 'sass:math';
+@use '../../compiled/tokens/scss/opacity';
+@use '../../compiled/tokens/scss/size';
@use '../../mixins/svg';
@use '../../mixins/icon';
@@ -18,3 +20,27 @@
.c-icon--inline {
@include icon.inline;
}
+
+/**
+ * Muted modifier
+ */
+
+.c-icon--muted {
+ opacity: opacity.$muted;
+}
+
+/**
+ * Size modifiers
+ */
+
+.c-icon--medium {
+ --icon-size: #{size.$icon-medium};
+}
+
+.c-icon--large {
+ --icon-size: #{size.$icon-large};
+}
+
+.c-icon--x-large {
+ --icon-size: #{size.$icon-x-large};
+}
diff --git a/src/components/icon/icon.stories.mdx b/src/components/icon/icon.stories.mdx
index ec01d43fa..313323fb0 100644
--- a/src/components/icon/icon.stories.mdx
+++ b/src/components/icon/icon.stories.mdx
@@ -20,6 +20,15 @@ const iconStory = (args) => {
}
return template(args);
};
+const defaultArgs = {
+ name: { type: 'string' },
+ fallback: { type: 'string' },
+ inline: { type: 'boolean' },
+ class: { type: 'string' },
+ title: { type: 'string' },
+ muted: { type: 'boolean' },
+ size: { type: 'string' },
+};
@@ -36,13 +45,62 @@ For a list of available icons, visit [the Icons page](/docs/design-icons--page).
name: 'heart',
inline: false,
}}
- argTypes={{
- name: { type: { name: 'string' } },
- fallback: { type: { name: 'string' } },
- inline: { type: { name: 'boolean' } },
- class: { type: { name: 'string' } },
- title: { type: { name: 'string' } },
+ argTypes={defaultArgs}
+ >
+ {(args) => iconStory(args)}
+
+
+
+## Muted
+
+By setting the `muted` property to `true`, the icon will become slightly opaque.
+
+
+
+## Sizes
+
+By setting the `size` property to the [name of a `size.$icon` token](/docs/design-tokens-size--page), such as `large`, the icon will be scaled to the appropriate size.
+
+