@react-ui-org/react-ui 0.54.0 → 0.55.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. package/.nvmrc +1 -0
  2. package/README.md +7 -5
  3. package/dist/react-ui.css +36 -38
  4. package/dist/react-ui.development.css +10021 -10523
  5. package/dist/react-ui.development.js +211 -231
  6. package/dist/react-ui.js +1 -1
  7. package/package.json +3 -2
  8. package/src/components/Alert/Alert.jsx +1 -1
  9. package/src/components/Alert/Alert.module.scss +100 -0
  10. package/src/components/Alert/README.md +9 -7
  11. package/src/components/Badge/Badge.jsx +1 -1
  12. package/src/components/Badge/Badge.module.scss +109 -0
  13. package/src/components/Badge/README.md +9 -7
  14. package/src/components/Button/Button.jsx +1 -1
  15. package/src/components/Button/README.md +9 -7
  16. package/src/components/Button/_base.scss +117 -115
  17. package/src/components/Button/_priorities.scss +135 -133
  18. package/src/components/ButtonGroup/ButtonGroup.jsx +1 -1
  19. package/src/components/ButtonGroup/ButtonGroup.module.scss +35 -0
  20. package/src/components/ButtonGroup/README.md +10 -8
  21. package/src/components/Card/Card.jsx +1 -1
  22. package/src/components/Card/Card.module.scss +72 -0
  23. package/src/components/Card/CardBody.jsx +1 -1
  24. package/src/components/Card/CardFooter.jsx +1 -1
  25. package/src/components/Card/README.md +9 -7
  26. package/src/components/CheckboxField/CheckboxField.jsx +1 -1
  27. package/src/components/CheckboxField/CheckboxField.module.scss +63 -0
  28. package/src/components/CheckboxField/README.md +10 -8
  29. package/src/components/FileInputField/FileInputField.jsx +1 -1
  30. package/src/components/FileInputField/FileInputField.module.scss +65 -0
  31. package/src/components/FileInputField/README.md +10 -8
  32. package/src/components/FormLayout/FormLayout.jsx +1 -1
  33. package/src/components/FormLayout/{FormLayout.scss → FormLayout.module.scss} +30 -28
  34. package/src/components/FormLayout/FormLayoutCustomField.jsx +1 -1
  35. package/src/components/FormLayout/FormLayoutCustomField.module.scss +65 -0
  36. package/src/components/FormLayout/README.md +11 -9
  37. package/src/components/Grid/Grid.jsx +1 -1
  38. package/src/components/Grid/Grid.module.scss +66 -0
  39. package/src/components/Grid/GridSpan.jsx +1 -1
  40. package/src/components/Grid/README.md +11 -8
  41. package/src/components/InputGroup/InputGroup.jsx +1 -1
  42. package/src/components/InputGroup/InputGroup.module.scss +93 -0
  43. package/src/components/InputGroup/README.md +10 -8
  44. package/src/components/Modal/Modal.jsx +1 -1
  45. package/src/components/Modal/Modal.module.scss +80 -0
  46. package/src/components/Modal/ModalBody.jsx +1 -1
  47. package/src/components/Modal/ModalBody.module.scss +20 -0
  48. package/src/components/Modal/ModalCloseButton.jsx +1 -1
  49. package/src/components/Modal/ModalCloseButton.module.scss +20 -0
  50. package/src/components/Modal/ModalContent.jsx +1 -1
  51. package/src/components/Modal/ModalContent.module.scss +7 -0
  52. package/src/components/Modal/ModalFooter.jsx +1 -1
  53. package/src/components/Modal/ModalFooter.module.scss +37 -0
  54. package/src/components/Modal/ModalHeader.jsx +1 -1
  55. package/src/components/Modal/ModalHeader.module.scss +32 -0
  56. package/src/components/Modal/ModalTitle.jsx +1 -1
  57. package/src/components/Modal/ModalTitle.module.scss +12 -0
  58. package/src/components/Modal/README.md +17 -14
  59. package/src/components/Paper/Paper.jsx +1 -1
  60. package/src/components/Paper/Paper.module.scss +19 -0
  61. package/src/components/Paper/README.md +9 -7
  62. package/src/components/Popover/Popover.jsx +1 -1
  63. package/src/components/Popover/Popover.module.scss +238 -0
  64. package/src/components/Popover/PopoverWrapper.jsx +1 -2
  65. package/src/components/Popover/PopoverWrapper.module.scss +5 -0
  66. package/src/components/Popover/README.md +9 -7
  67. package/src/components/Radio/README.md +12 -10
  68. package/src/components/Radio/Radio.jsx +1 -1
  69. package/src/components/Radio/Radio.module.scss +85 -0
  70. package/src/components/ScrollView/README.md +10 -8
  71. package/src/components/ScrollView/ScrollView.jsx +1 -1
  72. package/src/components/ScrollView/ScrollView.module.scss +233 -0
  73. package/src/components/SelectField/README.md +10 -8
  74. package/src/components/SelectField/SelectField.jsx +1 -1
  75. package/src/components/SelectField/SelectField.module.scss +111 -0
  76. package/src/components/Table/README.md +10 -8
  77. package/src/components/Table/Table.jsx +1 -1
  78. package/src/components/Table/Table.module.scss +30 -0
  79. package/src/components/Table/_components/TableBodyCell/TableBodyCell.jsx +1 -1
  80. package/src/components/Table/_components/TableCell.module.scss +28 -0
  81. package/src/components/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  82. package/src/components/Tabs/README.md +16 -10
  83. package/src/components/Tabs/Tabs.jsx +1 -1
  84. package/src/components/Tabs/Tabs.module.scss +31 -0
  85. package/src/components/Tabs/TabsItem.jsx +1 -1
  86. package/src/components/Tabs/TabsItem.module.scss +119 -0
  87. package/src/components/Text/README.md +15 -9
  88. package/src/components/Text/Text.jsx +1 -1
  89. package/src/components/Text/Text.module.scss +42 -0
  90. package/src/components/TextArea/README.md +10 -8
  91. package/src/components/TextArea/TextArea.jsx +1 -1
  92. package/src/components/TextArea/TextArea.module.scss +97 -0
  93. package/src/components/TextField/README.md +13 -8
  94. package/src/components/TextField/TextField.jsx +1 -1
  95. package/src/components/TextField/TextField.module.scss +109 -0
  96. package/src/components/TextLink/README.md +10 -8
  97. package/src/components/TextLink/TextLink.jsx +1 -1
  98. package/src/components/TextLink/TextLink.module.scss +18 -0
  99. package/src/components/Toggle/README.md +10 -8
  100. package/src/components/Toggle/Toggle.jsx +1 -1
  101. package/src/components/Toggle/Toggle.module.scss +63 -0
  102. package/src/components/Toolbar/README.md +9 -7
  103. package/src/components/Toolbar/Toolbar.jsx +1 -1
  104. package/src/components/Toolbar/Toolbar.module.scss +85 -0
  105. package/src/components/Toolbar/ToolbarGroup.jsx +1 -1
  106. package/src/components/Toolbar/ToolbarItem.jsx +1 -1
  107. package/src/components/_helpers/transferProps.js +46 -7
  108. package/src/foundation.scss +22 -17
  109. package/src/helpers.scss +12 -8
  110. package/src/index.js +3 -4
  111. package/src/index.scss +7 -0
  112. package/src/layers.scss +4 -0
  113. package/src/styles/elements/_page.scss +0 -4
  114. package/src/styles/helpers/_animation.scss +2 -2
  115. package/src/styles/tools/_utilities.scss +1 -1
  116. package/src/theme.scss +1040 -1038
  117. package/src/components/Alert/Alert.scss +0 -98
  118. package/src/components/Badge/Badge.scss +0 -107
  119. package/src/components/ButtonGroup/ButtonGroup.scss +0 -33
  120. package/src/components/Card/Card.scss +0 -70
  121. package/src/components/CheckboxField/CheckboxField.scss +0 -61
  122. package/src/components/FileInputField/FileInputField.scss +0 -63
  123. package/src/components/FormLayout/FormLayoutCustomField.scss +0 -63
  124. package/src/components/Grid/Grid.scss +0 -63
  125. package/src/components/InputGroup/InputGroup.scss +0 -91
  126. package/src/components/Modal/Modal.scss +0 -78
  127. package/src/components/Modal/ModalBody.scss +0 -18
  128. package/src/components/Modal/ModalCloseButton.scss +0 -18
  129. package/src/components/Modal/ModalContent.scss +0 -5
  130. package/src/components/Modal/ModalFooter.scss +0 -35
  131. package/src/components/Modal/ModalHeader.scss +0 -30
  132. package/src/components/Modal/ModalTitle.scss +0 -10
  133. package/src/components/Paper/Paper.scss +0 -17
  134. package/src/components/Popover/Popover.scss +0 -236
  135. package/src/components/Popover/PopoverWrapper.scss +0 -3
  136. package/src/components/Radio/Radio.scss +0 -83
  137. package/src/components/ScrollView/ScrollView.scss +0 -227
  138. package/src/components/SelectField/SelectField.scss +0 -109
  139. package/src/components/Table/Table.scss +0 -28
  140. package/src/components/Table/_components/TableCell.scss +0 -26
  141. package/src/components/Tabs/Tabs.scss +0 -28
  142. package/src/components/Tabs/TabsItem.scss +0 -117
  143. package/src/components/Text/Text.scss +0 -40
  144. package/src/components/TextArea/TextArea.scss +0 -95
  145. package/src/components/TextField/TextField.scss +0 -107
  146. package/src/components/TextLink/TextLink.scss +0 -16
  147. package/src/components/Toggle/Toggle.scss +0 -61
  148. package/src/components/Toolbar/Toolbar.scss +0 -83
  149. /package/src/components/Button/{Button.scss → Button.module.scss} +0 -0
