diff --git a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraPreview.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraPreview.kt
index 87f0baa..1686420 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraPreview.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraPreview.kt
@@ -53,10 +53,9 @@ import androidx.core.graphics.scale
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import com.google.common.util.concurrent.ListenableFuture
-import org.fairscan.app.ui.components.CameraPermissionState
-import org.fairscan.app.ui.state.LiveAnalysisState
import org.fairscan.app.domain.Point
import org.fairscan.app.domain.scaledTo
+import org.fairscan.app.ui.components.CameraPermissionState
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt
index 232850f..8158466 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt
@@ -93,19 +93,8 @@ import org.fairscan.app.ui.components.MyScaffold
import org.fairscan.app.ui.components.pageCountText
import org.fairscan.app.ui.dummyNavigation
import org.fairscan.app.ui.fakeDocument
-import org.fairscan.app.ui.state.LiveAnalysisState
import org.fairscan.app.ui.theme.FairScanTheme
-data class CameraUiState(
- val pageCount: Int,
- val liveAnalysisState: LiveAnalysisState,
- val captureState: CaptureState,
- val showDetectionError: Boolean,
- val isLandscape: Boolean,
- val isDebugMode: Boolean,
- val isTorchEnabled: Boolean,
-)
-
const val CAPTURED_IMAGE_DISPLAY_DURATION = 1500L
const val ANIMATION_DURATION = 200
diff --git a/app/src/main/java/org/fairscan/app/ui/state/LiveAnalysisState.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraUiState.kt
similarity index 76%
rename from app/src/main/java/org/fairscan/app/ui/state/LiveAnalysisState.kt
rename to app/src/main/java/org/fairscan/app/ui/screens/camera/CameraUiState.kt
index 0c22436..ceed28b 100644
--- a/app/src/main/java/org/fairscan/app/ui/state/LiveAnalysisState.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraUiState.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app.ui.state
+package org.fairscan.app.ui.screens.camera
import android.graphics.Bitmap
import androidx.compose.runtime.Immutable
@@ -24,4 +24,14 @@ data class LiveAnalysisState(
val binaryMask: Bitmap? = null,
val documentQuad: Quad? = null,
val timestamp: Long = System.currentTimeMillis(),
-)
\ No newline at end of file
+)
+
+data class CameraUiState(
+ val pageCount: Int,
+ val liveAnalysisState: LiveAnalysisState,
+ val captureState: CaptureState,
+ val showDetectionError: Boolean,
+ val isLandscape: Boolean,
+ val isDebugMode: Boolean,
+ val isTorchEnabled: Boolean,
+)
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt
index ee966cb..0883928 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraViewModel.kt
@@ -33,7 +33,6 @@ import org.fairscan.app.AppContainer
import org.fairscan.app.domain.detectDocumentQuad
import org.fairscan.app.domain.extractDocument
import org.fairscan.app.domain.scaledTo
-import org.fairscan.app.ui.state.LiveAnalysisState
import java.io.ByteArrayOutputStream
sealed interface CameraEvent {
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/export/ExportScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportScreen.kt
index 4f54142..7423a28 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/export/ExportScreen.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportScreen.kt
@@ -76,7 +76,6 @@ import org.fairscan.app.ui.components.NewDocumentDialog
import org.fairscan.app.ui.components.isLandscape
import org.fairscan.app.ui.components.pageCountText
import org.fairscan.app.ui.dummyNavigation
-import org.fairscan.app.ui.state.PdfGenerationUiState
import org.fairscan.app.ui.theme.FairScanTheme
import java.io.File
import java.text.SimpleDateFormat
diff --git a/app/src/main/java/org/fairscan/app/ui/state/UiState.kt b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportUiState.kt
similarity index 87%
rename from app/src/main/java/org/fairscan/app/ui/state/UiState.kt
rename to app/src/main/java/org/fairscan/app/ui/screens/export/ExportUiState.kt
index a7ad806..21e2b4d 100644
--- a/app/src/main/java/org/fairscan/app/ui/state/UiState.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportUiState.kt
@@ -12,11 +12,10 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app.ui.state
+package org.fairscan.app.ui.screens.export
import android.net.Uri
import org.fairscan.app.data.GeneratedPdf
-import java.io.File
data class PdfGenerationUiState(
val isGenerating: Boolean = false,
@@ -28,9 +27,3 @@ data class PdfGenerationUiState(
) {
val hasSavedOrSharedPdf get() = savedFileUri != null || hasSharedPdf
}
-
-data class RecentDocumentUiState(
- val file: File,
- val saveTimestamp: Long,
- val pageCount: Int,
-)
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/export/ExportViewModel.kt b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportViewModel.kt
index 15e2957..04e9b4d 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/export/ExportViewModel.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/export/ExportViewModel.kt
@@ -35,7 +35,6 @@ import org.fairscan.app.AppContainer
import org.fairscan.app.data.GeneratedPdf
import org.fairscan.app.data.PdfFileManager
import org.fairscan.app.ui.screens.home.HomeViewModel
-import org.fairscan.app.ui.state.PdfGenerationUiState
import java.io.File
private const val PDF_MIME_TYPE = "application/pdf"
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/home/HomeScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeScreen.kt
index 57d1401..06e0d0a 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/home/HomeScreen.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeScreen.kt
@@ -59,7 +59,6 @@ import org.fairscan.app.ui.components.CameraPermissionState
import org.fairscan.app.ui.Navigation
import org.fairscan.app.R
import org.fairscan.app.ui.components.rememberCameraPermissionState
-import org.fairscan.app.ui.state.RecentDocumentUiState
import org.fairscan.app.ui.components.AboutScreenNavButton
import org.fairscan.app.ui.components.formatDate
import org.fairscan.app.ui.components.pageCountText
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/home/HomeUiState.kt b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeUiState.kt
new file mode 100644
index 0000000..00cd021
--- /dev/null
+++ b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeUiState.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2025 Pierre-Yves Nicolas
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option)
+ * any later version.
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ */
+package org.fairscan.app.ui.screens.home
+
+import java.io.File
+
+data class RecentDocumentUiState(
+ val file: File,
+ val saveTimestamp: Long,
+ val pageCount: Int,
+)
diff --git a/app/src/main/java/org/fairscan/app/ui/screens/home/HomeViewModel.kt b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeViewModel.kt
index 5c94b5c..84073f9 100644
--- a/app/src/main/java/org/fairscan/app/ui/screens/home/HomeViewModel.kt
+++ b/app/src/main/java/org/fairscan/app/ui/screens/home/HomeViewModel.kt
@@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import org.fairscan.app.AppContainer
import org.fairscan.app.RecentDocument
-import org.fairscan.app.ui.state.RecentDocumentUiState
import java.io.File
class HomeViewModel(appContainer: AppContainer): ViewModel() {