move.gl 0.0.1

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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/css/move.gl.css +2 -0
  4. package/css/move.gl.min.css +2 -0
  5. package/package.json +55 -0
  6. package/scss/classes/_animations.scss +576 -0
  7. package/scss/classes/_index.scss +0 -0
  8. package/scss/classes/_transforms.scss +124 -0
  9. package/scss/classes/keyboard.scss +18 -0
  10. package/scss/classes/screensaver.scss +15 -0
  11. package/scss/dev/_banner.scss +36 -0
  12. package/scss/dev/_debug.scss +18 -0
  13. package/scss/dev/_deprecation.scss +10 -0
  14. package/scss/dev/_index.scss +8 -0
  15. package/scss/dev/_modules.scss +24 -0
  16. package/scss/effects/_filter.scss +176 -0
  17. package/scss/effects/_index.scss +23 -0
  18. package/scss/effects/_opacity.scss +62 -0
  19. package/scss/effects/_shadow.scss +175 -0
  20. package/scss/functions/_index.scss +0 -0
  21. package/scss/functions/scenes/_bubble.scss +19 -0
  22. package/scss/functions/scenes/_index.scss +20 -0
  23. package/scss/index.scss +0 -0
  24. package/scss/keyframes/_beat.scss +26 -0
  25. package/scss/keyframes/_index.scss +0 -0
  26. package/scss/maps/_index.scss +0 -0
  27. package/scss/maps/_mouse.scss +96 -0
  28. package/scss/mixins/_accessibility.scss +70 -0
  29. package/scss/mixins/_boot.scss +51 -0
  30. package/scss/mixins/_hover.scss +51 -0
  31. package/scss/mixins/_index.scss +0 -0
  32. package/scss/mixins/_selection.scss +321 -0
  33. package/scss/mixins/_shape.scss +44 -0
  34. package/scss/mixins/_touch.scss +95 -0
  35. package/scss/mixins/animations/--hover.scss +107 -0
  36. package/scss/mixins/animations/_base.scss +337 -0
  37. package/scss/mixins/animations/_beat.scss +119 -0
  38. package/scss/mixins/animations/_blink.scss +151 -0
  39. package/scss/mixins/animations/_bounce.scss +192 -0
  40. package/scss/mixins/animations/_elastic.scss +65 -0
  41. package/scss/mixins/animations/_fade.scss +154 -0
  42. package/scss/mixins/animations/_flash.scss +177 -0
  43. package/scss/mixins/animations/_flip.scss +72 -0
  44. package/scss/mixins/animations/_float.scss +126 -0
  45. package/scss/mixins/animations/_glow.scss +179 -0
  46. package/scss/mixins/animations/_heartbeat.scss +175 -0
  47. package/scss/mixins/animations/_hinge.scss +119 -0
  48. package/scss/mixins/animations/_index.scss +37 -0
  49. package/scss/mixins/animations/_jello.scss +129 -0
  50. package/scss/mixins/animations/_jiggle.scss +163 -0
  51. package/scss/mixins/animations/_lightspeed.scss +130 -0
  52. package/scss/mixins/animations/_nod.scss +161 -0
  53. package/scss/mixins/animations/_pop.scss +150 -0
  54. package/scss/mixins/animations/_pulse.scss +213 -0
  55. package/scss/mixins/animations/_ripple.scss +169 -0
  56. package/scss/mixins/animations/_roll.scss +261 -0
  57. package/scss/mixins/animations/_rotate.scss +428 -0
  58. package/scss/mixins/animations/_rubber.scss +116 -0
  59. package/scss/mixins/animations/_scale.scss +113 -0
  60. package/scss/mixins/animations/_shake.scss +182 -0
  61. package/scss/mixins/animations/_slide.scss +294 -0
  62. package/scss/mixins/animations/_spin.scss +219 -0
  63. package/scss/mixins/animations/_sway.scss +167 -0
  64. package/scss/mixins/animations/_swing.scss +247 -0
  65. package/scss/mixins/animations/_tada.scss +233 -0
  66. package/scss/mixins/animations/_twist.scss +177 -0
  67. package/scss/mixins/animations/_wave.scss +166 -0
  68. package/scss/mixins/animations/_wobble.scss +254 -0
  69. package/scss/mixins/animations/_zoom.scss +166 -0
  70. package/scss/mixins/effects/_filter.scss +148 -0
  71. package/scss/mixins/effects/_index.scss +0 -0
  72. package/scss/mixins/effects/_shadow.scss +21 -0
  73. package/scss/mixins/loaders/_index.scss +0 -0
  74. package/scss/mixins/loaders/_progress.scss +174 -0
  75. package/scss/mixins/loaders/_spinner.scss +101 -0
  76. package/scss/mixins/loaders/circle_01.scss +22 -0
  77. package/scss/mixins/loaders/circle_02.scss +19 -0
  78. package/scss/mixins/loaders/circle_03.scss +29 -0
  79. package/scss/mixins/loaders/circle_inner_01.scss +33 -0
  80. package/scss/mixins/loaders/circle_inner_02.scss +33 -0
  81. package/scss/mixins/loaders/circle_inner_03.scss +34 -0
  82. package/scss/mixins/mouse/_cursor.scss +182 -0
  83. package/scss/mixins/mouse/_index.scss +0 -0
  84. package/scss/mixins/mouse/_pointer.scss +258 -0
  85. package/scss/mixins/scroll/_index.scss +0 -0
  86. package/scss/mixins/scroll/_scroll.scss +104 -0
  87. package/scss/mixins/scroll/_scrollbar.scss +249 -0
  88. package/scss/mixins/transforms/_flip.scss +76 -0
  89. package/scss/mixins/transforms/_index.scss +23 -0
  90. package/scss/mixins/transforms/_matrix.scss +1 -0
  91. package/scss/mixins/transforms/_perspective.scss +11 -0
  92. package/scss/mixins/transforms/_rotate.scss +101 -0
  93. package/scss/mixins/transforms/_scale.scss +11 -0
  94. package/scss/mixins/transforms/_skew.scss +13 -0
  95. package/scss/mixins/transforms/_translate.scss +13 -0
  96. package/scss/mixins/transitions/_index.scss +0 -0
  97. package/scss/mixins/transitions/_transition.scss +13 -0
  98. package/scss/variables/_animation.scss +91 -0
  99. package/scss/variables/_index.scss +0 -0
  100. package/ts/ARContent.ts +27 -0
  101. package/ts/ARInteraction.ts +34 -0
  102. package/ts/AdaptiveUI.ts +25 -0
  103. package/ts/ContentStreaming.ts +20 -0
  104. package/ts/Draggable.ts +71 -0
  105. package/ts/DynamicEnvironment.ts +60 -0
  106. package/ts/Gesture.ts +168 -0
  107. package/ts/ImmersiveAudio.ts +40 -0
  108. package/ts/InteractiveCanvas.ts +177 -0
  109. package/ts/InteractiveVideo.ts +29 -0
  110. package/ts/Keyboard.ts +162 -0
  111. package/ts/RealTimeCollaboration.ts +25 -0
  112. package/ts/Screensaver.ts +140 -0
  113. package/ts/SpatialNavigation.ts +38 -0
  114. package/ts/UserProfile.ts +27 -0
  115. package/ts/VRExperience.ts +58 -0
  116. package/ts/VideoOverlay.ts +116 -0
  117. package/ts/index.ts +0 -0
