Przeglądaj źródła

previews everywhere

Milan Jurkulak 1 rok temu
rodzic
commit
2c9b02e834
100 zmienionych plików z 364 dodań i 252 usunięć
  1. 2 2
      .run/mjdev-desktop [wasm].run.xml
  2. 1 1
      build.gradle.kts
  3. 20 26
      composeApp/build.gradle.kts
  4. 41 32
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/activity/MainActivity.kt
  5. 1 1
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/context/DesktopContext.kt
  6. 2 3
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/data/User.kt
  7. 1 0
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/helpers/WakeLockHelper.kt
  8. 5 2
      composeApp/src/androidMain/kotlin/org/mjdev/desktop/main/MainView.kt
  9. 5 12
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appbar/AppBar.kt
  10. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/AppsMenu.kt
  11. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsBottomBar.kt
  12. 8 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsList.kt
  13. 5 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuActions.kt
  14. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuApp.kt
  15. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuCategory.kt
  16. 2 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/background/BackgroundImage.kt
  17. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/blur/BlurPanel.kt
  18. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/ButtonPrimary.kt
  19. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/ButtonSecondary.kt
  20. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/TransparentButton.kt
  21. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/Card.kt
  22. 19 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/CardContent.kt
  23. 3 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/ClassicCard.kt
  24. 2 19
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/CompactCard.kt
  25. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/FocusableCard.kt
  26. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/ItemCard.kt
  27. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/PhotoCard.kt
  28. 19 5
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/WideClassicCard.kt
  29. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/chart/DonutChart.kt
  30. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/chromecast/ChromecastView.kt
  31. 10 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/ControlCenter.kt
  32. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/ControlCenterPage.kt
  33. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/ControlCenterPageScope.kt
  34. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/PageCache.kt
  35. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/PageHeader.kt
  36. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/about/AboutPage.kt
  37. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/ai/AIPage.kt
  38. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/bluetooth/BluetoothSettingsPage.kt
  39. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/devices/Devices.kt
  40. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/display/DisplaySettingsPage.kt
  41. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/ethernet/EthSettingsPage.kt
  42. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/main/MainSettingsPage.kt
  43. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/remotes/RemotesSettingsPage.kt
  44. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/sound/SoundSettingsPage.kt
  45. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/theme/ThemeSettingsPage.kt
  46. 23 4
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/wifi/WifiRow.kt
  47. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/wifi/WifiSettingsPage.kt
  48. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/BrushedLayout.kt
  49. 6 7
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/Clock.kt
  50. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/DateTime.kt
  51. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/MeasureUnconstrainedView.kt
  52. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/NeonCircle.kt
  53. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/PowerBlock.kt
  54. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/VerticalScrollableBox.kt
  55. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktop/Desktop.kt
  56. 3 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktop/widgets/MemoryChart.kt
  57. 10 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/DesktopPanel.kt
  58. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopMenuIcon.kt
  59. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelDateTime.kt
  60. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelFavoriteApps.kt
  61. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelIcon.kt
  62. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelLanguage.kt
  63. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelText.kt
  64. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelTray.kt
  65. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/draggable/DraggableView.kt
  66. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/file/FolderIcon.kt
  67. 3 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/file/FolderView.kt
  68. 4 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/fonticon/FontIcon.kt
  69. 2 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/BoxWithControls.kt
  70. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/Gallery.kt
  71. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/ItemInfo.kt
  72. 9 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/greeter/Greeter.kt
  73. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/grid/GridPlaced.kt
  74. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/guide/GuideView.kt
  75. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/icon/ShapedIcon.kt
  76. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/icon/WifiLevelIcon.kt
  77. 2 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/image/ImageAny.kt
  78. 2 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/image/PhotoImage.kt
  79. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/immersivelist/ImmersiveList.kt
  80. 8 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/info/Info.kt
  81. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/PasswordTextView.kt
  82. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/SearchFieldPassive.kt
  83. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/SelectableOutlineEditText.kt
  84. 8 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/installer/Installer.kt
  85. 4 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/list/ExpandableLazyColumn.kt
  86. 4 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/list/ExpandableListItem.kt
  87. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/menu/ContextMenu.kt
  88. 4 1
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/menu/CursorDropdownMenu.kt
  89. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/progress/DashedProgressIndicator.kt
  90. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/qrcode/QrCodeView.kt
  91. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/remote/RemoteView.kt
  92. 2 2
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/sliding/SlidingPanel.kt
  93. 2 3
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/Surface.kt
  94. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/Border.kt
  95. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceBorder.kt
  96. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceColors.kt
  97. 1 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceDefaults.kt
  98. 2 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceGlow.kt
  99. 2 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceScale.kt
  100. 2 0
      composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceShape.kt

+ 2 - 2
.run/mjdev-desktop [wasm].run.xml

@@ -4,13 +4,13 @@
       <option name="executionName" />
       <option name="externalProjectPath" value="$PROJECT_DIR$" />
       <option name="externalSystemIdString" value="GRADLE" />
-      <option name="scriptParameters" value="-t" />
+      <option name="scriptParameters" value="-t --stacktrace" />
       <option name="taskDescriptions">
         <list />
       </option>
       <option name="taskNames">
         <list>
-          <option value="wasmJsBrowserRun" />
+          <option value="wasmJsBrowserDevelopmentRun" />
         </list>
       </option>
       <option name="vmOptions" />

+ 1 - 1
build.gradle.kts