@@ -0,0 +1,63 @@
1
+ @use "../../styles/tools/form-fields/foundation";
2
+ @use "../../styles/tools/form-fields/inline-field-elements";
3
+ @use "../../styles/tools/form-fields/inline-field-layout";
4
+ @use "../../styles/tools/form-fields/variants";
5
+ @use "../../styles/tools/accessibility";
6
+
7
+ @layer components.toggle {
8
+ // Foundation
9
+ .root {
10
+ @include foundation.root();
11
+ @include inline-field-layout.root();
12
+ @include inline-field-elements.min-tap-target($type: toggle);
13
+ @include variants.visual(check);
14
+ }
15
+
16
+ .label {
17
+ @include foundation.label();
18
+ }
19
+
20
+ .field {
21
+ @include inline-field-layout.field($type: toggle);
22
+ }
23
+
24
+ .input {
25
+ @include inline-field-elements.check-input($type: toggle);
26
+ }
27
+
28
+ .helpText,
29
+ .validationText {
30
+ @include foundation.help-text();
31
+ }
32
+
33
+ .isRootRequired .label {
34
+ @include foundation.label-required();
35
+ }
36
+
37
+ // States
38
+ .isRootStateInvalid {
39
+ @include variants.validation(invalid);
40
+ }
41
+
42
+ .isRootStateValid {
43
+ @include variants.validation(valid);
44
+ }
45
+
46
+ .isRootStateWarning {
47
+ @include variants.validation(warning);
48
+ }
49
+
50
+ // Invisible label
51
+ .isLabelHidden {
52
+ @include accessibility.hide-text();
53
+ }
54
+
55
+ // Layouts
56
+ .hasRootLabelBefore {
57
+ @include inline-field-layout.has-label-before();
58
+ }
59
+
60
+ .isRootInFormLayout {
61
+ @include inline-field-layout.in-form-layout();
62
+ }
63
+ }
@@ -322,13 +322,15 @@ Or to build a classic media layout with image on the left and text on the right:
322
322
  ## Forwarding HTML Attributes
