summaryrefslogtreecommitdiff
path: root/demo/shared/src
diff options
context:
space:
mode:
authorSean Proctor <sproctor@gmail.com>2026-06-08 12:55:47 +0300
committerSean Proctor <sproctor@gmail.com>2026-06-08 12:55:47 +0300
commit2dbf80738e26b025dde78935e61cebf5b9cf5ea6 (patch)
tree2dd4a067d15439411f20d7535c20c3eba4d0262c /demo/shared/src
parentb80284a0d4f43f857a74ffbb048168aa9a577601 (diff)
downloadcolorpicker-compose-2dbf80738e26b025dde78935e61cebf5b9cf5ea6.tar.xz
Add desktop demo and rework demo modules
- Add :demo:desktopApp (Compose JVM desktop application) consuming the shared MainScreen. - Move :wasmApp under :demo:wasmApp and consume the shared MainScreen. - Migrate demo image picking from peekaboo-image-picker to FileKit. - Set the demo Res class package to com.github.skydoves.colorpickercomposedemo.shared via packageOfResClass. - Drop the GlobalScope/CoroutineScope constructor from ColorPickerController; ColorPicker now collects on a rememberCoroutineScope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'demo/shared/src')
-rw-r--r--demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt8
-rw-r--r--demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt36
-rw-r--r--demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt5
-rw-r--r--demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt4
-rw-r--r--demo/shared/src/iosMain/kotlin/MainViewController.kt3
5 files changed, 30 insertions, 26 deletions
diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt
index 7c2f304..44d1e64 100644
--- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt
+++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt
@@ -42,12 +42,12 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
-import colorpickercomposedemo.demo.shared.generated.resources.Res
-import colorpickercomposedemo.demo.shared.generated.resources.app_name
-import colorpickercomposedemo.demo.shared.generated.resources.image_24px
-import colorpickercomposedemo.demo.shared.generated.resources.palette_24px
import com.github.skydoves.colorpickercomposedemo.screens.HsvColorPickerColoredSelectorScreen
import com.github.skydoves.colorpickercomposedemo.screens.ImageColorPickerScreen
+import com.github.skydoves.colorpickercomposedemo.shared.Res
+import com.github.skydoves.colorpickercomposedemo.shared.app_name
+import com.github.skydoves.colorpickercomposedemo.shared.image_24px
+import com.github.skydoves.colorpickercomposedemo.shared.palette_24px
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt
index 27afaa1..94d0425 100644
--- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt
+++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt
@@ -27,29 +27,29 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.unit.dp
-import colorpickercomposedemo.demo.shared.generated.resources.Res
-import colorpickercomposedemo.demo.shared.generated.resources.ic_gallery
-import com.preat.peekaboo.image.picker.SelectionMode
-import com.preat.peekaboo.image.picker.rememberImagePickerLauncher
-import com.preat.peekaboo.image.picker.toImageBitmap
+import com.github.skydoves.colorpickercomposedemo.shared.Res
+import com.github.skydoves.colorpickercomposedemo.shared.ic_gallery
+import io.github.vinceglb.filekit.PlatformFile
+import io.github.vinceglb.filekit.dialogs.FileKitType
+import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher
+import io.github.vinceglb.filekit.readBytes
+import kotlinx.coroutines.launch
+import org.jetbrains.compose.resources.decodeToImageBitmap
import org.jetbrains.compose.resources.vectorResource
@Composable
-fun ColumnScope.PhotoPickerIcon(
- onImageSelected: (ImageBitmap?) -> Unit,
-) {
+fun ColumnScope.PhotoPickerIcon(onImageSelected: (ImageBitmap?) -> Unit) {
val scope = rememberCoroutineScope()
- val singleImagePicker = rememberImagePickerLauncher(
- selectionMode = SelectionMode.Single,
- scope = scope,
- onResult = { byteArrays ->
- byteArrays.firstOrNull()?.let {
- val imageBitmap = it.toImageBitmap()
- onImageSelected.invoke(imageBitmap)
- }
- },
- )
+ val singleImagePicker = rememberFilePickerLauncher(
+ type = FileKitType.Image,
+ ) { file: PlatformFile? ->
+ file ?: return@rememberFilePickerLauncher
+ scope.launch {
+ val imageBitmap = file.readBytes().decodeToImageBitmap()
+ onImageSelected.invoke(imageBitmap)
+ }
+ }
Box(
modifier = Modifier
diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt
index 8d7e009..3748bf3 100644
--- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt
+++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt
@@ -15,6 +15,7 @@
*/
package com.github.skydoves.colorpickercomposedemo.screens
+import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -63,7 +64,7 @@ fun HsvColorPickerColoredSelectorScreen() {
var lastSource by remember { mutableStateOf(ColorChangeSource.Programmatic) }
var isInteracting by remember { mutableStateOf(false) }
- Column {
+ Column(Modifier.background(Color.Black)) {
Spacer(modifier = Modifier.weight(1f))
Row(modifier = Modifier.weight(3f)) {
@@ -160,7 +161,7 @@ fun HsvColorPickerColoredSelectorScreen() {
AlphaTile(
modifier = Modifier
.size(80.dp)
- .clip(RoundedCornerShape(6.dp))
+ // .clip(RoundedCornerShape(6.dp))
.align(Alignment.CenterHorizontally),
controller = controller,
)
diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt
index 221476b..3e1355d 100644
--- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt
+++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt
@@ -37,8 +37,6 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
-import colorpickercomposedemo.demo.shared.generated.resources.Res
-import colorpickercomposedemo.demo.shared.generated.resources.palettebar
import com.github.skydoves.colorpicker.compose.AlphaSlider
import com.github.skydoves.colorpicker.compose.AlphaTile
import com.github.skydoves.colorpicker.compose.BrightnessSlider
@@ -46,6 +44,8 @@ import com.github.skydoves.colorpicker.compose.ColorEnvelope
import com.github.skydoves.colorpicker.compose.ImageColorPicker
import com.github.skydoves.colorpicker.compose.rememberColorPickerController
import com.github.skydoves.colorpickercomposedemo.PhotoPickerIcon
+import com.github.skydoves.colorpickercomposedemo.shared.Res
+import com.github.skydoves.colorpickercomposedemo.shared.palettebar
import org.jetbrains.compose.resources.imageResource
import org.jetbrains.compose.resources.painterResource
diff --git a/demo/shared/src/iosMain/kotlin/MainViewController.kt b/demo/shared/src/iosMain/kotlin/MainViewController.kt
index a240015..ede3402 100644
--- a/demo/shared/src/iosMain/kotlin/MainViewController.kt
+++ b/demo/shared/src/iosMain/kotlin/MainViewController.kt
@@ -16,4 +16,7 @@
import androidx.compose.ui.window.ComposeUIViewController
import com.github.skydoves.colorpickercomposedemo.MainScreen
+// Entry point consumed by iosApp.xcodeproj (Swift: MainViewControllerKt.MainViewController()),
+// so the PascalCase name is required and not subject to the function-naming convention.
+@Suppress("ktlint:standard:function-naming")
fun MainViewController() = ComposeUIViewController { MainScreen() }