diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 103e00cb..5131f2c5 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -3,18 +3,22 @@
+
+
+
+
@@ -27,6 +31,7 @@
+
\ No newline at end of file
diff --git a/sample/android/build.gradle.kts b/sample/android/build.gradle.kts
index 189ef6a3..c6b719ce 100644
--- a/sample/android/build.gradle.kts
+++ b/sample/android/build.gradle.kts
@@ -58,8 +58,5 @@ dependencies {
debugImplementation(libs.androidx.compose.ui.tooling)
implementation(libs.androidx.compose.ui.preview)
- implementation(libs.androidx.media3.exoplayer)
- implementation(libs.androidx.media3.ui)
-
baselineProfile(projects.internal.benchmark)
}
diff --git a/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/MainActivity.kt b/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/MainActivity.kt
index 6d76cf3c..4bae40ef 100644
--- a/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/MainActivity.kt
+++ b/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/MainActivity.kt
@@ -10,7 +10,6 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.remember
import dev.chrisbanes.haze.sample.Navigator
-import dev.chrisbanes.haze.sample.Sample
import dev.chrisbanes.haze.sample.Samples
class MainActivity : ComponentActivity() {
@@ -26,12 +25,7 @@ class MainActivity : ComponentActivity() {
Samples(
appTitle = title.toString(),
navigator = navigator,
- samples = Samples + AndroidSamples,
)
}
}
}
-
-private val AndroidSamples = listOf(
- Sample("ExoPlayer") { ExoPlayerSample(it) },
-)
diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts
index e34c0dd7..67ef40cd 100644
--- a/sample/shared/build.gradle.kts
+++ b/sample/shared/build.gradle.kts
@@ -30,6 +30,9 @@ kotlin {
androidMain {
dependencies {
implementation(libs.ktor.cio)
+
+ implementation(libs.androidx.media3.exoplayer)
+ implementation(libs.androidx.media3.ui)
}
}
diff --git a/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/ExoPlayerSample.kt b/sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/ExoPlayerSample.kt
similarity index 96%
rename from sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/ExoPlayerSample.kt
rename to sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/ExoPlayerSample.kt
index 6785fb3d..3ae6e057 100644
--- a/sample/android/src/main/kotlin/dev/chrisbanes/haze/sample/android/ExoPlayerSample.kt
+++ b/sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/ExoPlayerSample.kt
@@ -1,7 +1,7 @@
// Copyright 2024, Christopher Banes and the Haze project contributors
// SPDX-License-Identifier: Apache-2.0
-package dev.chrisbanes.haze.sample.android
+package dev.chrisbanes.haze.sample
import android.view.LayoutInflater
import androidx.compose.foundation.layout.Box
@@ -26,7 +26,7 @@ import dev.chrisbanes.haze.hazeEffect
import dev.chrisbanes.haze.hazeSource
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
-import dev.chrisbanes.haze.sample.Navigator
+import dev.chrisbanes.haze.sample.shared.R
@OptIn(ExperimentalHazeMaterialsApi::class)
@Composable
diff --git a/sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/Samples.android.kt b/sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/Samples.android.kt
new file mode 100644
index 00000000..d5fafd5b
--- /dev/null
+++ b/sample/shared/src/androidMain/kotlin/dev/chrisbanes/haze/sample/Samples.android.kt
@@ -0,0 +1,9 @@
+// Copyright 2025, Christopher Banes and the Haze project contributors
+// SPDX-License-Identifier: Apache-2.0
+
+package dev.chrisbanes.haze.sample
+
+actual val Samples: List = buildList {
+ addAll(CommonSamples)
+ add(Sample("ExoPlayer") { ExoPlayerSample(it) })
+}
diff --git a/sample/android/src/main/res/layout/exoplayer.xml b/sample/shared/src/androidMain/res/layout/exoplayer.xml
similarity index 100%
rename from sample/android/src/main/res/layout/exoplayer.xml
rename to sample/shared/src/androidMain/res/layout/exoplayer.xml
diff --git a/sample/shared/src/commonMain/kotlin/dev/chrisbanes/haze/sample/Samples.kt b/sample/shared/src/commonMain/kotlin/dev/chrisbanes/haze/sample/Samples.kt
index 69a0c69f..e0b5f3bd 100644
--- a/sample/shared/src/commonMain/kotlin/dev/chrisbanes/haze/sample/Samples.kt
+++ b/sample/shared/src/commonMain/kotlin/dev/chrisbanes/haze/sample/Samples.kt
@@ -33,8 +33,10 @@ import coil3.request.ImageRequest
import dev.chrisbanes.haze.ExperimentalHazeApi
import dev.chrisbanes.haze.HazeInputScale
+expect val Samples: List
+
@OptIn(ExperimentalHazeApi::class)
-val Samples = listOf(
+val CommonSamples = listOf(
Sample("Scaffold") { ScaffoldSample(it) },
Sample("Scaffold (input scaled)") { ScaffoldSample(it, inputScale = HazeInputScale.Auto) },
Sample("Scaffold (progressive blur)") { ScaffoldSample(it, ScaffoldSampleMode.Progressive) },
diff --git a/sample/shared/src/iosMain/kotlin/dev/chrisbanes/haze/sample/Samples.ios.kt b/sample/shared/src/iosMain/kotlin/dev/chrisbanes/haze/sample/Samples.ios.kt
new file mode 100644
index 00000000..ae79a58f
--- /dev/null
+++ b/sample/shared/src/iosMain/kotlin/dev/chrisbanes/haze/sample/Samples.ios.kt
@@ -0,0 +1,7 @@
+// Copyright 2025, Christopher Banes and the Haze project contributors
+// SPDX-License-Identifier: Apache-2.0
+
+package dev.chrisbanes.haze.sample
+
+actual val Samples: List
+ get() = CommonSamples
diff --git a/sample/shared/src/jsMain/kotlin/dev/chrisbanes/haze/sample/Samples.js.kt b/sample/shared/src/jsMain/kotlin/dev/chrisbanes/haze/sample/Samples.js.kt
new file mode 100644
index 00000000..ae79a58f
--- /dev/null
+++ b/sample/shared/src/jsMain/kotlin/dev/chrisbanes/haze/sample/Samples.js.kt
@@ -0,0 +1,7 @@
+// Copyright 2025, Christopher Banes and the Haze project contributors
+// SPDX-License-Identifier: Apache-2.0
+
+package dev.chrisbanes.haze.sample
+
+actual val Samples: List
+ get() = CommonSamples
diff --git a/sample/shared/src/jvmMain/kotlin/dev/chrisbanes/haze/sample/Samples.jvm.kt b/sample/shared/src/jvmMain/kotlin/dev/chrisbanes/haze/sample/Samples.jvm.kt
new file mode 100644
index 00000000..ae79a58f
--- /dev/null
+++ b/sample/shared/src/jvmMain/kotlin/dev/chrisbanes/haze/sample/Samples.jvm.kt
@@ -0,0 +1,7 @@
+// Copyright 2025, Christopher Banes and the Haze project contributors
+// SPDX-License-Identifier: Apache-2.0
+
+package dev.chrisbanes.haze.sample
+
+actual val Samples: List
+ get() = CommonSamples
diff --git a/sample/shared/src/wasmJsMain/kotlin/dev/chrisbanes/haze/sample/Samples.wasmJs.kt b/sample/shared/src/wasmJsMain/kotlin/dev/chrisbanes/haze/sample/Samples.wasmJs.kt
new file mode 100644
index 00000000..ae79a58f
--- /dev/null
+++ b/sample/shared/src/wasmJsMain/kotlin/dev/chrisbanes/haze/sample/Samples.wasmJs.kt
@@ -0,0 +1,7 @@
+// Copyright 2025, Christopher Banes and the Haze project contributors
+// SPDX-License-Identifier: Apache-2.0
+
+package dev.chrisbanes.haze.sample
+
+actual val Samples: List
+ get() = CommonSamples