323
323
 
324
324
  In addition to the options below in the [component's API](#api) section, you
325
- can specify [React synthetic events] or **any HTML attribute you like.** All
326
- attributes that don't interfere with the API are forwarded to the root `<div>`
327
- HTML element. This enables making the component interactive and helps to improve
325
+ can specify **any HTML attribute you like.** All attributes that don't interfere
326
+ with the API of the React component are forwarded to the root `<div>` HTML
327
+ element. This enables making the component interactive and helps to improve
328
328
  its accessibility.
329
329
 
330
- 👉 Refer to the MDN reference for the full list of supported attributes of the
331
- [div] element.
330
+ 👉 For the full list of supported attributes refer to:
331
+
332
+ - [`<div>` HTML element attributes][div-attributes]{:target="_blank"}
333
+ - [React common props]{:target="_blank"}
332
334
 
333
335
  ## API
334
336
 
@@ -353,7 +355,7 @@ A wrapper for individual toolbar items.
353
355
  | `--rui-Toolbar__gap` | Gap between toolbar items |
354
356
  | `--rui-Toolbar__gap--dense` | Dense gap between toolbar items |
355
357
 
358
+ [div-attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
356
359
  [grid]: /components/Grid
357
360
  [text]: /components/Text
358
- [React synthetic events]: https://reactjs.org/docs/events.html
359
- [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
361
+ [React common props]: https://react.dev/reference/react-dom/components/common#common-props
@@ -6,7 +6,7 @@ import { classNames } from '../../utils/classNames';
6
6
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
7
7
  import { getAlignClassName } from './_helpers/getAlignClassName';
8
8
  import { getJustifyClassName } from './_helpers/getJustifyClassName';
9
- import styles from './Toolbar.scss';
9
+ import styles from './Toolbar.module.scss';
10
10
 
11
11
  export const Toolbar = ({
12
12
  align,
@@ -0,0 +1,85 @@
1
+ // 1. Get rid of unwanted spacing of inline elements by invocation of flex layout.
2
+
3
+ @use "../../styles/tools/spacing";
4
+ @use "theme";
5
+
6
+ @layer components.toolbar {
7
+ .toolbar,
8
+ .group {
9
+ display: flex;
10
+ flex-wrap: wrap;
11
+ gap: theme.$gap;
12
+ }
13
+
14
+ .toolbar {
15
+ @include spacing.bottom(layouts);
16
+ }
17
+
18
+ .item {
19
+ display: flex; // 1.
20
+ flex: none;
21
+ flex-direction: column; // 1.
22
+ }
23
+
24
+ .isItemFlexible {
25
+ flex: 1;
26
+ min-width: 0;
27
+ }
28
+
29
+ .isToolbarAlignedToTop,
30
+ .isGroupAlignedToTop {
31
+ align-items: flex-start;
32
+ }
33
+
34
+ .isToolbarAlignedToMiddle,
35
+ .isGroupAlignedToMiddle {
36
+ align-items: center;
37
+ }
38
+
39
+ .isToolbarAlignedToBottom,
40
+ .isGroupAlignedToBottom {
41
+ align-items: flex-end;
42
+ }
43
+
44
+ .isToolbarAlignedToBaseline,
45
+ .isGroupAlignedToBaseline {
46
+ align-items: baseline;
47
+ }
48
+
49
+ .isToolbarJustifiedToStart,
50
+ .isGroupJustifiedToStart {
51
+ justify-content: flex-start;
52
+ }
53
+
54
+ .isToolbarJustifiedToCenter,
55
+ .isGroupJustifiedToCenter {
56
+ justify-content: center;
57
+ }
58
+
59
+ .isToolbarJustifiedToEnd,
60
+ .isGroupJustifiedToEnd {
61
+ justify-content: flex-end;
62
+ }
63
+
64
+ .isToolbarJustifiedToSpaceBetween,
65
+ .isGroupJustifiedToSpaceBetween {
66
+ justify-content: space-between;
67
+ }
68
+
69
+ .isToolbarDense,
70
+ .isGroupDense,
71
+ .isToolbarDense .group,
72
+ .isGroupDense .group {
73
+ gap: theme.$gap-dense;
74
+ }
75
+
76
+ .isToolbarNowrap,
77
+ .isGroupNowrap {
78
+ flex-wrap: nowrap;
79
+ }
80
+
81
+ .isToolbarNowrap > .item:not(.isItemFlexible),
82
+ .isGroupNowrap > .item:not(.isItemFlexible) {
83
+ flex: 0 1 auto;
84
+ }
85
+ }
@@ -5,7 +5,7 @@ import { transferProps } from '../_helpers/transferProps';
5
5
  import { classNames } from '../../utils/classNames';
6
6
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
7
7
  import { getAlignClassName } from './_helpers/getAlignClassName';
8
- import styles from './Toolbar.scss';
8
+ import styles from './Toolbar.module.scss';
9
9
 
10
10
  export const ToolbarGroup = ({
11
11
  align,
@@ -4,7 +4,7 @@ import { transferProps } from '../_helpers/transferProps';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { withGlobalProps } from '../../provider';
6
6
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
7
- import styles from './Toolbar.scss';
7
+ import styles from './Toolbar.module.scss';
8
8
 
9
9
  export const ToolbarItem = ({
10
10
  children,
@@ -1,7 +1,46 @@
1
- export const transferProps = ({
2
- children,
3
- className,
4
- ref,
5
- staticContext,
6
- ...restProps
7
- }) => restProps;
1
+ /**
2
+ * Controls passing of props from the React component to the HTML element
3
+ *
4
+ * Sometimes it is useful to have a mechanism to pass props from the React component to a rendered HTML element.
5
+ * It enables making the component interactive and helps improve its accessibility. However some props should
6
+ * never be passed to the HTML element as it would break things. This function is used to filter out such props.
7
+ *
8
+ * When run in development mode, the function will log the error to the console if any invalid props are passed.
9
+ *
10
+ * @param props The props that were passed to the React component and were not used by it
11
+ * @returns The props to be passed to the HTML element
12
+ */
13
+ export const transferProps = (props) => {
14
+ const {
15
+ children,
16
+ className,
17
+ contentEditable,
18
+ dangerouslySetInnerHTML,
19
+ ref,
20
+ staticContext,
21
+ style,
22
+ suppressContentEditableWarning,
23
+ ...restProps
24
+ } = props;
25
+
26
+ if (process.env.NODE_ENV !== 'production') {
27
+ const invalidProps = [
28
+ 'children', // It is always either handled by the component itself or not supported.
29
+ 'className', // Classes are set by component authors, changing it arbitrarily might break things.
30
+ 'contentEditable', // Components are either interactive or not, changing it arbitrarily might break things.
31
+ 'dangerouslySetInnerHTML', // This might break things and allow for XSS attacks.
32
+ 'ref', // Forwarding `ref` is hardcoded and documented for each component.
33
+ 'staticContext', // In `react-router` (v4, v5) this is used during server side rendering, it makes no sense to pass it to a component.
34
+ 'style', // Styles are set by component authors, changing it arbitrarily might break things.
35
+ 'suppressContentEditableWarning', // Since setting `contentEditable` is not allowed, this is not needed.
36
+ ]
37
+ .filter((key) => props[key] !== undefined);
38
+
39
+ if (invalidProps.length > 0) {
40
+ // eslint-disable-next-line no-console
41
+ console.error(`Invalid prop(s) supplied to the "transferProps" function: "${invalidProps.join('", "')}"`);
42
+ }
43
+ }
44
+
45
+ return restProps;
46
+ };
@@ -1,28 +1,33 @@
1
1
  // Mandatory themeable CSS layer to prepare ground for components.
2
- // Structured according to ITCSS methodology, ie. most importantly in ascending specificity.
2
+
3
+ @use "sass:meta";
3
4
 
4
5
  //
5
- // 1. Generic
6
- // ==========
6
+ // Generic
7
+ // =======
7
8
  //
8
9
  // Ground-zero styles.
9
10
 
10
- @use "styles/generic/box-sizing";
11
- @use "normalize.css/normalize.css";
12
- @use "styles/generic/focus";
13
- @use "styles/generic/forms";
14
- @use "styles/generic/reset";
15
- @use "styles/generic/shared";
11
+ @layer foundation.generic {
12
+ @include meta.load-css("styles/generic/box-sizing");
13
+ @include meta.load-css("normalize.css/normalize.css");
14
+ @include meta.load-css("styles/generic/focus");
15
+ @include meta.load-css("styles/generic/forms");
16
+ @include meta.load-css("styles/generic/reset");
17
+ @include meta.load-css("styles/generic/shared");
18
+ }
16
19
 
17
20
  //
18
- // 2. Elements
19
- // ===========
21
+ // Elements
22
+ // ========
20
23
  //
21
24
  // Unclassed HTML elements (type selectors).
22
25
 
23
- @use "styles/elements/code";
24
- @use "styles/elements/links";
25
- @use "styles/elements/lists";
26
- @use "styles/elements/page";
27
- @use "styles/elements/rulers";
28
- @use "styles/elements/small";
26
+ @layer foundation.elements {
27
+ @include meta.load-css("styles/elements/code");
28
+ @include meta.load-css("styles/elements/links");
29
+ @include meta.load-css("styles/elements/lists");
30
+ @include meta.load-css("styles/elements/page");
31
+ @include meta.load-css("styles/elements/rulers");
32
+ @include meta.load-css("styles/elements/small");
33
+ }
package/src/helpers.scss CHANGED
@@ -1,22 +1,26 @@
1
1
  // Optional layer with helper CSS classes to easily adjust visual details.
2
- // Structured according to ITCSS methodology, ie. most importantly in ascending specificity.
3
- // This file should be imported as the very last of your stylesheets.
2
+
3
+ @use "sass:meta";
4
4
 
5
5
  //
6
- // 1. Helpers
7
- // ==========
6
+ // Helpers
7
+ // =======
8
8
  //
9
9
  // General purpose helpers for common situations. They can compose multiple CSS rules to do a bit
10
10
  // more complicated tasks.
11
11
 
12
- @use "styles/helpers/animation";
12
+ @layer helpers {
13
+ @include meta.load-css("styles/helpers/animation");
14
+ }
13
15
 
14
16
  //
15
- // 2. Utilities
16
- // ============
17
+ // Utilities
18
+ // =========
17
19
  //
18
20
  // Utility classes to tweak small details like typography, margins or padding. They do just one
19
21
  // thing: they set a single CSS rule and use the otherwise disallowed `!important` to enforce it.
20
22
  // Also they are often responsive (can be adjusted for individual breakpoints).
21
23
 
22
- @use "styles/utilities";
24
+ @layer utilities {
25
+ @include meta.load-css("styles/utilities");
26
+ }
package/src/index.js CHANGED
@@ -1,8 +1,7 @@
1
1
  // Global definitions
2
- // These need to be imported here to be placed in the distribution CSS file
3
- import './theme.scss';
4
- import './foundation.scss';
5
- import './helpers.scss';
2
+ // The styles need to be imported here to be placed in the distribution CSS file.
3
+ // Component styles are imported in the components themselves below.
4
+ import './index.scss';
6
5
 
7
6
  // Components
8
7
  export { Alert } from './components/Alert';
package/src/index.scss ADDED
@@ -0,0 +1,7 @@
1
+ // First establish cascade layers:
2
+ @forward "layers"; // ⚠️ Must come first for the cascade layers to work as intended.
3
+
4
+ // Then import the rest of the files, already organized by layer:
5
+ @forward "theme";
6
+ @forward "foundation";
7
+ @forward "helpers";
@@ -0,0 +1,4 @@
1
+ // Establish CSS cascade layers.
2
+ // ⚠️ WARNING: This file must be called before other React UI styles for the cascade layers to work as intended.
3
+
4
+ @layer theme, foundation, helpers, components, utilities;
@@ -2,8 +2,6 @@
2
2
  @use "../theme/typography";
3
3
 
4
4
  html {
5
- width: 100%;
6
- height: 100%;
7
5
  -moz-osx-font-smoothing: grayscale;
8
6
  -webkit-font-smoothing: antialiased;
9
7
  font-weight: typography.$font-weight-base;
@@ -13,8 +11,6 @@ html {
13
11
  }
14
12
 
15
13
  body {
16
- width: 100%;
17
- min-height: 100%;
18
14
  font-size: 1em;
19
15
  color: page.$color;
20
16
  background-color: page.$background;
@@ -12,10 +12,10 @@ $_spin-easing: cubic-bezier(0.31, 0.3, 0.34, -0.17);
12
12
  }
13
13
  }
14
14
 
15
- :global(.animation-spin-clockwise) {
15
+ .animation-spin-clockwise {
16
16
  animation: spin $_spin-duration $_spin-easing infinite;
17
17
  }
18
18
 
19
- :global(.animation-spin-counterclockwise) {
19
+ .animation-spin-counterclockwise {
20
20
  animation: spin $_spin-duration $_spin-easing infinite reverse;
21
21
  }
@@ -20,7 +20,7 @@
20
20
  // Don't prefix if value key is null (e.g. with shadow class)
21
21
  $property-class-modifier: if($key, "-" + $key, "");
22
22
 
23
- :global(.#{$property-class + $infix + $property-class-modifier}) {
23
+ .#{$property-class + $infix + $property-class-modifier} {
24
24
  @each $property in $properties {
25
25
  // stylelint-disable-next-line declaration-no-important
26
26
  #{$property}: $value !important;