@carbon/ibm-products 1.55.2 → 1.56.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. package/css/index-full-carbon.css +579 -0
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +579 -0
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +1 -1
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +579 -0
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +1 -1
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/Carousel/Carousel.js +15 -5
  14. package/es/components/Coachmark/Coachmark.js +243 -0
  15. package/es/components/Coachmark/CoachmarkDragbar.js +137 -0
  16. package/es/components/Coachmark/CoachmarkHeader.js +88 -0
  17. package/es/components/Coachmark/CoachmarkOverlay.js +139 -0
  18. package/es/components/Coachmark/CoachmarkTagline.js +93 -0
  19. package/es/components/Coachmark/index.js +10 -0
  20. package/es/components/Coachmark/utils/constants.js +76 -0
  21. package/es/components/Coachmark/utils/context.js +5 -0
  22. package/es/components/Coachmark/utils/enums.js +40 -0
  23. package/es/components/Coachmark/utils/helpers.js +11 -0
  24. package/es/components/Coachmark/utils/hooks.js +54 -0
  25. package/es/components/CoachmarkBeacon/CoachmarkBeacon.js +90 -0
  26. package/es/components/CoachmarkBeacon/index.js +8 -0
  27. package/es/components/CoachmarkButton/CoachmarkButton.js +72 -0
  28. package/es/components/CoachmarkButton/index.js +8 -0
  29. package/es/components/CoachmarkFixed/CoachmarkFixed.js +201 -0
  30. package/es/components/CoachmarkFixed/index.js +8 -0
  31. package/es/components/CoachmarkOverlayElement/CoachmarkOverlayElement.js +86 -0
  32. package/es/components/CoachmarkOverlayElement/index.js +8 -0
  33. package/es/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +175 -0
  34. package/es/components/CoachmarkOverlayElements/index.js +8 -0
  35. package/es/components/CoachmarkStack/CoachmarkStack.js +260 -0
  36. package/es/components/CoachmarkStack/CoachmarkStackHome.js +157 -0
  37. package/es/components/CoachmarkStack/index.js +8 -0
  38. package/es/components/NotificationsPanel/NotificationsPanel.js +3 -2
  39. package/es/components/index.js +7 -0
  40. package/es/global/js/package-settings.js +8 -1
  41. package/lib/components/Carousel/Carousel.js +15 -5
  42. package/lib/components/Coachmark/Coachmark.js +247 -0
  43. package/lib/components/Coachmark/CoachmarkDragbar.js +137 -0
  44. package/lib/components/Coachmark/CoachmarkHeader.js +85 -0
  45. package/lib/components/Coachmark/CoachmarkOverlay.js +139 -0
  46. package/lib/components/Coachmark/CoachmarkTagline.js +90 -0
  47. package/lib/components/Coachmark/index.js +38 -0
  48. package/lib/components/Coachmark/utils/constants.js +82 -0
  49. package/lib/components/Coachmark/utils/context.js +13 -0
  50. package/lib/components/Coachmark/utils/enums.js +49 -0
  51. package/lib/components/Coachmark/utils/helpers.js +17 -0
  52. package/lib/components/Coachmark/utils/hooks.js +60 -0
  53. package/lib/components/CoachmarkBeacon/CoachmarkBeacon.js +87 -0
  54. package/lib/components/CoachmarkBeacon/index.js +12 -0
  55. package/lib/components/CoachmarkButton/CoachmarkButton.js +69 -0
  56. package/lib/components/CoachmarkButton/index.js +12 -0
  57. package/lib/components/CoachmarkFixed/CoachmarkFixed.js +201 -0
  58. package/lib/components/CoachmarkFixed/index.js +12 -0
  59. package/lib/components/CoachmarkOverlayElement/CoachmarkOverlayElement.js +83 -0
  60. package/lib/components/CoachmarkOverlayElement/index.js +12 -0
  61. package/lib/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +176 -0
  62. package/lib/components/CoachmarkOverlayElements/index.js +12 -0
  63. package/lib/components/CoachmarkStack/CoachmarkStack.js +264 -0
  64. package/lib/components/CoachmarkStack/CoachmarkStackHome.js +160 -0
  65. package/lib/components/CoachmarkStack/index.js +12 -0
  66. package/lib/components/NotificationsPanel/NotificationsPanel.js +3 -2
  67. package/lib/components/index.js +49 -0
  68. package/lib/global/js/package-settings.js +8 -1
  69. package/package.json +2 -2
  70. package/scss/components/Carousel/_carousel.scss +3 -0
  71. package/scss/components/Coachmark/_index.scss +11 -0
  72. package/scss/components/Coachmark/_storybook-styles.scss +20 -0
  73. package/scss/components/Coachmark/styles/_coachmark-dragbar.scss +74 -0
  74. package/scss/components/Coachmark/styles/_coachmark-header.scss +58 -0
  75. package/scss/components/Coachmark/styles/_coachmark-overlay.scss +327 -0
  76. package/scss/components/Coachmark/styles/_coachmark-tagline.scss +118 -0
  77. package/scss/components/CoachmarkBeacon/_coachmark-beacon.scss +166 -0
  78. package/scss/components/CoachmarkBeacon/_index.scss +8 -0
  79. package/scss/components/CoachmarkBeacon/_storybook-styles.scss +19 -0
  80. package/scss/components/CoachmarkButton/_coachmark-button.scss +34 -0
  81. package/scss/components/CoachmarkButton/_index.scss +8 -0
  82. package/scss/components/CoachmarkButton/_storybook-styles.scss +19 -0
  83. package/scss/components/CoachmarkFixed/_coachmark-fixed.scss +34 -0
  84. package/scss/components/CoachmarkFixed/_index.scss +8 -0
  85. package/scss/components/CoachmarkFixed/_storybook-styles.scss +10 -0
  86. package/scss/components/CoachmarkOverlayElement/_coachmark-overlay-element.scss +50 -0
  87. package/scss/components/CoachmarkOverlayElement/_index.scss +8 -0
  88. package/scss/components/CoachmarkOverlayElement/_storybook-styles.scss +19 -0
  89. package/scss/components/CoachmarkOverlayElements/_coachmark-overlay-elements.scss +40 -0
  90. package/scss/components/CoachmarkOverlayElements/_index.scss +8 -0
  91. package/scss/components/CoachmarkOverlayElements/_storybook-styles.scss +19 -0
  92. package/scss/components/CoachmarkStack/_coachmark-stack.scss +85 -0
  93. package/scss/components/CoachmarkStack/_index.scss +8 -0
  94. package/scss/components/CoachmarkStack/_storybook-styles.scss +10 -0
  95. package/scss/components/_index.scss +7 -1
@@ -0,0 +1,58 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ /* stylelint-disable declaration-no-important */
9
+
10
+ // Standard imports.
11
+ @import '../../../global/styles/project-settings';
12
+ @import '../../../global/styles/mixins';
13
+
14
+ // Define all component styles in a mixin which is then exported using
15
+ // the Carbon import-once mechanism.
16
+ @mixin coachmark-header {
17
+ // The block part of our conventional BEM class names (blockClass__E--M).
18
+ $block-class: #{$pkg-prefix}--coachmark-header;
19
+
20
+ .#{$block-class} {
21
+ display: flex;
22
+
23
+ &--close-btn {
24
+ width: $spacing-07;
25
+ height: $spacing-07;
26
+ margin-left: auto !important;
27
+
28
+ svg > path {
29
+ margin: 0;
30
+ fill: $inverse-01 !important;
31
+ }
32
+
33
+ &:hover {
34
+ background-color: $inverse-hover-ui !important;
35
+ }
36
+ }
37
+
38
+ &__light {
39
+ #{$block-class}--close-btn {
40
+ &:active {
41
+ background-color: $active-secondary;
42
+ }
43
+ }
44
+ }
45
+
46
+ &__dark {
47
+ #{$block-class}--close-btn {
48
+ &:active {
49
+ background-color: $button-tertiary-active;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ @include exports('coachmark-header') {
57
+ @include coachmark-header;
58
+ }
@@ -0,0 +1,327 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ /* stylelint-disable carbon/layout-token-use */
9
+ /* stylelint-disable carbon/theme-token-use */
10
+ /* stylelint-disable declaration-no-important */
11
+
12
+ // Standard imports.
13
+ @import '../../../global/styles/project-settings';
14
+ @import '../../../global/styles/mixins';
15
+
16
+ // Define all component styles in a mixin which is then exported using
17
+ // the Carbon import-once mechanism.
18
+ @mixin coachmark-overlay {
19
+ // The block part of our conventional BEM class names (blockClass__E--M).
20
+ $block-class: #{$pkg-prefix}--coachmark-overlay;
21
+ $carousel-class: #{$pkg-prefix}--carousel;
22
+
23
+ .#{$block-class} {
24
+ position: absolute;
25
+ z-index: 5901;
26
+ width: carbon--mini-units(36);
27
+ border-radius: $spacing-01;
28
+ background-color: $inverse-02;
29
+ color: $inverse-01;
30
+ $caret-height: calc(
31
+ $spacing-03 - $spacing-01
32
+ ); // from the "peak" of the pyramid to its "base"
33
+ $caret-center: $caret-height; // use "center" for left-right calculations, and "height" for top-bottom calculations
34
+ $distance-offset: $spacing-06; // see also ./utils/constants.js > distanceOffset
35
+
36
+ &--fixed {
37
+ position: fixed;
38
+ right: $spacing-05;
39
+ bottom: 0;
40
+ transform: translateY(100%);
41
+ /* stylelint-disable-next-line carbon/motion-easing-use, carbon/motion-duration-use */
42
+ transition: 240ms carbon--motion(exit, productive);
43
+ @media (prefers-reduced-motion) {
44
+ transition: none;
45
+ }
46
+ }
47
+
48
+ &--is-visible {
49
+ transform: translateY(0);
50
+ }
51
+
52
+ // CARET STYLING
53
+ &__caret {
54
+ // background-color: this property is set in _coachmark-overlay-theme.scss
55
+ position: absolute;
56
+ z-index: 5902;
57
+ width: 0;
58
+ height: 0;
59
+ // border-bottom-color: this property is set in _coachmark-overlay-theme.scss
60
+ border-right: $caret-center solid transparent;
61
+ border-bottom: solid $caret-center $inverse-02;
62
+ border-left: $caret-center solid transparent;
63
+ }
64
+
65
+ // OVERLAY AND CARET POSITIONING
66
+ &--top {
67
+ $horizontal-push: calc($distance-offset - $caret-center);
68
+ $translate-y: calc(-1 * (100% + $distance-offset + $caret-height));
69
+
70
+ transform: translate(-50%, $translate-y);
71
+
72
+ .#{$block-class}__caret {
73
+ left: calc(50% - $caret-center);
74
+ transform: rotate(180deg);
75
+ }
76
+
77
+ &-left {
78
+ transform: translate(calc(-1 * $distance-offset), $translate-y);
79
+ .#{$block-class}__caret {
80
+ left: $horizontal-push;
81
+ transform: rotate(180deg);
82
+ }
83
+ }
84
+
85
+ &-right {
86
+ transform: translate(
87
+ calc(-1 * (100% - $distance-offset)),
88
+ $translate-y
89
+ );
90
+ .#{$block-class}__caret {
91
+ right: $horizontal-push;
92
+ transform: rotate(180deg);
93
+ }
94
+ }
95
+ }
96
+
97
+ &--bottom {
98
+ $horizontal-push: calc($distance-offset - $caret-center);
99
+ $top: calc(-1 * $caret-height);
100
+ $translate-y: calc($distance-offset + $caret-height);
101
+
102
+ transform: translate(-50%, $translate-y);
103
+ .#{$block-class}__caret {
104
+ top: $top;
105
+ left: calc(50% - $caret-center);
106
+ }
107
+
108
+ &-left {
109
+ transform: translate(calc(-1 * $distance-offset), $translate-y);
110
+ .#{$block-class}__caret {
111
+ top: $top;
112
+ left: $horizontal-push;
113
+ }
114
+ }
115
+
116
+ &-right {
117
+ transform: translate(
118
+ calc(-1 * (100% - $distance-offset)),
119
+ $translate-y
120
+ );
121
+
122
+ .#{$block-class}__caret {
123
+ top: $top;
124
+ right: $horizontal-push;
125
+ }
126
+ }
127
+ }
128
+
129
+ &--left {
130
+ $right: calc(-1 * $caret-center * 1.5);
131
+ $translate-x: calc(-1 * (100% + $distance-offset + $caret-center));
132
+ $vertical-push: calc($distance-offset - ($caret-height * 0.5));
133
+
134
+ transform: translate($translate-x, -50%);
135
+ .#{$block-class}__caret {
136
+ top: calc(50% - ($caret-height * 0.5));
137
+ right: $right;
138
+ transform: rotate(90deg);
139
+ }
140
+
141
+ &-top {
142
+ transform: translate($translate-x, calc(-1 * $distance-offset));
143
+ .#{$block-class}__caret {
144
+ top: $vertical-push;
145
+ right: $right;
146
+ transform: rotate(90deg);
147
+ }
148
+ }
149
+
150
+ &-bottom {
151
+ transform: translate(
152
+ $translate-x,
153
+ calc(-1 * (100% - $distance-offset))
154
+ );
155
+ .#{$block-class}__caret {
156
+ right: $right;
157
+ bottom: $vertical-push;
158
+ transform: rotate(90deg);
159
+ }
160
+ }
161
+ }
162
+
163
+ &--right {
164
+ $left: calc(-1 * $caret-center * 1.5);
165
+ $translate-x: calc($distance-offset + $caret-center);
166
+ $vertical-push: calc($distance-offset - ($caret-height * 0.5));
167
+
168
+ transform: translate($translate-x, -50%);
169
+ .#{$block-class}__caret {
170
+ top: calc(50% - ($caret-height * 0.5));
171
+ left: $left;
172
+ transform: rotate(-90deg);
173
+ }
174
+
175
+ &-top {
176
+ transform: translate($translate-x, calc(-1 * $distance-offset));
177
+ .#{$block-class}__caret {
178
+ top: $vertical-push;
179
+ left: $left;
180
+ transform: rotate(-90deg);
181
+ }
182
+ }
183
+
184
+ &-bottom {
185
+ transform: translate(
186
+ $translate-x,
187
+ calc(-1 * (100% - $distance-offset))
188
+ );
189
+ .#{$block-class}__caret {
190
+ bottom: $vertical-push;
191
+ left: $left;
192
+ transform: rotate(-90deg);
193
+ }
194
+ }
195
+ }
196
+
197
+ // ANIMATED MEDIA
198
+ &__element-stepped-media {
199
+ height: calc($spacing-07 + $spacing-12); // 32 + 96 = 128
200
+ margin-bottom: $spacing-05;
201
+ }
202
+
203
+ // BODY
204
+ &__body {
205
+ padding: $spacing-01 $spacing-05 $spacing-05;
206
+
207
+ .#{$carbon-prefix}--btn--ghost {
208
+ color: $inverse-link;
209
+
210
+ &:hover {
211
+ color: $inverse-link;
212
+ }
213
+ }
214
+
215
+ // CAROUSEL ELEMENTS
216
+ #{$block-class}-element {
217
+ display: block;
218
+ max-width: 100%;
219
+ flex: 0 0 100%;
220
+
221
+ #{$block-class}-element__content {
222
+ padding-bottom: $spacing-05;
223
+ }
224
+
225
+ #{$block-class}-element__title > div {
226
+ margin: 0 0 $spacing-03;
227
+
228
+ > h2 {
229
+ @include carbon--type-style('productive-heading-02');
230
+
231
+ order: 1;
232
+ }
233
+ }
234
+ }
235
+ }
236
+
237
+ // FOOTER
238
+ &__footer {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: flex-end;
242
+ }
243
+ /* ------------------ */
244
+
245
+ // THEME
246
+ &__light {
247
+ .#{$block-class}__body {
248
+ .#{$carbon-prefix}--link {
249
+ color: $inverse-link;
250
+
251
+ &:hover {
252
+ color: #a6c8ff;
253
+ }
254
+
255
+ &:active {
256
+ color: $text-04;
257
+ }
258
+
259
+ &:focus {
260
+ outline-color: $text-04;
261
+ }
262
+ }
263
+
264
+ .#{$carbon-prefix}--btn--ghost {
265
+ &:hover {
266
+ background-color: $inverse-hover-ui;
267
+ }
268
+
269
+ &:active {
270
+ background-color: $active-secondary;
271
+ }
272
+ }
273
+ }
274
+ }
275
+
276
+ &__dark {
277
+ .#{$block-class}__body {
278
+ .#{$carbon-prefix}--link {
279
+ color: #0062fe;
280
+
281
+ &:hover {
282
+ color: #0043ce;
283
+ }
284
+
285
+ &:active {
286
+ color: $link-02;
287
+ }
288
+
289
+ &:focus {
290
+ color: $inverse-01;
291
+ outline-color: $inverse-01;
292
+ }
293
+ }
294
+
295
+ .#{$carbon-prefix}--btn--primary {
296
+ &:focus {
297
+ background-color: $button-primary-active;
298
+ box-shadow: inset 0 0 0 $spacing-01 $interactive-01,
299
+ inset 0 0 0 rem(3px) $interactive-03;
300
+ }
301
+ }
302
+
303
+ .#{$carbon-prefix}--btn--ghost {
304
+ &:hover {
305
+ background-color: $inverse-hover-ui;
306
+ }
307
+
308
+ &:active {
309
+ background-color: $button-tertiary-active;
310
+ }
311
+
312
+ &:focus {
313
+ box-shadow: inset 0 0 0 $spacing-01 $interactive-01,
314
+ inset 0 0 0 rem(3px) $interactive-03;
315
+ }
316
+ }
317
+ }
318
+ }
319
+ .#{$carousel-class}__item {
320
+ flex: 0 0 100% !important;
321
+ }
322
+ }
323
+ }
324
+
325
+ @include exports('coachmark-overlay') {
326
+ @include coachmark-overlay;
327
+ }
@@ -0,0 +1,118 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ /* stylelint-disable carbon/theme-token-use */
9
+ /* stylelint-disable declaration-no-important */
10
+
11
+ // Standard imports.
12
+ @import '../../../global/styles/project-settings';
13
+ @import '../../../global/styles/mixins';
14
+
15
+ // Define all component styles in a mixin which is then exported using
16
+ // the Carbon import-once mechanism.
17
+ @mixin coachmark-tagline {
18
+ // The block part of our conventional BEM class names (blockClass__E--M).
19
+ $block-class: #{$pkg-prefix}--coachmark-tagline;
20
+
21
+ .#{$block-class} {
22
+ position: fixed;
23
+ z-index: 1000;
24
+ right: $spacing-05;
25
+ bottom: 0;
26
+ display: grid;
27
+ overflow: hidden;
28
+ width: carbon--mini-units(36);
29
+ border-radius: $spacing-01 $spacing-01 0 0;
30
+ background: $purple-70;
31
+ background-image: linear-gradient(90deg, $blue-90 0%, $purple-70 100%);
32
+ color: $white-0 !important;
33
+ grid-template-columns: [ctacol] auto [closebtncol] $spacing-08;
34
+ opacity: 1;
35
+ // stylelint-disable-next-line carbon/motion-duration-use
36
+ transition: opacity 240ms carbon--motion(exit, productive) 300ms;
37
+ transition-delay: 240ms;
38
+ @media (prefers-reduced-motion) {
39
+ transition: none;
40
+ }
41
+
42
+ &::before {
43
+ position: absolute;
44
+ z-index: -1;
45
+ top: 0;
46
+ right: 0;
47
+ bottom: 0;
48
+ left: 0;
49
+ background: linear-gradient(90deg, $blue-70 0%, $purple-70 100%);
50
+ content: '';
51
+ opacity: 0;
52
+ /* stylelint-disable-next-line carbon/motion-duration-use */
53
+ transition: opacity 240ms carbon--motion(exit, productive);
54
+ @media (prefers-reduced-motion) {
55
+ transition: none;
56
+ }
57
+ }
58
+
59
+ &:hover::before {
60
+ opacity: 1;
61
+ }
62
+
63
+ &--is-open {
64
+ background: $white-0;
65
+ opacity: 0;
66
+ #{$block-class}__cta {
67
+ opacity: 0;
68
+ }
69
+
70
+ #{$block-class}--close-btn {
71
+ display: none;
72
+ }
73
+
74
+ &::before {
75
+ background: $white-0;
76
+ }
77
+ }
78
+
79
+ &__cta {
80
+ display: grid;
81
+ padding: $spacing-03 0;
82
+ border: none;
83
+ background: transparent;
84
+ color: $white-0 !important;
85
+ grid-template-columns: [iconcol] $spacing-07 [bodycol] auto;
86
+ text-align: left;
87
+ @include carbon--type-style('body-short-01');
88
+
89
+ &:hover {
90
+ cursor: pointer !important;
91
+ }
92
+
93
+ .#{$block-class}__idea {
94
+ justify-self: center;
95
+ }
96
+ }
97
+
98
+ &--close-btn {
99
+ width: $spacing-07;
100
+ height: $spacing-07;
101
+ margin-left: auto !important;
102
+ color: $white-0;
103
+
104
+ svg > path {
105
+ margin: 0;
106
+ fill: $white-0 !important;
107
+ }
108
+
109
+ &:hover {
110
+ background-color: $purple-70-hover !important;
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ @include exports('coachmark-tagline') {
117
+ @include coachmark-tagline;
118
+ }
@@ -0,0 +1,166 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ /**
9
+ * The CoachmarkBeacon specifically is theme-agnostic, and so we have to
10
+ * use color tokens to keep the colors static instead of theme tokens
11
+ * that will change depending on the selected theme.
12
+ *
13
+ * Because of this, we are triggering a *large* amount of linting errors.
14
+ * So, we're adding 4 "disable" rules for the file instead of 50
15
+ * individual rules.
16
+ */
17
+
18
+ /* stylelint-disable carbon/layout-token-use */
19
+ /* stylelint-disable carbon/motion-duration-use */
20
+ /* stylelint-disable carbon/theme-token-use */
21
+
22
+ // Standard imports.
23
+ @import '../../global/styles/project-settings';
24
+ @import '../../global/styles/mixins';
25
+
26
+ @mixin coachmark-beacon {
27
+ // The block part of our conventional BEM class names (blockClass__E--M).
28
+ $block-class: #{$pkg-prefix}--coachmark-beacon;
29
+ $beaconAnimationTime: 2s;
30
+ .#{$block-class} {
31
+ position: relative;
32
+
33
+ &-default {
34
+ .#{$block-class}__target {
35
+ // the blue dot
36
+ &::after {
37
+ position: absolute;
38
+ top: calc($spacing-01 + $spacing-03);
39
+ left: calc($spacing-01 + $spacing-03);
40
+ width: $spacing-04;
41
+ height: $spacing-04;
42
+ border-radius: 50%;
43
+ background-color: $blue-50;
44
+ content: '';
45
+ }
46
+ }
47
+ }
48
+
49
+ &-ring {
50
+ .#{$block-class}__center {
51
+ -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='80px' height='80px' viewBox='008080'><pathfill='white' stroke='none' d='M0,0m37-2a404001010Zm128a1212011-10Z'/></svg>");
52
+ mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='80px' height='80px' viewBox='008080'><pathfill='white' stroke='none' d='M0,0m37-2a404001010Zm128a1212011-10Z'/></svg>");
53
+
54
+ circle {
55
+ /* stylelint-disable-next-line carbon/motion-easing-use */
56
+ animation: ring-ripple $beaconAnimationTime infinite;
57
+ @media (prefers-reduced-motion) {
58
+ animation: none;
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ .#{$block-class}__target {
65
+ // the hit area
66
+ position: absolute;
67
+ top: calc(-1 * $spacing-05);
68
+ left: calc(-1 * $spacing-05);
69
+ width: $spacing-07;
70
+ height: $spacing-07;
71
+ padding: 0;
72
+ border: none;
73
+ border-radius: 50%;
74
+ background-color: transparent;
75
+ cursor: pointer;
76
+
77
+ &[aria-expanded='true'] {
78
+ circle {
79
+ animation: none;
80
+ }
81
+ }
82
+ }
83
+
84
+ &__center {
85
+ position: absolute;
86
+ z-index: 6900;
87
+ top: calc(($spacing-06 - $spacing-01) * -1);
88
+ left: calc(($spacing-06 - $spacing-01) * -1);
89
+ width: $spacing-11;
90
+ height: $spacing-11;
91
+ pointer-events: none;
92
+
93
+ circle {
94
+ /* stylelint-disable-next-line carbon/motion-easing-use */
95
+ animation: ripple $beaconAnimationTime infinite;
96
+ fill: $support-04;
97
+ fill-opacity: 0;
98
+ -webkit-mask-image: none;
99
+ mask-image: none;
100
+ stroke: $support-04;
101
+ stroke-opacity: 0;
102
+ stroke-width: 1px;
103
+ transition-timing-function: carbon--motion(exit, productive);
104
+ @media (prefers-reduced-motion) {
105
+ animation: none;
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ @keyframes ripple {
112
+ 0% {
113
+ fill-opacity: 0;
114
+ r: 1px;
115
+ stroke-opacity: 0;
116
+ transition-timing-function: carbon--motion(entrance, productive);
117
+ }
118
+
119
+ 31% {
120
+ fill-opacity: 0.2;
121
+ stroke-opacity: 1;
122
+ }
123
+
124
+ 62% {
125
+ fill-opacity: 0;
126
+ r: 32px;
127
+ stroke-opacity: 0;
128
+ }
129
+
130
+ 100% {
131
+ fill-opacity: 0;
132
+ r: 32px;
133
+ stroke-opacity: 0;
134
+ }
135
+ }
136
+
137
+ @keyframes ring-ripple {
138
+ 0% {
139
+ fill-opacity: 0;
140
+ r: 12px;
141
+ stroke-opacity: 0;
142
+ transition-timing-function: carbon--motion(entrance, productive);
143
+ }
144
+
145
+ 31% {
146
+ fill-opacity: 0.2;
147
+ stroke-opacity: 1;
148
+ }
149
+
150
+ 62% {
151
+ fill-opacity: 0;
152
+ r: 32px;
153
+ stroke-opacity: 0;
154
+ }
155
+
156
+ 100% {
157
+ fill-opacity: 0;
158
+ r: 32px;
159
+ stroke-opacity: 0;
160
+ }
161
+ }
162
+ }
163
+
164
+ @include exports('coachmark-beacon') {
165
+ @include coachmark-beacon;
166
+ }
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ @import './coachmark-beacon';
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright IBM Corp. 2023, 2023
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ @import '../../global/styles/project-settings';
9
+
10
+ .CoachmarkBaseExampleUsage {
11
+ position: relative;
12
+ display: inline-block;
13
+ max-height: 100%;
14
+ box-sizing: border-box;
15
+ /* stylelint-disable-next-line carbon/layout-token-use */
16
+ padding: 1rem;
17
+ margin-left: 50%;
18
+ transform: translateX(-50%);
19
+ }