Просмотр исходного кода

carousel touchable implementation

Milan Jurkulak 3 лет назад
Родитель
Сommit
3b050d6b10
71 измененных файлов с 527 добавлено и 154 удалено
  1. 2 2
      app/src/main/kotlin/org/mjdev/tvapp/base/extensions/ModifierExt.kt
  2. 0 13
      app/src/main/kotlin/org/mjdev/tvapp/base/navigation/Screen.kt
  3. 4 1
      app/src/main/kotlin/org/mjdev/tvapp/base/page/Page.kt
  4. 3 1
      app/src/main/kotlin/org/mjdev/tvapp/base/page/Pager.kt
  5. 42 17
      app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/card/CarouselCard.kt
  6. 37 14
      app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/BigCarousel.kt
  7. 2 2
      app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/Header.kt
  8. 6 1
      app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/Title.kt
  9. 8 3
      app/src/main/kotlin/org/mjdev/tvapp/ui/components/FocusableCard.kt
  10. 32 2
      app/src/main/kotlin/org/mjdev/tvapp/ui/pages/MainPage.kt
  11. 3 34
      app/src/main/kotlin/org/mjdev/tvapp/ui/screens/MainScreen.kt
  12. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.extensions/-modifier-ext/index.md
  13. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.extensions/-modifier-ext/touchable.md
  14. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/home-destination-route.md
  15. 0 1
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/index.md
  16. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/splash-destination-route.md
  17. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/-slide-in-vertically.md
  18. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/-slide-out-vertically.md
  19. 2 3
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/index.md
  20. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/open-clear.md
  21. 2 30
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/open.md
  22. 6 2
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/screen.md
  23. 3 3
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/index.md
  24. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md
  25. 8 0
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/show-once.md
  26. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.navigation/index.md
  27. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.page/-page.md
  28. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.page/-pager.md
  29. 10 0
      wiki/documentation/app/org.mjdev.tvapp.base.page/index.md
  30. 12 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-companion/index.md
  31. 26 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-companion/remember-screen-state.md
  32. 17 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-screen-state.md
  33. 8 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/clear-error.md
  34. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/error-state.md
  35. 29 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/error.md
  36. 44 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/index.md
  37. 29 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/info.md
  38. 16 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/set-title.md
  39. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/title-state.md
  40. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.state/index.md
  41. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/-carousel-card.md
  42. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/-movie-card.md
  43. 10 0
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/index.md
  44. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-badge.md
  45. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-big-carousel.md
  46. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-clock.md
  47. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-error-message.md
  48. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-header.md
  49. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-screen-view.md
  50. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-tabs.md
  51. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-user-pic.md
  52. 0 3
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/index.md
  53. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.image/-circle-image.md
  54. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.image/index.md
  55. 0 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.navigation/-navigation.md
  56. 0 0
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.navigation/index.md
  57. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.text/-circle-text.md
  58. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.ui.components.text/index.md
  59. 9 0
      wiki/documentation/app/org.mjdev.tvapp.ui.components/-focusable-card.md
  60. 1 1
      wiki/documentation/app/org.mjdev.tvapp.ui.components/index.md
  61. 9 0
      wiki/documentation/app/org.mjdev.tvapp.ui.pages/-about-page.md
  62. 9 0
      wiki/documentation/app/org.mjdev.tvapp.ui.pages/-main-page.md
  63. 9 0
      wiki/documentation/app/org.mjdev.tvapp.ui.pages/-subscription-page.md
  64. 11 0
      wiki/documentation/app/org.mjdev.tvapp.ui.pages/index.md
  65. 2 0
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/-detail-screen/index.md
  66. 2 0
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/-main-screen/index.md
  67. 2 0
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/-player-screen/index.md
  68. 3 1
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/-splash-screen/index.md
  69. 8 0
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/-splash-screen/show-once.md
  70. 0 2
      wiki/documentation/app/org.mjdev.tvapp.ui.screens/index.md
  71. 3 0
      wiki/documentation/index.md

+ 2 - 2
app/src/main/kotlin/org/mjdev/tvapp/base/extensions/ModifierExt.kt

