@cloudscape-design/components-themeable 3.0.1354 → 3.0.1356

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/expandable-section/styles.scss +12 -8
  3. package/lib/internal/scss/icon/hover-motion.scss +1151 -124
  4. package/lib/internal/scss/icon/mixins.scss +4 -0
  5. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  6. package/lib/internal/scss/link/styles.scss +2 -0
  7. package/lib/internal/scss/segmented-control/segment.scss +1 -1
  8. package/lib/internal/scss/spinner/mixins.scss +6 -0
  9. package/lib/internal/scss/spinner/styles.scss +13 -0
  10. package/lib/internal/template/expandable-section/styles.css.js +43 -43
  11. package/lib/internal/template/expandable-section/styles.scoped.css +89 -88
  12. package/lib/internal/template/expandable-section/styles.selectors.js +43 -43
  13. package/lib/internal/template/icon/generated/icons.js +126 -58
  14. package/lib/internal/template/icon/generated/icons.js.map +1 -1
  15. package/lib/internal/template/icon/styles.css.js +41 -41
  16. package/lib/internal/template/icon/styles.scoped.css +109 -91
  17. package/lib/internal/template/icon/styles.selectors.js +41 -41
  18. package/lib/internal/template/internal/base-component/styles.scoped.css +7 -7
  19. package/lib/internal/template/internal/base-theme/styles.scoped.css +6 -6
  20. package/lib/internal/template/internal/environment.js +2 -2
  21. package/lib/internal/template/internal/environment.json +2 -2
  22. package/lib/internal/template/internal/generated/styles/tokens.js +4 -4
  23. package/lib/internal/template/internal/generated/theming/index.cjs +12 -12
  24. package/lib/internal/template/internal/generated/theming/index.js +12 -12
  25. package/lib/internal/template/segmented-control/styles.css.js +16 -16
  26. package/lib/internal/template/segmented-control/styles.scoped.css +36 -36
  27. package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
  28. package/lib/internal/template/spinner/internal.d.ts +3 -1
  29. package/lib/internal/template/spinner/internal.d.ts.map +1 -1
  30. package/lib/internal/template/spinner/internal.js.map +1 -1
  31. package/lib/internal/template/spinner/styles.css.js +14 -13
  32. package/lib/internal/template/spinner/styles.scoped.css +27 -19
  33. package/lib/internal/template/spinner/styles.selectors.js +14 -13
  34. package/lib/internal/template/status-indicator/internal.d.ts.map +1 -1
  35. package/lib/internal/template/status-indicator/internal.js +17 -12
  36. package/lib/internal/template/status-indicator/internal.js.map +1 -1
  37. package/package.json +1 -1
@@ -18,8 +18,6 @@
18
18
  // stylelint-disable @cloudscape-design/no-implicit-descendant
19
19
 
20
20
  $_ease-out: ease-out;
21
- $_ease-symmetric: cubic-bezier(0.33, 0, 0.67, 1);
22
- $_ease-decelerate: cubic-bezier(0.4, 0, 0.2, 1);
23
21
  $_ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
24
22
 
25
23
  // A disabled control must not react to hover.
@@ -46,7 +44,7 @@ $icon-hover-motion: (
46
44
  duration: 400ms,
47
45
  easing: $_ease-spring,
48
46
  to: (
49
- transform: rotate(-12deg) scale(0.84),
47
+ transform: rotate(-12deg) scale(0.86),
50
48
  ),
51
49
  ),
52
50
  ),
@@ -114,7 +112,7 @@ $icon-hover-motion: (
114
112
  duration: 350ms,
115
113
  easing: $_ease-spring,
116
114
  to: (
117
- transform: rotate(-3deg),
115
+ transform: rotate(-7deg),
118
116
  ),
119
117
  ),
120
118
  ),
@@ -123,14 +121,14 @@ $icon-hover-motion: (
123
121
  duration: 350ms,
124
122
  easing: $_ease-spring,
125
123
  to: (
126
- transform: rotate(-3deg),
124
+ transform: rotate(-7deg),
127
125
  ),
128
126
  ),
129
127
  (
130
128
  part: 'awsui-icon-mouth',
131
129
  animation: icon-mouth-smile-grow,
132
130
  duration: 900ms,
133
- easing: $_ease-symmetric,
131
+ easing: ease-in-out,
134
132
  base: (
135
133
  stroke-dasharray: 7.4,
136
134
  stroke-dashoffset: 0,
@@ -142,29 +140,54 @@ $icon-hover-motion: (
142
140
  duration: 350ms,
143
141
  easing: $_ease-spring,
144
142
  to: (
145
- transform: rotate(3deg),
143
+ transform: rotate(-7deg),
146
144
  ),
147
145
  ),
148
146
  (
149
147
  part: 'awsui-icon-mouth',
150
148
  animation: icon-mouth-tilt,
151
149
  duration: 700ms,
152
- easing: $_ease-symmetric,
150
+ easing: ease-in-out,
153
151
  origin: 8px 10px,
154
152
  ),
155
153
  ),
154
+ 'face-neutral-filled': (
155
+ (
156
+ duration: 350ms,
157
+ easing: $_ease-spring,
158
+ to: (
159
+ transform: rotate(-7deg),
160
+ ),
161
+ ),
162
+ ),
156
163
  'face-sad': (
164
+ (
165
+ duration: 350ms,
166
+ easing: $_ease-spring,
167
+ to: (
168
+ transform: rotate(-7deg),
169
+ ),
170
+ ),
157
171
  (
158
172
  part: 'awsui-icon-mouth',
159
173
  animation: icon-mouth-frown-deepen,
160
174
  duration: 900ms,
161
- easing: $_ease-symmetric,
175
+ easing: ease-in-out,
162
176
  base: (
163
177
  stroke-dasharray: 7.4,
164
178
  stroke-dashoffset: 0,
165
179
  ),
166
180
  ),
167
181
  ),
182
+ 'face-sad-filled': (
183
+ (
184
+ duration: 350ms,
185
+ easing: $_ease-spring,
186
+ to: (
187
+ transform: rotate(-7deg),
188
+ ),
189
+ ),
190
+ ),
168
191
  'gen-ai': (
169
192
  (
170
193
  part: 'awsui-icon-sparkle',
@@ -200,6 +223,38 @@ $icon-hover-motion: (
200
223
  transform-box: fill-box,
201
224
  ),
202
225
  ),
226
+ (
227
+ part: 'awsui-icon-nib-a',
228
+ duration: 450ms,
229
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
230
+ origin: 1.7px 8.785px,
231
+ base: (
232
+ transform: rotate(99.4845deg) scaleX(1) rotate(-99.4845deg),
233
+ ),
234
+ to: (
235
+ transform: rotate(90deg) scaleX(0.82155) rotate(-99.4845deg),
236
+ ),
237
+ ),
238
+ (
239
+ part: 'awsui-icon-nib-b',
240
+ duration: 450ms,
241
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
242
+ origin: 5.19px 12.275px,
243
+ base: (
244
+ transform: rotate(170.516deg) scaleX(1) rotate(-170.516deg),
245
+ ),
246
+ to: (
247
+ transform: rotate(180deg) scaleX(0.82155) rotate(-170.516deg),
248
+ ),
249
+ ),
250
+ (
251
+ part: 'awsui-icon-eraser',
252
+ duration: 450ms,
253
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
254
+ to: (
255
+ transform: translate(0.7px, -0.7px),
256
+ ),
257
+ ),
203
258
  ),
204
259
  'suggestions-gen-ai': (
205
260
  (
@@ -217,7 +272,7 @@ $icon-hover-motion: (
217
272
  (
218
273
  part: 'awsui-icon-front',
219
274
  duration: 150ms,
220
- easing: $_ease-symmetric,
275
+ easing: ease-in-out,
221
276
  to: (
222
277
  transform: translate(-4%, -4%),
223
278
  ),
@@ -225,31 +280,12 @@ $icon-hover-motion: (
225
280
  (
226
281
  part: 'awsui-icon-back',
227
282
  duration: 150ms,
228
- easing: $_ease-symmetric,
283
+ easing: ease-in-out,
229
284
  to: (
230
285
  transform: translate(4%, 4%),
231
286
  ),
232
287
  ),
233
288
  ),
234
- 'refresh': (
235
- (
236
- part: 'awsui-icon-arc',
237
- animation: icon-coil,
238
- duration: 500ms,
239
- easing: $_ease-symmetric,
240
- origin: 8px 8px,
241
- ),
242
- (
243
- part: 'awsui-icon-arrow',
244
- animation: icon-coil-arrow,
245
- duration: 500ms,
246
- easing: $_ease-symmetric,
247
- origin: 8px 8px,
248
- base: (
249
- stroke-dasharray: 0 0 10.01 0,
250
- ),
251
- ),
252
- ),
253
289
  'upload': (
254
290
  (
255
291
  part: 'awsui-icon-arrow',
@@ -293,7 +329,7 @@ $icon-hover-motion: (
293
329
  duration: 500ms,
294
330
  easing: $_ease-out,
295
331
  base: (
296
- stroke-dasharray: 25.15,
332
+ stroke-dasharray: 2,
297
333
  stroke-dashoffset: 0,
298
334
  ),
299
335
  ),
@@ -311,7 +347,7 @@ $icon-hover-motion: (
311
347
  duration: 500ms,
312
348
  easing: $_ease-out,
313
349
  base: (
314
- stroke-dasharray: 25.15,
350
+ stroke-dasharray: 2,
315
351
  stroke-dashoffset: 0,
316
352
  ),
317
353
  ),
@@ -485,7 +521,7 @@ $icon-hover-motion: (
485
521
  easing: cubic-bezier(0.4, 0, 0.2, 1),
486
522
  origin: 8px 8px,
487
523
  to: (
488
- transform: scale(1.15),
524
+ transform: scale(1.25),
489
525
  ),
490
526
  ),
491
527
  ),
@@ -493,7 +529,7 @@ $icon-hover-motion: (
493
529
  (
494
530
  part: 'awsui-icon-front',
495
531
  duration: 150ms,
496
- easing: $_ease-symmetric,
532
+ easing: ease-in-out,
497
533
  to: (
498
534
  transform: translate(-4%, -4%),
499
535
  ),
@@ -501,7 +537,7 @@ $icon-hover-motion: (
501
537
  (
502
538
  part: 'awsui-icon-back',
503
539
  duration: 150ms,
504
- easing: $_ease-symmetric,
540
+ easing: ease-in-out,
505
541
  to: (
506
542
  transform: translate(4%, 4%),
507
543
  ),
@@ -631,22 +667,22 @@ $icon-hover-motion: (
631
667
  'view-horizontal': (
632
668
  (
633
669
  part: 'awsui-icon-panel',
634
- duration: 450ms,
635
- easing: cubic-bezier(0.4, 0, 0.2, 1),
636
- origin: 8px 9.5px,
637
- to: (
638
- transform: scale(1.08),
670
+ animation: icon-panel-slide-down,
671
+ duration: 600ms,
672
+ easing: cubic-bezier(0.65, 0, 0.35, 1),
673
+ base: (
674
+ transform-box: fill-box,
639
675
  ),
640
676
  ),
641
677
  ),
642
678
  'view-vertical': (
643
679
  (
644
680
  part: 'awsui-icon-panel',
645
- duration: 450ms,
646
- easing: cubic-bezier(0.4, 0, 0.2, 1),
647
- origin: 9.5px 8px,
648
- to: (
649
- transform: scale(1.08),
681
+ animation: icon-panel-slide-right,
682
+ duration: 600ms,
683
+ easing: cubic-bezier(0.65, 0, 0.35, 1),
684
+ base: (
685
+ transform-box: fill-box,
650
686
  ),
651
687
  ),
652
688
  ),
@@ -657,7 +693,7 @@ $icon-hover-motion: (
657
693
  easing: cubic-bezier(0.4, 0, 0.2, 1),
658
694
  origin: 7px 7px,
659
695
  to: (
660
- transform: scale(1.15),
696
+ transform: scale(1.2),
661
697
  ),
662
698
  ),
663
699
  ),
@@ -668,16 +704,179 @@ $icon-hover-motion: (
668
704
  easing: cubic-bezier(0.4, 0, 0.2, 1),
669
705
  origin: 7px 7px,
670
706
  to: (
671
- transform: scale(0.85),
707
+ transform: scaleX(0.85),
708
+ ),
709
+ ),
710
+ ),
711
+ 'menu': (
712
+ (
713
+ part: 'awsui-icon-line-top',
714
+ duration: 400ms,
715
+ easing: $_ease-spring,
716
+ to: (
717
+ transform: translateY(6.25%),
718
+ ),
719
+ ),
720
+ (
721
+ part: 'awsui-icon-line-bottom',
722
+ duration: 400ms,
723
+ easing: $_ease-spring,
724
+ to: (
725
+ transform: translateY(-6.25%),
726
+ ),
727
+ ),
728
+ ),
729
+ 'anchor-link': (
730
+ (
731
+ part: 'awsui-icon-left',
732
+ duration: 400ms,
733
+ easing: $_ease-spring,
734
+ to: (
735
+ transform: translateX(4%),
736
+ ),
737
+ ),
738
+ (
739
+ part: 'awsui-icon-right',
740
+ duration: 400ms,
741
+ easing: $_ease-spring,
742
+ to: (
743
+ transform: translateX(-4%),
744
+ ),
745
+ ),
746
+ ),
747
+ 'convert-code': (
748
+ (
749
+ part: 'awsui-icon-dot-1',
750
+ animation: icon-dot-blink,
751
+ duration: 320ms,
752
+ easing: ease,
753
+ ),
754
+ (
755
+ part: 'awsui-icon-dot-2',
756
+ animation: icon-dot-blink,
757
+ duration: 320ms,
758
+ easing: ease,
759
+ delay: 90ms,
760
+ ),
761
+ (
762
+ part: 'awsui-icon-dot-3',
763
+ animation: icon-dot-blink,
764
+ duration: 320ms,
765
+ easing: ease,
766
+ delay: 180ms,
767
+ ),
768
+ (
769
+ part: 'awsui-icon-chevron',
770
+ animation: icon-nudge-right,
771
+ duration: 500ms,
772
+ easing: $_ease-out,
773
+ ),
774
+ ),
775
+ 'mini-player': (
776
+ (
777
+ part: 'awsui-icon-frame',
778
+ duration: 500ms,
779
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
780
+ property: stroke-dashoffset,
781
+ to: (
782
+ stroke-dashoffset: 0.14px,
783
+ ),
784
+ ),
785
+ (
786
+ part: 'awsui-icon-screen-bottom',
787
+ duration: 500ms,
788
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
789
+ property: stroke-dashoffset,
790
+ to: (
791
+ stroke-dashoffset: 0,
792
+ ),
793
+ ),
794
+ (
795
+ part: 'awsui-icon-screen-right',
796
+ duration: 500ms,
797
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
798
+ property: stroke-dashoffset,
799
+ to: (
800
+ stroke-dashoffset: 0,
801
+ ),
802
+ ),
803
+ (
804
+ part: 'awsui-icon-screen-left',
805
+ duration: 500ms,
806
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
807
+ property: (
808
+ stroke-dashoffset,
809
+ transform,
810
+ ),
811
+ to: (
812
+ stroke-dashoffset: 0,
813
+ transform: translateX(-12.5%),
814
+ ),
815
+ ),
816
+ (
817
+ part: 'awsui-icon-screen-top',
818
+ duration: 500ms,
819
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
820
+ property: (
821
+ stroke-dashoffset,
822
+ transform,
823
+ ),
824
+ to: (
825
+ stroke-dashoffset: 0,
826
+ transform: translateY(-12.5%),
827
+ ),
828
+ ),
829
+ ),
830
+ 'treeview-expand': (
831
+ (
832
+ part: 'awsui-icon-arm',
833
+ duration: 450ms,
834
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
835
+ property: stroke-dashoffset,
836
+ to: (
837
+ stroke-dashoffset: 0,
838
+ ),
839
+ ),
840
+ ),
841
+ 'treeview-collapse': (
842
+ (
843
+ part: 'awsui-icon-arm',
844
+ duration: 450ms,
845
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
846
+ property: stroke-dashoffset,
847
+ to: (
848
+ stroke-dashoffset: 0.35px,
672
849
  ),
673
850
  ),
674
851
  ),
852
+ 'view-full': (
853
+ (
854
+ part: 'awsui-icon-panel',
855
+ duration: 500ms,
856
+ easing: $_ease-spring,
857
+ origin: 50% 50%,
858
+ base: (
859
+ transform-box: fill-box,
860
+ ),
861
+ to: (
862
+ transform: scale(1.12),
863
+ ),
864
+ ),
865
+ ),
866
+ 'side-bar': (
867
+ (
868
+ part: 'awsui-icon-bar',
869
+ animation: icon-bar-slide-left,
870
+ duration: 600ms,
871
+ easing: cubic-bezier(0.65, 0, 0.35, 1),
872
+ ),
873
+ ),
675
874
  'bug': (
676
875
  (
677
876
  part: 'awsui-icon-leg-tl',
678
877
  animation: icon-gait-a,
679
878
  duration: 600ms,
680
- easing: $_ease-symmetric,
879
+ easing: ease-in-out,
681
880
  iterations: 2,
682
881
  origin: 4px 5.71px,
683
882
  ),
@@ -685,7 +884,7 @@ $icon-hover-motion: (
685
884
  part: 'awsui-icon-leg-mr',
686
885
  animation: icon-gait-a,
687
886
  duration: 600ms,
688
- easing: $_ease-symmetric,
887
+ easing: ease-in-out,
689
888
  iterations: 2,
690
889
  origin: 12px 8.71px,
691
890
  ),
@@ -693,7 +892,7 @@ $icon-hover-motion: (
693
892
  part: 'awsui-icon-leg-bl',
694
893
  animation: icon-gait-a,
695
894
  duration: 600ms,
696
- easing: $_ease-symmetric,
895
+ easing: ease-in-out,
697
896
  iterations: 2,
698
897
  origin: 4px 11.71px,
699
898
  ),
@@ -701,7 +900,7 @@ $icon-hover-motion: (
701
900
  part: 'awsui-icon-leg-tr',
702
901
  animation: icon-gait-b,
703
902
  duration: 600ms,
704
- easing: $_ease-symmetric,
903
+ easing: ease-in-out,
705
904
  iterations: 2,
706
905
  origin: 12px 5.71px,
707
906
  ),
@@ -709,7 +908,7 @@ $icon-hover-motion: (
709
908
  part: 'awsui-icon-leg-ml',
710
909
  animation: icon-gait-b,
711
910
  duration: 600ms,
712
- easing: $_ease-symmetric,
911
+ easing: ease-in-out,
713
912
  iterations: 2,
714
913
  origin: 4px 8.71px,
715
914
  ),
@@ -717,71 +916,709 @@ $icon-hover-motion: (
717
916
  part: 'awsui-icon-leg-br',
718
917
  animation: icon-gait-b,
719
918
  duration: 600ms,
720
- easing: $_ease-symmetric,
919
+ easing: ease-in-out,
721
920
  iterations: 2,
722
921
  origin: 12px 11.71px,
723
922
  ),
724
923
  ),
725
- );
726
-
727
- // Motion declarations must sit under a mixin named *with-motion, with at most sass
728
- // control flow in between, per the no-motion-outside-of-mixin stylelint rule. This is
729
- // that mixin: it scopes @content to opted-in themes and adds the runtime motion gate
730
- // ($_motion-on).
731
- @mixin with-motion {
732
- @include theming.expressive-motion-only($_motion-on) {
733
- @content;
734
- }
735
- }
736
-
737
- // Also fires on :focus-visible, covering a focus owner nested inside the trigger.
738
- @mixin _on-hover-trigger($suffix) {
739
- #{'#{$_hover-trigger}:hover #{$suffix}'},
740
- #{'#{$_hover-trigger}:is(:focus-visible, :has([#{$_trigger-attribute}~="focus"]:focus-visible)) #{$suffix}'} {
741
- @content;
742
- }
743
- }
744
-
745
- @function _target($part) {
746
- @if not $part {
747
- @return '> :global(#{$_opted-in})';
748
- }
749
- @return '> :global(#{$_opted-in} .#{$part})';
750
- }
751
-
752
- // A single-spec entry needs a trailing comma or Prettier turns the list back into a bare map.
753
- @function _specs($value) {
754
- @if meta.type-of($value) == 'map' {
755
- @return list.append((), $value);
756
- }
757
- @return $value;
758
- }
759
-
760
- @mixin generic-hover-motion {
761
- .icon > :global(#{$_opted-in}) {
762
- @include with-motion {
763
- transition-property: transform;
764
- transition-duration: 250ms;
765
- transition-timing-function: $_ease-decelerate;
766
- }
767
- }
768
-
769
- @include _on-hover-trigger('.icon#{$_animating-icon} > :global(#{$_opted-in})') {
770
- @include with-motion {
771
- transform: scale(0.94);
772
- }
773
- }
774
- }
775
-
776
- // Icons with BOTH a whole-icon spec and a part spec are excluded — the cancel would out-specify the whole-icon rule and reset it to none.
777
- @mixin _cancel-floor-under-hover-parts {
778
- $names: ();
779
- $parts: ();
780
-
781
- @each $name, $specs in $icon-hover-motion {
782
- $whole-icon: false;
783
- @each $spec in _specs($specs) {
784
- @if not map.get($spec, part) {
924
+ 'arrow-up': (
925
+ (
926
+ part: 'awsui-icon-glyph',
927
+ animation: icon-glyph-nudge-up,
928
+ duration: 500ms,
929
+ easing: $_ease-out,
930
+ ),
931
+ ),
932
+ 'arrow-down': (
933
+ (
934
+ part: 'awsui-icon-glyph',
935
+ animation: icon-glyph-nudge-down,
936
+ duration: 500ms,
937
+ easing: $_ease-out,
938
+ ),
939
+ ),
940
+ 'arrow-left': (
941
+ (
942
+ part: 'awsui-icon-glyph',
943
+ animation: icon-glyph-nudge-left,
944
+ duration: 500ms,
945
+ easing: $_ease-out,
946
+ ),
947
+ ),
948
+ 'arrow-right': (
949
+ (
950
+ part: 'awsui-icon-glyph',
951
+ animation: icon-glyph-nudge-right,
952
+ duration: 500ms,
953
+ easing: $_ease-out,
954
+ ),
955
+ ),
956
+ 'angle-left-double': (
957
+ (
958
+ part: 'awsui-icon-glyph',
959
+ animation: icon-glyph-nudge-left,
960
+ duration: 500ms,
961
+ easing: $_ease-out,
962
+ ),
963
+ ),
964
+ 'angle-right-double': (
965
+ (
966
+ part: 'awsui-icon-glyph',
967
+ animation: icon-glyph-nudge-right,
968
+ duration: 500ms,
969
+ easing: $_ease-out,
970
+ ),
971
+ ),
972
+ 'internal-link': (
973
+ (
974
+ part: 'awsui-icon-glyph',
975
+ animation: icon-glyph-nudge-right,
976
+ duration: 500ms,
977
+ easing: $_ease-out,
978
+ ),
979
+ ),
980
+ 'audio-full': (
981
+ (
982
+ part: 'awsui-icon-wave-1',
983
+ duration: 180ms,
984
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
985
+ property: stroke-dashoffset,
986
+ base: (
987
+ stroke-dasharray: 1,
988
+ stroke-dashoffset: 0,
989
+ transition-delay: 100ms,
990
+ ),
991
+ to: (
992
+ stroke-dashoffset: 0.333333px,
993
+ transition-delay: 0ms,
994
+ ),
995
+ ),
996
+ (
997
+ part: 'awsui-icon-wave-2',
998
+ duration: 180ms,
999
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1000
+ property: stroke-dashoffset,
1001
+ base: (
1002
+ stroke-dasharray: 1,
1003
+ stroke-dashoffset: 0,
1004
+ ),
1005
+ to: (
1006
+ stroke-dashoffset: 0.333333px,
1007
+ transition-delay: 100ms,
1008
+ ),
1009
+ ),
1010
+ ),
1011
+ 'audio-half': (
1012
+ (
1013
+ part: 'awsui-icon-wave-1',
1014
+ duration: 180ms,
1015
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1016
+ property: stroke-dashoffset,
1017
+ base: (
1018
+ stroke-dasharray: 1,
1019
+ stroke-dashoffset: 0,
1020
+ transition-delay: 100ms,
1021
+ ),
1022
+ to: (
1023
+ stroke-dashoffset: 0.333333px,
1024
+ transition-delay: 0ms,
1025
+ ),
1026
+ ),
1027
+ ),
1028
+ 'audio-off': (
1029
+ (
1030
+ part: 'awsui-icon-arm',
1031
+ duration: 450ms,
1032
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1033
+ property: stroke-dashoffset,
1034
+ base: (
1035
+ stroke-dasharray: 1,
1036
+ stroke-dashoffset: 0,
1037
+ ),
1038
+ to: (
1039
+ stroke-dashoffset: 0.35px,
1040
+ ),
1041
+ ),
1042
+ ),
1043
+ 'delete-marker': (
1044
+ (
1045
+ part: 'awsui-icon-arm',
1046
+ duration: 450ms,
1047
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1048
+ property: stroke-dashoffset,
1049
+ base: (
1050
+ stroke-dasharray: 1,
1051
+ stroke-dashoffset: 0,
1052
+ ),
1053
+ to: (
1054
+ stroke-dashoffset: 0.35px,
1055
+ ),
1056
+ ),
1057
+ ),
1058
+ 'calendar': (
1059
+ (
1060
+ part: 'awsui-icon-corner',
1061
+ duration: 220ms,
1062
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1063
+ property: rx,
1064
+ base: (
1065
+ rx: 0px,
1066
+ ),
1067
+ to: (
1068
+ rx: 4px,
1069
+ ),
1070
+ ),
1071
+ ),
1072
+ 'call': (
1073
+ (
1074
+ part: 'awsui-icon-handset',
1075
+ animation: icon-handset-ring,
1076
+ duration: 400ms,
1077
+ easing: ease-in-out,
1078
+ origin: 8px 8px,
1079
+ ),
1080
+ (
1081
+ part: 'awsui-icon-ring',
1082
+ duration: 180ms,
1083
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1084
+ property: stroke-dashoffset,
1085
+ base: (
1086
+ stroke-dasharray: 1,
1087
+ stroke-dashoffset: 0,
1088
+ ),
1089
+ to: (
1090
+ stroke-dashoffset: 0.333333px,
1091
+ ),
1092
+ ),
1093
+ ),
1094
+ 'command-prompt': (
1095
+ (
1096
+ part: 'awsui-icon-cursor',
1097
+ animation: icon-cursor-blink,
1098
+ duration: 1000ms,
1099
+ easing: ease,
1100
+ ),
1101
+ ),
1102
+ 'contact': (
1103
+ (
1104
+ part: 'awsui-icon-tail-leg',
1105
+ duration: 450ms,
1106
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1107
+ origin: 6px 12px,
1108
+ base: (
1109
+ transform: translateX(0) scaleY(1),
1110
+ ),
1111
+ to: (
1112
+ transform: translateX(0.5px) scaleY(0.75),
1113
+ ),
1114
+ ),
1115
+ (
1116
+ part: 'awsui-icon-tail-diag',
1117
+ duration: 450ms,
1118
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1119
+ origin: 10px 12px,
1120
+ base: (
1121
+ transform: translateX(0) rotate(143.13deg) scaleX(1) rotate(-143.13deg),
1122
+ ),
1123
+ to: (
1124
+ transform: translateX(-0.5px) rotate(143.13deg) scaleX(0.75) rotate(-143.13deg),
1125
+ ),
1126
+ ),
1127
+ (
1128
+ part: 'awsui-icon-edge-left',
1129
+ duration: 450ms,
1130
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1131
+ origin: 2px 12px,
1132
+ to: (
1133
+ transform: scaleX(1.125),
1134
+ ),
1135
+ ),
1136
+ (
1137
+ part: 'awsui-icon-edge-right',
1138
+ duration: 450ms,
1139
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1140
+ origin: 14px 12px,
1141
+ to: (
1142
+ transform: scaleX(1.125),
1143
+ ),
1144
+ ),
1145
+ ),
1146
+ 'drag-indicator': (
1147
+ (
1148
+ part: 'awsui-icon-dot-tl',
1149
+ duration: 400ms,
1150
+ easing: $_ease-spring,
1151
+ to: (
1152
+ transform: translate(0.5px, 1.25px),
1153
+ ),
1154
+ ),
1155
+ (
1156
+ part: 'awsui-icon-dot-tr',
1157
+ duration: 400ms,
1158
+ easing: $_ease-spring,
1159
+ to: (
1160
+ transform: translate(-0.5px, 1.25px),
1161
+ ),
1162
+ ),
1163
+ (
1164
+ part: 'awsui-icon-dot-ml',
1165
+ duration: 400ms,
1166
+ easing: $_ease-spring,
1167
+ to: (
1168
+ transform: translateX(0.5px),
1169
+ ),
1170
+ ),
1171
+ (
1172
+ part: 'awsui-icon-dot-mr',
1173
+ duration: 400ms,
1174
+ easing: $_ease-spring,
1175
+ to: (
1176
+ transform: translateX(-0.5px),
1177
+ ),
1178
+ ),
1179
+ (
1180
+ part: 'awsui-icon-dot-bl',
1181
+ duration: 400ms,
1182
+ easing: $_ease-spring,
1183
+ to: (
1184
+ transform: translate(0.5px, -1.25px),
1185
+ ),
1186
+ ),
1187
+ (
1188
+ part: 'awsui-icon-dot-br',
1189
+ duration: 400ms,
1190
+ easing: $_ease-spring,
1191
+ to: (
1192
+ transform: translate(-0.5px, -1.25px),
1193
+ ),
1194
+ ),
1195
+ ),
1196
+ 'edit': (
1197
+ (
1198
+ part: 'awsui-icon-nib-a',
1199
+ duration: 450ms,
1200
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1201
+ origin: 2.7px 9.785px,
1202
+ // rotate(θ) scaleX(s) rotate(-θ) shortens the line along its own
1203
+ // direction; at rest the pre- and post-rotations cancel out.
1204
+ base: (
1205
+ transform: rotate(99.4845deg) scaleX(1) rotate(-99.4845deg),
1206
+ ),
1207
+ to: (
1208
+ transform: rotate(90deg) scaleX(0.82155) rotate(-99.4845deg),
1209
+ ),
1210
+ ),
1211
+ (
1212
+ part: 'awsui-icon-nib-b',
1213
+ duration: 450ms,
1214
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1215
+ origin: 6.19px 13.275px,
1216
+ base: (
1217
+ transform: rotate(170.516deg) scaleX(1) rotate(-170.516deg),
1218
+ ),
1219
+ to: (
1220
+ transform: rotate(180deg) scaleX(0.82155) rotate(-170.516deg),
1221
+ ),
1222
+ ),
1223
+ (
1224
+ part: 'awsui-icon-eraser',
1225
+ duration: 450ms,
1226
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1227
+ to: (
1228
+ transform: translate(0.7px, -0.7px),
1229
+ ),
1230
+ ),
1231
+ ),
1232
+ 'ellipsis': (
1233
+ (
1234
+ part: 'awsui-icon-dot-1',
1235
+ duration: 400ms,
1236
+ easing: $_ease-spring,
1237
+ to: (
1238
+ transform: translateY(1.25px),
1239
+ ),
1240
+ ),
1241
+ (
1242
+ part: 'awsui-icon-dot-3',
1243
+ duration: 400ms,
1244
+ easing: $_ease-spring,
1245
+ to: (
1246
+ transform: translateY(-1.25px),
1247
+ ),
1248
+ ),
1249
+ ),
1250
+ 'envelope': (
1251
+ (
1252
+ part: 'awsui-icon-flap-left',
1253
+ duration: 400ms,
1254
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1255
+ origin: 1px 3px,
1256
+ base: (
1257
+ transform: rotate(40.601deg) scaleX(1) rotate(-40.601deg),
1258
+ ),
1259
+ to: (
1260
+ transform: rotate(29.745deg) scaleX(0.8745) rotate(-40.601deg),
1261
+ ),
1262
+ ),
1263
+ (
1264
+ part: 'awsui-icon-flap-right',
1265
+ duration: 400ms,
1266
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1267
+ origin: 15px 3px,
1268
+ base: (
1269
+ transform: rotate(-40.601deg) scaleX(1) rotate(40.601deg),
1270
+ ),
1271
+ to: (
1272
+ transform: rotate(-29.745deg) scaleX(0.8745) rotate(40.601deg),
1273
+ ),
1274
+ ),
1275
+ ),
1276
+ 'folder-open': (
1277
+ (
1278
+ part: 'awsui-icon-flap-top',
1279
+ duration: 280ms,
1280
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1281
+ origin: 0 0,
1282
+ to: (
1283
+ transform: translateX(0.7px) scaleX(1.3),
1284
+ ),
1285
+ ),
1286
+ (
1287
+ part: 'awsui-icon-flap-bottom',
1288
+ duration: 280ms,
1289
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1290
+ to: (
1291
+ transform: translateX(-1px),
1292
+ ),
1293
+ ),
1294
+ (
1295
+ part: 'awsui-icon-flap-left',
1296
+ duration: 280ms,
1297
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1298
+ origin: 0 0,
1299
+ to: (
1300
+ transform: translateX(2.96152px) skew(-15.3614deg) scaleX(0.961524),
1301
+ ),
1302
+ ),
1303
+ (
1304
+ part: 'awsui-icon-flap-right',
1305
+ duration: 280ms,
1306
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1307
+ origin: 0 0,
1308
+ to: (
1309
+ transform: translate(7.64684px, 1px) skew(-24.6726deg) scale(0.919145, 0.857143),
1310
+ ),
1311
+ ),
1312
+ ),
1313
+ 'globe': (
1314
+ (
1315
+ part: 'awsui-icon-meridian',
1316
+ animation: icon-meridian-turn,
1317
+ duration: 400ms,
1318
+ easing: linear,
1319
+ ),
1320
+ ),
1321
+ 'grid-view': (
1322
+ (
1323
+ part: 'awsui-icon-cell-tl',
1324
+ duration: 280ms,
1325
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1326
+ origin: 6px 6px,
1327
+ property: (
1328
+ transform,
1329
+ stroke-width,
1330
+ ),
1331
+ to: (
1332
+ transform: scale(1.25),
1333
+ stroke-width: calc(var(--awsui-internal-style-icon-stroke-width, 1.5px) / 1.25),
1334
+ ),
1335
+ ),
1336
+ (
1337
+ part: 'awsui-icon-cell-br',
1338
+ duration: 280ms,
1339
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1340
+ origin: 10px 10px,
1341
+ property: (
1342
+ transform,
1343
+ stroke-width,
1344
+ ),
1345
+ to: (
1346
+ transform: scale(1.25),
1347
+ stroke-width: calc(var(--awsui-internal-style-icon-stroke-width, 1.5px) / 1.25),
1348
+ ),
1349
+ ),
1350
+ (
1351
+ part: 'awsui-icon-cell-tr',
1352
+ duration: 280ms,
1353
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1354
+ origin: 10px 6px,
1355
+ property: (
1356
+ transform,
1357
+ stroke-width,
1358
+ ),
1359
+ to: (
1360
+ transform: scale(0.833333),
1361
+ stroke-width: calc(var(--awsui-internal-style-icon-stroke-width, 1.5px) / 0.833333),
1362
+ ),
1363
+ ),
1364
+ (
1365
+ part: 'awsui-icon-cell-bl',
1366
+ duration: 280ms,
1367
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1368
+ origin: 6px 10px,
1369
+ property: (
1370
+ transform,
1371
+ stroke-width,
1372
+ ),
1373
+ to: (
1374
+ transform: scale(0.833333),
1375
+ stroke-width: calc(var(--awsui-internal-style-icon-stroke-width, 1.5px) / 0.833333),
1376
+ ),
1377
+ ),
1378
+ ),
1379
+ 'insert-row': (
1380
+ (
1381
+ part: 'awsui-icon-frame',
1382
+ duration: 350ms,
1383
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1384
+ property: stroke-dashoffset,
1385
+ base: (
1386
+ stroke-dasharray: 32 2,
1387
+ stroke-dashoffset: 0,
1388
+ ),
1389
+ to: (
1390
+ stroke-dashoffset: -2px,
1391
+ ),
1392
+ ),
1393
+ (
1394
+ part: 'awsui-icon-plus-h',
1395
+ duration: 350ms,
1396
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1397
+ origin: 16px 11px,
1398
+ base: (
1399
+ transform: scaleX(1),
1400
+ ),
1401
+ to: (
1402
+ transform: scaleX(1.25),
1403
+ ),
1404
+ ),
1405
+ (
1406
+ part: 'awsui-icon-plus-v',
1407
+ duration: 350ms,
1408
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1409
+ origin: 12px 11px,
1410
+ base: (
1411
+ transform: translateX(0) scaleY(1),
1412
+ ),
1413
+ to: (
1414
+ transform: translateX(-1px) scaleY(1.25),
1415
+ ),
1416
+ ),
1417
+ ),
1418
+ 'keyboard': (
1419
+ (
1420
+ part: 'awsui-icon-key-tl',
1421
+ animation: icon-key-press,
1422
+ duration: 180ms,
1423
+ easing: ease,
1424
+ ),
1425
+ (
1426
+ part: 'awsui-icon-key-tc',
1427
+ animation: icon-key-press,
1428
+ duration: 180ms,
1429
+ easing: ease,
1430
+ delay: 70ms,
1431
+ ),
1432
+ (
1433
+ part: 'awsui-icon-key-tr',
1434
+ animation: icon-key-press,
1435
+ duration: 180ms,
1436
+ easing: ease,
1437
+ delay: 140ms,
1438
+ ),
1439
+ (
1440
+ part: 'awsui-icon-key-ml',
1441
+ animation: icon-key-press,
1442
+ duration: 180ms,
1443
+ easing: ease,
1444
+ delay: 210ms,
1445
+ ),
1446
+ (
1447
+ part: 'awsui-icon-key-mc',
1448
+ animation: icon-key-press,
1449
+ duration: 180ms,
1450
+ easing: ease,
1451
+ delay: 280ms,
1452
+ ),
1453
+ (
1454
+ part: 'awsui-icon-key-mr',
1455
+ animation: icon-key-press,
1456
+ duration: 180ms,
1457
+ easing: ease,
1458
+ delay: 350ms,
1459
+ ),
1460
+ (
1461
+ part: 'awsui-icon-space',
1462
+ animation: icon-key-press,
1463
+ duration: 180ms,
1464
+ easing: ease,
1465
+ // The space bar skips beat 6 of the 70ms ripple and lands on beat 7.
1466
+ delay: 490ms,
1467
+ ),
1468
+ ),
1469
+ 'light-dark': (
1470
+ (
1471
+ part: 'awsui-icon-half',
1472
+ duration: 400ms,
1473
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1474
+ origin: 8px 8px,
1475
+ to: (
1476
+ transform: rotate(180deg),
1477
+ ),
1478
+ ),
1479
+ ),
1480
+ 'list-view': (
1481
+ (
1482
+ part: 'awsui-icon-line-middle',
1483
+ duration: 400ms,
1484
+ easing: $_ease-spring,
1485
+ origin: 5px 0,
1486
+ to: (
1487
+ transform: scaleX(0.5),
1488
+ ),
1489
+ ),
1490
+ (
1491
+ part: 'awsui-icon-line-bottom',
1492
+ duration: 400ms,
1493
+ easing: $_ease-spring,
1494
+ origin: 5px 0,
1495
+ to: (
1496
+ transform: scaleX(0.75),
1497
+ ),
1498
+ ),
1499
+ ),
1500
+ 'location-pin': (
1501
+ (
1502
+ part: 'awsui-icon-dot',
1503
+ duration: 350ms,
1504
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1505
+ to: (
1506
+ transform: translateY(1px),
1507
+ ),
1508
+ ),
1509
+ (
1510
+ part: 'awsui-icon-head',
1511
+ duration: 350ms,
1512
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1513
+ to: (
1514
+ transform: translateY(1px),
1515
+ ),
1516
+ ),
1517
+ (
1518
+ part: 'awsui-icon-leg-left',
1519
+ duration: 350ms,
1520
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1521
+ origin: 4.00977px 9px,
1522
+ base: (
1523
+ transform: translateY(0) rotate(56.31deg) scaleX(1) rotate(-56.31deg),
1524
+ ),
1525
+ to: (
1526
+ transform: translateY(1px) rotate(45deg) scaleX(0.7845) rotate(-56.31deg),
1527
+ ),
1528
+ ),
1529
+ (
1530
+ part: 'awsui-icon-leg-right',
1531
+ duration: 350ms,
1532
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1533
+ origin: 12.0098px 9px,
1534
+ base: (
1535
+ transform: translateY(0) rotate(-56.31deg) scaleX(1) rotate(56.31deg),
1536
+ ),
1537
+ to: (
1538
+ transform: translateY(1px) rotate(-45deg) scaleX(0.7845) rotate(56.31deg),
1539
+ ),
1540
+ ),
1541
+ ),
1542
+ 'transcript': (
1543
+ (
1544
+ part: 'awsui-icon-line-top',
1545
+ duration: 350ms,
1546
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1547
+ origin: 4px 0,
1548
+ to: (
1549
+ transform: scaleX(0.625),
1550
+ ),
1551
+ ),
1552
+ (
1553
+ part: 'awsui-icon-line-bottom',
1554
+ duration: 350ms,
1555
+ easing: cubic-bezier(0.4, 0, 0.2, 1),
1556
+ origin: 4px 0,
1557
+ to: (
1558
+ transform: scaleX(1.6),
1559
+ ),
1560
+ ),
1561
+ ),
1562
+ );
1563
+
1564
+ // Motion declarations must sit under a mixin named *with-motion, with at most sass
1565
+ // control flow in between, per the no-motion-outside-of-mixin stylelint rule. This is
1566
+ // that mixin: it scopes @content to opted-in themes and adds the runtime motion gate
1567
+ // ($_motion-on).
1568
+ @mixin with-motion {
1569
+ @include theming.expressive-motion-only($_motion-on) {
1570
+ @content;
1571
+ }
1572
+ }
1573
+
1574
+ // Also fires on :focus-visible, covering a focus owner nested inside the trigger.
1575
+ @mixin _on-hover-trigger($suffix) {
1576
+ #{'#{$_hover-trigger}:hover #{$suffix}'},
1577
+ #{'#{$_hover-trigger}:is(:focus-visible, :has([#{$_trigger-attribute}~="focus"]:focus-visible)) #{$suffix}'} {
1578
+ @content;
1579
+ }
1580
+ }
1581
+
1582
+ @function _target($part) {
1583
+ @if not $part {
1584
+ @return '> :global(#{$_opted-in})';
1585
+ }
1586
+ @return '> :global(#{$_opted-in} .#{$part})';
1587
+ }
1588
+
1589
+ // A single-spec entry needs a trailing comma or Prettier turns the list back into a bare map.
1590
+ @function _specs($value) {
1591
+ @if meta.type-of($value) == 'map' {
1592
+ @return list.append((), $value);
1593
+ }
1594
+ @return $value;
1595
+ }
1596
+
1597
+ @mixin generic-hover-motion {
1598
+ .icon > :global(#{$_opted-in}) {
1599
+ @include with-motion {
1600
+ transition-property: transform;
1601
+ transition-duration: 250ms;
1602
+ transition-timing-function: ease;
1603
+ }
1604
+ }
1605
+
1606
+ @include _on-hover-trigger('.icon#{$_animating-icon} > :global(#{$_opted-in})') {
1607
+ @include with-motion {
1608
+ transform: scale(0.94);
1609
+ }
1610
+ }
1611
+ }
1612
+
1613
+ // Icons with BOTH a whole-icon spec and a part spec are excluded — the cancel would out-specify the whole-icon rule and reset it to none.
1614
+ @mixin _cancel-floor-under-hover-parts {
1615
+ $names: ();
1616
+ $parts: ();
1617
+
1618
+ @each $name, $specs in $icon-hover-motion {
1619
+ $whole-icon: false;
1620
+ @each $spec in _specs($specs) {
1621
+ @if not map.get($spec, part) {
785
1622
  $whole-icon: true;
786
1623
  }
787
1624
  }
@@ -990,7 +1827,7 @@ $icon-hover-motion: (
990
1827
  }
991
1828
  20%,
992
1829
  60% {
993
- transform: translateX(14%);
1830
+ transform: translateX(8%);
994
1831
  }
995
1832
  }
996
1833
 
@@ -1003,7 +1840,7 @@ $icon-hover-motion: (
1003
1840
  }
1004
1841
  20%,
1005
1842
  60% {
1006
- transform: translateX(-14%);
1843
+ transform: translateX(-8%);
1007
1844
  }
1008
1845
  }
1009
1846
 
@@ -1016,7 +1853,7 @@ $icon-hover-motion: (
1016
1853
  }
1017
1854
  20%,
1018
1855
  60% {
1019
- stroke-dashoffset: -2.24px;
1856
+ stroke-dashoffset: -0.049px;
1020
1857
  }
1021
1858
  }
1022
1859
 
@@ -1059,6 +1896,60 @@ $icon-hover-motion: (
1059
1896
  }
1060
1897
  }
1061
1898
 
1899
+ @keyframes icon-panel-slide-down {
1900
+ 0%,
1901
+ 100% {
1902
+ transform: translateY(0);
1903
+ }
1904
+ 45% {
1905
+ transform: translateY(300%);
1906
+ }
1907
+ }
1908
+
1909
+ @keyframes icon-panel-slide-right {
1910
+ 0%,
1911
+ 100% {
1912
+ transform: translateX(0);
1913
+ }
1914
+ 45% {
1915
+ transform: translateX(300%);
1916
+ }
1917
+ }
1918
+
1919
+ @keyframes icon-bar-slide-left {
1920
+ 0%,
1921
+ 100% {
1922
+ transform: translateX(0);
1923
+ }
1924
+ 45% {
1925
+ transform: translateX(-8px);
1926
+ }
1927
+ }
1928
+
1929
+ @keyframes icon-nudge-right {
1930
+ 0%,
1931
+ 40%,
1932
+ 80%,
1933
+ 100% {
1934
+ transform: translateX(0);
1935
+ }
1936
+ 20%,
1937
+ 60% {
1938
+ transform: translateX(8%);
1939
+ }
1940
+ }
1941
+
1942
+ @keyframes icon-dot-blink {
1943
+ 0%,
1944
+ 100% {
1945
+ visibility: visible;
1946
+ }
1947
+ 35%,
1948
+ 65% {
1949
+ visibility: hidden;
1950
+ }
1951
+ }
1952
+
1062
1953
  @keyframes icon-gait-a {
1063
1954
  0%,
1064
1955
  100% {
@@ -1082,9 +1973,11 @@ $icon-hover-motion: (
1082
1973
  @keyframes icon-sparkle-pinch {
1083
1974
  0%,
1084
1975
  100% {
1976
+ animation-timing-function: cubic-bezier(0.2, 0, 0.2, 1);
1085
1977
  transform: scale(1);
1086
1978
  }
1087
1979
  40% {
1980
+ animation-timing-function: cubic-bezier(0.3, 0, 0.35, 1);
1088
1981
  transform: scale(0.8) rotate(-15deg);
1089
1982
  }
1090
1983
  }
@@ -1127,25 +2020,159 @@ $icon-hover-motion: (
1127
2020
  }
1128
2021
  }
1129
2022
 
1130
- @keyframes icon-coil {
2023
+ // 7.8125% is 1.25px of the 16px view box.
2024
+ @keyframes icon-glyph-nudge-up {
1131
2025
  0%,
2026
+ 40%,
2027
+ 80%,
1132
2028
  100% {
1133
- transform: rotate(0deg);
2029
+ transform: translateY(0);
1134
2030
  }
1135
- 55% {
1136
- transform: rotate(-14deg);
2031
+ 20%,
2032
+ 60% {
2033
+ transform: translateY(-7.8125%);
2034
+ }
2035
+ }
2036
+
2037
+ @keyframes icon-glyph-nudge-down {
2038
+ 0%,
2039
+ 40%,
2040
+ 80%,
2041
+ 100% {
2042
+ transform: translateY(0);
2043
+ }
2044
+ 20%,
2045
+ 60% {
2046
+ transform: translateY(7.8125%);
2047
+ }
2048
+ }
2049
+
2050
+ @keyframes icon-glyph-nudge-left {
2051
+ 0%,
2052
+ 40%,
2053
+ 80%,
2054
+ 100% {
2055
+ transform: translateX(0);
2056
+ }
2057
+ 20%,
2058
+ 60% {
2059
+ transform: translateX(-7.8125%);
2060
+ }
2061
+ }
2062
+
2063
+ @keyframes icon-glyph-nudge-right {
2064
+ 0%,
2065
+ 40%,
2066
+ 80%,
2067
+ 100% {
2068
+ transform: translateX(0);
2069
+ }
2070
+ 20%,
2071
+ 60% {
2072
+ transform: translateX(7.8125%);
1137
2073
  }
1138
2074
  }
1139
2075
 
1140
- @keyframes icon-coil-arrow {
2076
+ @keyframes icon-handset-ring {
1141
2077
  0%,
1142
2078
  100% {
1143
- stroke-dasharray: 0 0 10.01 0;
1144
2079
  transform: rotate(0deg);
1145
2080
  }
2081
+ 20% {
2082
+ transform: rotate(4deg);
2083
+ }
2084
+ 40% {
2085
+ transform: rotate(-3deg);
2086
+ }
2087
+ 60% {
2088
+ transform: rotate(2deg);
2089
+ }
2090
+ 80% {
2091
+ transform: rotate(-1deg);
2092
+ }
2093
+ }
2094
+
2095
+ @keyframes icon-cursor-blink {
2096
+ 0%,
2097
+ 30%,
2098
+ 60%,
2099
+ 100% {
2100
+ visibility: visible;
2101
+ }
2102
+ 10%,
2103
+ 20%,
2104
+ 40%,
2105
+ 50%,
2106
+ 70%,
2107
+ 80% {
2108
+ visibility: hidden;
2109
+ }
2110
+ }
2111
+
2112
+ // A cosine table: rx follows abs(cos) so the meridian appears to spin once
2113
+ // around the pole at constant angular speed.
2114
+ @keyframes icon-meridian-turn {
2115
+ 0%,
2116
+ 100% {
2117
+ rx: 3px;
2118
+ }
2119
+ 5%,
2120
+ 95% {
2121
+ rx: 2.717px;
2122
+ }
2123
+ 10%,
2124
+ 90% {
2125
+ rx: 2.429px;
2126
+ }
2127
+ 15%,
2128
+ 85% {
2129
+ rx: 2.136px;
2130
+ }
2131
+ 20%,
2132
+ 80% {
2133
+ rx: 1.838px;
2134
+ }
2135
+ 25%,
2136
+ 75% {
2137
+ rx: 1.538px;
2138
+ }
2139
+ 30%,
2140
+ 70% {
2141
+ rx: 1.234px;
2142
+ }
2143
+ 35%,
2144
+ 65% {
2145
+ rx: 0.927px;
2146
+ }
2147
+ 40%,
2148
+ 60% {
2149
+ rx: 0.619px;
2150
+ }
2151
+ 45%,
1146
2152
  55% {
1147
- stroke-dasharray: 0 2 6.01 2;
1148
- transform: rotate(-14deg);
2153
+ rx: 0.31px;
2154
+ }
2155
+ 50% {
2156
+ rx: 0.02px;
2157
+ }
2158
+ }
2159
+
2160
+ // The dip stops just short of the row below: (3px gap - stroke) / 2.
2161
+ @keyframes icon-key-press {
2162
+ 0% {
2163
+ animation-timing-function: cubic-bezier(0.3, 0, 0.6, 1);
2164
+ transform: translateY(0);
2165
+ }
2166
+ 30% {
2167
+ animation-timing-function: linear;
2168
+ transform: translateY(calc((3px - var(--awsui-internal-style-icon-stroke-width, 1.5px)) / 2));
2169
+ }
2170
+ 40% {
2171
+ animation-timing-function: cubic-bezier(0.3, 0, 0.3, 1);
2172
+ transform: translateY(calc((3px - var(--awsui-internal-style-icon-stroke-width, 1.5px)) / 2));
2173
+ }
2174
+ 100% {
2175
+ transform: translateY(0);
1149
2176
  }
1150
2177
  }
1151
2178
  }