@@ -1,7 +1,7 @@
 plugins {
     alias(libs.plugins.android.application) apply false
     alias(libs.plugins.android.library) apply false
-    alias(libs.plugins.compose) apply false
+    alias(libs.plugins.compose.multiplatform) apply false
     alias(libs.plugins.compose.compiler) apply false
     alias(libs.plugins.kotlin.jvm) apply false
     alias(libs.plugins.kotlin.multiplatform) apply false

+ 20 - 26
composeApp/build.gradle.kts

@@ -7,9 +7,9 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
 plugins {
     alias(libs.plugins.kotlin.multiplatform)
     alias(libs.plugins.android.application)
-    alias(libs.plugins.compose)
+    alias(libs.plugins.compose.multiplatform)
     alias(libs.plugins.compose.compiler)
-    MultiPlatformPlugin
+//    MultiPlatformPlugin
 }
 
 kotlin {
@@ -17,12 +17,15 @@ kotlin {
     wasmJs {
         moduleName = "composeApp"
         browser {
+            val rootDirPath = project.rootDir.path
+            val projectDirPath = project.projectDir.path
             commonWebpackConfig {
                 outputFileName = "composeApp.js"
                 devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
                     static = (static ?: mutableListOf()).apply {
                         // Serve sources to debug inside browser
-                        add(project.projectDir.path)
+                        add(rootDirPath)
+                        add(projectDirPath)
                     }
                 }
             }
@@ -40,6 +43,8 @@ kotlin {
             dependencies {
                 // reflection
                 implementation(kotlin("reflect"))
+                // preview
+                implementation(compose.components.uiToolingPreview)
                 // base
                 implementation(projects.shared)
                 implementation(compose.runtime)
@@ -51,8 +56,6 @@ kotlin {
                 implementation(compose.components.resources)
                 implementation(libs.androidx.lifecycle.viewmodel)
                 implementation(libs.androidx.lifecycle.runtime.compose)
-                // network client/s
-//                implementation(libs.bundles.ktor.common)
                 // date time
                 implementation(libs.kotlinx.datetime)
                 // images
@@ -105,7 +108,10 @@ kotlin {
                 implementation(libs.alert.kmp)
                 // tor
                 // implementation("io.matthewnelson.kmp-tor:runtime:2.1.0")
+                // files
                 implementation("com.squareup.okio:okio:3.10.2")
+                // ai
+//                implementation(libs.generativeai)
             }
         }
         // android dependencies
@@ -114,7 +120,7 @@ kotlin {
                 // reflection
                 implementation(kotlin("reflect"))
                 // preview
-                implementation(compose.preview)
+                implementation(compose.components.uiToolingPreview)
                 // activity
                 implementation(libs.androidx.activity.compose)
                 // network client
@@ -123,8 +129,6 @@ kotlin {
                 implementation(libs.coil.okhttp)
                 // splash
                 implementation(libs.androidx.core.splashscreen)
-                // charts
-                implementation(libs.charts)
                 // permissions
                 implementation(libs.accompanist.permissions)
             }
@@ -132,10 +136,10 @@ kotlin {
         // wasm dependencies
         wasmJsMain {
             dependencies {
-//                implementation(libs.coil.ktor.wasm.js)
-                // charts
-//                implementation(libs.charts)
-//                implementation("com.squareup.okio:okio-nodefilesystem:3.10.2")
+                // reflection
+                implementation(kotlin("reflect"))
+                // preview
+                implementation(compose.components.uiToolingPreview)
             }
         }
         // desktop dependencies
@@ -144,26 +148,21 @@ kotlin {
             // reflection
             implementation(kotlin("reflect"))
             // preview
-            implementation(compose.preview)
+            implementation(compose.components.uiToolingPreview)
             // desktop
             implementation(compose.desktop.currentOs)
             // coroutines
             implementation(libs.kotlinx.coroutines.swing)
-            // network
-//            implementation(libs.ktor.client.java)
+            // okhttp
             implementation(libs.okhttp3.client)
-//            implementation(libs.coil.ktor)
+            // images okhttp
             implementation(libs.coil.okhttp)
-            // charts
-//            implementation(libs.charts)
             // gemini ai
             implementation(libs.google.generative.ai)
             // chatgpt
             implementation(libs.ychat)
             // desktop files
             implementation(libs.ini4j)
-            // charts
-            implementation(libs.charts)
         }
     }
 }
@@ -205,18 +204,13 @@ android {
     }
 }
 
-//dependencies {
-//    implementation(libs.generativeai)
-//}
-
-
 // desktop app config
 compose {
     desktop {
         group = libs.versions.app.pkg.name.get()
         version = libs.versions.app.pkg.version.get()
         application {
-            mainClass = "org.mjdev.desktop.MainKt"
+            mainClass = "org.mjdev.desktop.main.MainKt"
             nativeDistributions {
                 packageName = libs.versions.app.name.get()
                 packageVersion = libs.versions.app.pkg.version.get()

+ 41 - 32
composeApp/src/androidMain/kotlin/org/mjdev/desktop/activity/MainActivity.kt

@@ -15,41 +15,40 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.safeDrawing
 import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.material.Scaffold
+import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
 import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
 import androidx.core.view.WindowCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.WindowInsetsControllerCompat
 import com.google.accompanist.permissions.ExperimentalPermissionsApi
 import org.mjdev.desktop.main.MainView
-import org.mjdev.desktop.context.DesktopContext
+import org.mjdev.desktop.context.DesktopContext.Companion.rememberDesktopContext
 import org.mjdev.desktop.context.LocalDesktopContext
+import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.helpers.permission.rememberPermissionManager
 import org.mjdev.desktop.helpers.theme.DesktopTheme
 import org.mjdev.desktop.helpers.WakeLockHelper
 
+@OptIn(ExperimentalPermissionsApi::class)
 class MainActivity : ComponentActivity() {
     val wakeLockHelper by lazy { WakeLockHelper(this) }
 
-    @Suppress("OVERRIDE_DEPRECATION")
-    override fun onBackPressed() {
-        // Disable back button
-    }
+//    @Suppress("OVERRIDE_DEPRECATION")
+//    override fun onBackPressed() {
+//        // Disable back button
+//    }
 
-    @OptIn(ExperimentalPermissionsApi::class)
     override fun onCreate(savedInstanceState: Bundle?) {
         wakeLockHelper.acquireWakeLock()
         installSplashScreen()
         setKeepScreenOn()
         super.onCreate(savedInstanceState)
         enableEdgeToEdge(
-            statusBarStyle = SystemBarStyle.Companion.dark(
-                Color.TRANSPARENT,
-            ),
-            navigationBarStyle = SystemBarStyle.Companion.dark(
-                Color.TRANSPARENT,
-            )
+            statusBarStyle = SystemBarStyle.dark(Color.TRANSPARENT),
+            navigationBarStyle = SystemBarStyle.dark(Color.TRANSPARENT)
         )
         WindowCompat.getInsetsController(window, window.decorView).apply {
             hide(WindowInsetsCompat.Type.statusBars())
@@ -59,27 +58,9 @@ class MainActivity : ComponentActivity() {
         setContent {
             rememberPermissionManager()
             CompositionLocalProvider(
-                LocalDesktopContext provides DesktopContext.Companion.rememberDesktopContext(
-                    baseContext
-                )
+                LocalDesktopContext provides rememberDesktopContext(baseContext)
             ) {
-                DesktopTheme {
-                    Scaffold(
-                        modifier = Modifier.Companion.fillMaxSize()
-                    ) { paddingValues ->
-                        Box(
-                            modifier = Modifier.Companion
-                                .fillMaxSize()
-                                .padding(paddingValues)
-                                .consumeWindowInsets(paddingValues)
-                                .windowInsetsPadding(
-                                    WindowInsets.Companion.safeDrawing
-                                )
-                        ) {
-                            MainView()
-                        }
-                    }
-                }
+                ActivityMain()
             }
         }
     }
@@ -97,4 +78,32 @@ class MainActivity : ComponentActivity() {
     private fun ComponentActivity.resetKeepScreenOn() {
         window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
     }
+}
+
+@OptIn(ExperimentalPermissionsApi::class)
+@Composable
+private fun ActivityMain() {
+    DesktopTheme {
+        Scaffold(
+            modifier = Modifier.fillMaxSize()
+        ) { paddingValues ->
+            Box(
+                modifier = Modifier
+                    .fillMaxSize()
+                    .padding(paddingValues)
+                    .consumeWindowInsets(paddingValues)
+                    .windowInsetsPadding(
+                        WindowInsets.safeDrawing
+                    )
+            ) {
+                MainView()
+            }
+        }
+    }
+}
+
+@Preview
+@Composable
+fun MainActivityPreview() = preview {
+    ActivityMain()
 }

+ 1 - 1
composeApp/src/androidMain/kotlin/org/mjdev/desktop/context/DesktopContext.kt

@@ -60,7 +60,7 @@ class DesktopContext(
     override var isInstalled: Boolean = false
     override val machineName: String = ""
     override val appArgs: List<String> = emptyList()
-    override val currentUser: IUser = allUsers.firstOrNull { u -> u.isLoggedIn } ?: User.Nobody
+    override val currentUser: IUser = allUsers.firstOrNull { u -> u.isLoggedIn } ?: User.DEFAULT
     override val currentLocale: ILocale = ILocale.DEFAULT
     override val theme: ITheme = ITheme.DEFAULT
     override val appCategories: List<Category> = emptyList()

+ 2 - 3
composeApp/src/androidMain/kotlin/org/mjdev/desktop/data/User.kt

@@ -55,9 +55,8 @@ class User(
 //    ): Flow<Boolean> = flow { context.login(userName, password) }
 
     companion object {
-        val Nobody = User()
-
-        val DEFAULT = Nobody
+        val NOBODY = User()
+        val DEFAULT = NOBODY
 
         fun isLoggedIn(
             uname: String

+ 1 - 0
composeApp/src/androidMain/kotlin/org/mjdev/desktop/helpers/WakeLockHelper.kt

@@ -12,6 +12,7 @@ class WakeLockHelper(
     private val powerManager
         get() = context.getSystemService(Context.POWER_SERVICE) as? PowerManager
 
+    @Suppress("DEPRECATION")
     @SuppressLint("WakelockTimeout")
     fun acquireWakeLock() {
         wakeLock = powerManager?.newWakeLock(

+ 5 - 2
composeApp/src/androidMain/kotlin/org/mjdev/desktop/main/MainView.kt

@@ -65,9 +65,12 @@ fun MainView() = withDesktopContext {
         // todo, something prevent preview
         if (!isDesign) {
             Desktop(
-                tooltipState = tooltipState, onTooltip = onTooltip, padding = PaddingValues(
+                tooltipState = tooltipState,
+                onTooltip = onTooltip,
+                padding = PaddingValues(
                     bottom = bottomPadding
-                ), widgets = {
+                ),
+                widgets = {
                     MemoryChart(
                         modifier = Modifier
                             .size(350.dp, 300.dp)

+ 5 - 12
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appbar/AppBar.kt

@@ -33,6 +33,7 @@ import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.conditional
 import org.mjdev.desktop.helpers.compose.Orientation
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo alignment scopes
 @Composable
@@ -123,9 +124,7 @@ fun AppBar(
     }
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppBarHorizontalPreview() = preview {
     AppBar(
@@ -154,9 +153,7 @@ fun AppBarHorizontalPreview() = preview {
     )
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppBarHorizontalFillPreview() = preview {
     AppBar(
@@ -186,9 +183,7 @@ fun AppBarHorizontalFillPreview() = preview {
     )
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppBarVerticalPreview() = preview {
     AppBar(
@@ -216,9 +211,7 @@ fun AppBarVerticalPreview() = preview {
     )
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppBarVerticalFillPreview() = preview {
     AppBar(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/AppsMenu.kt

@@ -56,6 +56,7 @@ import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
 import org.mjdev.desktop.helpers.animation.Animations.AppsMenuEnterAnimation
 import org.mjdev.desktop.helpers.animation.Animations.AppsMenuExitAnimation
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -267,8 +268,7 @@ class AppsMenuState(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AppsMenuPreview() = preview {
     AppsMenu()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsBottomBar.kt

@@ -21,6 +21,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.MutableStateExt.clear
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.icons.arrow.ArrowBack
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -73,8 +74,7 @@ fun AppsBottomBar(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AppsBottomBarPreview() = preview {
     AppsBottomBar(

+ 8 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsList.kt

@@ -28,6 +28,7 @@ import org.mjdev.desktop.context.DesktopContextScope
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun AppsList(
@@ -79,12 +80,16 @@ fun AppsList(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AppsListPreview() = preview(320, 640) {
     AppsList(
-        modifier = Modifier.background(Color.SuperDarkGray, RoundedCornerShape(16.dp)).padding(8.dp),
+        modifier = Modifier
+            .background(
+                Color.SuperDarkGray,
+                RoundedCornerShape(16.dp)
+            )
+            .padding(8.dp),
         items = listOf(
 //            App.Test,
 //            App.Test,

+ 5 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuActions.kt

@@ -27,6 +27,7 @@ import org.mjdev.desktop.extensions.Modifier.circleBorder
 import org.mjdev.desktop.icons.system.Logout
 import org.mjdev.desktop.icons.system.PowerOff
 import org.mjdev.desktop.icons.system.RestartAlt
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("UNUSED_PARAMETER")
 @Composable
@@ -89,11 +90,12 @@ fun AppsMenuActions(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppsMenuActionsPreview() = preview {
     AppsMenuActions(
-        modifier = Modifier.background(Color.SuperDarkGray, RoundedCornerShape(16.dp)).padding(8.dp),
+        modifier = Modifier
+            .background(Color.SuperDarkGray, RoundedCornerShape(16.dp))
+            .padding(8.dp),
     )
 }

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuApp.kt

@@ -32,6 +32,7 @@ import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.extensions.Modifier.onRightClick
 import org.mjdev.desktop.helpers.shape.DottedShape
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName", "UNUSED_PARAMETER")
 @Composable
@@ -103,8 +104,7 @@ fun AppsMenuApp(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AppsMenuAppPreview() = preview {
     AppsMenuApp(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/appsmenu/components/AppsMenuCategory.kt

@@ -31,6 +31,7 @@ import org.mjdev.desktop.extensions.Modifier.onLeftClick
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.extensions.Modifier.onRightClick
 import org.mjdev.desktop.helpers.shape.DottedShape
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("UNUSED_PARAMETER")
 @Composable
@@ -90,8 +91,7 @@ fun AppsMenuCategory(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun AppsMenuCategoryPreview() = preview {
     AppsMenuCategory(

+ 2 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/background/BackgroundImage.kt

@@ -27,6 +27,7 @@ import org.mjdev.desktop.extensions.LaunchedEffect.launchedEffect
 import org.mjdev.desktop.extensions.MutableStateExt.rememberComputed
 import org.mjdev.desktop.helpers.generic.Queue
 import kotlin.math.min
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -98,7 +99,7 @@ fun BackgroundImage(
 }
 
 @Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun BackgroundImagePreview() = preview {
     BackgroundImage()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/blur/BlurPanel.kt

@@ -32,6 +32,7 @@ import org.mjdev.desktop.composeapp.generated.resources.blur4
 import org.mjdev.desktop.extensions.Colors.alpha
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo real blur
 @Composable
@@ -78,8 +79,7 @@ fun BlurPanel(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun BlurPanelPreview() = preview(480, 800) {
     BlurPanel()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/ButtonPrimary.kt

@@ -6,6 +6,7 @@ import androidx.compose.runtime.Composable
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun ButtonPrimary(
@@ -31,8 +32,7 @@ fun ButtonPrimary(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ButtonPrimaryPreview() = preview {
     ButtonPrimary()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/ButtonSecondary.kt

@@ -6,6 +6,7 @@ import androidx.compose.runtime.Composable
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -32,8 +33,7 @@ fun ButtonSecondary(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ButtonSecondaryPreview() = preview {
     ButtonSecondary()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/button/TransparentButton.kt

@@ -21,6 +21,7 @@ import org.mjdev.desktop.extensions.ButtonDefaults.noElevation
 import org.mjdev.desktop.extensions.ButtonDefaults.transparent
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.user.AccountCircle
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun TransparentButton(
@@ -36,8 +37,7 @@ fun TransparentButton(
     content = content
 )
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun TransparentButtonPreview() = preview {
     TransparentButton {

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/Card.kt

@@ -30,6 +30,7 @@ import org.mjdev.desktop.components.card.base.CardShape
 import org.mjdev.desktop.components.surface.Surface
 import org.mjdev.desktop.components.surface.base.Glow
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo, card like in android tv
 @Composable
@@ -58,8 +59,7 @@ fun Card(
     Column(content = content)
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun CardPreview() = preview {
     Card(

+ 19 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/CardContent.kt

@@ -4,11 +4,14 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.ProvideTextStyle
+import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.graphicsLayer
 import org.mjdev.desktop.components.card.base.CardDefaults.DescriptionAlpha
 import org.mjdev.desktop.components.card.base.CardDefaults.SubtitleAlpha
+import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun CardContent(
@@ -38,3 +41,19 @@ fun CardContent(
         }
     }
 }
+
+@Preview
+@Composable
+fun CardContentPreview() = preview {
+    CardContent(
+        title = {
+            Text("title")
+        },
+        subtitle = {
+            Text("subtitle")
+        },
+        description = {
+            Text("description")
+        }
+    )
+}

+ 3 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/ClassicCard.kt

@@ -20,6 +20,7 @@ import org.mjdev.desktop.components.surface.base.Glow
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.user.AccountCircle
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -66,11 +67,11 @@ fun ClassicCard(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ClassicCardPreview() = preview {
     ClassicCard(
+        modifier = Modifier.size(320.dp, 200.dp),
         colors = CardDefaults.colors(
             containerColor = Color.White
         ),

+ 2 - 19
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/CompactCard.kt

@@ -32,6 +32,7 @@ import org.mjdev.desktop.components.surface.base.Glow
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.user.AccountCircle
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -84,25 +85,7 @@ fun CompactCard(
     }
 }
 
-//@Preview
-@Suppress("unused")
-@Composable
-fun CardContentPreview() = preview {
-    CardContent(
-        title = {
-            TextAny("title")
-        },
-        subtitle = {
-            TextAny("subtitle")
-        },
-        description = {
-            TextAny("description")
-        }
-    )
-}
-
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun CompactCardPreview() = preview {
     CompactCard(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/FocusableCard.kt

@@ -49,6 +49,7 @@ import org.mjdev.desktop.extensions.FocusState.rememberFocusState
 import org.mjdev.desktop.extensions.FocusState.requestFocusOnTouch
 import org.mjdev.desktop.helpers.compose.FocusHelper
 import org.mjdev.desktop.icons.image.BrokenImage
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo calculate
 @Composable
@@ -167,8 +168,7 @@ fun FocusableCard(
     },
 )
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun FocusableCardPreview() = preview {
     FocusableCard(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/ItemCard.kt

@@ -37,6 +37,7 @@ import org.mjdev.desktop.extensions.FocusState.rememberFocusRequester
 import org.mjdev.desktop.extensions.FocusState.rememberFocusState
 import org.mjdev.desktop.helpers.compose.FocusHelper
 import org.mjdev.desktop.icons.image.BrokenImage
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo calculate
 @Composable
@@ -101,8 +102,7 @@ fun ItemCard(
     placeholder = placeholder
 )
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ItemCardPreview() = preview {
     ItemCard(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/PhotoCard.kt

@@ -25,6 +25,7 @@ import org.mjdev.desktop.extensions.FocusState.rememberFocusState
 import org.mjdev.desktop.helpers.compose.FocusHelper
 import org.mjdev.desktop.components.image.PhotoImage
 import org.mjdev.desktop.interfaces.IDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun PhotoCard(
@@ -93,8 +94,7 @@ fun computeCardWidth(
     else api.containerSize.height / ratio
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun PhotoCardPreview() = preview {
     PhotoCard(

+ 19 - 5
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/card/WideClassicCard.kt

@@ -20,6 +20,7 @@ import org.mjdev.desktop.components.surface.base.Glow
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.user.AccountCircle
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("unused")
 @Composable
@@ -49,13 +50,24 @@ fun WideClassicCard(
     border = border,
     glow = glow
 ) {
-    Row(modifier = Modifier.padding(contentPadding)) {
-        Box(contentAlignment = CardDefaults.ContentImageAlignment, content = image)
-        Column { CardContent(title = title, subtitle = subtitle, description = description) }
+    Row(
+        modifier = Modifier.padding(contentPadding)
+    ) {
+        Box(
+            contentAlignment = CardDefaults.ContentImageAlignment,
+            content = image
+        )
+        Column {
+            CardContent(
+                title = title,
+                subtitle = subtitle,
+                description = description
+            )
+        }
     }
 }
 
-//@Preview
+@Preview
 @Composable
 fun WideClassicCardPreview() = preview {
     WideClassicCard(
@@ -63,7 +75,9 @@ fun WideClassicCardPreview() = preview {
             containerColor = Color.White
         ),
         border = CardDefaults.border(),
-        glow = CardDefaults.glow(glow = Glow(Color.Green, 4.dp)),
+        glow = CardDefaults.glow(
+            glow = Glow(Color.Green, 4.dp)
+        ),
         contentPadding = PaddingValues(8.dp),
         scale = CardDefaults.scale(1f),
         image = {

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/chart/DonutChart.kt

@@ -13,6 +13,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.isActive
 import org.mjdev.desktop.extensions.System.currentTimeMillis
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -65,9 +66,7 @@ fun DonutChart(
     }
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DonutChartPreview() = preview(480) {
     DonutChart(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/chromecast/ChromecastView.kt

@@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
-//import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -16,7 +16,7 @@ fun ChromecastView(
     }
 }
 
-//@Preview(name = "ChromecastView")
+@Preview
 @Composable
 private fun PreviewChromecastView() {
     ChromecastView()

+ 10 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/ControlCenter.kt

@@ -44,6 +44,8 @@ import org.mjdev.desktop.extensions.MutableStateExt.rememberComputed
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.helpers.animation.Animations.ControlCenterEnterAnimation
 import org.mjdev.desktop.helpers.animation.Animations.ControlCenterExitAnimation
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Composable
 fun ControlCenter(
@@ -188,4 +190,12 @@ fun ControlCenter(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun ControlCenterPreview() = preview {
+    ControlCenter(
+        controlCenterState = rememberVisibilityState(true)
+    )
 }

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/ControlCenterPage.kt

@@ -12,6 +12,7 @@ import org.mjdev.desktop.components.controlcenter.base.ControlCenterPageScope.Co
 import org.mjdev.desktop.interfaces.IControlCenterPageDataSaver
 import org.mjdev.desktop.interfaces.IDesktopContext
 import org.mjdev.desktop.interfaces.IPage
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("MemberVisibilityCanBePrivate")
 class ControlCenterPage(

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/ControlCenterPageScope.kt

@@ -5,6 +5,7 @@ import androidx.compose.runtime.DisallowComposableCalls
 import org.mjdev.desktop.context.DesktopContextScope
 import org.mjdev.desktop.context.LocalDesktopContext
 import org.mjdev.desktop.interfaces.IDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 class ControlCenterPageScope(
     context: IDesktopContext,

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/PageCache.kt

@@ -2,6 +2,7 @@ package org.mjdev.desktop.components.controlcenter.base
 
 import androidx.compose.runtime.DisallowComposableCalls
 import org.mjdev.desktop.interfaces.IControlCenterPageDataSaver
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("unused")
 class PageCache(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/base/PageHeader.kt

@@ -29,6 +29,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.circleBorder
 import org.mjdev.desktop.extensions.Modifier.clipCircle
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun PageHeader(
@@ -71,8 +72,7 @@ fun PageHeader(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun PageHeaderPreview() = preview {
     PageHeader(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/about/AboutPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.custom.Mjdev
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun AboutPage() = ControlCenterPage(
@@ -19,8 +20,7 @@ fun AboutPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AboutPagePreview() = preview {
     AboutPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/ai/AIPage.kt

@@ -41,6 +41,7 @@ import org.mjdev.desktop.extensions.Modifier.clipCircle
 import org.mjdev.desktop.helpers.compose.rememberForeverLazyListState
 import org.mjdev.desktop.icons.chat.Chat
 import org.mjdev.desktop.icons.system.ContentCopy
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun AIPage() = ControlCenterPage(
@@ -192,8 +193,7 @@ fun TextBlock(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun AIPagePreview() = preview {
     AIPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/bluetooth/BluetoothSettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.network.Bluetooth
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun BluetoothSettingsPage() = ControlCenterPage(
@@ -22,8 +23,7 @@ fun BluetoothSettingsPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun BluetoothSettingsPagePreview() = preview {
     BluetoothSettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/devices/Devices.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.mobile.MobileFriendly
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun DevicesPage() = ControlCenterPage(
@@ -24,8 +25,7 @@ fun DevicesPage() = ControlCenterPage(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun DevicesPagePreview() = preview {
     DevicesPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/display/DisplaySettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.settings.SettingsMonitor
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun DisplaySettingsPage() = ControlCenterPage(
@@ -18,8 +19,7 @@ fun DisplaySettingsPage() = ControlCenterPage(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DisplaySettingsPagePreview() = preview {
     DisplaySettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/ethernet/EthSettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.settings.SettingsEthernet
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun EthSettingsPage() = ControlCenterPage(
@@ -22,8 +23,7 @@ fun EthSettingsPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun EthSettingsPagePreview() = preview {
     EthSettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/main/MainSettingsPage.kt

@@ -22,6 +22,7 @@ import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
 import org.mjdev.desktop.helpers.compose.Orientation
 import org.mjdev.desktop.helpers.shape.BarShape
 import org.mjdev.desktop.icons.settings.SettingsHome
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun MainSettingsPage() = ControlCenterPage(
@@ -139,8 +140,7 @@ fun MainSettingsPage() = ControlCenterPage(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun MainSettingsPagePreview() = preview {
     MainSettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/remotes/RemotesSettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.custom.Mjdev
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun RemotesSettingsPage() = ControlCenterPage(
@@ -19,8 +20,7 @@ fun RemotesSettingsPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun RemotesSettingsPagePreview() = preview {
     RemotesSettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/sound/SoundSettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.settings.SettingsSound
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun SoundSettingsPage() = ControlCenterPage(
@@ -19,8 +20,7 @@ fun SoundSettingsPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun SoundSettingsPagePreview() = preview {
     SoundSettingsPage().render()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/theme/ThemeSettingsPage.kt

@@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.components.controlcenter.base.ControlCenterPage
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.custom.Mjdev
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun ThemeSettingsPage() = ControlCenterPage(
@@ -19,8 +20,7 @@ fun ThemeSettingsPage() = ControlCenterPage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun ThemeSettingsPagePreview() = preview {
     ThemeSettingsPage().render()

+ 23 - 4
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/wifi/WifiRow.kt

@@ -22,11 +22,12 @@ import org.mjdev.desktop.components.text.KeyValueText
 import org.mjdev.desktop.components.text.TextAny
 import kotlinx.coroutines.launch
 import androidx.compose.foundation.layout.*
+import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.data.WifiNetwork
-
-// todo preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Suppress("UNUSED_PARAMETER")
 @Composable
@@ -34,9 +35,9 @@ fun WifiRow(
     modifier: Modifier = Modifier,
     idx: Int = 0,
     item: WifiNetwork,
-    expandedState: MutableState<Boolean>,
+    expandedState: MutableState<Boolean> = mutableStateOf(false),
     isConnecting: Boolean = false,
-    connect: suspend () -> Unit
+    connect: suspend () -> Unit = {}
 ) = withDesktopContext {
     Column(
         modifier = modifier,
@@ -152,4 +153,22 @@ fun WifiRow(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun WifiRowPreview1() = preview {
+    WifiRow(
+        item = WifiNetwork(),
+        expandedState = mutableStateOf(false)
+    )
+}
+
+@Preview
+@Composable
+fun WifiRowPreview2() = preview {
+    WifiRow(
+        item = WifiNetwork(),
+        expandedState = mutableStateOf(true)
+    )
 }

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/controlcenter/pages/wifi/WifiSettingsPage.kt

@@ -19,6 +19,7 @@ import org.mjdev.desktop.extensions.MutableStateExt.rememberComputed
 
 import org.mjdev.desktop.icons.settings.SettingsWifi
 import org.mjdev.desktop.log.Log
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 fun WifiSettingsPage() = ControlCenterPage(
@@ -75,8 +76,7 @@ fun WifiSettingsPage() = ControlCenterPage(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun WifiSettingsPagePreview() = preview {
     WifiSettingsPage().render()

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/BrushedLayout.kt

@@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Brush
 import androidx.compose.ui.graphics.Color
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun BrushedLayout(
@@ -29,9 +30,7 @@ fun BrushedLayout(
     }
 )
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun BrushedLayoutPreview() = preview(320) {
     BrushedLayout()

+ 6 - 7
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/Clock.kt

@@ -17,13 +17,14 @@ import androidx.compose.ui.unit.sp
 import org.mjdev.desktop.components.text.TextWithShadow
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.size
-//import org.mjdev.desktop.extensions.Custom.dateFlow
-//import org.mjdev.desktop.extensions.Custom.timeFlow
+import org.mjdev.desktop.extensions.Custom.dateFlow
+import org.mjdev.desktop.extensions.Custom.timeFlow
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.helpers.parsers.Parsers.ParsedList
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo remove params
 @OptIn(ExperimentalFoundationApi::class)
@@ -41,7 +42,7 @@ fun Clock(
     talkEveryHour: Boolean = true,
     talkOnClick: Boolean = true
 ) = withDesktopContext {
-    val time = "time" //timeFlow.value // todo
+    val time = timeFlow.value
     var lastTalk by rememberState("")
     val talk: () -> Unit = {
         runAsync {
@@ -72,7 +73,7 @@ fun Clock(
                 singleLine = true
             )
             if (showDate) TextWithShadow(
-                text = "date", // dateFlow.value, // todo
+                text = dateFlow.value,
                 textAlign = TextAlign.Center,
                 fontWeight = dateTextWeight,
                 fontSize = dateTextSize,
@@ -93,9 +94,7 @@ fun Clock(
     }
 }
 
-// todo
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun ClockPreview() = preview {
     Clock(

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/DateTime.kt

@@ -13,6 +13,7 @@ import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.size
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun DateTime(
@@ -49,9 +50,7 @@ fun DateTime(
     )
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DateTimePreview() = preview {
     DateTime(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/MeasureUnconstrainedView.kt

@@ -10,6 +10,7 @@ import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.components.text.TextAny
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun MeasureUnconstrainedView(
@@ -33,8 +34,7 @@ fun MeasureUnconstrainedView(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun MeasureUnconstrainedViewPreview() = preview {
     MeasureUnconstrainedView({

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/NeonCircle.kt

@@ -5,6 +5,7 @@ package org.mjdev.desktop.components.custom
 //import androidx.compose.ui.graphics.Color
 //import androidx.compose.ui.unit.Dp
 //import androidx.compose.ui.unit.dp
+//import org.jetbrains.compose.ui.tooling.preview.Preview
 
 //@Composable
 //fun NeonCircle(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/PowerBlock.kt

@@ -31,6 +31,7 @@ import org.mjdev.desktop.extensions.Modifier.clipCircle
 //import org.mjdev.desktop.extensions.rectShadow
 import org.mjdev.desktop.helpers.shape.BarShape
 import org.mjdev.desktop.icons.system.PowerOff
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun PowerBlock(
@@ -89,8 +90,7 @@ fun PowerBlock(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun PowerBlockPreview() = preview {
     PowerBlock()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/custom/VerticalScrollableBox.kt

@@ -18,6 +18,7 @@ import androidx.compose.ui.Modifier
 import org.mjdev.desktop.extensions.Compose.isLandscapeMode
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Compose.verticalTouchScrollable
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun VerticalScrollableBox(
@@ -34,8 +35,7 @@ fun VerticalScrollableBox(
     content.invoke(this)
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun VerticalScrollableBoxPreview() = preview {
     VerticalScrollableBox()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktop/Desktop.kt

@@ -22,6 +22,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.onLeftClick
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.extensions.Modifier.onRightClick
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName", "UNUSED_PARAMETER")
 @Composable
@@ -91,8 +92,7 @@ fun Desktop(
 }
 
 // todo
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun DesktopPreview() = preview {
     Desktop()

+ 3 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktop/widgets/MemoryChart.kt

@@ -13,6 +13,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.DoubleExt.toMemorySizeReadable
 import org.mjdev.desktop.helpers.system.meminfo.MemInfo
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -59,8 +60,8 @@ fun MemoryChart(
     }
 }
 
-//@Preview
-@Suppress("unused")
+// todo
+@Preview
 @Composable
 fun MemoryChartPreview() = preview {
     MemoryChart()

+ 10 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/DesktopPanel.kt

@@ -47,6 +47,8 @@ import org.mjdev.desktop.extensions.PaddingValues.height
 import org.mjdev.desktop.helpers.animation.Animations.DesktopPanelEnterAnimation
 import org.mjdev.desktop.helpers.animation.Animations.DesktopPanelExitAnimation
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Composable
 fun DesktopPanel(
@@ -204,4 +206,12 @@ fun DesktopPanel(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun DesktopPanelPreview() = preview {
+    DesktopPanel(
+        panelState = rememberVisibilityState(true)
+    )
 }

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopMenuIcon.kt

@@ -8,6 +8,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -39,8 +40,7 @@ fun DesktopMenuIcon(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DesktopMenuIconPreview() = preview {
     DesktopMenuIcon()

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelDateTime.kt

@@ -22,6 +22,7 @@ import org.mjdev.desktop.extensions.Modifier.onMouseEnter
 import org.mjdev.desktop.extensions.Modifier.onMouseLeave
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun DesktopPanelDateTime(
@@ -64,9 +65,7 @@ fun DesktopPanelDateTime(
     }
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DesktopPanelDateTimePreview() = preview {
     DesktopPanelDateTime()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelFavoriteApps.kt

@@ -17,6 +17,7 @@ import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContex
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.LaunchedEffect.flowBlock
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -63,8 +64,7 @@ fun DesktopPanelFavoriteApps(
 }
 
 // todo
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun DesktopPanelFavoriteAppsPreview() = preview {
     DesktopPanelFavoriteApps()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelIcon.kt

@@ -32,6 +32,7 @@ import org.mjdev.desktop.extensions.MutableStateExt.rememberCalculated
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.interfaces.IApp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun DesktopPanelIcon(
@@ -110,8 +111,7 @@ fun DesktopPanelIcon(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun DesktopPanelIconPreview() = preview {
     DesktopPanelIcon(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelLanguage.kt

@@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -20,8 +21,7 @@ fun DesktopPanelLanguage(
     )
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun DesktopPanelLanguagePreview() = preview {
     DesktopPanelLanguage()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelText.kt

@@ -20,6 +20,7 @@ import org.mjdev.desktop.extensions.Modifier.onMouseEnter
 import org.mjdev.desktop.extensions.Modifier.onMouseLeave
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun DesktopPanelText(
@@ -58,8 +59,7 @@ fun DesktopPanelText(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DesktopPanelTextPreview() = preview {
     DesktopPanelText()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/desktoppanel/applets/DesktopPanelTray.kt

@@ -12,6 +12,7 @@ import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -29,8 +30,7 @@ fun DesktopPanelTray(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DesktopPanelTrayPreview() = preview {
     DesktopPanelTray()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/draggable/DraggableView.kt

@@ -21,6 +21,7 @@ import androidx.compose.ui.zIndex
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.conditional
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -87,8 +88,7 @@ fun DraggableView(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DraggableViewPreview() = preview {
     DraggableView()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/file/FolderIcon.kt

@@ -28,6 +28,7 @@ import org.mjdev.desktop.extensions.PathExt.cwd
 import org.mjdev.desktop.extensions.PathExt.extension
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.DpSizeExt.plus
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName", "UNNECESSARY_SAFE_CALL")
 @Composable
@@ -92,8 +93,7 @@ fun FolderIcon(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun FolderIconPreview() = preview {
     FolderIcon()

+ 3 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/file/FolderView.kt

@@ -33,6 +33,7 @@ import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContex
 import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
 import org.mjdev.desktop.extensions.Modifier.clipCircle
 import kotlin.math.max
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo orientation
 @Suppress("FunctionName")
@@ -143,9 +144,8 @@ private fun rememberFiles(
     }
 }
 
-//todo
-//@Preview
-@Suppress("unused")
+// todo
+@Preview
 @Composable
 fun FolderViewPreview() = preview {
     FolderView(

+ 4 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/fonticon/FontIcon.kt

@@ -17,6 +17,7 @@ import org.mjdev.desktop.components.text.AutoResizeText
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.interfaces.IFont
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName")
 @Composable
@@ -93,11 +94,13 @@ fun FontIcon(
     )
 }
 
-//@Preview
+@Preview
 @Composable
 fun FontIconPreview() = preview {
     Column {
         FontIcon(iconId = 0)
         FontIcon(iconName = "")
+        FontIcon(iconName = "tv")
+        FontIcon(iconName = "browser")
     }
 }

+ 2 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/BoxWithControls.kt

@@ -1,5 +1,7 @@
 package org.mjdev.desktop.components.gallery
 
+//import org.jetbrains.compose.ui.tooling.preview.Preview
+
 //@Composable
 //fun BoxWithControls(
 //    modifier: Modifier = Modifier,

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/Gallery.kt

@@ -40,6 +40,7 @@ package org.mjdev.desktop.components.gallery
 //import org.mjdev.desktop.extensions.Compose.preview
 //import org.mjdev.desktop.extensions.FocusState.rememberFocusRequester
 //import org.mjdev.desktop.extensions.MutableStateExt.rememberDerivedState
+// import org.jetbrains.compose.ui.tooling.preview.Preview
 //
 //// todo
 //@Composable

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/gallery/ItemInfo.kt

@@ -25,6 +25,7 @@ package org.mjdev.desktop.components.gallery
 //import org.mjdev.desktop.extensions.Colors.invert
 //import org.mjdev.desktop.extensions.Compose.preview
 //import org.mjdev.desktop.helpers.compose.Gravity
+//import org.jetbrains.compose.ui.tooling.preview.Preview
 //
 //// todo
 //@Composable

+ 9 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/greeter/Greeter.kt

@@ -20,6 +20,8 @@ import org.mjdev.desktop.extensions.Compose.isDesign
 import org.mjdev.desktop.extensions.MutableStateExt.rememberState
 import org.mjdev.desktop.helpers.compose.Orientation
 import org.mjdev.desktop.interfaces.IUser
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Composable
 fun Greeter(
@@ -56,7 +58,7 @@ fun Greeter(
 //                            unfocusedBorderColor = iconsTintColor
 //                        ),
                     onDone = { password ->
-                        if(user != null) {
+                        if (user != null) {
                             onLogin(user!!, password)
                         }
                     }
@@ -64,4 +66,10 @@ fun Greeter(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun GreeterPreview() = preview(320, 320) {
+    Greeter()
 }

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/grid/GridPlaced.kt

@@ -14,6 +14,7 @@ import org.mjdev.desktop.components.grid.base.Measure.calculateCellPlaces
 import org.mjdev.desktop.components.grid.base.Measure.measure
 import org.mjdev.desktop.extensions.Compose.preview
 import kotlin.math.min
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun GridPlaced(
@@ -54,8 +55,7 @@ fun GridPlaced(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun GridPlacedPreview() = preview {
     GridPlaced()

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/guide/GuideView.kt

@@ -21,6 +21,7 @@ import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
 import kotlin.math.max
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 @UiComposable
@@ -57,9 +58,7 @@ fun GuideLines(
     }
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun GuideLinesPreview() = preview(320, 320) {
     GuideLines(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/icon/ShapedIcon.kt

@@ -19,6 +19,7 @@ import org.mjdev.desktop.extensions.Modifier.onRightClick
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.icons.user.AccountCircle
 import org.mjdev.desktop.extensions.PaddingValues.size
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("UNUSED_PARAMETER")
 @Composable
@@ -67,8 +68,7 @@ fun ShapedIcon(
     }
 }
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun ShapedIconPreview() = preview {
     ShapedIcon()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/icon/WifiLevelIcon.kt

@@ -24,6 +24,7 @@ import org.mjdev.desktop.icons.wifi.level.Wifi_Level_2
 import org.mjdev.desktop.icons.wifi.level.Wifi_Level_3
 import org.mjdev.desktop.icons.wifi.level.Wifi_Level_4
 import org.mjdev.desktop.icons.wifi.level.Wifi_Level_5
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun WifiLevelIcon(
@@ -50,8 +51,7 @@ fun WifiLevelIcon(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun WifiLevelIconPreview() = preview {
     WifiLevelIcon(

+ 2 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/image/ImageAny.kt

@@ -20,6 +20,7 @@ import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.helpers.image.ImageLoader.asyncImageLoader
 import org.mjdev.desktop.icons.image.BrokenImage
 import androidx.compose.foundation.Image as ComposeImage
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("FunctionName", "UNUSED_PARAMETER")
 @Composable
@@ -140,7 +141,7 @@ fun ImageAny(
     }
 }
 
-//@Preview
+@Preview
 @Composable
 fun ImageAnyPreview() = preview {
     ImageAny()

+ 2 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/image/PhotoImage.kt

@@ -25,6 +25,7 @@ import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.icons.image.BrokenImage
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -124,7 +125,7 @@ fun PhotoImage(
     }
 }
 
-//@Preview
+@Preview
 @Composable
 fun PhotoImagePreview() = preview {
     PhotoImage()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/immersivelist/ImmersiveList.kt

@@ -17,6 +17,7 @@ import org.mjdev.desktop.components.immersivelist.base.ImmersiveListBackgroundSc
 import org.mjdev.desktop.components.immersivelist.base.ImmersiveListScope
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.FocusState.bringIntoViewIfChildrenAreFocused
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("IllegalExperimentalApiUsage")
 @OptIn(ExperimentalComposeUiApi::class)
@@ -56,8 +57,7 @@ fun ImmersiveList(
 }
 
 // todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ImmersiveListPreview() = preview {
     ImmersiveList()

+ 8 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/info/Info.kt

@@ -22,6 +22,8 @@ import org.mjdev.desktop.components.sliding.base.VisibilityState.Companion.remem
 import org.mjdev.desktop.components.text.AutoResizeText
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Composable
 fun Info(
@@ -71,4 +73,10 @@ fun Info(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun InfoPreview() = preview(320, 320) {
+    Info()
 }

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/PasswordTextView.kt

@@ -24,6 +24,7 @@ import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.icons.text.Send
 import org.mjdev.desktop.icons.visibility.VisibilityOff
 import org.mjdev.desktop.icons.visibility.VisibilityOn
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo check colors
 @Suppress("FunctionName")
@@ -106,8 +107,7 @@ fun PasswordTextView(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun PasswordTextViewPreview() = preview {
     PasswordTextView(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/SearchFieldPassive.kt

@@ -26,6 +26,7 @@ import org.mjdev.desktop.extensions.Colors.alpha
 import org.mjdev.desktop.extensions.Compose.preview
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.icons.text.Clear
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("UNUSED_PARAMETER")
 @Composable
@@ -70,8 +71,7 @@ fun SearchFieldPassive(
     }
 )
 
-@Suppress("unused")
-//@Preview
+@Preview
 @Composable
 fun SearchFieldPassivePreview() = preview {
     SearchFieldPassive(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/input/SelectableOutlineEditText.kt

@@ -15,6 +15,7 @@ import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.input.VisualTransformation
 import androidx.compose.ui.unit.TextUnit
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun SelectableOutlineEditText(
@@ -108,8 +109,7 @@ fun SelectableOutlineEditText(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun SelectableOutlineEditTextPreview() = preview {
     SelectableOutlineEditText(

+ 8 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/installer/Installer.kt

@@ -15,6 +15,8 @@ import org.mjdev.desktop.components.sliding.base.VisibilityState
 import org.mjdev.desktop.components.sliding.base.VisibilityState.Companion.rememberVisibilityState
 import org.mjdev.desktop.context.DesktopContextScope.Companion.withDesktopContext
 import org.mjdev.desktop.extensions.LaunchedEffect.runAsync
+import org.jetbrains.compose.ui.tooling.preview.Preview
+import org.mjdev.desktop.extensions.Compose.preview
 
 @Composable
 fun Installer(
@@ -47,4 +49,10 @@ fun Installer(
             }
         }
     }
+}
+
+@Preview
+@Composable
+fun InstallerPreview() = preview(320, 320) {
+    Installer()
 }

+ 4 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/list/ExpandableLazyColumn.kt

@@ -24,6 +24,7 @@ import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.dp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun <T> ExpandableLazyColumn(
@@ -64,4 +65,6 @@ fun <T> ExpandableLazyColumn(
             createItem(idx, item, expandedState)
         }
     }
-}
+}
+
+// todo preview

+ 4 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/list/ExpandableListItem.kt

@@ -15,6 +15,7 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.Modifier
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.extensions.MutableStateExt.toggle
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun ExpandableListItem(
@@ -27,4 +28,6 @@ fun ExpandableListItem(
     modifier = modifier
 ) {
     content(expanded)
-}
+}
+
+// todo preview

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/menu/ContextMenu.kt

@@ -13,6 +13,7 @@ import org.mjdev.desktop.components.menu.base.ContextMenuState
 import org.mjdev.desktop.components.menu.base.ContextMenuState.Companion.rememberContextMenuState
 import org.mjdev.desktop.extensions.Colors.SuperDarkGray
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Suppress("unused", "FunctionName")
@@ -58,9 +59,7 @@ fun ContextMenu(
     }
 }
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun ContextMenuPreview() = preview {
     ContextMenu()

+ 4 - 1
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/menu/CursorDropdownMenu.kt

@@ -3,6 +3,7 @@ package org.mjdev.desktop.components.menu
 import androidx.compose.animation.AnimatedVisibility
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -16,4 +17,6 @@ fun CursorDropdownMenu(
     modifier = modifier
 ) {
     content()
-}
+}
+
+// todo preview

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/progress/DashedProgressIndicator.kt

@@ -17,6 +17,7 @@ import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.StrokeCap
 import androidx.compose.ui.unit.dp
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Composable
 fun DashedProgressIndicator(
@@ -47,8 +48,7 @@ fun DashedProgressIndicator(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun DashedProgressIndicatorPreview() = preview {
     DashedProgressIndicator(

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/qrcode/QrCodeView.kt

@@ -21,6 +21,7 @@ import io.github.alexzhirkevich.qrose.options.roundCorners
 import io.github.alexzhirkevich.qrose.options.solid
 import io.github.alexzhirkevich.qrose.rememberQrCodePainter
 import org.mjdev.desktop.extensions.Compose.preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo : params
 @Suppress("unused", "FunctionName")
@@ -64,8 +65,7 @@ fun QrCodeView(
     }
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun QrCodeViewPreview() = preview(320, 320) {
     QrCodeView()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/remote/RemoteView.kt

@@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
-//import androidx.compose.ui.tooling.preview.Preview
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo
 @Composable
@@ -16,7 +16,7 @@ fun RemoteView(
     }
 }
 
-//@Preview(name = "RemoteView")
+@Preview
 @Composable
 private fun PreviewRemoteView() {
     RemoteView()

+ 2 - 2
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/sliding/SlidingPanel.kt

@@ -20,6 +20,7 @@ import org.mjdev.desktop.extensions.Modifier.onMouseEnter
 import org.mjdev.desktop.extensions.Modifier.onMouseLeave
 import org.mjdev.desktop.helpers.animation.Animations.DefaultEnterAnimation
 import org.mjdev.desktop.helpers.animation.Animations.DefaultExitAnimation
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 // todo remove, move to chrome window
 @Suppress("FunctionName")
@@ -76,8 +77,7 @@ fun SlidingPanel(
     )
 }
 
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun SlidingMenuPreview() = preview {
     SlidingPanel()

+ 2 - 3
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/Surface.kt

@@ -53,6 +53,7 @@ import org.mjdev.desktop.extensions.Modifier.onMouseLongPress
 import org.mjdev.desktop.extensions.Modifier.onMousePress
 import org.mjdev.desktop.helpers.compose.surfaceBorder
 import org.mjdev.desktop.helpers.compose.zIndex
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Suppress("SameParameterValue")
 @Composable
@@ -229,9 +230,7 @@ internal const val EnabledContentAlpha = 1f
 private const val FocusedZIndex = 0.5f
 private const val NonFocusedZIndex = 0f
 
-// todo
-//@Preview
-@Suppress("unused")
+@Preview
 @Composable
 fun SurfacePreview() = preview {
     Surface()

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/Border.kt

@@ -15,6 +15,7 @@ import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Immutable
 class Border(

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceBorder.kt

@@ -9,6 +9,7 @@
 package org.mjdev.desktop.components.surface.base
 
 import androidx.compose.runtime.Immutable
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Immutable
 class ClickableSurfaceBorder

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceColors.kt

@@ -10,6 +10,7 @@ package org.mjdev.desktop.components.surface.base
 
 import androidx.compose.runtime.Immutable
 import androidx.compose.ui.graphics.Color
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 @Immutable
 class ClickableSurfaceColors

+ 1 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceDefaults.kt

@@ -17,6 +17,7 @@ import androidx.compose.runtime.ReadOnlyComposable
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.dp
+import org.jetbrains.compose.ui.tooling.preview.Preview
 
 object ClickableSurfaceDefaults {
     internal fun shape(

+ 2 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceGlow.kt

@@ -10,6 +10,8 @@ package org.mjdev.desktop.components.surface.base
 
 import androidx.compose.runtime.Immutable
 
+import org.jetbrains.compose.ui.tooling.preview.Preview
+
 @Immutable
 class ClickableSurfaceGlow(
     val glow: Glow,

+ 2 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceScale.kt

@@ -10,6 +10,8 @@ package org.mjdev.desktop.components.surface.base
 
 import androidx.compose.runtime.Immutable
 
+import org.jetbrains.compose.ui.tooling.preview.Preview
+
 @Suppress("unused")
 @Immutable
 class ClickableSurfaceScale

+ 2 - 0
composeApp/src/commonMain/kotlin/org/mjdev/desktop/components/surface/base/ClickableSurfaceShape.kt

@@ -11,6 +11,8 @@ package org.mjdev.desktop.components.surface.base
 import androidx.compose.runtime.Immutable
 import androidx.compose.ui.graphics.Shape
 
+import org.jetbrains.compose.ui.tooling.preview.Preview
+
 @Immutable
 class ClickableSurfaceShape
 internal constructor(

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików