diff --git a/packages/components/src/spinner/index.js b/packages/components/src/spinner/index.js
index cec2053ab27e1..0491e08903069 100644
--- a/packages/components/src/spinner/index.js
+++ b/packages/components/src/spinner/index.js
@@ -1,3 +1,8 @@
+/**
+ * Internal dependencies
+ */
+import { StyledSpinner } from './styles/spinner-styles';
+
export default function Spinner() {
- return ;
+ return ;
}
diff --git a/packages/components/src/spinner/style.scss b/packages/components/src/spinner/style.scss
deleted file mode 100644
index b674920ed8485..0000000000000
--- a/packages/components/src/spinner/style.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-.components-spinner {
- display: inline-block;
- background-color: $gray-600;
- width: $spinner-size;
- height: $spinner-size;
- opacity: 0.7;
- margin: 5px 11px 0;
- border-radius: 100%;
- position: relative;
-
- &::before {
- /* rtl:begin:ignore */
- content: "";
- position: absolute;
- background-color: $white;
- top: ( $spinner-size - ( $spinner-size * ( 2 / 3 ) ) ) / 2;
- left: ( $spinner-size - ( $spinner-size * ( 2 / 3 ) ) ) / 2;
- width: ( $spinner-size / 4.5 );
- height: ( $spinner-size / 4.5 );
- border-radius: 100%;
- transform-origin: ( $spinner-size / 3 ) ( $spinner-size / 3 );
- animation: components-spinner__animation 1s infinite linear;
- /* rtl:end:ignore */
- }
-}
-
-@keyframes components-spinner__animation {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
diff --git a/packages/components/src/spinner/styles/spinner-styles.js b/packages/components/src/spinner/styles/spinner-styles.js
new file mode 100644
index 0000000000000..8f30a9febfbd2
--- /dev/null
+++ b/packages/components/src/spinner/styles/spinner-styles.js
@@ -0,0 +1,49 @@
+/**
+ * External dependencies
+ */
+import styled from '@emotion/styled';
+import { keyframes } from '@emotion/core';
+
+/**
+ * Internal dependencies
+ */
+import { color, config } from '../../utils';
+
+const spinAnimation = keyframes`
+ from {
+ transform: rotate(0deg);
+ }
+
+ to {
+ transform: rotate(360deg);
+ }
+`;
+
+const topLeft = `calc( ( ${ config( 'spinnerSize' ) } - ${ config(
+ 'spinnerSize'
+) } * ( 2 / 3 ) ) / 2 )`;
+
+export const StyledSpinner = styled.span`
+ display: inline-block;
+ background-color: ${ color( 'gray.600' ) };
+ width: ${ config( 'spinnerSize' ) };
+ height: ${ config( 'spinnerSize' ) };
+ opacity: 0.7;
+ margin: 5px 11px 0;
+ border-radius: 100%;
+ position: relative;
+
+ &::before {
+ content: '';
+ position: absolute;
+ background-color: ${ color( 'white' ) };
+ top: ${ topLeft };
+ left: ${ topLeft };
+ width: calc( ${ config( 'spinnerSize' ) } / 4.5 );
+ height: calc( ${ config( 'spinnerSize' ) } / 4.5 );
+ border-radius: 100%;
+ transform-origin: calc( ${ config( 'spinnerSize' ) } / 3 )
+ calc( ${ config( 'spinnerSize' ) } / 3 );
+ animation: ${ spinAnimation } 1s infinite linear;
+ }
+`;
diff --git a/packages/components/src/style.scss b/packages/components/src/style.scss
index ed1af2a7d2855..a7b92c1192b13 100644
--- a/packages/components/src/style.scss
+++ b/packages/components/src/style.scss
@@ -36,7 +36,6 @@
@import "./scroll-lock/style.scss";
@import "./select-control/style.scss";
@import "./snackbar/style.scss";
-@import "./spinner/style.scss";
@import "./tab-panel/style.scss";
@import "./text-control/style.scss";
@import "./tip/style.scss";
diff --git a/packages/components/src/utils/colors-values.js b/packages/components/src/utils/colors-values.js
index b9e2313c6bbb4..c22d2ece81397 100644
--- a/packages/components/src/utils/colors-values.js
+++ b/packages/components/src/utils/colors-values.js
@@ -169,6 +169,7 @@ export const COLORS = {
darkOpacity: DARK_OPACITY,
darkOpacityLight: DARK_OPACITY_LIGHT,
mediumGray: G2.mediumGray,
+ gray: G2.gray,
lightGray: merge( {}, LIGHT_GRAY, G2.lightGray ),
lightGrayLight: LIGHT_OPACITY_LIGHT,
blue: merge( {}, BLUE, G2.blue ),
diff --git a/packages/components/src/utils/config-values.js b/packages/components/src/utils/config-values.js
index 8cdad98540154..21311424087ae 100644
--- a/packages/components/src/utils/config-values.js
+++ b/packages/components/src/utils/config-values.js
@@ -3,4 +3,5 @@ export default {
borderWidth: '1px',
borderWidthFocus: '1.5px',
borderWidthTab: '4px',
+ spinnerSize: '18px',
};