@@ -20,7 +20,7 @@ import timber.log.Timber
 object ModifierExt {
 
     fun Modifier.touchable(
-        onTouch: () -> Unit = {}
+        onTouch: FocusRequester.() -> Unit = {}
     ): Modifier = composed {
         val focusRequester = remember { FocusRequester() }
         this
@@ -28,7 +28,7 @@ object ModifierExt {
             .pointerInput(Unit) {
                 detectTapGestures {
                     try {
-                        onTouch()
+                        onTouch(focusRequester)
                         focusRequester.requestFocus()
                     } catch (e: Exception) {
                         Timber.e(e)

+ 0 - 13
app/src/main/kotlin/org/mjdev/tvapp/base/navigation/Screen.kt

@@ -243,19 +243,6 @@ open class Screen : NavController.OnDestinationChangedListener {
         val NavHostController.currentRoute
             get() = currentDestination?.route
 
-        /**
-         * Open route.
-         *
-         * @param route Route
-         * @receiver [NavHostController]
-         */
-        fun NavHostController.open(route: String) {
-            val equals = currentRoute?.equals(route)
-            if (equals != true) {
-                navigate(route)
-            }
-        }
-
         /**
          * Custom function to generate screen in nav graph.
          *

+ 4 - 1
app/src/main/kotlin/org/mjdev/tvapp/base/page/Page.kt

@@ -9,6 +9,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
 import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.annotations.TvPreview
+import org.mjdev.tvapp.base.extensions.ModifierExt.touchable
 import org.mjdev.tvapp.base.state.ScreenState
 
 @TvPreview
@@ -22,7 +23,9 @@ fun Page(
     Column(
         Modifier
             .fillMaxSize()
-            .background(Color.DarkGray, RectangleShape)
+            .background(Color.DarkGray, RectangleShape).touchable {
+               freeFocus()
+            }
     ) {
 
         screenState?.titleState?.value = title

+ 3 - 1
app/src/main/kotlin/org/mjdev/tvapp/base/page/Pager.kt

@@ -8,16 +8,18 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
 import org.mjdev.tvapp.base.annotations.TvPreview
+import org.mjdev.tvapp.base.state.ScreenState
 
 @TvPreview
 @Composable
 fun Pager(
+    screenState: ScreenState? = null,
     pages: @Composable () -> Unit = {}
 ) {
     Column(
         modifier = Modifier
             .fillMaxSize()
-            .background(Color.Red, RectangleShape)
+            .background(Color.DarkGray, RectangleShape)
     ) {
 
         pages()

+ 42 - 17
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/card/CarouselCard.kt

@@ -9,17 +9,22 @@
 package org.mjdev.tvapp.base.ui.components.card
 
 import android.annotation.SuppressLint
-import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.unit.dp
 import androidx.tv.material3.CardDefaults
 import androidx.tv.material3.CardScale
+import androidx.tv.material3.CompactCard
 import androidx.tv.material3.ExperimentalTvMaterial3Api
+import androidx.tv.material3.Glow
+import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.annotations.TvPreview
+import org.mjdev.tvapp.base.ui.components.image.ImageAny
+import org.mjdev.tvapp.base.ui.components.text.TextAny
 import org.mjdev.tvapp.data.Movie
-import org.mjdev.tvapp.ui.components.FocusableCard
 
 @OptIn(ExperimentalTvMaterial3Api::class)
 @TvPreview
@@ -27,28 +32,48 @@ import org.mjdev.tvapp.ui.components.FocusableCard
 @SuppressLint("ModifierParameter")
 fun CarouselCard(
     movie: Movie? = null,
+    placeHolder: Int = R.drawable.placeholder,
     modifier: Modifier = Modifier,
-    onFocus: (movie: Movie?) -> Unit = {},
-    onClick: (movie: Movie?) -> Unit = {},
     contentScale: ContentScale = ContentScale.Crop,
     scale: CardScale = CardScale.None,
+    onClick: () -> Unit = {}
 ) {
 
-    FocusableCard(
-        movie = movie,
-        scale = CardScale.None,
+    CompactCard(
         modifier = modifier,
-        onFocus = {
-            onFocus(movie)
+        image = {
+            ImageAny(
+                modifier = modifier,
+                src = movie?.cardImageUrl,
+                contentDescription = movie?.description,
+                contentScale = contentScale,
+                placeholder = placeHolder
+            )
+        },
+        title = {
+            TextAny(
+                modifier = Modifier.padding(4.dp),
+                text = movie?.title
+            )
         },
-        onClick = {
-            onClick(movie)
+        subtitle = {
+            TextAny(
+                modifier = Modifier.padding(4.dp),
+                text = movie?.studio
+            )
         },
-        shape = CardDefaults.shape(),
-        colors = CardDefaults.colors(),
-        border = CardDefaults.border(),
-        glow = CardDefaults.glow(),
-        interactionSource = remember { MutableInteractionSource() },
+        description = {
+        },
+        glow = CardDefaults.glow(
+            glow = Glow.None,
+            focusedGlow = Glow(
+                elevationColor = Color.Green,
+                elevation = 10.dp
+            ),
+            pressedGlow = Glow.None
+        ),
+        scale = CardScale.None,
+        onClick = onClick
     )
 
 }

+ 37 - 14
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/BigCarousel.kt

@@ -8,10 +8,18 @@
 
 package org.mjdev.tvapp.base.ui.components.complex
 
+import android.annotation.SuppressLint
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.MutableState
+import androidx.compose.runtime.mutableIntStateOf
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.focus.onFocusChanged
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
@@ -19,10 +27,12 @@ import androidx.tv.material3.CardScale
 import androidx.tv.material3.Carousel
 import androidx.tv.material3.ExperimentalTvMaterial3Api
 import org.mjdev.tvapp.base.annotations.TvPreview
+import org.mjdev.tvapp.base.extensions.ModifierExt.touchable
 import org.mjdev.tvapp.base.ui.components.card.CarouselCard
 import org.mjdev.tvapp.data.Movie
 
 // todo swipe left and swipe right
+@SuppressLint("AutoboxingStateValueProperty")
 @OptIn(ExperimentalTvMaterial3Api::class)
 @TvPreview
 @Composable
@@ -30,32 +40,45 @@ fun BigCarousel(
     modifier: Modifier = Modifier,
     items: List<Movie> = emptyList(),
     height: Dp = 260.dp,
-    onItemSelected: (Movie?) -> Unit = {},
-    onItemClicked: (Movie?) -> Unit = {},
+    onItemSelected: (movie: Movie?) -> Unit = {},
+    onItemClicked: (movie: Movie?) -> Unit = {},
 ) {
 
+    val focusRequester = remember { FocusRequester() }
+    val itemIndex = remember { mutableIntStateOf(0) }
+    val selectedMovie: () -> Movie? = { items[itemIndex.value] }
+    val isFocused: MutableState<Boolean> = remember { mutableStateOf(false) }
+
     Carousel(
         itemCount = items.size,
         modifier = modifier
+            .focusRequester(focusRequester)
             .fillMaxWidth()
-//            .pointerInput(Unit) {
-//                detectHorizontalDragGestures { change, dragAmount ->
-                    // todo
-//                }
-//            }
-            .height(height),
+            .height(height)
+            .onFocusChanged { focusState ->
+                isFocused.value = focusState.isFocused || focusState.hasFocus
+            },
     ) { indexOfCarouselItem ->
-        val movie = items[indexOfCarouselItem]
 
-        onItemSelected(movie)
+        itemIndex.value = indexOfCarouselItem
 
         CarouselCard(
-            modifier = modifier.fillMaxWidth().height(height),
+            modifier = modifier
+                .touchable {
+                    if (isFocused.value)
+                        onItemClicked(selectedMovie())
+                    else {
+                        onItemSelected(selectedMovie())
+                        focusRequester.requestFocus()
+                    }
+                }
+                .fillMaxWidth()
+                .height(height),
             contentScale = ContentScale.Crop,
             scale = CardScale.None,
-            movie = movie,
-            onClick = { clickedItem ->
-                onItemClicked(clickedItem)
+            movie = items[indexOfCarouselItem],
+            onClick = {
+                onItemClicked(selectedMovie())
             }
         )
 

+ 2 - 2
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/Header.kt

@@ -38,7 +38,7 @@ fun Header(
     color: Color = Color.White,
     backgroundColor: Color = Color.DarkGray,
     roundSize: Dp = 0.dp,
-    padding: Dp = 4.dp,
+    padding: Dp = 0.dp,
     contentPadding: Dp = 2.dp,
     messagesCount: Int = 0,
     onTitleClick: () -> Unit = {},
@@ -59,7 +59,7 @@ fun Header(
         Title(
             modifier = Modifier.constrainAs(_title) {
                 top.linkTo(parent.top)
-                start.linkTo(parent.start, margin = contentPadding)
+                start.linkTo(parent.start)
                 bottom.linkTo(parent.bottom)
             },
             title = title ?: R.string.app_name,

+ 6 - 1
app/src/main/kotlin/org/mjdev/tvapp/base/ui/components/complex/Title.kt

@@ -77,7 +77,12 @@ fun Title(
                 )
 
                 TextAny(
-                    modifier = modifier.padding(shadowSize),
+                    modifier = modifier.padding(
+                        10.dp,
+                        shadowSize,
+                        shadowSize,
+                        shadowSize
+                    ),
                     style = MaterialTheme.typography.bodyMedium.copy(
                         shadow = Shadow(
                             color = if (focused) focusShadowColor else unfocusedShadowColor,

+ 8 - 3
app/src/main/kotlin/org/mjdev/tvapp/ui/components/FocusableCard.kt

@@ -35,6 +35,7 @@ import org.mjdev.tvapp.data.Movie
 fun FocusableCard(
     movie: Movie? = null,
     modifier: Modifier = Modifier,
+    focused: Boolean = false,
     contentScale: ContentScale = ContentScale.Crop,
     placeHolder: Int = R.drawable.placeholder,
     scale: CardScale = CardDefaults.scale(),
@@ -43,8 +44,8 @@ fun FocusableCard(
     border: CardBorder = CardDefaults.border(),
     glow: CardGlow = CardDefaults.glow(),
     interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
-    onFocus: () -> Unit = {},
-    onClick: (Movie?) -> Unit = {},
+    onFocus: (movie: Movie?) -> Unit = {},
+    onClick: (movie: Movie?) -> Unit = {},
 ) {
     val focusState = remember { mutableStateOf<FocusState?>(null) }
     val isFocused: () -> Boolean = {
@@ -52,12 +53,16 @@ fun FocusableCard(
     }
 
     CompactCard(
+        interactionSource = interactionSource,
         modifier = modifier
             .onFocusChanged { state ->
                 focusState.value = state
             }
             .touchable {
-                if (isFocused()) onClick(movie) else onFocus()
+                if (isFocused())
+                    onClick(movie)
+                else
+                    onFocus(movie)
             },
         image = {
             ImageAny(

+ 32 - 2
app/src/main/kotlin/org/mjdev/tvapp/ui/pages/MainPage.kt

@@ -12,17 +12,20 @@ import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.unit.dp
 import androidx.navigation.NavHostController
 import androidx.tv.foundation.lazy.list.TvLazyRow
 import androidx.tv.foundation.lazy.list.items
 import androidx.tv.material3.Text
+import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.annotations.TvPreview
 import org.mjdev.tvapp.base.extensions.HiltExt.appViewModel
 import org.mjdev.tvapp.base.extensions.ModifierExt.touchable
 import org.mjdev.tvapp.base.extensions.StringExt.asException
 import org.mjdev.tvapp.base.navigation.Screen.Companion.open
+import org.mjdev.tvapp.base.network.NetworkStatus
 import org.mjdev.tvapp.base.page.Page
 import org.mjdev.tvapp.base.state.ScreenState
 import org.mjdev.tvapp.base.ui.components.complex.BigCarousel
@@ -30,6 +33,8 @@ import org.mjdev.tvapp.base.ui.components.complex.ScrollableTvLazyRow
 import org.mjdev.tvapp.base.ui.components.complex.Tabs
 import org.mjdev.tvapp.data.Movie
 import org.mjdev.tvapp.base.ui.components.card.MovieCard
+import org.mjdev.tvapp.base.ui.components.complex.ErrorMessage
+import org.mjdev.tvapp.base.ui.components.complex.Header
 import org.mjdev.tvapp.ui.screens.DetailScreen
 import org.mjdev.tvapp.ui.screens.PlayerScreen
 import org.mjdev.tvapp.viewmodel.MainViewModel
@@ -45,17 +50,25 @@ fun MainPage(
 
     val categoryList = remember { viewModel.categoryList }.collectAsState()
     val featuredMovieList = remember { viewModel.featuredMovieList }.collectAsState()
+    val messages = remember { viewModel.messages }.collectAsState()
+    val networkState = remember {
+        viewModel.networkInfo.networkStatus
+    }.collectAsState(null)
 
     val onItemClick: (movie: Movie?) -> Unit = { movie ->
         if (movie == null) {
             viewModel.postError("No media found.".asException())
         } else if (movie.hasVideoUri) {
-            navController?.open<PlayerScreen>(navController, movie.id)
+            navController?.open<PlayerScreen>(movie.id)
         } else {
-            navController?.open<DetailScreen>(navController, movie.id)
+            navController?.open<DetailScreen>(movie.id)
         }
     }
 
+    viewModel.handleError { error ->
+        screenState?.error(error)
+    }
+
     ScrollableTvLazyRow(
         modifier = Modifier
             .fillMaxSize()
@@ -64,6 +77,23 @@ fun MainPage(
         contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp)
     ) {
 
+        item {
+
+            Header(
+                title = screenState?.titleState?.value,
+                messagesCount = messages.value.size
+            )
+
+        }
+
+        if (networkState.value !is NetworkStatus.Connected) item {
+            ErrorMessage(
+                error = stringResource(R.string.error_no_network).asException(),
+                backgroundColor = Color.Black,
+                dismissible = false
+            )
+        }
+
 
         if (categoryList.value.isNotEmpty()) item {
 

+ 3 - 34
app/src/main/kotlin/org/mjdev/tvapp/ui/screens/MainScreen.kt

@@ -11,9 +11,6 @@ package org.mjdev.tvapp.ui.screens
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Home
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.collectAsState
-import androidx.compose.runtime.remember
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.res.stringResource
 import androidx.navigation.NamedNavArgument
@@ -21,17 +18,11 @@ import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavHostController
 import org.mjdev.tvapp.R
 import org.mjdev.tvapp.base.annotations.TvPreview
-import org.mjdev.tvapp.base.extensions.HiltExt.appViewModel
-import org.mjdev.tvapp.base.extensions.StringExt.asException
 import org.mjdev.tvapp.base.navigation.MenuItem
 import org.mjdev.tvapp.base.navigation.Screen
-import org.mjdev.tvapp.base.network.NetworkStatus
 import org.mjdev.tvapp.base.page.Pager
-import org.mjdev.tvapp.base.ui.components.complex.ErrorMessage
-import org.mjdev.tvapp.base.ui.components.complex.Header
 import org.mjdev.tvapp.base.ui.components.complex.ScreenView
 import org.mjdev.tvapp.ui.pages.MainPage
-import org.mjdev.tvapp.viewmodel.MainViewModel
 
 class MainScreen : Screen() {
 
@@ -55,37 +46,15 @@ class MainScreen : Screen() {
         args: Map<String, Any?>
     ) {
 
-        val viewModel = appViewModel<MainViewModel>()
-        val messages = remember { viewModel.messages }.collectAsState()
-        val networkState = remember {
-            viewModel.networkInfo.networkStatus
-        }.collectAsState(null)
-//        val pageState = remember { mutableStateOf<Any?>(null) }
-
         ScreenView(
             navController = navController,
             title = stringResource(titleResId),
             menuItems = menuItems
         ) { screenState ->
 
-            viewModel.handleError { error ->
-                screenState.error(error)
-            }
-
-            Header(
-                title = screenState.titleState.value,
-                messagesCount = messages.value.size
-            )
-
-            if (networkState.value !is NetworkStatus.Connected) {
-                ErrorMessage(
-                    error = stringResource(R.string.error_no_network).asException(),
-                    backgroundColor = Color.Black,
-                    dismissible = false
-                )
-            }
-
-            Pager {
+            Pager(
+                screenState = screenState
+            ) {
 
                 MainPage(navController, screenState)
 

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.extensions/-modifier-ext/index.md

@@ -9,4 +9,4 @@ object [ModifierExt](index.md)
 
 | Name | Summary |
 |---|---|
-| [touchable](touchable.md) | [androidJvm]<br>fun [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html).[touchable](touchable.md)(onTouch: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}): [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) |
+| [touchable](touchable.md) | [androidJvm]<br>fun [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html).[touchable](touchable.md)(onTouch: [FocusRequester](https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester.html).() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}): [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) |

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.extensions/-modifier-ext/touchable.md

@@ -3,4 +3,4 @@
 # touchable
 
 [androidJvm]\
-fun [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html).[touchable](touchable.md)(onTouch: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}): [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html)
+fun [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html).[touchable](touchable.md)(onTouch: [FocusRequester](https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester.html).() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}): [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html)

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/home-destination-route.md

@@ -3,4 +3,4 @@
 # homeDestinationRoute
 
 [androidJvm]\
-var [homeDestinationRoute](home-destination-route.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?
+var [homeDestinationRoute](home-destination-route.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?

Разница между файлами не показана из-за своего большого размера
+ 0 - 1
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/index.md


+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-nav-graph-builder-ex/splash-destination-route.md

@@ -0,0 +1,6 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.navigation](../index.md)/[NavGraphBuilderEx](index.md)/[splashDestinationRoute](splash-destination-route.md)
+
+# splashDestinationRoute
+
+[androidJvm]\
+var [splashDestinationRoute](splash-destination-route.md): [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/-slide-in-vertically.md

@@ -0,0 +1,6 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.navigation](../../index.md)/[Screen](../index.md)/[Companion](index.md)/[SlideInVertically](-slide-in-vertically.md)
+
+# SlideInVertically
+
+[androidJvm]\
+val [SlideInVertically](-slide-in-vertically.md): [EnterTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/EnterTransition.html)

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/-slide-out-vertically.md

@@ -0,0 +1,6 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.navigation](../../index.md)/[Screen](../index.md)/[Companion](index.md)/[SlideOutVertically](-slide-out-vertically.md)
+
+# SlideOutVertically
+
+[androidJvm]\
+val [SlideOutVertically](-slide-out-vertically.md): [ExitTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/ExitTransition.html)

Разница между файлами не показана из-за своего большого размера
+ 2 - 3
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/index.md


+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/open-clear.md

@@ -0,0 +1,9 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.navigation](../../index.md)/[Screen](../index.md)/[Companion](index.md)/[openClear](open-clear.md)
+
+# openClear
+
+[androidJvm]\
+
+@[MainThread](https://developer.android.com/reference/kotlin/androidx/annotation/MainThread.html)
+
+inline fun &lt;[T](open-clear.md) : [Screen](../index.md)&gt; [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html).[openClear](open-clear.md)(vararg values: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?)

+ 2 - 30
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/open.md

@@ -3,35 +3,7 @@
 # open
 
 [androidJvm]\
-inline fun &lt;[T](open.md) : [Screen](../index.md)&gt; [open](open.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, vararg values: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?)
 
-Open screen extension.
+@[MainThread](https://developer.android.com/reference/kotlin/androidx/annotation/MainThread.html)
 
-Function opens a screen with parameters given, if any, from another screen.
-
-#### Parameters
-
-androidJvm
-
-| | |
-|---|---|
-| navController | Nav controller |
-| values | Values |
-| T | T |
-
-[androidJvm]\
-fun [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html).[open](open.md)(route: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))
-
-Open route.
-
-#### Receiver
-
-[NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)
-
-#### Parameters
-
-androidJvm
-
-| | |
-|---|---|
-| route | Route |
+inline fun &lt;[T](open.md) : [Screen](../index.md)&gt; [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html).[open](open.md)(vararg values: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?)

+ 6 - 2
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/-companion/screen.md

@@ -3,7 +3,11 @@
 # screen
 
 [androidJvm]\
-fun &lt;[T](screen.md) : [Screen](../index.md)&gt; [NavGraphBuilderEx](../../-nav-graph-builder-ex/index.md).[screen](screen.md)(route: [T](screen.md), isHomeScreen: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false, isStartScreen: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false)
+fun &lt;[T](screen.md) : [Screen](../index.md)&gt; [NavGraphBuilderEx](../../-nav-graph-builder-ex/index.md).[screen](screen.md)(route: [T](screen.md), isHomeScreen: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false, isStartScreen: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false, deepLinks: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[NavDeepLink](https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink.html)&gt; = emptyList(), enterTransition: @[JvmSuppressWildcards](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-suppress-wildcards/index.html)[AnimatedContentTransitionScope](https://developer.android.com/reference/kotlin/androidx/compose/animation/AnimatedContentTransitionScope.html)&lt;[NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)&gt;.() -&gt; [EnterTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/EnterTransition.html)?? = {
+                SlideInVertically
+            }, exitTransition: @[JvmSuppressWildcards](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-suppress-wildcards/index.html)[AnimatedContentTransitionScope](https://developer.android.com/reference/kotlin/androidx/compose/animation/AnimatedContentTransitionScope.html)&lt;[NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)&gt;.() -&gt; [ExitTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/ExitTransition.html)?? = {
+                SlideOutVertically
+            }, popEnterTransition: @[JvmSuppressWildcards](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-suppress-wildcards/index.html)[AnimatedContentTransitionScope](https://developer.android.com/reference/kotlin/androidx/compose/animation/AnimatedContentTransitionScope.html)&lt;[NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)&gt;.() -&gt; [EnterTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/EnterTransition.html)?? = enterTransition, popExitTransition: @[JvmSuppressWildcards](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-suppress-wildcards/index.html)[AnimatedContentTransitionScope](https://developer.android.com/reference/kotlin/androidx/compose/animation/AnimatedContentTransitionScope.html)&lt;[NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)&gt;.() -&gt; [ExitTransition](https://developer.android.com/reference/kotlin/androidx/compose/animation/ExitTransition.html)?? = exitTransition)
 
 Custom function to generate screen in nav graph.
 
@@ -19,4 +23,4 @@ androidJvm
 |---|---|
 | route | Route route expected |
 | isHomeScreen | Is home screen, indicates that this screen will be used as home screen. Should be used once, or in case that is defined multiple times, the last one is used as home screen. |
-| T | T Screen object generated for route. |
+| T | T Screen object generated for route. |

+ 3 - 3
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/index.md

@@ -2,7 +2,7 @@
 
 # Screen
 
-open class [Screen](index.md)
+open class [Screen](index.md) : [NavController.OnDestinationChangedListener](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener.html)
 
 Screen class.
 
@@ -12,12 +12,10 @@ This is base of all screens in application and auto creation of route and nav gr
 
 | |
 |---|
-| [AboutScreen](../../org.mjdev.tvapp.ui.screens/-about-screen/index.md) |
 | [DetailScreen](../../org.mjdev.tvapp.ui.screens/-detail-screen/index.md) |
 | [MainScreen](../../org.mjdev.tvapp.ui.screens/-main-screen/index.md) |
 | [PlayerScreen](../../org.mjdev.tvapp.ui.screens/-player-screen/index.md) |
 | [SplashScreen](../../org.mjdev.tvapp.ui.screens/-splash-screen/index.md) |
-| [SubscriptionScreen](../../org.mjdev.tvapp.ui.screens/-subscription-screen/index.md) |
 
 ## Constructors
 
@@ -36,6 +34,7 @@ This is base of all screens in application and auto creation of route and nav gr
 | Name | Summary |
 |---|---|
 | [Compose](-compose.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>@[CallSuper](https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper.html)<br>open fun [Compose](-compose.md)()<br>Compose function.<br>[androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open fun [Compose](-compose.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, backStackEntry: [NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)?, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../-menu-item/index.md)&gt;, args: [Map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;)<br>Compose function for compose screen. This should be only a method overridden in super classes. |
+| [onDestinationChanged](on-destination-changed.md) | [androidJvm]<br>open override fun [onDestinationChanged](on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?) |
 
 ## Properties
 
@@ -46,4 +45,5 @@ This is base of all screens in application and auto creation of route and nav gr
 | [menuIcon](menu-icon.md) | [androidJvm]<br>open val [menuIcon](menu-icon.md): [ImageVector](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector.html)? = null<br>Menu icon if any |
 | [menuItem](menu-item.md) | [androidJvm]<br>val [menuItem](menu-item.md): [MenuItem](../-menu-item/index.md)?<br>Autogenerated menu item, if any Generated only if [menuTitleResId](menu-title-res-id.md) 0 |
 | [menuTitleResId](menu-title-res-id.md) | [androidJvm]<br>open val [menuTitleResId](menu-title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Menu string resource id menu is generated only if it returns id 0 |
+| [showOnce](show-once.md) | [androidJvm]<br>open val [showOnce](show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false<br>Show once and hide on back pressed, remove from backstack |
 | [titleResId](title-res-id.md) | [androidJvm]<br>open val [titleResId](title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md

@@ -0,0 +1,6 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.navigation](../index.md)/[Screen](index.md)/[onDestinationChanged](on-destination-changed.md)
+
+# onDestinationChanged
+
+[androidJvm]\
+open override fun [onDestinationChanged](on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?)

+ 8 - 0
wiki/documentation/app/org.mjdev.tvapp.base.navigation/-screen/show-once.md

@@ -0,0 +1,8 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.navigation](../index.md)/[Screen](index.md)/[showOnce](show-once.md)
+
+# showOnce
+
+[androidJvm]\
+open val [showOnce](show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false
+
+Show once and hide on back pressed, remove from backstack

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.navigation/index.md

@@ -8,7 +8,7 @@
 |---|---|
 | [MenuItem](-menu-item/index.md) | [androidJvm]<br>data class [MenuItem](-menu-item/index.md)(val menuText: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?, val menuIcon: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?, var route: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))<br>Menu item helper class. |
 | [NavGraphBuilderEx](-nav-graph-builder-ex/index.md) | [androidJvm]<br>class [NavGraphBuilderEx](-nav-graph-builder-ex/index.md)(provider: [NavigatorProvider](https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorProvider.html), route: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?, val navHostController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)) : [NavGraphBuilder](https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.html)<br>Custom nav graph builder. |
-| [Screen](-screen/index.md) | [androidJvm]<br>open class [Screen](-screen/index.md)<br>Screen class. |
+| [Screen](-screen/index.md) | [androidJvm]<br>open class [Screen](-screen/index.md) : [NavController.OnDestinationChangedListener](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.OnDestinationChangedListener.html)<br>Screen class. |
 
 ## Functions
 

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.page/-page.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.page](index.md)/[Page](-page.md)
+
+# Page
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [Page](-page.md)(screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, block: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.page/-pager.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.page](index.md)/[Pager](-pager.md)
+
+# Pager
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [Pager](-pager.md)(screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null, pages: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 10 - 0
wiki/documentation/app/org.mjdev.tvapp.base.page/index.md

@@ -0,0 +1,10 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.page](index.md)
+
+# Package-level declarations
+
+## Functions
+
+| Name | Summary |
+|---|---|
+| [Page](-page.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [Page](-page.md)(screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, block: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |
+| [Pager](-pager.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [Pager](-pager.md)(screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null, pages: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |

+ 12 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-companion/index.md

@@ -0,0 +1,12 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.state](../../index.md)/[ScreenState](../index.md)/[Companion](index.md)
+
+# Companion
+
+[androidJvm]\
+object [Companion](index.md)
+
+## Functions
+
+| Name | Summary |
+|---|---|
+| [rememberScreenState](remember-screen-state.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [rememberScreenState](remember-screen-state.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null): [ScreenState](../index.md)<br>Remember activity view state. |

+ 26 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-companion/remember-screen-state.md

@@ -0,0 +1,26 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.state](../../index.md)/[ScreenState](../index.md)/[Companion](index.md)/[rememberScreenState](remember-screen-state.md)
+
+# rememberScreenState
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [rememberScreenState](remember-screen-state.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null): [ScreenState](../index.md)
+
+Remember activity view state.
+
+Composable helper
+
+#### Return
+
+[ScreenState](../index.md)
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| title | Title |
+| error | Error |

+ 17 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/-screen-state.md

@@ -0,0 +1,17 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[ScreenState](-screen-state.md)
+
+# ScreenState
+
+[androidJvm]\
+constructor(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null)
+
+Create [ScreenState](index.md)
+
+#### Parameters
+
+androidJvm
+
+| |
+|---|
+| title |
+| error |

+ 8 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/clear-error.md

@@ -0,0 +1,8 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[clearError](clear-error.md)
+
+# clearError
+
+[androidJvm]\
+fun [clearError](clear-error.md)()
+
+Clear error.

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/error-state.md

@@ -0,0 +1,6 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[errorState](error-state.md)
+
+# errorState
+
+[androidJvm]\
+val [errorState](error-state.md): [MutableState](https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState.html)&lt;[Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)?&gt;

+ 29 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/error.md

@@ -0,0 +1,29 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[error](error.md)
+
+# error
+
+[androidJvm]\
+fun [error](error.md)(message: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))
+
+Set Error.
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| message | Message of an error |
+
+[androidJvm]\
+fun [error](error.md)(e: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)?)
+
+Set Error.
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| e | E Throwable to set error for |

+ 44 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/index.md

@@ -0,0 +1,44 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)
+
+# ScreenState
+
+class [ScreenState](index.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null)
+
+Activity view state. Used to keep states and change in activity.
+
+#### Parameters
+
+androidJvm
+
+| |
+|---|
+| title |
+| error |
+
+## Constructors
+
+| | |
+|---|---|
+| [ScreenState](-screen-state.md) | [androidJvm]<br>constructor(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null)<br>Create [ScreenState](index.md) |
+
+## Types
+
+| Name | Summary |
+|---|---|
+| [Companion](-companion/index.md) | [androidJvm]<br>object [Companion](-companion/index.md) |
+
+## Functions
+
+| Name | Summary |
+|---|---|
+| [clearError](clear-error.md) | [androidJvm]<br>fun [clearError](clear-error.md)()<br>Clear error. |
+| [error](error.md) | [androidJvm]<br>fun [error](error.md)(message: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))<br>fun [error](error.md)(e: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)?)<br>Set Error. |
+| [info](info.md) | [androidJvm]<br>fun [info](info.md)(message: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))<br>Set info message.<br>[androidJvm]<br>fun [info](info.md)(e: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html))<br>Set info from throwable. |
+| [setTitle](set-title.md) | [androidJvm]<br>fun [setTitle](set-title.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?)<br>Set title. |
+
+## Properties
+
+| Name | Summary |
+|---|---|
+| [errorState](error-state.md) | [androidJvm]<br>val [errorState](error-state.md): [MutableState](https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState.html)&lt;[Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)?&gt; |
+| [titleState](title-state.md) | [androidJvm]<br>val [titleState](title-state.md): [MutableState](https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState.html)&lt;[Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt; |

+ 29 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/info.md

@@ -0,0 +1,29 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[info](info.md)
+
+# info
+
+[androidJvm]\
+fun [info](info.md)(message: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html))
+
+Set info message.
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| message | Message |
+
+[androidJvm]\
+fun [info](info.md)(e: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html))
+
+Set info from throwable.
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| e | E info throwable |

+ 16 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/set-title.md

@@ -0,0 +1,16 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[setTitle](set-title.md)
+
+# setTitle
+
+[androidJvm]\
+fun [setTitle](set-title.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?)
+
+Set title.
+
+#### Parameters
+
+androidJvm
+
+| | |
+|---|---|
+| title | Title |

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.state/-screen-state/title-state.md

@@ -0,0 +1,6 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.base.state](../index.md)/[ScreenState](index.md)/[titleState](title-state.md)
+
+# titleState
+
+[androidJvm]\
+val [titleState](title-state.md): [MutableState](https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState.html)&lt;[Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.state/index.md

@@ -6,4 +6,4 @@
 
 | Name | Summary |
 |---|---|
-| [ActivityViewState](-activity-view-state/index.md) | [androidJvm]<br>class [ActivityViewState](-activity-view-state/index.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null)<br>Activity view state. Used to keep states and change in activity. |
+| [ScreenState](-screen-state/index.md) | [androidJvm]<br>class [ScreenState](-screen-state/index.md)(title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null)<br>Activity view state. Used to keep states and change in activity. |

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/-carousel-card.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.ui.components.card](index.md)/[CarouselCard](-carousel-card.md)
+
+# CarouselCard
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [CarouselCard](-carousel-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, placeHolder: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = R.drawable.placeholder, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, contentScale: [ContentScale](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale.html) = ContentScale.Crop, scale: [CardScale](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardScale.html) = CardScale.None, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/-movie-card.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.ui.components.card](index.md)/[MovieCard](-movie-card.md)
+
+# MovieCard
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [MovieCard](-movie-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, onFocus: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 10 - 0
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.card/index.md

@@ -0,0 +1,10 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.ui.components.card](index.md)
+
+# Package-level declarations
+
+## Functions
+
+| Name | Summary |
+|---|---|
+| [CarouselCard](-carousel-card.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [CarouselCard](-carousel-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, placeHolder: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = R.drawable.placeholder, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, contentScale: [ContentScale](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale.html) = ContentScale.Crop, scale: [CardScale](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardScale.html) = CardScale.None, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |
+| [MovieCard](-movie-card.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [MovieCard](-movie-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, onFocus: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-badge.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [Badge](-badge.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, shape: [Shape](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Shape.html) = CircleShape, count: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 0, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, textColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [Badge](-badge.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, shape: [Shape](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Shape.html) = CircleShape, count: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 0, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 1.dp, textColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, textSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 20.sp, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, onFocus: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-big-carousel.md

@@ -6,4 +6,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun &lt;[T](-big-carousel.md)&gt; [BigCarousel](-big-carousel.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, items: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[T](-big-carousel.md)&gt; = emptyList(), height: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 376.dp, onItemSelected: ([T](-big-carousel.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [BigCarousel](-big-carousel.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, items: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[Movie](../org.mjdev.tvapp.data/-movie/index.md)&gt; = emptyList(), height: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 260.dp, onItemSelected: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onItemClicked: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-clock.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [Clock](-clock.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, timeTextSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, timeTextWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, timeTextColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, dateTextSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 12.sp, dateTextWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, dateTextColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, horizontalAlignment: [Alignment.Horizontal](https://developer.android.com/reference/kotlin/androidx/compose/ui/Alignment.Horizontal.html) = Alignment.End, backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Transparent, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 0.dp, roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, showTime: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, showDate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [Clock](-clock.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, timeTextSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, timeTextWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, timeTextColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, dateTextSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 12.sp, dateTextWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, dateTextColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, horizontalAlignment: [Alignment.Horizontal](https://developer.android.com/reference/kotlin/androidx/compose/ui/Alignment.Horizontal.html) = Alignment.End, backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Transparent, roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, showTime: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, showDate: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-error-message.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [ErrorMessage](-error-message.md)(error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, fontSizeTitle: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, fontSizeMessage: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 14.sp, fontWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, color: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, paddingTitle: [PaddingValues](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/PaddingValues.html) = PaddingValues(4.dp), paddingMessage: [PaddingValues](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/PaddingValues.html) = PaddingValues(4.dp), backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Red, roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 1.dp, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, cancelText: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = stringResource(id = R.string.dismiss), onDismiss: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [ErrorMessage](-error-message.md)(error: [Throwable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-throwable/index.html)? = null, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = null, fontSizeTitle: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, fontSizeMessage: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 14.sp, fontWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, color: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, paddingTitle: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 4.dp, paddingMessage: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = paddingTitle, backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Red, roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, cancelText: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = stringResource(id = R.string.dismiss), dismissible: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, onDismiss: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-header.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [Header](-header.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, fontSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, fontWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, color: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color(0xFF202020), roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 0.dp, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, padding: [PaddingValues](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/PaddingValues.html) = PaddingValues(roundSize), contentPadding: [PaddingValues](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/PaddingValues.html) = PaddingValues(2.dp), messagesCount: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 0, onTitleClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClockClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onMessageBadgeClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onUserPicClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [Header](-header.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, fontSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 24.sp, fontWeight: [FontWeight](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/font/FontWeight.html) = FontWeight.Bold, color: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, backgroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.DarkGray, roundSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 0.dp, padding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 0.dp, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, messagesCount: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = 0, onTitleClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClockClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onMessageBadgeClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onUserPicClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-screen-view.md

@@ -6,6 +6,6 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [ScreenView](-screen-view.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, navigationIconMain: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = Icons.Filled.Menu, navigationIconBack: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = Icons.Filled.ArrowBack, actions: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)[RowScope](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/RowScope.html).() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt; = listOf(), content: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(state: [ActivityViewState](../org.mjdev.tvapp.base.state/-activity-view-state/index.md)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = { state -&gt;
+fun [ScreenView](-screen-view.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, actions: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)[RowScope](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/RowScope.html).() -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, title: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.string.app_name, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt; = listOf(), content: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(state: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = { state -&gt;
         Screen()
     })

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-tabs.md

@@ -6,4 +6,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun &lt;[T](-tabs.md)&gt; [Tabs](-tabs.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, items: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[T](-tabs.md)&gt; = emptyList(), fontSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 12.sp, itemsSpacing: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, activeContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, selectedContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = activeContentColor, focusedContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = activeContentColor, onItemClick: (index: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun &lt;[T](-tabs.md)&gt; [Tabs](-tabs.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, items: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[T](-tabs.md)&gt; = emptyList(), fontSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 12.sp, itemsSpacing: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 8.dp, activeContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, selectedContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, focusedContentColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, onItemClick: (index: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/-user-pic.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [UserPic](-user-pic.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, shape: [Shape](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Shape.html) = RoundedCornerShape(100), src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})
+fun [UserPic](-user-pic.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, shape: [Shape](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Shape.html) = CircleShape, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, onClick: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

Разница между файлами не показана из-за своего большого размера
+ 0 - 3
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.complex/index.md


+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.image/-circle-image.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [CircleImage](-circle-image.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, contentDescription: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;&quot;, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj)
+fun [CircleImage](-circle-image.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, contentDescription: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;&quot;, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj)

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.image/index.md

@@ -6,5 +6,5 @@
 
 | Name | Summary |
 |---|---|
-| [CircleImage](-circle-image.md) | [androidJvm]<br>@[Preview](https://developer.android.com/reference/kotlin/androidx/compose/ui/tooling/preview/Preview.html)<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [CircleImage](-circle-image.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, contentDescription: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;&quot;, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj) |
+| [CircleImage](-circle-image.md) | [androidJvm]<br>@[Preview](https://developer.android.com/reference/kotlin/androidx/compose/ui/tooling/preview/Preview.html)<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [CircleImage](-circle-image.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.Black, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, contentDescription: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;&quot;, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj) |
 | [ImageAny](-image-any.md) | [androidJvm]<br>@[Preview](https://developer.android.com/reference/kotlin/androidx/compose/ui/tooling/preview/Preview.html)<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [ImageAny](-image-any.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, src: [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)? = R.drawable.milanj, contentDescription: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)? = null, alignment: [Alignment](https://developer.android.com/reference/kotlin/androidx/compose/ui/Alignment.html) = Alignment.Center, contentScale: [ContentScale](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale.html) = ContentScale.Fit, alpha: [Float](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html) = DefaultAlpha, colorFilter: [ColorFilter](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ColorFilter.html)? = null, placeholder: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)? = null) |

Разница между файлами не показана из-за своего большого размера
+ 0 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.navigation/-navigation.md


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.navigation/index.md


+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.text/-circle-text.md

@@ -8,4 +8,4 @@
 
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-fun [CircleText](-circle-text.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier.defaultMinSize(40.dp), backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp, text: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;0&quot;, textColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, textSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 26.sp)
+fun [CircleText](-circle-text.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, backGroundColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = MaterialTheme.colorScheme.secondary, borderColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, borderSize: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 1.dp, text: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) = &quot;0&quot;, textColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White, textSize: [TextUnit](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.html) = 20.sp, contentPadding: [Dp](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.html) = 2.dp)

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.ui.components.text/index.md


+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.components/-focusable-card.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.ui.components](index.md)/[FocusableCard](-focusable-card.md)
+
+# FocusableCard
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [FocusableCard](-focusable-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, focused: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false, contentScale: [ContentScale](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale.html) = ContentScale.Crop, placeHolder: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = R.drawable.placeholder, scale: [CardScale](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardScale.html) = CardDefaults.scale(), shape: [CardShape](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardShape.html) = CardDefaults.shape(), colors: [CardColors](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardColors.html) = CardDefaults.colors(), border: [CardBorder](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardBorder.html) = CardDefaults.border(), glow: [CardGlow](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardGlow.html) = CardDefaults.glow(), interactionSource: [MutableInteractionSource](https://developer.android.com/reference/kotlin/androidx/compose/foundation/interaction/MutableInteractionSource.html) = remember { MutableInteractionSource() }, onFocus: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {})

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.ui.components/index.md

@@ -7,6 +7,6 @@
 | Name | Summary |
 |---|---|
 | [Details](-details.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [Details](-details.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, textColor: [Color](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Color.html) = Color.White.copy(alpha = 0.8f)) |
+| [FocusableCard](-focusable-card.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [FocusableCard](-focusable-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, focused: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false, contentScale: [ContentScale](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale.html) = ContentScale.Crop, placeHolder: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) = R.drawable.placeholder, scale: [CardScale](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardScale.html) = CardDefaults.scale(), shape: [CardShape](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardShape.html) = CardDefaults.shape(), colors: [CardColors](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardColors.html) = CardDefaults.colors(), border: [CardBorder](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardBorder.html) = CardDefaults.border(), glow: [CardGlow](https://developer.android.com/reference/kotlin/androidx/tv/material3/CardGlow.html) = CardDefaults.glow(), interactionSource: [MutableInteractionSource](https://developer.android.com/reference/kotlin/androidx/compose/foundation/interaction/MutableInteractionSource.html) = remember { MutableInteractionSource() }, onFocus: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: (movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |
 | [Loading](-loading.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [Loading](-loading.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier) |
 | [MediaPlayer](-media-player.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [MediaPlayer](-media-player.md)(movie: [ItemWithVideoUri](../org.mjdev.tvapp.base.interfaces/-item-with-video-uri/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier) |
-| [MovieCard](-movie-card.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [MovieCard](-movie-card.md)(movie: [Movie](../org.mjdev.tvapp.data/-movie/index.md)? = null, modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, onFocus: () -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, onClick: ([Movie](../org.mjdev.tvapp.data/-movie/index.md)?) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.pages/-about-page.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.ui.pages](index.md)/[AboutPage](-about-page.md)
+
+# AboutPage
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [AboutPage](-about-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null)

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.pages/-main-page.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.ui.pages](index.md)/[MainPage](-main-page.md)
+
+# MainPage
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [MainPage](-main-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null)

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.pages/-subscription-page.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.ui.pages](index.md)/[SubscriptionPage](-subscription-page.md)
+
+# SubscriptionPage
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [SubscriptionPage](-subscription-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null)

+ 11 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.pages/index.md

@@ -0,0 +1,11 @@
+//[app](../../index.md)/[org.mjdev.tvapp.ui.pages](index.md)
+
+# Package-level declarations
+
+## Functions
+
+| Name | Summary |
+|---|---|
+| [AboutPage](-about-page.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [AboutPage](-about-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null) |
+| [MainPage](-main-page.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [MainPage](-main-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null) |
+| [SubscriptionPage](-subscription-page.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [SubscriptionPage](-subscription-page.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)? = null, screenState: [ScreenState](../org.mjdev.tvapp.base.state/-screen-state/index.md)? = null) |

+ 2 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.screens/-detail-screen/index.md

@@ -16,6 +16,7 @@ class [DetailScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | Name | Summary |
 |---|---|
 | [Compose](-compose.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)()<br>Compose function.<br>[androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, backStackEntry: [NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)?, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt;, args: [Map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;)<br>Compose function for compose screen. This should be only a method overridden in super classes. |
+| [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md) | [androidJvm]<br>open override fun [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?) |
 
 ## Properties
 
@@ -26,4 +27,5 @@ class [DetailScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | [menuIcon](menu-icon.md) | [androidJvm]<br>open override val [menuIcon](menu-icon.md): [ImageVector](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector.html)<br>Menu icon if any |
 | [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md) | [androidJvm]<br>val [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md): [MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)?<br>Autogenerated menu item, if any Generated only if [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md) 0 |
 | [menuTitleResId](menu-title-res-id.md) | [androidJvm]<br>open override val [menuTitleResId](menu-title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Menu string resource id menu is generated only if it returns id 0 |
+| [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md) | [androidJvm]<br>open val [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false<br>Show once and hide on back pressed, remove from backstack |
 | [titleResId](title-res-id.md) | [androidJvm]<br>open override val [titleResId](title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |

+ 2 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.screens/-main-screen/index.md

@@ -16,6 +16,7 @@ class [MainScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/-s
 | Name | Summary |
 |---|---|
 | [Compose](-compose.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)()<br>Compose function.<br>[androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, backStackEntry: [NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)?, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt;, args: [Map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;)<br>Compose function for compose screen. This should be only a method overridden in super classes. |
+| [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md) | [androidJvm]<br>open override fun [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?) |
 
 ## Properties
 
@@ -26,4 +27,5 @@ class [MainScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/-s
 | [menuIcon](menu-icon.md) | [androidJvm]<br>open override val [menuIcon](menu-icon.md): [ImageVector](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector.html)<br>Menu icon if any |
 | [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md) | [androidJvm]<br>val [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md): [MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)?<br>Autogenerated menu item, if any Generated only if [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md) 0 |
 | [menuTitleResId](menu-title-res-id.md) | [androidJvm]<br>open override val [menuTitleResId](menu-title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Menu string resource id menu is generated only if it returns id 0 |
+| [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md) | [androidJvm]<br>open val [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false<br>Show once and hide on back pressed, remove from backstack |
 | [titleResId](title-res-id.md) | [androidJvm]<br>open override val [titleResId](title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |

+ 2 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.screens/-player-screen/index.md

@@ -16,6 +16,7 @@ class [PlayerScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | Name | Summary |
 |---|---|
 | [Compose](-compose.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)()<br>Compose function.<br>[androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, backStackEntry: [NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)?, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt;, args: [Map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;)<br>Compose function for compose screen. This should be only a method overridden in super classes. |
+| [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md) | [androidJvm]<br>open override fun [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?) |
 
 ## Properties
 
@@ -26,4 +27,5 @@ class [PlayerScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | [menuIcon](menu-icon.md) | [androidJvm]<br>open override val [menuIcon](menu-icon.md): [ImageVector](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector.html)<br>Menu icon if any |
 | [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md) | [androidJvm]<br>val [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md): [MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)?<br>Autogenerated menu item, if any Generated only if [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md) 0 |
 | [menuTitleResId](menu-title-res-id.md) | [androidJvm]<br>open override val [menuTitleResId](menu-title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Menu string resource id menu is generated only if it returns id 0 |
+| [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md) | [androidJvm]<br>open val [showOnce](../../org.mjdev.tvapp.base.navigation/-screen/show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = false<br>Show once and hide on back pressed, remove from backstack |
 | [titleResId](title-res-id.md) | [androidJvm]<br>open override val [titleResId](title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |

+ 3 - 1
wiki/documentation/app/org.mjdev.tvapp.ui.screens/-splash-screen/index.md

@@ -16,6 +16,7 @@ class [SplashScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | Name | Summary |
 |---|---|
 | [Compose](-compose.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)()<br>Compose function.<br>[androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [Compose](-compose.md)(navController: [NavHostController](https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController.html)?, backStackEntry: [NavBackStackEntry](https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry.html)?, menuItems: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)&lt;[MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)&gt;, args: [Map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)?&gt;)<br>Compose function for compose screen. This should be only a method overridden in super classes. |
+| [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md) | [androidJvm]<br>open override fun [onDestinationChanged](../../org.mjdev.tvapp.base.navigation/-screen/on-destination-changed.md)(controller: [NavController](https://developer.android.com/reference/kotlin/androidx/navigation/NavController.html), destination: [NavDestination](https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.html), arguments: [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html)?) |
 
 ## Properties
 
@@ -26,4 +27,5 @@ class [SplashScreen](index.md) : [Screen](../../org.mjdev.tvapp.base.navigation/
 | [menuIcon](../../org.mjdev.tvapp.base.navigation/-screen/menu-icon.md) | [androidJvm]<br>open val [menuIcon](../../org.mjdev.tvapp.base.navigation/-screen/menu-icon.md): [ImageVector](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector.html)? = null<br>Menu icon if any |
 | [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md) | [androidJvm]<br>val [menuItem](../../org.mjdev.tvapp.base.navigation/-screen/menu-item.md): [MenuItem](../../org.mjdev.tvapp.base.navigation/-menu-item/index.md)?<br>Autogenerated menu item, if any Generated only if [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md) 0 |
 | [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md) | [androidJvm]<br>open val [menuTitleResId](../../org.mjdev.tvapp.base.navigation/-screen/menu-title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Menu string resource id menu is generated only if it returns id 0 |
-| [titleResId](../../org.mjdev.tvapp.base.navigation/-screen/title-res-id.md) | [androidJvm]<br>open val [titleResId](../../org.mjdev.tvapp.base.navigation/-screen/title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |
+| [showOnce](show-once.md) | [androidJvm]<br>open override val [showOnce](show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true<br>Show once and hide on back pressed, remove from backstack |
+| [titleResId](../../org.mjdev.tvapp.base.navigation/-screen/title-res-id.md) | [androidJvm]<br>open val [titleResId](../../org.mjdev.tvapp.base.navigation/-screen/title-res-id.md): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)<br>Screen title |

+ 8 - 0
wiki/documentation/app/org.mjdev.tvapp.ui.screens/-splash-screen/show-once.md

@@ -0,0 +1,8 @@
+//[app](../../../index.md)/[org.mjdev.tvapp.ui.screens](../index.md)/[SplashScreen](index.md)/[showOnce](show-once.md)
+
+# showOnce
+
+[androidJvm]\
+open override val [showOnce](show-once.md): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true
+
+Show once and hide on back pressed, remove from backstack

+ 0 - 2
wiki/documentation/app/org.mjdev.tvapp.ui.screens/index.md

@@ -6,9 +6,7 @@
 
 | Name | Summary |
 |---|---|
-| [AboutScreen](-about-screen/index.md) | [androidJvm]<br>class [AboutScreen](-about-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |
 | [DetailScreen](-detail-screen/index.md) | [androidJvm]<br>class [DetailScreen](-detail-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |
 | [MainScreen](-main-screen/index.md) | [androidJvm]<br>class [MainScreen](-main-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |
 | [PlayerScreen](-player-screen/index.md) | [androidJvm]<br>class [PlayerScreen](-player-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |
 | [SplashScreen](-splash-screen/index.md) | [androidJvm]<br>class [SplashScreen](-splash-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |
-| [SubscriptionScreen](-subscription-screen/index.md) | [androidJvm]<br>class [SubscriptionScreen](-subscription-screen/index.md) : [Screen](../org.mjdev.tvapp.base.navigation/-screen/index.md) |

+ 3 - 0
wiki/documentation/index.md

@@ -17,8 +17,10 @@
 | [org.mjdev.tvapp.base.media](app/org.mjdev.tvapp.base.media/index.md) |
 | [org.mjdev.tvapp.base.navigation](app/org.mjdev.tvapp.base.navigation/index.md) |
 | [org.mjdev.tvapp.base.network](app/org.mjdev.tvapp.base.network/index.md) |
+| [org.mjdev.tvapp.base.page](app/org.mjdev.tvapp.base.page/index.md) |
 | [org.mjdev.tvapp.base.state](app/org.mjdev.tvapp.base.state/index.md) |
 | [org.mjdev.tvapp.base.ui.components.button](app/org.mjdev.tvapp.base.ui.components.button/index.md) |
+| [org.mjdev.tvapp.base.ui.components.card](app/org.mjdev.tvapp.base.ui.components.card/index.md) |
 | [org.mjdev.tvapp.base.ui.components.complex](app/org.mjdev.tvapp.base.ui.components.complex/index.md) |
 | [org.mjdev.tvapp.base.ui.components.icon](app/org.mjdev.tvapp.base.ui.components.icon/index.md) |
 | [org.mjdev.tvapp.base.ui.components.image](app/org.mjdev.tvapp.base.ui.components.image/index.md) |
@@ -30,6 +32,7 @@
 | [org.mjdev.tvapp.repository](app/org.mjdev.tvapp.repository/index.md) |
 | [org.mjdev.tvapp.state](app/org.mjdev.tvapp.state/index.md) |
 | [org.mjdev.tvapp.ui.components](app/org.mjdev.tvapp.ui.components/index.md) |
+| [org.mjdev.tvapp.ui.pages](app/org.mjdev.tvapp.ui.pages/index.md) |
 | [org.mjdev.tvapp.ui.screens](app/org.mjdev.tvapp.ui.screens/index.md) |
 | [org.mjdev.tvapp.ui.theme](app/org.mjdev.tvapp.ui.theme/index.md) |
 | [org.mjdev.tvapp.viewmodel](app/org.mjdev.tvapp.viewmodel/index.md) |

Некоторые файлы не были показаны из-за большого количества измененных файлов