diff --git a/README.md b/README.md index 211f7ee..8fcedb3 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,17 @@ When using `peekaboo` on Android, ensure that Google's Jetpack Compose version i The minimum supported Android SDK is 24 (Android 7.0). -In your `commonMain` configuration, add `peekaboo` as a dependency to your project. It's available on Maven Central. +In your `commonMain` configuration, add the desired dependency, either **`peekaboo-ui`** or **`peekaboo-image-picker`**, to your project. Both are available on Maven Central.
### Without Version Catalog ```kotlin commonMain { dependencies { + // peekaboo-ui + implementation("io.github.team-preat:peekaboo-ui:$latest_version") + + // peekaboo-image-picker implementation("io.github.team-preat:peekaboo-image-picker:$latest_version") } } @@ -41,9 +45,10 @@ First, define the version in `libs.versions.toml`: ```toml [versions] -peekaboo = "0.2.1" +peekaboo = "0.3.0" [libraries] +peekaboo-ui = { module = "io.github.team-preat:peekaboo-ui", version.ref = "peekaboo" } peekaboo-image-picker = { module = "io.github.team-preat:peekaboo-image-picker", version.ref = "peekaboo" } ``` @@ -52,6 +57,10 @@ Then, in your `commonMain` configuration, reference the defined version: ```kotlin commonMain { dependencies { + // peekaboo-ui + implementation(libs.peekaboo.ui) + + // peekaboo-image-picker implementation(libs.peekaboo.image.picker) } } @@ -61,12 +70,59 @@ commonMain { | Name | Description | |-------------------------|-----------------------------------------------------------------------------| -| `peekaboo-image-picker` | Simplifies the process of selecting single or multiple images in `iOS` and `Android` apps. | -| `peekaboo-camera` | 🚧 Coming soon! A convenient way to capture and select images directly from cameras on iOS and Android. 📸 | +| `peekaboo-ui` |Provides user-friendly UI elements, including a custom camera view for easy image capture, suitable for both `iOS` and `Android` platforms. | +| `peekaboo-image-picker` | Simplifies the process of selecting single or multiple images both in `iOS` and `Android` platforms. |
## Usage +### Custimizable Camera UI +`PeekabooCamera` is a `composable` function that provides a customizable camera UI within a `Compose Multiplatform` application. + +```kotlin +@Composable +fun CustomCameraView() { + PeekabooCamera( + modifier = Modifier.fillMaxSize(), + cameraMode = CameraMode.Back, // or CameraMode.Front + captureIcon = { onClick -> /* Custom Capture Button UI */ }, + convertIcon = { onClick -> /* Custom Convert Button UI */ }, + progressIndicator = { /* Custom Progress Indicator UI */ }, + onCapture = { byteArray -> + // Handle the captured image + }, + permissionDeniedContent = { + // Custom UI content for permission denied scenario + } + ) +} +``` +- **`cameraMode`** : The initial camera mode (front or back). Default is `CameraMode.Back`. +- **`captureIcon`** : A `composable` lambda for the capture button. It takes an `onClick` lambda that triggers the image capture process. +- **`convertIcon`** : An optional `composable` lambda for a button to toggle the camera mode (front or back). It takes an `onClick` lambda for switching the camera. +- **`progressIndicator`** : An optional `composable` lambda displayed during photo capture processing. +- **`onCapture`** : A lambda called when a photo is captured, providing the photo as a `ByteArray` or `null` if the capture fails. +- **`permissionDeniedContent`** : An optional `composable` lambda that provides content to be displayed when camera permission is denied. This allows users to define a custom UI to inform or guide the user when camera access has been denied. The content can be informative text, an image, a button to redirect the user to settings, or any other `composable` content. This lambda will be invoked within the `PeekabooCamera` composable scope, replacing the camera preview with the user-defined UI. + + +> 💡 **Note**: It's recommended to handle camera permission checks before rendering `PeekabooCamera`. This preemptive check ensures the camera UI is displayed only when permissions are granted, avoiding empty views or unexpected user experiences. + +#### Capturing an Image from Camera +| Android | iOS | +|-----------------------------------------------------------------|---------------------------------------------------------| +| | | + +#### Toggling Camera Mode Between Front and Back +| Android | iOS | +|-----------------------------------------------------------------|---------------------------------------------------------| +| | | + +#### Handling Denied Camera Permissions +| Android | iOS | +|-----------------------------------------------------------------|---------------------------------------------------------| +| | | + + ### Select Single Image ```kotlin