@@ -0,0 +1,44 @@
1
+ ///
2
+ /// Creates a circular element with a given size.
3
+ ///
4
+ /// @name circle
5
+ /// @param {Number|Unit} $size - The diameter of the circle.
6
+ /// @example scss - Usage
7
+ /// @include circle(50px);
8
+ ///
9
+ @mixin circle($size) {
10
+ width: $size;
11
+ height: $size;
12
+ border-radius: 50%;
13
+ }
14
+
15
+
16
+ ///
17
+ /// Creates a triangle using only CSS borders.
18
+ ///
19
+ /// @name triangle
20
+ /// @param {Number|Unit} $size - The size of the triangle.
21
+ /// @param {Color} $color - The color of the triangle.
22
+ /// @param {String} $direction - The direction the triangle points (default: up).
23
+ /// @example scss - Usage
24
+ /// @include triangle(10px, #ff5722, down);
25
+ ///
26
+ @mixin triangle($size, $color, $direction: up) {
27
+ width: 0;
28
+ height: 0;
29
+ border-style: solid;
30
+
31
+ @if $direction == up {
32
+ border-width: 0 $size $size $size;
33
+ border-color: transparent transparent $color transparent;
34
+ } @else if $direction == down {
35
+ border-width: $size $size 0 $size;
36
+ border-color: $color transparent transparent transparent;
37
+ } @else if $direction == left {
38
+ border-width: $size $size $size 0;
39
+ border-color: transparent $color transparent transparent;
40
+ } @else if $direction == right {
41
+ border-width: $size 0 $size $size;
42
+ border-color: transparent transparent transparent $color;
43
+ }
44
+ }
@@ -0,0 +1,95 @@
1
+
2
+
3
+ // ============================================================================
4
+ // Touch
5
+ // ============================================================================
6
+ @use "../variables" as *;
7
+ @use "../mixins" as *;
8
+
9
+
10
+ .touch_scroll {
11
+ overflow-y: auto;
12
+ -webkit-overflow-scrolling: touch;
13
+ }
14
+
15
+
16
+ // Increase Touch Area
17
+ // Ensure interactive elements are easy to tap by increasing their size or padding, especially for smaller elements like buttons and links.
18
+
19
+ // @mixin touch-target($min-size: 44px) {
20
+ // min-width: $min-size;
21
+ // min-height: $min-size;
22
+ // padding: 10px;
23
+ // box-sizing: border-box; // Include padding in the element's size
24
+ // }
25
+
26
+ // .button, .link {
27
+ // @include touch-target;
28
+ // // Additional styling for buttons and links
29
+ // }
30
+ // Visual Feedback for Touch
31
+ // Provide visual feedback for touch interactions such as color change, scale, or shadow to indicate an active state.
32
+
33
+
34
+ // @mixin touch-feedback {
35
+ // transition: background-color 0.3s, transform 0.3s, box-shadow 0.3s;
36
+
37
+ // &:active {
38
+ // background-color: darken($primary-color, 10%);
39
+ // transform: scale(0.95);
40
+ // box-shadow: 0 5px 15px rgba(0,0,0,0.2);
41
+ // }
42
+ // }
43
+
44
+ // .interactive-element {
45
+ // @include touch-feedback;
46
+ // // Base styling for the element
47
+ // }
48
+ // Hover States with Touch Consideration
49
+ // Since touch devices generally don't support hover in the traditional sense, ensure that styles relying on hover also have equivalent styles for focus or active states to accommodate touch interactions.
50
+
51
+
52
+ // @mixin hover-touch-styles {
53
+ // &:hover, &:focus, &:active {
54
+ // // Shared styles for hover, focus, and active states
55
+ // background-color: lighten($secondary-color, 5%);
56
+ // outline: none; // Remove focus outline if not desired
57
+ // }
58
+ // }
59
+
60
+ // .interactive-element {
61
+ // @include hover-touch-styles;
62
+ // // Base styling
63
+ // }
64
+ // Disable Zoom on Form Element Focus
65
+ // On touch devices, focusing on an input field can cause the viewport to zoom. You can control this behavior with the font-size property, ensuring it's above the threshold that triggers zooming, typically around 16px.
66
+
67
+
68
+ // @mixin no-zoom-input {
69
+ // font-size: 16px; // Prevent zoom on focus on most mobile browsers
70
+ // &:focus {
71
+ // outline: none; // Optionally remove the outline
72
+ // }
73
+ // }
74
+
75
+ // input, select, textarea {
76
+ // @include no-zoom-input;
77
+ // }
78
+ // Gestures and Swipes
79
+ // For elements that use swipe gestures, ensure that the touch area is large enough and that the visual cues indicate swipeability.
80
+
81
+
82
+ // .swipeable-element {
83
+ // @include touch-target(60px); // Larger touch target for easier swiping
84
+ // // Additional visual cues to indicate swipeability
85
+ // }
86
+ // Responsive Touch Styles
87
+ // Use media queries within your SCSS to apply touch-specific styles only on devices that support touch, keeping desktop styles unaffected.
88
+
89
+
90
+ // @media (hover: none) and (pointer: coarse) {
91
+ // .button, .link {
92
+ // @include touch-target(50px); // Larger touch targets for touch devices
93
+ // @include touch-feedback; // Visual feedback on touch
94
+ // }
95
+ // }
@@ -0,0 +1,107 @@
1
+
2
+
3
+ // ============================================================================
4
+ // icon.gl | Animations
5
+ // ============================================================================
6
+
7
+ @use "../dev" as *;
8
+ @use "../variables" as *;
9
+ @use "base" as *;
10
+
11
+
12
+ // @mixin hover-animation($transition-duration: 0.3s) {
13
+ // transition: all $transition-duration ease;
14
+ // &:hover {
15
+ // transform: scale(1.1);
16
+ // }
17
+ // }
18
+
19
+ // .hover-grow {
20
+ // @include hover-animation();
21
+ // }
22
+
23
+ // Hover
24
+ // ----------------------------------------------------------------------------
25
+
26
+ @mixin animate_hover($scale: 1.05, $duration: 0.3s, $timing-function: ease-in-out) {
27
+ transition: transform $duration $timing-function;
28
+ &:hover {
29
+ transform: scale($scale);
30
+ }
31
+ }
32
+
33
+ .animate_hover {
34
+ @include animate_hover();
35
+ }
36
+
37
+
38
+ // Hover Bounce
39
+ // ----------------------------------------------------------------------------
40
+
41
+ @mixin animate_hover_bounce($distance: 10px, $duration: 0.3s) {
42
+ transition: transform $duration ease-in-out;
43
+ &:hover {
44
+ animation-name: animate_bounce;
45
+ animation-duration: $duration;
46
+ animation-fill-mode: forwards;
47
+ @keyframes animate_bounce {
48
+ 0% { transform: translateY(0); }
49
+ 100% { transform: translateY(-$distance); }
50
+ }
51
+ }
52
+ }
53
+
54
+ .animate_hover_bounce {
55
+ @include animate_hover_bounce();
56
+ }
57
+
58
+
59
+
60
+
61
+ // Hover Scale
62
+ // ----------------------------------------------------------------------------
63
+
64
+ @mixin animate_hover_scale($scale: 1.1, $duration: 0.3s) {
65
+ transition: transform $duration ease-in-out;
66
+ &:hover {
67
+ transform: scale($scale);
68
+ }
69
+ }
70
+
71
+ .animate_hover_scale {
72
+ @include animate_hover_scale();
73
+ }
74
+
75
+ // Hover Rotate
76
+ // ----------------------------------------------------------------------------
77
+
78
+ @mixin animate_hover_rotate($angle: 15deg, $duration: 0.5s) {
79
+ transition: transform $duration ease-in-out;
80
+ &:hover {
81
+ transform: rotate($angle);
82
+ }
83
+ }
84
+
85
+ .animate_hover_rotate {
86
+ @include animate_hover_rotate();
87
+ }
88
+
89
+
90
+
91
+
92
+ // Hover Drop Animation:
93
+ // ----------------------------------------------------------------------------
94
+
95
+ @mixin animate_hover_drop($distance: 5px, $duration: 0.3s) {
96
+ transition: transform $duration ease-in-out;
97
+ &:hover {
98
+ transform: translateY($distance);
99
+ }
100
+ }
101
+
102
+ .animate_hover_drop {
103
+ @include animate_hover_drop();
104
+ }
105
+
106
+
107
+
@@ -0,0 +1,337 @@
1
+ // ============================================================================
2
+ // Poster
3
+ // ============================================================================
4
+
5
+ ////
6
+ ///
7
+ /// Base Animations Mixin Module
8
+ /// ===========================================================================
9
+ ///
10
+ /// This module ...
11
+ ///
12
+ ///
13
+ /// @group Animations
14
+ /// @author Scape Agency
15
+ /// @link https://move.gl
16
+ /// @since 0.1.0 initial release
17
+ /// @todo None
18
+ /// @access public
19
+ ///
20
+ ////
21
+
22
+
23
+ // ============================================================================
24
+ // Use
25
+ // ============================================================================
26
+
27
+ @use "../dev" as *;
28
+ @use "../variables" as *;
29
+
30
+
31
+ // ============================================================================
32
+ // Mixins
33
+ // ============================================================================
34
+
35
+
36
+ ///
37
+ /// Base Animation Mixin
38
+ /// This mixin provides a base structure for defining animations, allowing
39
+ /// customization of the name, duration, timing function, iteration count,
40
+ /// delay, and direction.
41
+ ///
42
+ /// @name animate_base
43
+ /// @param {String} $name [none] - The name of the animation.
44
+ /// @param {Number|String} $duration [$animate_base_duration] - The duration of the animation.
45
+ /// @param {String} $timing_function [$animate_base_timing_function] - The timing function for the animation.
46
+ /// @param {Number|String} $iteration_count [$animate_base_iteration_count] - The number of iterations the animation will run.
47
+ /// @param {Number|String} $delay [$animate_base_delay] - The delay before the animation starts.
48
+ /// @param {String} $direction [$animate_base_direction] - The direction in which the animation is played.
49
+ ///
50
+ @mixin animate_base(
51
+ $name: none,
52
+ $duration: $animate_base_duration,
53
+ $timing_function: $animate_base_timing_function,
54
+ $iteration_count: $animate_base_iteration_count,
55
+ $delay: $animate_base_delay,
56
+ $direction: $animate_base_direction,
57
+ ) {
58
+ // animation: $name $duration $timing_function $iteration_count $delay $direction;
59
+ animation-name: $name;
60
+ animation-duration: $duration;
61
+ animation-timing-function: $timing_function;
62
+ animation-iteration-count: $iteration_count;
63
+ animation-delay: $delay;
64
+ animation-direction: $direction;
65
+ }
66
+
67
+ // General Animation Classes
68
+ // ----------------------------------------------------------------------------
69
+
70
+ // // Base classes for animations
71
+ // [class^="#{$icongl_prefix}animate_"],
72
+ // [class*=" #{$icongl_prefix}animate_"] {
73
+ // // Base animation properties
74
+ // display: inline-block;
75
+ // backface-visibility: hidden;
76
+ // perspective: 1000px; // Improve 3D animations
77
+ // }
78
+
79
+ // Reduced Motion Preference
80
+ // ----------------------------------------------------------------------------
81
+
82
+ // if agent or operating system prefers reduced motion, disable animations
83
+ // see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
84
+ // see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
85
+
86
+ ///
87
+ /// Reduced Motion
88
+ /// This media query applies styles that reduce motion for users who have
89
+ /// enabled the "prefers-reduced-motion" setting. Animations and transitions
90
+ /// are effectively disabled to improve accessibility.
91
+ /// @media (prefers-reduced-motion: reduce)
92
+ ///
93
+ @media (prefers-reduced-motion: reduce) {
94
+
95
+ // Apply to specific animated classes
96
+ .animate_beat,
97
+ .animate_bounce,
98
+ .animate_fade,
99
+ .animate_beat_fade,
100
+ .animate_flip,
101
+ .animate_pulse,
102
+ .animate_shake,
103
+ .animate_spin,
104
+ .animate_spin-pulse {
105
+ animation-delay: -1ms;
106
+ animation-duration: 1ms;
107
+ animation-iteration-count: 1;
108
+ transition-delay: 0s;
109
+ transition-duration: 0s;
110
+ }
111
+
112
+ // Global animation disabling
113
+ .animation {
114
+ animation: none;
115
+ transition: none;
116
+ }
117
+ }
118
+
119
+
120
+ @media (prefers-reduced-motion: reduce) {
121
+ // Target all elements with a class starting with 'animate_'
122
+ [class*="animate_"] {
123
+ // Reset basic animation and transition properties
124
+ animation: none;
125
+ transition: none;
126
+ }
127
+
128
+ // Alternatively, if animations are tied to a specific attribute
129
+ [data-animation] {
130
+ // Apply the same reset
131
+ animation: none;
132
+ transition: none;
133
+ }
134
+
135
+ // Additional option for targeting any animated element
136
+ // This targets any element with animation or transition properties set
137
+ /// {
138
+ animation: none !important;
139
+ transition: none !important;
140
+ }
141
+ }
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+ // .animated {
150
+ // -webkit-animation-duration: 3s;
151
+ // animation-duration: 3s;
152
+ // -webkit-animation-fill-mode: both;
153
+ // animation-fill-mode: both;
154
+ // }
155
+
156
+ // .animated-middle {
157
+ // -webkit-animation-duration: 1.2s;
158
+ // animation-duration: 1.2s;
159
+ // -webkit-animation-fill-mode: both;
160
+ // animation-fill-mode: both;
161
+ // }
162
+
163
+ // .animated-quick {
164
+ // -webkit-animation-duration: 0.6s;
165
+ // animation-duration: 0.6s;
166
+ // -webkit-animation-fill-mode: both;
167
+ // animation-fill-mode: both;
168
+ // }
169
+
170
+ // .animated.infinite {
171
+ // -webkit-animation-iteration-count: infinite;
172
+ // animation-iteration-count: infinite;
173
+ // }
174
+
175
+
176
+
177
+
178
+ // Animations
179
+ //
180
+
181
+
182
+
183
+
184
+ ///
185
+ /// Hover Opacity Transition Mixin
186
+ /// Provides a hover effect that changes the opacity of an element
187
+ /// with a transition.
188
+ /// @name transition_hover_opacity
189
+ ///
190
+ @mixin transition_hover_opacity {
191
+ @include transition_duration_00;
192
+ opacity: 1.00;
193
+ :hover {
194
+ @include transition_duration_00;
195
+ opacity: 0.50;
196
+ }
197
+ }
198
+
199
+ ///
200
+ /// Transition Mixin
201
+ /// Provides a basic transition effect with a customizable duration.
202
+ /// @name transition_duration
203
+ /// @param {Number|String} $val - The duration for the transition.
204
+ ///
205
+ @mixin transition_duration($val) {
206
+ transition: all $val ease-in-out;
207
+ -moz-transition: all $val ease-in-out;
208
+ -ms-transition: all $val ease-in-out;
209
+ -o-transition: all $val ease-in-out;
210
+ -webkit-transition: all $val ease-in-out;
211
+ transition-duration: all $val ease-in-out;
212
+ -moz-transition-duration: all $val ease-in-out;
213
+ -ms-transition-duration: all $val ease-in-out;
214
+ -o-transition-duration: all $val ease-in-out;
215
+ -webkit-transition-duration: all $val ease-in-out;
216
+ }
217
+
218
+
219
+ ///
220
+ /// Quick Transition Mixin
221
+ /// Provides a quick transition effect with a pre-defined duration.
222
+ /// @name transition_duration_00
223
+ ///
224
+ @mixin transition_duration_00 {
225
+ @include transition_duration($transition_duration_00);
226
+ // transition: all $transition_duration_00 ease-in-out;
227
+ // -moz-transition: all $transition_duration_00 ease-in-out;
228
+ // -ms-transition: all $transition_duration_00 ease-in-out;
229
+ // -o-transition: all $transition_duration_00 ease-in-out;
230
+ // -webkit-transition: all $transition_duration_00 ease-in-out;
231
+ // transition-duration: all $transition_duration_00 ease-in-out;
232
+ // -moz-transition-duration: all $transition_duration_00 ease-in-out;
233
+ // -ms-transition-duration: all $transition_duration_00 ease-in-out;
234
+ // -o-transition-duration: all $transition_duration_00 ease-in-out;
235
+ // -webkit-transition-duration: all $transition_duration_00 ease-in-out;
236
+ }
237
+
238
+ ///
239
+ /// Medium Transition Mixin
240
+ /// Provides a medium-speed transition effect with a pre-defined duration.
241
+ /// @name transition_duration_01
242
+ ///
243
+ @mixin transition_duration_01 {
244
+ @include transition_duration($transition_duration_01);
245
+ // transition: all $transition_duration_01 ease-in-out;
246
+ // -moz-transition: all $transition_duration_01 ease-in-out;
247
+ // -ms-transition: all $transition_duration_01 ease-in-out;
248
+ // -o-transition: all $transition_duration_01 ease-in-out;
249
+ // -webkit-transition: all $transition_duration_01 ease-in-out;
250
+ // transition-duration: all $transition_duration_01 ease-in-out;
251
+ // -moz-transition-duration: all $transition_duration_01 ease-in-out;
252
+ // -ms-transition-duration: all $transition_duration_01 ease-in-out;
253
+ // -o-transition-duration: all $transition_duration_01 ease-in-out;
254
+ // -webkit-transition-duration: all $transition_duration_01 ease-in-out;
255
+ }
256
+
257
+ ///
258
+ /// Long Transition Mixin
259
+ /// Provides a longer transition effect with a pre-defined duration.
260
+ /// @name transition_duration_02
261
+ ///
262
+ @mixin transition_duration_02 {
263
+ @include transition_duration($transition_duration_02);
264
+ // transition: all $transition_duration_02 ease-in-out;
265
+ // -moz-transition: all $transition_duration_02 ease-in-out;
266
+ // -ms-transition: all $transition_duration_02 ease-in-out;
267
+ // -o-transition: all $transition_duration_02 ease-in-out;
268
+ // -webkit-transition: all $transition_duration_02 ease-in-out;
269
+ // transition-duration: all $transition_duration_02 ease-in-out;
270
+ // -moz-transition-duration: all $transition_duration_02 ease-in-out;
271
+ // -ms-transition-duration: all $transition_duration_02 ease-in-out;
272
+ // -o-transition-duration: all $transition_duration_02 ease-in-out;
273
+ // -webkit-transition-duration: all $transition_duration_02 ease-in-out;
274
+ }
275
+
276
+ ///
277
+ /// Extra Long Transition Mixin
278
+ /// Provides an extra-long transition effect with a pre-defined duration.
279
+ /// @name transition_duration_03
280
+ ///
281
+ @mixin transition_duration_03 {
282
+ @include transition_duration($transition_duration_03);
283
+ // transition: all $transition_duration_03 ease-in-out;
284
+ // -moz-transition: all $transition_duration_03 ease-in-out;
285
+ // -ms-transition: all $transition_duration_03 ease-in-out;
286
+ // -o-transition: all $transition_duration_03 ease-in-out;
287
+ // -webkit-transition: all $transition_duration_03 ease-in-out;
288
+ // transition-duration: all $transition_duration_03 ease-in-out;
289
+ // -moz-transition-duration: all $transition_duration_03 ease-in-out;
290
+ // -ms-transition-duration: all $transition_duration_03 ease-in-out;
291
+ // -o-transition-duration: all $transition_duration_03 ease-in-out;
292
+ // -webkit-transition-duration: all $transition_duration_03 ease-in-out;
293
+ }
294
+
295
+ ///
296
+ /// Maximum Duration Transition Mixin
297
+ /// Provides a maximum duration transition effect with a pre-defined duration.
298
+ /// @name transition_duration_04
299
+ ///
300
+ @mixin transition_duration_04 {
301
+ @include transition_duration($transition_duration_04);
302
+ // transition: all $transition_duration_04 ease-in-out;
303
+ // -moz-transition: all $transition_duration_04 ease-in-out;
304
+ // -ms-transition: all $transition_duration_04 ease-in-out;
305
+ // -o-transition: all $transition_duration_04 ease-in-out;
306
+ // -webkit-transition: all $transition_duration_04 ease-in-out;
307
+ // transition-duration: all $transition_duration_04 ease-in-out;
308
+ // -moz-transition-duration: all $transition_duration_04 ease-in-out;
309
+ // -ms-transition-duration: all $transition_duration_04 ease-in-out;
310
+ // -o-transition-duration: all $transition_duration_04 ease-in-out;
311
+ // -webkit-transition-duration: all $transition_duration_04 ease-in-out;
312
+ }
313
+
314
+
315
+
316
+ ///
317
+ /// Generates a keyframe animation for elements.
318
+ ///
319
+ /// @name keyframe-animation
320
+ /// @param {String} $name - The name of the animation.
321
+ /// @param {Map} $keyframes - A map of keyframes, where the key is the percentage and the value is the CSS properties.
322
+ /// @example scss - Usage
323
+ /// @include keyframe-animation('slide-in', (0%: (transform: translateX(-100%)), 100%: (transform: translateX(0))));
324
+ @mixin keyframe_animation(
325
+ $name,
326
+ $keyframes
327
+ ) {
328
+ @keyframes #{$name} {
329
+ @each $percentage, $properties in $keyframes {
330
+ #{$percentage} {
331
+ @each $property, $value in $properties {
332
+ #{$property}: #{$value};
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }