Browse Source

Animations

Carles Sentis 1 year ago
parent
commit
d8aa0212bb
100 changed files with 1407 additions and 46 deletions
  1. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
  2. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream
  3. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len
  4. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
  5. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at
  6. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
  7. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
  8. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
  9. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
  10. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len
  11. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
  12. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i
  13. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
  14. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
  15. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
  16. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
  17. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
  18. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
  19. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab
  20. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream
  21. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len
  22. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len
  23. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at
  24. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i
  25. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab
  26. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
  27. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
  28. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
  29. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
  30. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
  31. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
  32. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream
  33. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len
  34. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len
  35. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
  36. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i
  37. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
  38. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
  39. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
  40. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len
  41. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
  42. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i
  43. 1 1
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab
  44. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab
  45. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream
  46. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len
  47. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len
  48. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at
  49. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i
  50. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab
  51. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream
  52. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len
  53. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
  54. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at
  55. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i
  56. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len
  57. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab
  58. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
  59. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len
  60. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
  61. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
  62. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i
  63. BIN
      buildSrc/build/kotlin/compileKotlin/cacheable/last-build.bin
  64. BIN
      buildSrc/build/kotlin/compileKotlin/local-state/build-history.bin
  65. BIN
      buildSrc/build/libs/buildSrc.jar
  66. 2 0
      feature/weather/build.gradle.kts
  67. 118 41
      feature/weather/src/main/java/com/trifork/feature/weather/domain/model/WeatherType.kt
  68. 54 4
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/WeatherCard.kt
  69. 9 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/AnimationDrawable.kt
  70. 24 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ClearDayAnimation.kt
  71. 42 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ClearNightAnimation.kt
  72. 45 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/DenseDrizzleDayAnimation.kt
  73. 49 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/DenseDrizzleNightAnimation.kt
  74. 41 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyAnimation.kt
  75. 43 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyDayAnimation.kt
  76. 47 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyNightAnimation.kt
  77. 24 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FrostDayAnimation.kt
  78. 33 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FrostNightAnimation.kt
  79. 61 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavyFreezingRainAnimation.kt
  80. 44 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavyRainAnimation.kt
  81. 54 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavySnowDayAnimation.kt
  82. 58 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavySnowNightAnimation.kt
  83. 32 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightDrizzleDayAnimation.kt
  84. 36 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightDrizzleNightAnimation.kt
  85. 51 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightFreezingDrizzleAnimation.kt
  86. 34 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowAnimation.kt
  87. 36 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowDayAnimation.kt
  88. 40 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowNightAnimation.kt
  89. 25 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/MainlyClearDayAnimation.kt
  90. 29 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/MainlyClearNightAnimation.kt
  91. 39 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateDrizzleDayAnimation.kt
  92. 43 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateDrizzleNightAnimation.kt
  93. 38 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateRainAnimation.kt
  94. 46 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateSnowDayAnimation.kt
  95. 50 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateSnowNightAnimation.kt
  96. 33 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormAnimation.kt
  97. 34 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormDayAnimation.kt
  98. 38 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormNightAnimation.kt
  99. 24 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/NoAnimation.kt
  100. 30 0
      feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/OvercastAnimation.kt

BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i


+ 1 - 1
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab

@@ -1,2 +1,2 @@
-4
+1
 0

BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i


BIN
buildSrc/build/kotlin/compileKotlin/cacheable/last-build.bin


BIN
buildSrc/build/kotlin/compileKotlin/local-state/build-history.bin


BIN
buildSrc/build/libs/buildSrc.jar


+ 2 - 0
feature/weather/build.gradle.kts

@@ -61,6 +61,8 @@ dependencies {
     implementation(libs.androidx.lifecycle.runtime.compose)
     implementation(libs.android.compose.material)
     implementation(libs.android.compose.material3)
+    implementation(libs.androidx.animation.graphics.android)
+
     val composeBom = platform(libs.androidx.compose.bom)
     implementation(composeBom)
     implementation(libs.androidx.compose.ui)

+ 118 - 41
feature/weather/src/main/java/com/trifork/feature/weather/domain/model/WeatherType.kt

@@ -3,209 +3,286 @@ package com.trifork.feature.weather.domain.model
 import androidx.annotation.DrawableRes
 import androidx.annotation.StringRes
 import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.AnimationDrawable
+import com.trifork.feature.weather.presentation.components.animations.ClearDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.ClearNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.DenseDrizzleDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.DenseDrizzleNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.FoggyAnimation
+import com.trifork.feature.weather.presentation.components.animations.FoggyDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.FoggyNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.FrostDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.NoAnimation
+import com.trifork.feature.weather.presentation.components.animations.FrostNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.HeavyFreezingRainAnimation
+import com.trifork.feature.weather.presentation.components.animations.HeavyRainAnimation
+import com.trifork.feature.weather.presentation.components.animations.HeavySnowDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.HeavySnowNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightDrizzleDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightDrizzleNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightFreezingDrizzleAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightSnowAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightSnowDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.LightSnowNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.MainlyClearDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.MainlyClearNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateDrizzleDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateDrizzleNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateRainAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateSnowDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateSnowNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateThunderstormAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateThunderstormDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.ModerateThunderstormNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.OvercastAnimation
+import com.trifork.feature.weather.presentation.components.animations.PartlyCloudyNightAnimation
+import com.trifork.feature.weather.presentation.components.animations.PartlyCloudyDayAnimation
+import com.trifork.feature.weather.presentation.components.animations.SlightRainAnimation
+import com.trifork.feature.weather.presentation.components.animations.SnowGrainsAnimation
 
 sealed class WeatherType(
     @StringRes val weatherDescRes: Int,
-    @DrawableRes val iconRes: Int
+    @DrawableRes val iconRes: Int,
+    val animation: AnimationDrawable
 ) {
     data object ClearSkyDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.clear_sky,
-        iconRes = R.drawable.ic_clear_day
+        iconRes = R.drawable.ic_clear_day,
+        animation = ClearDayAnimation()
     )
 
     data object ClearSkyNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.clear_sky,
-        iconRes = R.drawable.ic_clear_night
+        iconRes = R.drawable.ic_clear_night,
+        animation = ClearNightAnimation()
     )
 
     data object FrostDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.frost,
-        iconRes = R.drawable.ic_frost_day
+        iconRes = R.drawable.ic_frost_day,
+        animation = FrostDayAnimation()
     )
 
     data object FrostNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.frost,
-        iconRes = R.drawable.ic_frost_night
+        iconRes = R.drawable.ic_frost_night,
+        animation = FrostNightAnimation()
     )
 
     data object MainlyClearDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.mainly_clear,
-        iconRes = R.drawable.ic_mainly_clear_day
+        iconRes = R.drawable.ic_mainly_clear_day,
+        animation = MainlyClearDayAnimation()
     )
 
     data object MainlyClearNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.mainly_clear,
-        iconRes = R.drawable.ic_mainly_clear_night
+        iconRes = R.drawable.ic_mainly_clear_night,
+        animation = MainlyClearNightAnimation()
     )
 
     data object PartlyCloudyDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.partly_cloudy,
-        iconRes = R.drawable.ic_partly_cloudy_day
+        iconRes = R.drawable.ic_partly_cloudy_day,
+        animation = PartlyCloudyDayAnimation()
     )
 
     data object PartlyCloudyNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.partly_cloudy,
-        iconRes = R.drawable.ic_partly_cloudy_night
+        iconRes = R.drawable.ic_partly_cloudy_night,
+        animation = PartlyCloudyNightAnimation()
     )
 
     data object Overcast : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.overcast,
-        iconRes = R.drawable.ic_overcast
+        iconRes = R.drawable.ic_overcast,
+        animation = OvercastAnimation()
     )
 
     data object FoggyDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.foggy,
-        iconRes = R.drawable.ic_fog_day
+        iconRes = R.drawable.ic_fog_day,
+        animation = FoggyDayAnimation()
     )
 
     data object FoggyNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.foggy,
-        iconRes = R.drawable.ic_fog_night
+        iconRes = R.drawable.ic_fog_night,
+        animation = FoggyNightAnimation()
     )
 
     data object DepositingRimeFog : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.depositing_rime_fog,
-        iconRes = R.drawable.ic_foggy
+        iconRes = R.drawable.ic_foggy,
+        animation = FoggyAnimation()
     )
 
     data object LightDrizzleDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.light_drizzle,
-        iconRes = R.drawable.ic_light_drizzel_day
+        iconRes = R.drawable.ic_light_drizzel_day,
+        animation = LightDrizzleDayAnimation()
     )
 
     data object LightDrizzleNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.light_drizzle,
-        iconRes = R.drawable.ic_light_drizzel_night
+        iconRes = R.drawable.ic_light_drizzel_night,
+        animation = LightDrizzleNightAnimation()
     )
 
     data object ModerateDrizzleDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_drizzle,
-        iconRes = R.drawable.ic_moderate_drizzel_day
+        iconRes = R.drawable.ic_moderate_drizzel_day,
+        animation = ModerateDrizzleDayAnimation()
     )
 
     data object ModerateDrizzleNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_drizzle,
-        iconRes = R.drawable.ic_moderate_drizzel_night
+        iconRes = R.drawable.ic_moderate_drizzel_night,
+        animation = ModerateDrizzleNightAnimation()
     )
 
     data object DenseDrizzleDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.dense_drizzle,
-        iconRes = R.drawable.ic_dense_drizzel_day
+        iconRes = R.drawable.ic_dense_drizzel_day,
+        animation = DenseDrizzleDayAnimation()
     )
 
     data object DenseDrizzleNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.dense_drizzle,
-        iconRes = R.drawable.ic_dense_drizzel_night
+        iconRes = R.drawable.ic_dense_drizzel_night,
+        animation = DenseDrizzleNightAnimation()
     )
 
     data object LightFreezingDrizzle : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.slight_freezing_drizzle,
-        iconRes = R.drawable.ic_snow_rain
+        iconRes = R.drawable.ic_snow_rain,
+        animation = LightFreezingDrizzleAnimation()
     )
 
     data object DenseFreezingDrizzle : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.dense_freezing_drizzle,
-        iconRes = R.drawable.ic_snow_rain
+        iconRes = R.drawable.ic_snow_rain,
+        animation = LightFreezingDrizzleAnimation()
     )
 
     data object SlightRain : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.slight_rain,
-        iconRes = R.drawable.ic_light_rain
+        iconRes = R.drawable.ic_light_rain,
+        animation = SlightRainAnimation()
     )
 
     data object ModerateRain : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.rainy,
-        iconRes = R.drawable.ic_moderate_rain
+        iconRes = R.drawable.ic_moderate_rain,
+        animation = ModerateRainAnimation()
     )
 
     data object HeavyRain : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.heavy_rain,
-        iconRes = R.drawable.ic_heavy_rain
+        iconRes = R.drawable.ic_heavy_rain,
+        animation = HeavyRainAnimation()
     )
 
     data object HeavyFreezingRain : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.heavy_freezing_rain,
-        iconRes = R.drawable.ic_rain_sleet
+        iconRes = R.drawable.ic_rain_sleet,
+        animation = HeavyFreezingRainAnimation()
     )
 
     data object SlightSnowFallDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.slight_snow_fall,
-        iconRes = R.drawable.ic_light_snow_day
+        iconRes = R.drawable.ic_light_snow_day,
+        animation = LightSnowDayAnimation()
     )
 
     data object SlightSnowFallNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.slight_snow_fall,
-        iconRes = R.drawable.ic_light_snow_night
+        iconRes = R.drawable.ic_light_snow_night,
+        animation = LightSnowNightAnimation()
     )
 
     data object ModerateSnowFallDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_snow_fall,
-        iconRes = R.drawable.ic_moderate_snow_day
+        iconRes = R.drawable.ic_moderate_snow_day,
+        animation = ModerateSnowDayAnimation()
     )
 
     data object ModerateSnowFallNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_snow_fall,
-        iconRes = R.drawable.ic_moderate_snow_night
+        iconRes = R.drawable.ic_moderate_snow_night,
+        animation = ModerateSnowNightAnimation()
     )
 
     data object HeavySnowFallDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.heavy_snow_fall,
-        iconRes = R.drawable.ic_heavy_snow_day
+        iconRes = R.drawable.ic_heavy_snow_day,
+        animation = HeavySnowDayAnimation()
     )
 
     data object HeavySnowFallNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.heavy_snow_fall,
-        iconRes = R.drawable.ic_heavy_snow_night
+        iconRes = R.drawable.ic_heavy_snow_night,
+        animation = HeavySnowNightAnimation()
     )
 
     data object SnowGrains : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.snow_grains,
-        iconRes = R.drawable.ic_heavy_snow
+        iconRes = R.drawable.ic_heavy_snow,
+        animation = SnowGrainsAnimation()
     )
 
     data object SlightRainShowers : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.slight_rain_showers,
-        iconRes = R.drawable.ic_light_rain
+        iconRes = R.drawable.ic_light_rain,
+        animation = SlightRainAnimation()
     )
 
     data object ModerateRainShowers : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_rain_showers,
-        iconRes = R.drawable.ic_moderate_rain
+        iconRes = R.drawable.ic_moderate_rain,
+        animation = ModerateRainAnimation()
     )
 
     data object ViolentRainShowers : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.violent_rain_showers,
-        iconRes = R.drawable.ic_heavy_rain
+        iconRes = R.drawable.ic_heavy_rain,
+        animation = HeavyRainAnimation()
     )
 
     data object SlightSnowShowers : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.light_snow_showers,
-        iconRes = R.drawable.ic_light_snow
+        iconRes = R.drawable.ic_light_snow,
+        animation = LightSnowAnimation()
     )
 
     data object HeavySnowShowers : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.heavy_snow_showers,
-        iconRes = R.drawable.ic_heavy_snow
+        iconRes = R.drawable.ic_heavy_snow,
+        animation = SnowGrainsAnimation()
     )
 
     data object ModerateThunderstormDay : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_thunderstorm,
-        iconRes = R.drawable.ic_thunderstorm_day
+        iconRes = R.drawable.ic_thunderstorm_day,
+        animation = ModerateThunderstormDayAnimation()
     )
 
     data object ModerateThunderstormNight : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.moderate_thunderstorm,
-        iconRes = R.drawable.ic_thunderstorm_night
+        iconRes = R.drawable.ic_thunderstorm_night,
+        animation = ModerateThunderstormNightAnimation()
     )
 
     data object SlightHailThunderstorm : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.thunderstorm_with_slight_hail,
-        iconRes = R.drawable.ic_thunderstorm
+        iconRes = R.drawable.ic_thunderstorm,
+        animation = ModerateThunderstormAnimation()
     )
 
     data object HeavyHailThunderstorm : WeatherType(
         weatherDescRes = com.trifork.feature.common.R.string.thunderstorm_with_heavy_rain,
-        iconRes = R.drawable.ic_heavy_thunderstorm
+        iconRes = R.drawable.ic_heavy_thunderstorm,
+        animation = NoAnimation(R.drawable.ic_heavy_thunderstorm)
     )
 
     companion object {

+ 54 - 4
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/WeatherCard.kt

@@ -1,12 +1,26 @@
 package com.trifork.feature.weather.presentation.components
 
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.RepeatMode
+import androidx.compose.animation.core.animateFloat
+import androidx.compose.animation.core.infiniteRepeatable
+import androidx.compose.animation.core.rememberInfiniteTransition
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.graphics.ExperimentalAnimationGraphicsApi
+import androidx.compose.animation.graphics.res.animatedVectorResource
+import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
+import androidx.compose.animation.graphics.vector.AnimatedImageVector
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
 import androidx.compose.foundation.basicMarquee
+import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
@@ -17,10 +31,18 @@ import androidx.compose.material3.CardDefaults
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.vectorResource
@@ -32,6 +54,8 @@ import com.trifork.feature.common.util.MonthString
 import com.trifork.feature.weather.R
 import com.trifork.feature.weather.domain.model.WeatherData
 import com.trifork.feature.weather.domain.model.WeatherType
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 import java.time.LocalDateTime
 import java.time.format.DateTimeFormatter
 import kotlin.math.roundToInt
@@ -90,10 +114,9 @@ fun WeatherCard(
                 color = MaterialTheme.colorScheme.primary
             )
             Spacer(modifier = Modifier.height(16.dp))
-            Image(
-                painter = painterResource(id = data.weatherType.iconRes),
-                contentDescription = null,
-                modifier = Modifier.size(100.dp)
+            Box(
+                modifier = Modifier.size(100.dp),
+                content = data.weatherType.animation.build()
             )
             Spacer(modifier = Modifier.height(10.dp))
             Text(
@@ -158,4 +181,31 @@ fun WeatherCard(
             }
         }
     }
+}
+
+@OptIn(ExperimentalAnimationGraphicsApi::class)
+@Composable
+fun AnimatedVectorDrawable(modifier: Modifier) {
+    val image = AnimatedImageVector.animatedVectorResource(id = R.drawable.anim_clear_day)
+    var atEnd by remember { mutableStateOf(false) }
+
+    val painterFirst = rememberAnimatedVectorPainter(animatedImageVector = image, atEnd = atEnd)
+    val painterSecond = rememberAnimatedVectorPainter(animatedImageVector = image, atEnd = !atEnd)
+
+    suspend fun runAnimation() {
+        while (true) {
+            atEnd = !atEnd
+            delay(image.totalDuration.toLong())
+        }
+    }
+    LaunchedEffect(image) {
+        runAnimation()
+    }
+
+    Image(
+        modifier = modifier,
+        painter = if (atEnd) painterFirst else painterSecond,
+        contentDescription = "Timer",
+        contentScale = ContentScale.Crop
+    )
 }

+ 9 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/AnimationDrawable.kt

@@ -0,0 +1,9 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.runtime.Composable
+
+interface AnimationDrawable {
+
+    fun build(): @Composable (BoxScope.() -> Unit)
+}

+ 24 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ClearDayAnimation.kt

@@ -0,0 +1,24 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.RepeatMode
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.domain.model.WeatherType
+import com.trifork.feature.weather.presentation.components.animations.components.RotateAnimation
+
+class ClearDayAnimation(
+    private val modifier: Modifier = Modifier.size(100.dp)
+) : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            RotateAnimation(
+                modifier = modifier,
+                iconRes = WeatherType.ClearSkyDay.iconRes,
+                repeatMode = RepeatMode.Restart
+            )
+        }
+    }
+}

+ 42 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ClearNightAnimation.kt

@@ -0,0 +1,42 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.AlphaAnimation
+
+class ClearNightAnimation(
+    private val modifier: Modifier = Modifier.size(100.dp)
+) : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            AlphaAnimation(
+                modifier = modifier,
+                initValue = 1f,
+                targetValue = 0.25f,
+                animation = tween(1000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_star_one,
+            )
+            AlphaAnimation(
+                modifier = modifier,
+                initValue = 1f,
+                targetValue = 0.25f,
+                animation = tween(2000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_star_two,
+            )
+            Image(
+                painter = painterResource(id = R.drawable.ic_moon),
+                contentDescription = null,
+                modifier = modifier
+            )
+        }
+    }
+}

+ 45 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/DenseDrizzleDayAnimation.kt

@@ -0,0 +1,45 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class DenseDrizzleDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(0.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 49 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/DenseDrizzleNightAnimation.kt

@@ -0,0 +1,49 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class DenseDrizzleNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(0.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 41 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyAnimation.kt

@@ -0,0 +1,41 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class FoggyAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(4000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_two
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(2000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_foggy_three
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(1000, easing = LinearEasing),
+                iconRes = R.drawable.ic_foggy_four
+            )
+        }
+    }
+}

+ 43 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyDayAnimation.kt

@@ -0,0 +1,43 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class FoggyDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(4000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_two
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(2000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_foggy_three
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(1000, easing = LinearEasing),
+                iconRes = R.drawable.ic_foggy_four
+            )
+        }
+    }
+}

+ 47 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FoggyNightAnimation.kt

@@ -0,0 +1,47 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class FoggyNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(4000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_foggy_two
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(2000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_foggy_three
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(1000, easing = LinearEasing),
+                iconRes = R.drawable.ic_foggy_four
+            )
+        }
+    }
+}

+ 24 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FrostDayAnimation.kt

@@ -0,0 +1,24 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+
+class FrostDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            Image(
+                painter = painterResource(id = R.drawable.ic_frost),
+                contentDescription = null,
+                modifier = Modifier.size(100.dp)
+            )
+        }
+    }
+}

+ 33 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/FrostNightAnimation.kt

@@ -0,0 +1,33 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.AnimationDrawable
+import com.trifork.feature.weather.presentation.components.animations.ClearNightAnimation
+
+class FrostNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            Image(
+                painter = painterResource(id = R.drawable.ic_frost),
+                contentDescription = null,
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset((-10).dp)
+            )
+        }
+    }
+}

+ 61 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavyFreezingRainAnimation.kt

@@ -0,0 +1,61 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class HeavyFreezingRainAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = (-10).dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 35.dp, y = 10.dp),
+                animationX = tween(800, easing = LinearOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(0.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 44 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavyRainAnimation.kt

@@ -0,0 +1,44 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class HeavyRainAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(0.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 54 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavySnowDayAnimation.kt

@@ -0,0 +1,54 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class HeavySnowDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = (-5).dp, y = 10.dp),
+                animationX = tween(1200, easing = FastOutLinearInEasing),
+                animationY = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(800, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 25.dp, y = 10.dp),
+                animationX = tween(1000, easing = LinearOutSlowInEasing),
+                animationY = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 58 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/HeavySnowNightAnimation.kt

@@ -0,0 +1,58 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class HeavySnowNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = (-5).dp, y = 10.dp),
+                animationX = tween(1200, easing = FastOutLinearInEasing),
+                animationY = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(800, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 25.dp, y = 10.dp),
+                animationX = tween(1000, easing = LinearOutSlowInEasing),
+                animationY = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 32 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightDrizzleDayAnimation.kt

@@ -0,0 +1,32 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class LightDrizzleDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 36 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightDrizzleNightAnimation.kt

@@ -0,0 +1,36 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class LightDrizzleNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 51 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightFreezingDrizzleAnimation.kt

@@ -0,0 +1,51 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class LightFreezingDrizzleAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset((-10).dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutLinearInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(20.dp),
+                animation = tween(3000, easing = FastOutLinearInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 34 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowAnimation.kt

@@ -0,0 +1,34 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class LightSnowAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 36 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowDayAnimation.kt

@@ -0,0 +1,36 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class LightSnowDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 40 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/LightSnowNightAnimation.kt

@@ -0,0 +1,40 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class LightSnowNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 10.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 25 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/MainlyClearDayAnimation.kt

@@ -0,0 +1,25 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class MainlyClearDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_one
+            )
+        }
+    }
+}

+ 29 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/MainlyClearNightAnimation.kt

@@ -0,0 +1,29 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class MainlyClearNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_one
+            )
+        }
+    }
+}

+ 39 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateDrizzleDayAnimation.kt

@@ -0,0 +1,39 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateDrizzleDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 43 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateDrizzleNightAnimation.kt

@@ -0,0 +1,43 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateDrizzleNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 38 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateRainAnimation.kt

@@ -0,0 +1,38 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateRainAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(10.dp),
+                animation = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateYAnimation(
+                modifier = Modifier.size(100.dp).offset(20.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_rain_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 46 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateSnowDayAnimation.kt

@@ -0,0 +1,46 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class ModerateSnowDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 0.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutLinearInEasing),
+                animationY = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 20.dp, y = 10.dp),
+                animationX = tween(800, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 50 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateSnowNightAnimation.kt

@@ -0,0 +1,50 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutLinearInEasing
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXYAnimation
+
+class ModerateSnowNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 0.dp, y = 10.dp),
+                animationX = tween(1000, easing = FastOutLinearInEasing),
+                animationY = tween(3000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(x = 20.dp, y = 10.dp),
+                animationX = tween(800, easing = FastOutSlowInEasing),
+                animationY = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_snow_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+        }
+    }
+}

+ 33 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormAnimation.kt

@@ -0,0 +1,33 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateThunderstormAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+            TranslateYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(10.dp),
+                animation = tween(500, easing = LinearEasing),
+                iconRes = R.drawable.ic_thunder_one
+            )
+        }
+    }
+}

+ 34 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormDayAnimation.kt

@@ -0,0 +1,34 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateThunderstormDayAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(content = ClearDayAnimation(Modifier.size(50.dp)).build())
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+            TranslateYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(10.dp),
+                animation = tween(500, easing = LinearEasing),
+                iconRes = R.drawable.ic_thunder_one
+            )
+        }
+    }
+}

+ 38 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/ModerateThunderstormNightAnimation.kt

@@ -0,0 +1,38 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateYAnimation
+
+class ModerateThunderstormNightAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Box(
+                modifier = Modifier.padding(start = 50.dp),
+                content = ClearNightAnimation(Modifier.size(50.dp)).build()
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearEasing),
+                iconRes = R.drawable.ic_cloud_two
+            )
+            TranslateYAnimation(
+                modifier = Modifier
+                    .size(100.dp)
+                    .offset(10.dp),
+                animation = tween(500, easing = LinearEasing),
+                iconRes = R.drawable.ic_thunder_one
+            )
+        }
+    }
+}

+ 24 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/NoAnimation.kt

@@ -0,0 +1,24 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.annotation.DrawableRes
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+
+class NoAnimation(
+    @DrawableRes val iconRes: Int
+) : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            Image(
+                painter = painterResource(id = iconRes),
+                contentDescription = null,
+                modifier = Modifier.size(100.dp)
+            )
+        }
+    }
+}

+ 30 - 0
feature/weather/src/main/java/com/trifork/feature/weather/presentation/components/animations/OvercastAnimation.kt

@@ -0,0 +1,30 @@
+package com.trifork.feature.weather.presentation.components.animations
+
+import androidx.compose.animation.core.FastOutSlowInEasing
+import androidx.compose.animation.core.LinearOutSlowInEasing
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.trifork.feature.weather.R
+import com.trifork.feature.weather.presentation.components.animations.components.TranslateXAnimation
+
+class OvercastAnimation : AnimationDrawable {
+    override fun build(): @Composable (BoxScope.() -> Unit) {
+        return {
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(2000, easing = FastOutSlowInEasing),
+                iconRes = R.drawable.ic_overcast_cloud_one
+            )
+            TranslateXAnimation(
+                modifier = Modifier.size(100.dp),
+                animation = tween(3000, easing = LinearOutSlowInEasing),
+                iconRes = R.drawable.ic_overcast_cloud_two
+            )
+        }
+    }
+
+}

Some files were not shown because too many files changed in this diff