├── iosApp ├── Configuration │ └── TeamId.xcconfig ├── .DS_Store ├── Podfile └── iosApp │ └── iosApp.swift ├── composeApp ├── src │ ├── commonMain │ │ ├── kotlin │ │ │ ├── di │ │ │ │ ├── Platform.kt │ │ │ │ ├── Providers.kt │ │ │ │ ├── Inject.kt │ │ │ │ ├── CoreModule.kt │ │ │ │ ├── PlatformConfiguration.kt │ │ │ │ ├── SerializationModule.kt │ │ │ │ ├── DatabaseModule.kt │ │ │ │ └── PlatformSDK.kt │ │ │ ├── screens │ │ │ │ ├── stats │ │ │ │ │ └── models │ │ │ │ │ │ ├── StatsAction.kt │ │ │ │ │ │ ├── StatsEvent.kt │ │ │ │ │ │ └── StatsViewState.kt │ │ │ │ ├── compose │ │ │ │ │ └── models │ │ │ │ │ │ ├── ComposeError.kt │ │ │ │ │ │ ├── ComposeAction.kt │ │ │ │ │ │ └── ComposeViewState.kt │ │ │ │ ├── add_name │ │ │ │ │ ├── models │ │ │ │ │ │ ├── MedicationAddNameAction.kt │ │ │ │ │ │ ├── MedicationAddNameViewState.kt │ │ │ │ │ │ └── MedicationAddNameEvent.kt │ │ │ │ │ └── MedicationAddNameViewModel.kt │ │ │ │ └── create │ │ │ │ │ └── CreateHabitFlow.kt │ │ │ ├── utils │ │ │ │ ├── Int + Klock.kt │ │ │ │ ├── Date + Utils.kt │ │ │ │ ├── Weekdays.kt │ │ │ │ ├── Date + Title.kt │ │ │ │ └── CalendarDays.kt │ │ │ ├── navigation │ │ │ │ ├── ProfileScreens.kt │ │ │ │ ├── LocalNavHost.kt │ │ │ │ └── AppScreens.kt │ │ │ ├── feature │ │ │ │ ├── chat │ │ │ │ │ └── presentation │ │ │ │ │ │ └── models │ │ │ │ │ │ ├── ChatAction.kt │ │ │ │ │ │ ├── ChatMessage.kt │ │ │ │ │ │ ├── ChatViewState.kt │ │ │ │ │ │ └── ChatEvent.kt │ │ │ │ ├── statistics │ │ │ │ │ └── ui │ │ │ │ │ │ ├── models │ │ │ │ │ │ ├── StatisticsAction.kt │ │ │ │ │ │ ├── StatisticsEvent.kt │ │ │ │ │ │ └── StatisticsViewState.kt │ │ │ │ │ │ └── views │ │ │ │ │ │ └── StatisticsViewNoItems.kt │ │ │ │ ├── health │ │ │ │ │ ├── list │ │ │ │ │ │ └── presentation │ │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── HealthEvent.kt │ │ │ │ │ │ │ ├── HealthViewState.kt │ │ │ │ │ │ │ └── TrackerHabitItem.kt │ │ │ │ │ ├── presentation │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── TrackerHistoryItem.kt │ │ │ │ │ └── track │ │ │ │ │ │ └── presentation │ │ │ │ │ │ └── models │ │ │ │ │ │ ├── TrackHabitEvent.kt │ │ │ │ │ │ └── TrackHabitViewState.kt │ │ │ │ ├── profile │ │ │ │ │ ├── edit │ │ │ │ │ │ └── ui │ │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── EditProfileAction.kt │ │ │ │ │ │ │ ├── EditProfileEvent.kt │ │ │ │ │ │ │ └── EditProfileViewState.kt │ │ │ │ │ │ │ └── EditProfileScreen.kt │ │ │ │ │ └── start │ │ │ │ │ │ └── ui │ │ │ │ │ │ ├── models │ │ │ │ │ │ ├── ProfileAction.kt │ │ │ │ │ │ ├── ProfileViewState.kt │ │ │ │ │ │ └── ProfileEvent.kt │ │ │ │ │ │ └── views │ │ │ │ │ │ └── UserHeader.kt │ │ │ │ ├── settings │ │ │ │ │ ├── presentation │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── SettingsAction.kt │ │ │ │ │ │ │ ├── SettingsEvent.kt │ │ │ │ │ │ │ └── SettingsViewState.kt │ │ │ │ │ │ └── SettingsViewModel.kt │ │ │ │ │ ├── domain │ │ │ │ │ │ └── ClearAllHabitsUseCase.kt │ │ │ │ │ └── di │ │ │ │ │ │ └── SettingsModule.kt │ │ │ │ ├── daily │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── DailyAction.kt │ │ │ │ │ │ │ ├── DailyViewState.kt │ │ │ │ │ │ │ └── DailyEvent.kt │ │ │ │ │ │ └── views │ │ │ │ │ │ │ └── DailyViewLoading.kt │ │ │ │ │ ├── data │ │ │ │ │ │ ├── DailyEntity.kt │ │ │ │ │ │ └── DailyDao.kt │ │ │ │ │ ├── presentation │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── DailyHabit.kt │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── UpdateTrackerValueUseCase.kt │ │ │ │ │ │ └── SwtchHabitUseCase.kt │ │ │ │ │ └── di │ │ │ │ │ │ └── DailyModule.kt │ │ │ │ ├── detail │ │ │ │ │ ├── presentation │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── DetailAction.kt │ │ │ │ │ │ │ ├── DetailEvent.kt │ │ │ │ │ │ │ └── DetailViewState.kt │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── DeleteHabitUseCase.kt │ │ │ │ │ │ └── UpdateHabitUseCase.kt │ │ │ │ │ └── di │ │ │ │ │ │ └── DetailModule.kt │ │ │ │ ├── tracker │ │ │ │ │ ├── data │ │ │ │ │ │ ├── TrackerEntity.kt │ │ │ │ │ │ └── TrackerDao.kt │ │ │ │ │ ├── di │ │ │ │ │ │ └── TrackerModule.kt │ │ │ │ │ └── domain │ │ │ │ │ │ └── UpdateTrackerValueUseCase.kt │ │ │ │ ├── habits │ │ │ │ │ ├── di │ │ │ │ │ │ └── HabitModule.kt │ │ │ │ │ ├── data │ │ │ │ │ │ ├── HabitEntity.kt │ │ │ │ │ │ ├── HabitDao.kt │ │ │ │ │ │ └── Measurement.kt │ │ │ │ │ └── domain │ │ │ │ │ │ └── CreateHabitUseCase.kt │ │ │ │ └── create │ │ │ │ │ └── presentation │ │ │ │ │ └── models │ │ │ │ │ ├── ComposeViewState.kt │ │ │ │ │ └── ComposeEvent.kt │ │ │ ├── core │ │ │ │ ├── platform │ │ │ │ │ └── ImagePicker.kt │ │ │ │ ├── utils │ │ │ │ │ └── ValidationUtils.kt │ │ │ │ ├── di │ │ │ │ │ └── CoilInitializer.kt │ │ │ │ └── database │ │ │ │ │ ├── entity │ │ │ │ │ └── UserProfile.kt │ │ │ │ │ ├── Database.kt │ │ │ │ │ ├── dao │ │ │ │ │ └── UserProfileDao.kt │ │ │ │ │ └── AppDatabase.kt │ │ │ ├── data │ │ │ │ └── features │ │ │ │ │ └── daily │ │ │ │ │ ├── models │ │ │ │ │ └── DailyHabitContainer.kt │ │ │ │ │ └── DailyEntity.kt │ │ │ ├── domain │ │ │ │ └── SettingsBundle.kt │ │ │ ├── themes │ │ │ │ └── components │ │ │ │ │ └── JHDivider.kt │ │ │ └── ui │ │ │ │ └── components │ │ │ │ └── PlatformImage.kt │ │ └── composeResources │ │ │ └── drawable │ │ │ ├── ic_add.svg │ │ │ ├── ic_settings.svg │ │ │ ├── medication_calendar.svg │ │ │ └── medication_add.svg │ ├── androidMain │ │ ├── kotlin │ │ │ ├── di │ │ │ │ ├── Providers.android.kt │ │ │ │ ├── Providers.kt │ │ │ │ └── PlatformConfiguration.kt │ │ │ ├── tech │ │ │ │ └── mobiledeveloper │ │ │ │ │ └── jethabit │ │ │ │ │ └── app │ │ │ │ │ └── JetHabitApp.kt │ │ │ ├── core │ │ │ │ └── database │ │ │ │ │ └── DatabaseBuilder.kt │ │ │ └── main.android.kt │ │ ├── res │ │ │ ├── values │ │ │ │ └── strings.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ └── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ └── AndroidManifest.xml │ ├── jsMain │ │ ├── resources │ │ │ ├── styles.css │ │ │ └── index.html │ │ └── kotlin │ │ │ ├── di │ │ │ └── PlatformConfiguration.kt │ │ │ └── data │ │ │ └── DriverFactory.kt │ ├── iosMain │ │ └── kotlin │ │ │ ├── di │ │ │ ├── PlatformConfiguration.kt │ │ │ └── Providers.ios.kt │ │ │ ├── core │ │ │ └── database │ │ │ │ └── DatabaseBuilder.kt │ │ │ └── main.ios.kt │ ├── macosMain │ │ └── kotlin │ │ │ ├── di │ │ │ └── PlatformConfiguration.kt │ │ │ └── data │ │ │ └── DriverFactory.kt │ ├── jvmMain │ │ └── kotlin │ │ │ ├── di │ │ │ ├── Providers.desktop.kt │ │ │ └── PlatformConfiguration.kt │ │ │ ├── Main.kt │ │ │ └── core │ │ │ ├── database │ │ │ └── DatabaseBuilder.kt │ │ │ └── platform │ │ │ └── DesktopImagePicker.kt │ ├── commonTest │ │ └── kotlin │ │ │ └── core │ │ │ └── utils │ │ │ └── ValidationUtilsTest.kt │ └── androidTest │ │ └── kotlin │ │ └── tech │ │ └── mobiledeveloper │ │ └── jethabit │ │ └── app │ │ └── MainActivityTest.kt └── proguard-rules.pro ├── .DS_Store ├── .idea ├── .gitignore ├── compiler.xml ├── AndroidProjectSystem.xml ├── misc.xml ├── vcs.xml ├── migrations.xml ├── artifacts │ ├── jsApp_js.xml │ ├── desktopApp_jvm.xml │ ├── composeApp_js_1_0.xml │ ├── composeApp_jvm_1_0.xml │ ├── shared_js_1_0_SNAPSHOT.xml │ └── shared_desktop_1_0_SNAPSHOT.xml ├── deploymentTargetDropDown.xml ├── deploymentTargetSelector.xml ├── gradle.xml └── runConfigurations.xml ├── .fleet ├── settings.json └── run.json ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── .kotlin └── metadata │ ├── kotlinTransformedMetadataLibraries │ ├── io.ktor-ktor-io-2.3.8-commonMain-VFYQnA.klib │ ├── io.ktor-ktor-io-2.3.8-darwinMain-sbySvA.klib │ ├── io.ktor-ktor-io-2.3.8-posixMain-VFYQnA.klib │ ├── io.ktor-ktor-utils-2.3.8-nixMain-jdPpcw.klib │ ├── io.ktor-ktor-http-2.3.8-commonMain-QgEQ0Q.klib │ ├── io.ktor-ktor-http-2.3.8-posixMain-QgEQ0Q.klib │ ├── io.ktor-ktor-utils-2.3.8-posixMain-jdPpcw.klib │ ├── com.benasher44-uuid-0.8.4-appleMain-Zx8wYQ.klib │ ├── com.benasher44-uuid-0.8.4-commonMain-n45qYA.klib │ ├── com.benasher44-uuid-0.8.4-nativeMain-n45qYA.klib │ ├── com.benasher44-uuid-0.8.4-nix64Main-n45qYA.klib │ ├── com.benasher44-uuid-0.8.4-nonJvmMain-n45qYA.klib │ ├── com.squareup.okio-okio-3.8.0-unixMain-YgoO1Q.klib │ ├── io.ktor-ktor-events-2.3.8-commonMain-_htHDg.klib │ ├── io.ktor-ktor-utils-2.3.8-commonMain-jdPpcw.klib │ ├── io.ktor-ktor-utils-2.3.8-darwinMain-kaBnRw.klib │ ├── com.squareup.okio-okio-3.8.0-appleMain-BlIr1w.klib │ ├── com.squareup.okio-okio-3.8.0-commonMain-YgoO1Q.klib │ ├── com.squareup.okio-okio-3.8.0-nativeMain-YgoO1Q.klib │ ├── com.squareup.okio-okio-3.8.0-nonJvmMain-YgoO1Q.klib │ ├── io.ktor-ktor-websockets-2.3.8-posixMain-8-9-_g.klib │ ├── org.jetbrains.skiko-skiko-0.8.4-iosMain-1T2ZCw.klib │ ├── co.touchlab-sqliter-driver-1.3.1-appleMain-jZj4Kg.klib │ ├── com.squareup.okio-okio-3.8.0-hashFunctions-YgoO1Q.klib │ ├── io.ktor-ktor-client-core-2.3.8-commonMain-FU-9lg.klib │ ├── io.ktor-ktor-client-core-2.3.8-posixMain-FU-9lg.klib │ ├── io.ktor-ktor-websockets-2.3.8-commonMain-8-9-_g.klib │ ├── org.jetbrains.skiko-skiko-0.8.4-commonMain-DbI_Jg.klib │ ├── org.jetbrains.skiko-skiko-0.8.4-darwinMain-1T2ZCw.klib │ ├── org.jetbrains.skiko-skiko-0.8.4-nativeMain-DbI_Jg.klib │ ├── org.kodein.di-kodein-di-7.20.2-commonMain-oE0vIA.klib │ ├── org.kodein.type-kaverit-2.4.0-commonMain-kNHr1g.klib │ ├── app.cash.sqldelight-runtime-2.0.1-commonMain-wyRdBg.klib │ ├── app.cash.sqldelight-runtime-2.0.1-nativeMain-wyRdBg.klib │ ├── co.touchlab-stately-strict-2.0.5-commonMain-0yIOhQ.klib │ ├── io.ktor-ktor-serialization-2.3.8-commonMain-NxrIfg.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-skikoMain-Eh674w.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-uikitMain-BVAqnw.klib │ ├── org.jetbrains.skiko-skiko-0.8.4-nativeJsMain-DbI_Jg.klib │ ├── org.kodein.di-kodein-di-7.20.2-allNativeMain-oE0vIA.klib │ ├── androidx.annotation-annotation-1.8.0-commonMain-PJXh8Q.klib │ ├── androidx.annotation-annotation-1.8.0-nonJvmMain-PJXh8Q.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha01-commonMain-81Sdcw.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha01-nativeMain-81Sdcw.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha02-commonMain-32gQSg.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha02-nativeMain-32gQSg.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha03-commonMain-32gQSg.klib │ ├── androidx.sqlite-sqlite-2.5.0-alpha03-nativeMain-32gQSg.klib │ ├── app.softwork-kotlinx-uuid-core-0.0.25-appleMain-u3QhIw.klib │ ├── com.soywiz.korlibs.klock-klock-3.4.0-commonMain-r_z2xg.klib │ ├── com.soywiz.korlibs.klock-klock-3.4.0-darwinMain-A7xfHQ.klib │ ├── com.soywiz.korlibs.klock-klock-3.4.0-nativeMain-r_z2xg.klib │ ├── io.coil-kt.coil3-coil-3.0.0-alpha06-commonMain-NwDnKQ.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-commonMain-Eh674w.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-darwinMain-BVAqnw.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-jsNativeMain-Eh674w.klib │ ├── org.jetbrains.compose.ui-ui-1.6.10-nativeMain-BVAqnw.klib │ ├── org.jetbrains.compose.ui-ui-unit-1.6.10-jbMain-vwDMdg.klib │ ├── app.cash.sqldelight-native-driver-2.0.1-appleMain-_Xyl3g.klib │ ├── app.softwork-kotlinx-uuid-core-0.0.25-commonMain-j3QSHw.klib │ ├── co.touchlab-sqliter-driver-1.3.1-nativeCommonMain-VZ9feg.klib │ ├── co.touchlab-stately-concurrency-2.0.5-commonMain-CAw19g.klib │ ├── co.touchlab-stately-concurrency-2.0.5-darwinMain-oJtMMg.klib │ ├── co.touchlab-stately-strict-2.0.5-nativeCommonMain-0yIOhQ.klib │ ├── io.github.skeptick.libres-libres-1.2.2-appleMain-6I-NAA.klib │ ├── io.github.skeptick.libres-libres-1.2.2-commonMain-MKuSLg.klib │ ├── io.github.skeptick.libres-libres-1.2.2-uikitMain-6I-NAA.klib │ ├── org.jetbrains.compose.ui-ui-text-1.6.10-skikoMain-aUvkxg.klib │ ├── org.jetbrains.compose.ui-ui-util-1.6.10-uikitMain-4Hpl6Q.klib │ ├── org.jetbrains.kotlinx-atomicfu-0.23.2-commonMain-yBS35w.klib │ ├── org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-yBS35w.klib │ ├── androidx.annotation-annotation-1.8.0-rc01-commonMain-PJXh8Q.klib │ ├── androidx.annotation-annotation-1.8.0-rc01-nonJvmMain-PJXh8Q.klib │ ├── androidx.room-room-common-2.7.0-alpha01-commonMain-F8fjPw.klib │ ├── androidx.room-room-common-2.7.0-alpha02-commonMain-34fLrA.klib │ ├── androidx.room-room-common-2.7.0-alpha03-commonMain-34fLrA.klib │ ├── androidx.room-room-runtime-2.7.0-alpha01-commonMain-6E0ZrQ.klib │ ├── androidx.room-room-runtime-2.7.0-alpha01-nativeMain-6E0ZrQ.klib │ ├── androidx.room-room-runtime-2.7.0-alpha02-commonMain--YfLbw.klib │ ├── androidx.room-room-runtime-2.7.0-alpha02-nativeMain--YfLbw.klib │ ├── androidx.room-room-runtime-2.7.0-alpha03-commonMain-K8FDtg.klib │ ├── androidx.room-room-runtime-2.7.0-alpha03-nativeMain-K8FDtg.klib │ ├── app.cash.sqldelight-native-driver-2.0.1-nativeMain-0mXY0w.klib │ ├── io.coil-kt.coil3-coil-3.0.0-alpha06-nonAndroidMain-NwDnKQ.klib │ ├── io.coil-kt.coil3-coil-core-3.0.0-alpha06-commonMain-WBYwmA.klib │ ├── io.coil-kt.coil3-coil-core-3.0.0-alpha06-nativeMain-rhpzDw.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-jbMain-cb_PMQ.klib │ ├── org.jetbrains.compose.runtime-runtime-1.6.10-jbMain-CVJWAg.klib │ ├── org.jetbrains.compose.ui-ui-text-1.6.10-commonMain-aUvkxg.klib │ ├── org.jetbrains.compose.ui-ui-text-1.6.10-darwinMain-DK5x5Q.klib │ ├── org.jetbrains.compose.ui-ui-text-1.6.10-jsNativeMain-aUvkxg.klib │ ├── org.jetbrains.compose.ui-ui-text-1.6.10-nativeMain-DK5x5Q.klib │ ├── org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-DC3XFw.klib │ ├── org.jetbrains.compose.ui-ui-unit-1.6.10-commonMain-vwDMdg.klib │ ├── org.jetbrains.compose.ui-ui-unit-1.6.10-jsNativeMain-vwDMdg.klib │ ├── org.jetbrains.compose.ui-ui-util-1.6.10-commonMain-LLOBPg.klib │ ├── org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib │ ├── androidx.room-room-runtime-2.7.0-alpha01-jvmNativeMain-6E0ZrQ.klib │ ├── androidx.room-room-runtime-2.7.0-alpha02-jvmNativeMain--YfLbw.klib │ ├── androidx.room-room-runtime-2.7.0-alpha03-jvmNativeMain-K8FDtg.klib │ ├── co.touchlab-stately-concurrency-2.0.5-nativeCommonMain-CAw19g.klib │ ├── io.coil-kt.coil3-coil-compose-3.0.0-alpha06-commonMain-AvZVXw.klib │ ├── io.github.skeptick.libres-libres-1.2.2-appleAndJsMain-MKuSLg.klib │ ├── io.github.skeptick.libres-libres-compose-1.2.2-iosMain-eq7qVA.klib │ ├── io.ktor-ktor-websocket-serialization-2.3.8-commonMain-8xBQEg.klib │ ├── org.jetbrains.compose.runtime-runtime-1.6.10-uikitMain-LSh9lw.klib │ ├── org.jetbrains.compose.ui-ui-geometry-1.6.10-commonMain-zDj2GQ.klib │ ├── org.jetbrains.compose.ui-ui-graphics-1.6.10-commonMain-jqr5iw.klib │ ├── org.jetbrains.compose.ui-ui-graphics-1.6.10-nativeMain-M9RlEw.klib │ ├── org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoMain-jqr5iw.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha01-commonMain-APf96A.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-APf96A.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha02-commonMain-0MuvrA.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-0MuvrA.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha03-commonMain-0MuvrA.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-0MuvrA.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-kCTuRQ.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-GE3pgw.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-GE3pgw.klib │ ├── io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonAndroidMain-WBYwmA.klib │ ├── io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJsCommonMain-WBYwmA.klib │ ├── io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJvmCommonMain-WBYwmA.klib │ ├── io.github.skeptick.libres-libres-compose-1.2.2-appleMain-eq7qVA.klib │ ├── io.github.skeptick.libres-libres-compose-1.2.2-commonMain--wfG9w.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-commonMain-cb_PMQ.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-nativeMain-cb_PMQ.klib │ ├── org.jetbrains.compose.material-material-1.6.10-commonMain-tGo7Ag.klib │ ├── org.jetbrains.compose.material-material-1.6.10-nativeMain-33WlwA.klib │ ├── org.jetbrains.compose.material-material-1.6.10-skikoMain-tGo7Ag.klib │ ├── org.jetbrains.compose.runtime-runtime-1.6.10-commonMain-CVJWAg.klib │ ├── org.jetbrains.compose.runtime-runtime-1.6.10-jsNativeMain-CVJWAg.klib │ ├── org.jetbrains.compose.runtime-runtime-1.6.10-nativeMain-CVJWAg.klib │ ├── org.jetbrains.compose.ui-ui-graphics-1.6.10-jsNativeMain-jqr5iw.klib │ ├── org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-commonMain-v1Leig.klib │ ├── org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-darwinMain-O4UcJA.klib │ ├── org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-nativeMain-v1Leig.klib │ ├── org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzfileMain-v1Leig.klib │ ├── app.cash.sqldelight-native-driver-2.0.1-nativeLinuxLikeMain-0mXY0w.klib │ ├── io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-commonMain-ZZAbTA.klib │ ├── io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-commonMain-6ep4SA.klib │ ├── io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-commonMain-owEVuw.klib │ ├── io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nativeMain-djsvLg.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-jbMain-cb_PMQ.klib │ ├── org.jetbrains.compose.animation-animation-1.6.10-commonMain-5jNXZw.klib │ ├── org.jetbrains.compose.animation-animation-1.6.10-nativeMain-tpXTFg.klib │ ├── org.jetbrains.compose.material-material-1.6.10-jsNativeMain-tGo7Ag.klib │ ├── org.jetbrains.kotlin-kotlin-test-2.0.0-assertionsCommonMain-24eTFQ.klib │ ├── org.jetbrains.androidx.savedstate-savedstate-1.2.0-commonMain-xMdm-g.klib │ ├── org.jetbrains.androidx.savedstate-savedstate-1.2.0-nonJvmMain-xMdm-g.klib │ ├── org.jetbrains.compose.animation-animation-1.6.10-jsNativeMain-5jNXZw.klib │ ├── org.jetbrains.compose.animation-animation-core-1.6.10-jbMain-jNz1Aw.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-commonMain-dXXsCQ.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-darwinMain-aASdXg.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-nativeMain-aASdXg.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-skikoMain-dXXsCQ.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-uikitMain-aASdXg.klib │ ├── org.jetbrains.kotlin-kotlin-test-2.0.0-annotationsCommonMain-24eTFQ.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-commonMain-UxhG-g.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeMain-UxhG-g.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-commonMain-XanZ2w.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeMain-XanZ2w.klib │ ├── io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-nonAndroidMain-ZZAbTA.klib │ ├── io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-nonAndroidMain-6ep4SA.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-commonMain-cb_PMQ.klib │ ├── org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-nativeMain-cb_PMQ.klib │ ├── org.jetbrains.compose.animation-animation-core-1.6.10-commonMain-jNz1Aw.klib │ ├── org.jetbrains.compose.animation-animation-core-1.6.10-uikitMain-2J6wbg.klib │ ├── org.jetbrains.compose.foundation-foundation-1.6.10-jsNativeMain-dXXsCQ.klib │ ├── org.jetbrains.compose.material-material-ripple-1.6.10-commonMain-8kHg7A.klib │ ├── org.jetbrains.compose.material-material-ripple-1.6.10-nativeMain-zsMeyQ.klib │ ├── org.jetbrains.compose.runtime-runtime-saveable-1.6.10-commonMain-pCPplQ.klib │ ├── io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nonJvmCommonMain-owEVuw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-commonMain-_oGBew.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-nonJvmMain-_oGBew.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-commonMain-Cd-IGw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nativeMain-Cd-IGw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nonJvmMain-Cd-IGw.klib │ ├── org.jetbrains.compose.animation-animation-core-1.6.10-jsNativeMain-jNz1Aw.klib │ ├── org.jetbrains.compose.collection-internal-collection-1.6.10-jbMain-hcu3Ug.klib │ ├── org.jetbrains.compose.foundation-foundation-layout-1.6.10-skikoMain-89e7lw.klib │ ├── org.jetbrains.compose.foundation-foundation-layout-1.6.10-uikitMain-BKR0pA.klib │ ├── org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoExcludingWebMain-jqr5iw.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-concurrentMain-UxhG-g.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-concurrentMain-XanZ2w.klib │ ├── org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzdbOnFilesystemMain-v1Leig.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-commonMain-0z2eOA.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-nativeMain-0z2eOA.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-commonMain-oyg_tw.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-nativeMain-oyg_tw.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-commonMain-xO3r_w.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-nativeMain-xO3r_w.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-commonMain-JDnEfA.klib │ ├── org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-nativeMain-JDnEfA.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-commonMain-ydSu5Q.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nativeMain-ydSu5Q.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nonJvmMain-ydSu5Q.klib │ ├── org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-commonMain-xMdm-g.klib │ ├── org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-nonJvmMain-xMdm-g.klib │ ├── org.jetbrains.compose.components-components-resources-1.6.10-iosMain-mlvQUA.klib │ ├── org.jetbrains.compose.foundation-foundation-layout-1.6.10-commonMain-89e7lw.klib │ ├── org.jetbrains.compose.material-material-icons-core-1.6.10-commonMain-XjyzjQ.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeDarwinMain-sy5nKg.klib │ ├── org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeDarwinMain-sy5nKg.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-jbMain-MNIAkQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-jbMain-MNIAkQ.klib │ ├── org.jetbrains.compose.annotation-internal-annotation-1.6.10-commonMain-cNNKSA.klib │ ├── org.jetbrains.compose.annotation-internal-annotation-1.6.10-nonJvmMain-cNNKSA.klib │ ├── org.jetbrains.compose.collection-internal-collection-1.6.10-commonMain-hcu3Ug.klib │ ├── org.jetbrains.compose.collection-internal-collection-1.6.10-jsNativeMain-hcu3Ug.klib │ ├── org.jetbrains.compose.components-components-resources-1.6.10-commonMain-44UCqg.klib │ ├── org.jetbrains.compose.components-components-resources-1.6.10-nativeMain-mlvQUA.klib │ ├── org.jetbrains.compose.components-components-resources-1.6.10-skikoMain-44UCqg.klib │ ├── org.jetbrains.compose.foundation-foundation-layout-1.6.10-jsNativeMain-89e7lw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-jbMain-207ecg.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-jbMain-_VVO-g.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-jbMain-_VVO-g.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-jbMain-GH9lnw.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-jbMain-GH9lnw.klib │ ├── org.jetbrains.compose.components-components-resources-1.6.10-blockingMain-44UCqg.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-runtime-compose-2.8.0-commonMain-mvP4Vw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-commonMain-207ecg.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-jbMain-KnkPTw.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-commonMain-MNIAkQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-darwinMain-lKvdpQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-nativeMain-MNIAkQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-commonMain-MNIAkQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-darwinMain-lKvdpQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-nativeMain-MNIAkQ.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-commonMain-_VVO-g.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-nativeMain-jw2VUA.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-commonMain-_VVO-g.klib │ ├── org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-nativeMain-jw2VUA.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-commonMain-GH9lnw.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-nonJvmMain-GH9lnw.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-commonMain-GH9lnw.klib │ ├── org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-nonJvmMain-GH9lnw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-jbMain-207ecg.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-commonMain-KnkPTw.klib │ ├── org.jetbrains.compose.components-components-ui-tooling-preview-1.6.10-commonMain--i3iSw.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-commonMain-207ecg.klib │ ├── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-jbMain-KnkPTw.klib │ └── org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-commonMain-KnkPTw.klib │ └── kotlinTransformedCInteropMetadataLibraries │ ├── io.ktor-ktor-utils-2.3.8-iosMain-cinterop │ └── io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib │ ├── co.touchlab-sqliter-driver-1.3.1-appleMain-cinterop │ └── co.touchlab_sqliter-driver-cinterop-sqlite3-jZj4Kg.klib │ ├── org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop │ └── org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib │ ├── org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop │ └── org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-cinterop │ └── androidx.sqlite_sqlite-framework-cinterop-sqlite3-kCTuRQ.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-cinterop │ └── androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib │ ├── androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop │ └── androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-cinterop │ └── androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-APf96A.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-cinterop │ └── androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib │ ├── androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop │ └── androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib │ ├── .composeApp-appleMain.cinteropLibraries │ ├── .composeApp-nativeMain.cinteropLibraries │ ├── .composeApp-iosMain.cinteropLibraries │ ├── .composeApp-iosTest.cinteropLibraries │ ├── .composeApp-appleTest.cinteropLibraries │ └── .composeApp-nativeTest.cinteropLibraries ├── gradle.properties ├── settings.gradle.kts ├── AGENTS.md └── README.md /iosApp/Configuration/TeamId.xcconfig: -------------------------------------------------------------------------------- 1 | TEAM_ID= 2 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/Platform.kt: -------------------------------------------------------------------------------- 1 | // Delete this file -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/di/Providers.android.kt: -------------------------------------------------------------------------------- 1 | package di 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.DS_Store -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.fleet/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "run.destination.stop.already.running": "Always" 3 | } -------------------------------------------------------------------------------- /iosApp/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/iosApp/.DS_Store -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Jet Habit 3 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/stats/models/StatsAction.kt: -------------------------------------------------------------------------------- 1 | package screens.stats.models 2 | 3 | sealed class StatsAction -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/Providers.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import org.kodein.di.DI 4 | 5 | expect fun DI.Builder.provideImagePicker() -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/utils/Int + Klock.kt: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | fun Int.wrap(): String = if (this < 10) "0$this" else this.toString() -------------------------------------------------------------------------------- /iosApp/Podfile: -------------------------------------------------------------------------------- 1 | target 'JetHabit' do 2 | use_frameworks! 3 | platform :ios, '14.1' 4 | pod 'composeApp', :path => '../composeApp' 5 | end 6 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/navigation/ProfileScreens.kt: -------------------------------------------------------------------------------- 1 | package navigation 2 | 3 | enum class ProfileScreens { 4 | Start, Settings, Edit 5 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/Inject.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | object Inject { 4 | inline fun instance(): T = PlatformSDK.instance() 5 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/chat/presentation/models/ChatAction.kt: -------------------------------------------------------------------------------- 1 | package feature.chat.presentation.models 2 | 3 | sealed class ChatAction 4 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/statistics/ui/models/StatisticsAction.kt: -------------------------------------------------------------------------------- 1 | package feature.statistics.ui.models 2 | 3 | sealed interface StatisticsAction -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/list/presentation/models/HealthEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.health.list.presentation.models 2 | 3 | sealed interface HealthEvent -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /composeApp/src/jsMain/resources/styles.css: -------------------------------------------------------------------------------- 1 | #root { 2 | width: 100%; 3 | height: 100vh; 4 | } 5 | 6 | #root > .compose-web-column > div { 7 | position: relative; 8 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/stats/models/StatsEvent.kt: -------------------------------------------------------------------------------- 1 | package screens.stats.models 2 | 3 | sealed class StatsEvent { 4 | object ReloadScreen : StatsEvent() 5 | } 6 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/compose/models/ComposeError.kt: -------------------------------------------------------------------------------- 1 | package screens.compose.models 2 | 3 | sealed class ComposeError { 4 | object SendingGeneric : ComposeError() 5 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/platform/ImagePicker.kt: -------------------------------------------------------------------------------- 1 | package core.platform 2 | 3 | interface ImagePicker { 4 | suspend fun pickImage(): String? 5 | suspend fun takePhoto(): String? 6 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/CoreModule.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import org.kodein.di.DI 4 | 5 | val coreModule = DI.Module("coreModule") { 6 | importAll( 7 | serializationModule 8 | ) 9 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/chat/presentation/models/ChatMessage.kt: -------------------------------------------------------------------------------- 1 | package feature.chat.presentation.models 2 | 3 | data class ChatMessage( 4 | val text: String, 5 | val isUser: Boolean 6 | ) 7 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/statistics/ui/models/StatisticsEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.statistics.ui.models 2 | 3 | sealed interface StatisticsEvent { 4 | data object LoadStatistics : StatisticsEvent 5 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/edit/ui/models/EditProfileAction.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.edit.ui.models 2 | 3 | sealed class EditProfileAction { 4 | data object NavigateBack : EditProfileAction() 5 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/presentation/models/SettingsAction.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.presentation.models 2 | 3 | sealed class SettingsAction { 4 | data object NavigateBack : SettingsAction() 5 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/add_name/models/MedicationAddNameAction.kt: -------------------------------------------------------------------------------- 1 | package screens.add_name.models 2 | 3 | sealed class MedicationAddNameAction { 4 | object NextClicked : MedicationAddNameAction() 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | local.properties 2 | iosApp/Podfile.lock 3 | iosApp/Pods/* 4 | iosApp/JetHabit.xcworkspace/* 5 | iosApp/JetHabit.xcodeproj/* 6 | !iosApp/JetHabit.xcodeproj/project.pbxproj 7 | shared/shared.podspec 8 | build 9 | .gradle -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/add_name/models/MedicationAddNameViewState.kt: -------------------------------------------------------------------------------- 1 | package screens.add_name.models 2 | 3 | data class MedicationAddNameViewState( 4 | val name: String = "", 5 | val isNext: Boolean = false 6 | ) -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-commonMain-VFYQnA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-commonMain-VFYQnA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-darwinMain-sbySvA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-darwinMain-sbySvA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-posixMain-VFYQnA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-io-2.3.8-posixMain-VFYQnA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-nixMain-jdPpcw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-nixMain-jdPpcw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/utils/ValidationUtils.kt: -------------------------------------------------------------------------------- 1 | package core.utils 2 | 3 | fun String.isValidEmail(): Boolean { 4 | val emailRegex = """^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$""" 5 | return matches(emailRegex.toRegex()) 6 | } 7 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-http-2.3.8-commonMain-QgEQ0Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-http-2.3.8-commonMain-QgEQ0Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-http-2.3.8-posixMain-QgEQ0Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-http-2.3.8-posixMain-QgEQ0Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-posixMain-jdPpcw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-posixMain-jdPpcw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/ui/models/DailyAction.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.ui.models 2 | 3 | sealed class DailyAction { 4 | class OpenDetail(val itemId: String) : DailyAction() 5 | data object OpenCompose : DailyAction() 6 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-appleMain-Zx8wYQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-appleMain-Zx8wYQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-commonMain-n45qYA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-commonMain-n45qYA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nativeMain-n45qYA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nativeMain-n45qYA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nix64Main-n45qYA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nix64Main-n45qYA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nonJvmMain-n45qYA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.benasher44-uuid-0.8.4-nonJvmMain-n45qYA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-unixMain-YgoO1Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-unixMain-YgoO1Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-events-2.3.8-commonMain-_htHDg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-events-2.3.8-commonMain-_htHDg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-commonMain-jdPpcw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-commonMain-jdPpcw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-darwinMain-kaBnRw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-utils-2.3.8-darwinMain-kaBnRw.klib -------------------------------------------------------------------------------- /composeApp/src/jsMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | actual class PlatformConfiguration() { 4 | actual val appName: String 5 | get() = "JetHabit" 6 | actual val platform: Platform 7 | get() = Platform.Js 8 | } -------------------------------------------------------------------------------- /.idea/AndroidProjectSystem.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-appleMain-BlIr1w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-appleMain-BlIr1w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-commonMain-YgoO1Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-commonMain-YgoO1Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-nativeMain-YgoO1Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-nativeMain-YgoO1Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-nonJvmMain-YgoO1Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-nonJvmMain-YgoO1Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websockets-2.3.8-posixMain-8-9-_g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websockets-2.3.8-posixMain-8-9-_g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-iosMain-1T2ZCw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-iosMain-1T2ZCw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/di/CoilInitializer.kt: -------------------------------------------------------------------------------- 1 | package core.di 2 | 3 | import coil3.ImageLoader 4 | import coil3.PlatformContext 5 | 6 | fun initializeCoil(context: PlatformContext) { 7 | ImageLoader.Builder(context) 8 | .build() 9 | } -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | actual class PlatformConfiguration { 4 | actual val appName: String 5 | get() = "JetHabit" 6 | 7 | actual val platform: Platform 8 | get() = Platform.iOS 9 | } -------------------------------------------------------------------------------- /composeApp/src/macosMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | actual class PlatformConfiguration() { 4 | actual val appName: String 5 | get() = "JetHabit" 6 | actual val platform: Platform 7 | get() = Platform.MacOS 8 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-appleMain-jZj4Kg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-appleMain-jZj4Kg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-hashFunctions-YgoO1Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.squareup.okio-okio-3.8.0-hashFunctions-YgoO1Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-client-core-2.3.8-commonMain-FU-9lg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-client-core-2.3.8-commonMain-FU-9lg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-client-core-2.3.8-posixMain-FU-9lg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-client-core-2.3.8-posixMain-FU-9lg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websockets-2.3.8-commonMain-8-9-_g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websockets-2.3.8-commonMain-8-9-_g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-commonMain-DbI_Jg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-commonMain-DbI_Jg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-darwinMain-1T2ZCw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-darwinMain-1T2ZCw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-nativeMain-DbI_Jg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-nativeMain-DbI_Jg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.di-kodein-di-7.20.2-commonMain-oE0vIA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.di-kodein-di-7.20.2-commonMain-oE0vIA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.type-kaverit-2.4.0-commonMain-kNHr1g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.type-kaverit-2.4.0-commonMain-kNHr1g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-runtime-2.0.1-commonMain-wyRdBg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-runtime-2.0.1-commonMain-wyRdBg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-runtime-2.0.1-nativeMain-wyRdBg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-runtime-2.0.1-nativeMain-wyRdBg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-strict-2.0.5-commonMain-0yIOhQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-strict-2.0.5-commonMain-0yIOhQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-serialization-2.3.8-commonMain-NxrIfg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-serialization-2.3.8-commonMain-NxrIfg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-skikoMain-Eh674w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-skikoMain-Eh674w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-uikitMain-BVAqnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-uikitMain-BVAqnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-nativeJsMain-DbI_Jg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.skiko-skiko-0.8.4-nativeJsMain-DbI_Jg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.di-kodein-di-7.20.2-allNativeMain-oE0vIA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.kodein.di-kodein-di-7.20.2-allNativeMain-oE0vIA.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/presentation/models/DetailAction.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.presentation.models 2 | 3 | sealed class DetailAction { 4 | data object CloseScreen : DetailAction() 5 | data object DateError : DetailAction() 6 | } 7 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-commonMain-PJXh8Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-commonMain-PJXh8Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-nonJvmMain-PJXh8Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-nonJvmMain-PJXh8Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha01-commonMain-81Sdcw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha01-commonMain-81Sdcw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha01-nativeMain-81Sdcw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha01-nativeMain-81Sdcw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha02-commonMain-32gQSg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha02-commonMain-32gQSg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha02-nativeMain-32gQSg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha02-nativeMain-32gQSg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha03-commonMain-32gQSg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha03-commonMain-32gQSg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha03-nativeMain-32gQSg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-2.5.0-alpha03-nativeMain-32gQSg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.softwork-kotlinx-uuid-core-0.0.25-appleMain-u3QhIw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.softwork-kotlinx-uuid-core-0.0.25-appleMain-u3QhIw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-commonMain-r_z2xg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-commonMain-r_z2xg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-darwinMain-A7xfHQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-darwinMain-A7xfHQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-nativeMain-r_z2xg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/com.soywiz.korlibs.klock-klock-3.4.0-nativeMain-r_z2xg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-3.0.0-alpha06-commonMain-NwDnKQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-3.0.0-alpha06-commonMain-NwDnKQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-commonMain-Eh674w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-commonMain-Eh674w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-darwinMain-BVAqnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-darwinMain-BVAqnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-jsNativeMain-Eh674w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-jsNativeMain-Eh674w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-nativeMain-BVAqnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-1.6.10-nativeMain-BVAqnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-jbMain-vwDMdg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-jbMain-vwDMdg.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/start/ui/models/ProfileAction.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.start.ui.models 2 | 3 | sealed class ProfileAction { 4 | data object NavigateToEdit : ProfileAction() 5 | data object NavigateToSettings : ProfileAction() 6 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-appleMain-_Xyl3g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-appleMain-_Xyl3g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.softwork-kotlinx-uuid-core-0.0.25-commonMain-j3QSHw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.softwork-kotlinx-uuid-core-0.0.25-commonMain-j3QSHw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-nativeCommonMain-VZ9feg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-nativeCommonMain-VZ9feg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-commonMain-CAw19g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-commonMain-CAw19g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-darwinMain-oJtMMg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-darwinMain-oJtMMg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-strict-2.0.5-nativeCommonMain-0yIOhQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-strict-2.0.5-nativeCommonMain-0yIOhQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-appleMain-6I-NAA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-appleMain-6I-NAA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-commonMain-MKuSLg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-commonMain-MKuSLg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-uikitMain-6I-NAA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-uikitMain-6I-NAA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-skikoMain-aUvkxg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-skikoMain-aUvkxg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-util-1.6.10-uikitMain-4Hpl6Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-util-1.6.10-uikitMain-4Hpl6Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-commonMain-yBS35w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-commonMain-yBS35w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-yBS35w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-yBS35w.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/list/presentation/models/HealthViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.health.list.presentation.models 2 | 3 | data class HealthViewState( 4 | val habits: List = emptyList(), 5 | val isLoading: Boolean = false 6 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/presentation/models/SettingsEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.presentation.models 2 | 3 | sealed class SettingsEvent { 4 | data object ClearAllQueries : SettingsEvent() 5 | data object BackClicked : SettingsEvent() 6 | } 7 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-rc01-commonMain-PJXh8Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-rc01-commonMain-PJXh8Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-rc01-nonJvmMain-PJXh8Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.annotation-annotation-1.8.0-rc01-nonJvmMain-PJXh8Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha01-commonMain-F8fjPw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha01-commonMain-F8fjPw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha02-commonMain-34fLrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha02-commonMain-34fLrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha03-commonMain-34fLrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-common-2.7.0-alpha03-commonMain-34fLrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-commonMain-6E0ZrQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-commonMain-6E0ZrQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-nativeMain-6E0ZrQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-nativeMain-6E0ZrQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-commonMain--YfLbw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-commonMain--YfLbw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-nativeMain--YfLbw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-nativeMain--YfLbw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-commonMain-K8FDtg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-commonMain-K8FDtg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-nativeMain-K8FDtg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-nativeMain-K8FDtg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-nativeMain-0mXY0w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-nativeMain-0mXY0w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-3.0.0-alpha06-nonAndroidMain-NwDnKQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-3.0.0-alpha06-nonAndroidMain-NwDnKQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-commonMain-WBYwmA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-commonMain-WBYwmA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nativeMain-rhpzDw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nativeMain-rhpzDw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-jbMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-jbMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-jbMain-CVJWAg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-jbMain-CVJWAg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-commonMain-aUvkxg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-commonMain-aUvkxg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-darwinMain-DK5x5Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-darwinMain-DK5x5Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-jsNativeMain-aUvkxg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-jsNativeMain-aUvkxg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-nativeMain-DK5x5Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-text-1.6.10-nativeMain-DK5x5Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-DC3XFw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-DC3XFw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-commonMain-vwDMdg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-commonMain-vwDMdg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-jsNativeMain-vwDMdg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-unit-1.6.10-jsNativeMain-vwDMdg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-util-1.6.10-commonMain-LLOBPg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-util-1.6.10-commonMain-LLOBPg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/presentation/models/SettingsViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.presentation.models 2 | 3 | data class SettingsViewState( 4 | val username: String = "", 5 | val avatar: String = "", 6 | val healthPercentage: Int = 100 7 | ) -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-jvmNativeMain-6E0ZrQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha01-jvmNativeMain-6E0ZrQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-jvmNativeMain--YfLbw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha02-jvmNativeMain--YfLbw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-jvmNativeMain-K8FDtg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.room-room-runtime-2.7.0-alpha03-jvmNativeMain-K8FDtg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-nativeCommonMain-CAw19g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/co.touchlab-stately-concurrency-2.0.5-nativeCommonMain-CAw19g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-3.0.0-alpha06-commonMain-AvZVXw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-3.0.0-alpha06-commonMain-AvZVXw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-appleAndJsMain-MKuSLg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-1.2.2-appleAndJsMain-MKuSLg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-iosMain-eq7qVA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-iosMain-eq7qVA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websocket-serialization-2.3.8-commonMain-8xBQEg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.ktor-ktor-websocket-serialization-2.3.8-commonMain-8xBQEg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-uikitMain-LSh9lw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-uikitMain-LSh9lw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-geometry-1.6.10-commonMain-zDj2GQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-geometry-1.6.10-commonMain-zDj2GQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-commonMain-jqr5iw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-commonMain-jqr5iw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-nativeMain-M9RlEw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-nativeMain-M9RlEw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoMain-jqr5iw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoMain-jqr5iw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/compose/models/ComposeAction.kt: -------------------------------------------------------------------------------- 1 | package screens.compose.models 2 | 3 | sealed class ComposeAction { 4 | data object Success : ComposeAction() 5 | data object Error : ComposeAction() 6 | data object CloseScreen : ComposeAction() 7 | } 8 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-commonMain-APf96A.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-commonMain-APf96A.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-APf96A.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-APf96A.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-commonMain-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-commonMain-0MuvrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-0MuvrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-commonMain-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-commonMain-0MuvrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-0MuvrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-kCTuRQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-kCTuRQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-GE3pgw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-GE3pgw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-GE3pgw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-GE3pgw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonAndroidMain-WBYwmA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonAndroidMain-WBYwmA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJsCommonMain-WBYwmA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJsCommonMain-WBYwmA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJvmCommonMain-WBYwmA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-core-3.0.0-alpha06-nonJvmCommonMain-WBYwmA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-appleMain-eq7qVA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-appleMain-eq7qVA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-commonMain--wfG9w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.github.skeptick.libres-libres-compose-1.2.2-commonMain--wfG9w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-commonMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-commonMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-nativeMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-nativeMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-commonMain-tGo7Ag.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-commonMain-tGo7Ag.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-nativeMain-33WlwA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-nativeMain-33WlwA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-skikoMain-tGo7Ag.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-skikoMain-tGo7Ag.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-commonMain-CVJWAg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-commonMain-CVJWAg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-jsNativeMain-CVJWAg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-jsNativeMain-CVJWAg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-nativeMain-CVJWAg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-1.6.10-nativeMain-CVJWAg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-jsNativeMain-jqr5iw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-jsNativeMain-jqr5iw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-commonMain-v1Leig.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-commonMain-v1Leig.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-darwinMain-O4UcJA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-darwinMain-O4UcJA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-nativeMain-v1Leig.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-nativeMain-v1Leig.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzfileMain-v1Leig.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzfileMain-v1Leig.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/chat/presentation/models/ChatViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.chat.presentation.models 2 | 3 | data class ChatViewState( 4 | val messages: List = emptyList(), 5 | val currentMessage: String = "", 6 | val apiKey: String = "" 7 | ) 8 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-nativeLinuxLikeMain-0mXY0w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/app.cash.sqldelight-native-driver-2.0.1-nativeLinuxLikeMain-0mXY0w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-commonMain-ZZAbTA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-commonMain-ZZAbTA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-commonMain-6ep4SA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-commonMain-6ep4SA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-commonMain-owEVuw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-commonMain-owEVuw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nativeMain-djsvLg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nativeMain-djsvLg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-jbMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-jbMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-commonMain-5jNXZw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-commonMain-5jNXZw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-nativeMain-tpXTFg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-nativeMain-tpXTFg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-jsNativeMain-tGo7Ag.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-1.6.10-jsNativeMain-tGo7Ag.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.0-assertionsCommonMain-24eTFQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.0-assertionsCommonMain-24eTFQ.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/data/features/daily/models/DailyHabitContainer.kt: -------------------------------------------------------------------------------- 1 | package data.features.daily.models 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class DailyHabitContainer( 7 | val habbitId: Long, 8 | val value: Boolean 9 | ) 10 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/navigation/LocalNavHost.kt: -------------------------------------------------------------------------------- 1 | package navigation 2 | 3 | import androidx.compose.runtime.staticCompositionLocalOf 4 | import androidx.navigation.NavHostController 5 | 6 | val LocalNavHost = staticCompositionLocalOf { error("No default implementation") } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-commonMain-xMdm-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-commonMain-xMdm-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-nonJvmMain-xMdm-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-nonJvmMain-xMdm-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-jsNativeMain-5jNXZw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-1.6.10-jsNativeMain-5jNXZw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-jbMain-jNz1Aw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-jbMain-jNz1Aw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-commonMain-dXXsCQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-commonMain-dXXsCQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-darwinMain-aASdXg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-darwinMain-aASdXg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-nativeMain-aASdXg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-nativeMain-aASdXg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-skikoMain-dXXsCQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-skikoMain-dXXsCQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-uikitMain-aASdXg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-uikitMain-aASdXg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.0-annotationsCommonMain-24eTFQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-test-2.0.0-annotationsCommonMain-24eTFQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-commonMain-UxhG-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-commonMain-UxhG-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeMain-UxhG-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeMain-UxhG-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-commonMain-XanZ2w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-commonMain-XanZ2w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeMain-XanZ2w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeMain-XanZ2w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-nonAndroidMain-ZZAbTA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-compose-core-3.0.0-alpha06-nonAndroidMain-ZZAbTA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-nonAndroidMain-6ep4SA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-core-3.0.0-alpha06-nonAndroidMain-6ep4SA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-commonMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-commonMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-nativeMain-cb_PMQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.core-core-bundle-1.0.0-beta02-nativeMain-cb_PMQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-commonMain-jNz1Aw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-commonMain-jNz1Aw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-uikitMain-2J6wbg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-uikitMain-2J6wbg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-jsNativeMain-dXXsCQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-1.6.10-jsNativeMain-dXXsCQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-ripple-1.6.10-commonMain-8kHg7A.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-ripple-1.6.10-commonMain-8kHg7A.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-ripple-1.6.10-nativeMain-zsMeyQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-ripple-1.6.10-nativeMain-zsMeyQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-saveable-1.6.10-commonMain-pCPplQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.runtime-runtime-saveable-1.6.10-commonMain-pCPplQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nonJvmCommonMain-owEVuw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/io.coil-kt.coil3-coil-network-ktor-3.0.0-alpha06-nonJvmCommonMain-owEVuw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-commonMain-_oGBew.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-commonMain-_oGBew.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-nonJvmMain-_oGBew.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-common-2.8.0-nonJvmMain-_oGBew.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-commonMain-Cd-IGw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-commonMain-Cd-IGw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nativeMain-Cd-IGw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nativeMain-Cd-IGw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nonJvmMain-Cd-IGw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-2.8.0-nonJvmMain-Cd-IGw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-jsNativeMain-jNz1Aw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.animation-animation-core-1.6.10-jsNativeMain-jNz1Aw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-jbMain-hcu3Ug.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-jbMain-hcu3Ug.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-skikoMain-89e7lw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-skikoMain-89e7lw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-uikitMain-BKR0pA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-uikitMain-BKR0pA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoExcludingWebMain-jqr5iw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.ui-ui-graphics-1.6.10-skikoExcludingWebMain-jqr5iw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-concurrentMain-UxhG-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-concurrentMain-UxhG-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-concurrentMain-XanZ2w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-concurrentMain-XanZ2w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzdbOnFilesystemMain-v1Leig.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-datetime-0.6.0-tzdbOnFilesystemMain-v1Leig.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-commonMain-0z2eOA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-commonMain-0z2eOA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-nativeMain-0z2eOA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.2-nativeMain-0z2eOA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-commonMain-oyg_tw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-commonMain-oyg_tw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-nativeMain-oyg_tw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-core-1.6.3-nativeMain-oyg_tw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-commonMain-xO3r_w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-commonMain-xO3r_w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-nativeMain-xO3r_w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.5.1-nativeMain-xO3r_w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-commonMain-JDnEfA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-commonMain-JDnEfA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-nativeMain-JDnEfA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-serialization-json-1.6.3-nativeMain-JDnEfA.klib -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-commonMain-ydSu5Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-commonMain-ydSu5Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nativeMain-ydSu5Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nativeMain-ydSu5Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nonJvmMain-ydSu5Q.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-2.8.0-nonJvmMain-ydSu5Q.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-commonMain-xMdm-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-commonMain-xMdm-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-nonJvmMain-xMdm-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.savedstate-savedstate-1.2.0-beta02-nonJvmMain-xMdm-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-iosMain-mlvQUA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-iosMain-mlvQUA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-commonMain-89e7lw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-commonMain-89e7lw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-icons-core-1.6.10-commonMain-XjyzjQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.material-material-icons-core-1.6.10-commonMain-XjyzjQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeDarwinMain-sy5nKg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.0-nativeDarwinMain-sy5nKg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeDarwinMain-sy5nKg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlinx-kotlinx-coroutines-core-1.8.1-nativeDarwinMain-sy5nKg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-jbMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-jbMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-jbMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-jbMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.annotation-internal-annotation-1.6.10-commonMain-cNNKSA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.annotation-internal-annotation-1.6.10-commonMain-cNNKSA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.annotation-internal-annotation-1.6.10-nonJvmMain-cNNKSA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.annotation-internal-annotation-1.6.10-nonJvmMain-cNNKSA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-commonMain-hcu3Ug.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-commonMain-hcu3Ug.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-jsNativeMain-hcu3Ug.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.collection-internal-collection-1.6.10-jsNativeMain-hcu3Ug.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-commonMain-44UCqg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-commonMain-44UCqg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-nativeMain-mlvQUA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-nativeMain-mlvQUA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-skikoMain-44UCqg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-skikoMain-44UCqg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-jsNativeMain-89e7lw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.foundation-foundation-layout-1.6.10-jsNativeMain-89e7lw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-jbMain-207ecg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-jbMain-207ecg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-jbMain-_VVO-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-jbMain-_VVO-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-jbMain-_VVO-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-jbMain-_VVO-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-jbMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-jbMain-GH9lnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-jbMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-jbMain-GH9lnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-blockingMain-44UCqg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-resources-1.6.10-blockingMain-44UCqg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-compose-2.8.0-commonMain-mvP4Vw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-runtime-compose-2.8.0-commonMain-mvP4Vw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-commonMain-207ecg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-commonMain-207ecg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-jbMain-KnkPTw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-jbMain-KnkPTw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-commonMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-commonMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-darwinMain-lKvdpQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-darwinMain-lKvdpQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-nativeMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha03-nativeMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-commonMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-commonMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-darwinMain-lKvdpQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-darwinMain-lKvdpQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-nativeMain-MNIAkQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-common-2.7.0-alpha07-nativeMain-MNIAkQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-commonMain-_VVO-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-commonMain-_VVO-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-nativeMain-jw2VUA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha03-nativeMain-jw2VUA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-commonMain-_VVO-g.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-commonMain-_VVO-g.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-nativeMain-jw2VUA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-compose-2.7.0-alpha07-nativeMain-jw2VUA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-commonMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-commonMain-GH9lnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-nonJvmMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha03-nonJvmMain-GH9lnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-commonMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-commonMain-GH9lnw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-nonJvmMain-GH9lnw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.navigation-navigation-runtime-2.7.0-alpha07-nonJvmMain-GH9lnw.klib -------------------------------------------------------------------------------- /.idea/artifacts/jsApp_js.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/jsApp/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/chat/presentation/models/ChatEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.chat.presentation.models 2 | 3 | sealed class ChatEvent { 4 | data class MessageChanged(val text: String) : ChatEvent() 5 | data class ApiKeyChanged(val key: String) : ChatEvent() 6 | data object SendClicked : ChatEvent() 7 | } 8 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-jbMain-207ecg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-jbMain-207ecg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-commonMain-KnkPTw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-commonMain-KnkPTw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-ui-tooling-preview-1.6.10-commonMain--i3iSw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.compose.components-components-ui-tooling-preview-1.6.10-commonMain--i3iSw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-commonMain-207ecg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-compose-2.8.0-beta02-commonMain-207ecg.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-jbMain-KnkPTw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-jbMain-KnkPTw.klib -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/presentation/models/TrackerHistoryItem.kt: -------------------------------------------------------------------------------- 1 | package feature.health.presentation.models 2 | 3 | import feature.habits.data.Measurement 4 | 5 | data class TrackerHistoryItem( 6 | val title: String, 7 | val value: Double, 8 | val date: String, 9 | val measurement: Measurement 10 | ) -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-commonMain-KnkPTw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.androidx.lifecycle-lifecycle-viewmodel-savedstate-2.8.0-beta02-commonMain-KnkPTw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/domain/DeleteHabitUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.domain 2 | 3 | import feature.habits.data.HabitDao 4 | 5 | class DeleteHabitUseCase( 6 | private val habitDao: HabitDao 7 | ) { 8 | 9 | suspend fun execute(habitId: String) { 10 | habitDao.deleteWith(habitId) 11 | } 12 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib -------------------------------------------------------------------------------- /composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/data/DailyEntity.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.data 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class DailyEntity( 8 | @PrimaryKey val id: String, 9 | val habitId: String, 10 | val timestamp: String, 11 | val isChecked: Boolean 12 | ) 13 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/add_name/models/MedicationAddNameEvent.kt: -------------------------------------------------------------------------------- 1 | package screens.add_name.models 2 | 3 | sealed class MedicationAddNameEvent { 4 | data class ChangeName(val value: String) : MedicationAddNameEvent() 5 | data object NextClicked : MedicationAddNameEvent() 6 | data object ActionInvoked : MedicationAddNameEvent() 7 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/tech/mobiledeveloper/jethabit/app/JetHabitApp.kt: -------------------------------------------------------------------------------- 1 | package tech.mobiledeveloper.jethabit.app 2 | 3 | import android.app.Application 4 | import core.di.initializeCoil 5 | 6 | class JetHabitApp : Application() { 7 | override fun onCreate() { 8 | super.onCreate() 9 | initializeCoil(this) 10 | } 11 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/tracker/data/TrackerEntity.kt: -------------------------------------------------------------------------------- 1 | package feature.tracker.data 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class TrackerEntity( 8 | @PrimaryKey 9 | val id: String, 10 | val habitId: String, 11 | val timestamp: String, 12 | val value: Double 13 | ) -------------------------------------------------------------------------------- /.idea/artifacts/desktopApp_jvm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/desktopApp/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/artifacts/composeApp_js_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/composeApp/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/presentation/models/DailyHabit.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.presentation.models 2 | 3 | import feature.habits.data.HabitType 4 | 5 | class DailyHabit( 6 | val id: String, 7 | val title: String, 8 | val isChecked: Boolean, 9 | val type: HabitType = HabitType.REGULAR, 10 | val value: Double? = null 11 | ) -------------------------------------------------------------------------------- /.idea/artifacts/composeApp_jvm_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/composeApp/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/start/ui/models/ProfileViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.start.ui.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ProfileViewState( 7 | val name: String = "", 8 | val email: String = "", 9 | val avatarUrl: String? = null, 10 | val isLoading: Boolean = false 11 | ) -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | #Gradle 2 | org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" 3 | 4 | #Kotlin 5 | kotlin.code.style=official 6 | 7 | #Android 8 | android.useAndroidX=true 9 | 10 | #MPP 11 | kotlin.mpp.enableCInteropCommonization=true 12 | kotlin.native.binary.memoryModel=experimental 13 | org.jetbrains.compose.experimental.jscanvas.enabled=true -------------------------------------------------------------------------------- /.idea/artifacts/shared_js_1_0_SNAPSHOT.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/shared/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/deploymentTargetSelector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/data/features/daily/DailyEntity.kt: -------------------------------------------------------------------------------- 1 | package data.features.daily 2 | 3 | data class DailyEntity( 4 | val date: String, 5 | val habitItemIdsWithStatuses: String, 6 | ) { 7 | 8 | companion object { 9 | const val TABLE_DAILY_NAME = "Daily_Entity" 10 | const val DAILY_HABIT_IDS = "Daily_Habit_Ids" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/ui/models/DailyViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.ui.models 2 | 3 | import screens.daily.views.HabitCardItemModel 4 | import utils.Weekday 5 | 6 | data class DailyViewState( 7 | val currentDay: Weekday = Weekday.Today, 8 | val hasNextDay: Boolean = false, 9 | val habits: List = emptyList() 10 | ) -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/di/Providers.ios.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import core.platform.IOSImagePicker 4 | import core.platform.ImagePicker 5 | import org.kodein.di.DI 6 | import org.kodein.di.bind 7 | import org.kodein.di.singleton 8 | 9 | actual fun DI.Builder.provideImagePicker(platform: Platform) { 10 | bind() with singleton { IOSImagePicker() } 11 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-appleMain-cinterop/co.touchlab_sqliter-driver-cinterop-sqlite3-jZj4Kg.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/co.touchlab-sqliter-driver-1.3.1-appleMain-cinterop/co.touchlab_sqliter-driver-cinterop-sqlite3-jZj4Kg.klib -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/di/Providers.desktop.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import core.platform.DesktopImagePicker 4 | import core.platform.ImagePicker 5 | import org.kodein.di.DI 6 | import org.kodein.di.bind 7 | import org.kodein.di.singleton 8 | 9 | actual fun DI.Builder.provideImagePicker(platform: Platform) { 10 | bind() with singleton { DesktopImagePicker() } 11 | } -------------------------------------------------------------------------------- /.idea/artifacts/shared_desktop_1_0_SNAPSHOT.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/shared/build/libs 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/di/Providers.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import core.platform.ImagePicker 4 | import org.kodein.di.DI 5 | import org.kodein.di.bind 6 | import org.kodein.di.instance 7 | import org.kodein.di.singleton 8 | 9 | actual fun DI.Builder.provideImagePicker() { 10 | bind() with singleton { 11 | instance().imagePicker 12 | } 13 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/domain/SettingsBundle.kt: -------------------------------------------------------------------------------- 1 | package domain 2 | 3 | import ui.themes.JetHabitCorners 4 | import ui.themes.JetHabitSize 5 | import ui.themes.JetHabitStyle 6 | 7 | data class SettingsBundle( 8 | val isDarkMode: Boolean, 9 | val textSize: JetHabitSize, 10 | val paddingSize: JetHabitSize, 11 | val cornerStyle: JetHabitCorners, 12 | val style: JetHabitStyle 13 | ) -------------------------------------------------------------------------------- /composeApp/src/jsMain/kotlin/data/DriverFactory.kt: -------------------------------------------------------------------------------- 1 | package data 2 | 3 | import com.squareup.sqldelight.db.SqlDriver 4 | import di.PlatformConfiguration 5 | 6 | actual class DriverFactory actual constructor(private val platformConfiguration: PlatformConfiguration) { 7 | 8 | actual fun createDriver(name: String): SqlDriver { 9 | throw IllegalStateException("JS Not Implemented") 10 | } 11 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/statistics/ui/models/StatisticsViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.statistics.ui.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import screens.stats.models.HabitStatistics 5 | 6 | @Stable 7 | data class StatisticsViewState( 8 | val isLoading: Boolean = false, 9 | val hasData: Boolean = false, 10 | val statistics: List = emptyList() 11 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/utils/Date + Utils.kt: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import kotlinx.datetime.DateTimeUnit 4 | import kotlinx.datetime.LocalDate 5 | import kotlinx.datetime.plus 6 | import kotlinx.datetime.until 7 | 8 | fun LocalDate.daysInMonth(): Int { 9 | val start = LocalDate(year, month, 1) 10 | val end = start.plus(1, DateTimeUnit.MONTH) 11 | return start.until(end, DateTimeUnit.DAY) 12 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-kCTuRQ.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha01-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-kCTuRQ.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha02-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/list/presentation/models/TrackerHabitItem.kt: -------------------------------------------------------------------------------- 1 | package feature.health.list.presentation.models 2 | 3 | import feature.habits.data.Measurement 4 | 5 | data class TrackerHabitItem( 6 | val id: String, 7 | val title: String, 8 | val measurement: Measurement, 9 | val lastValue: Double?, 10 | val values: List, 11 | val dates: List 12 | ) -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/Main.kt: -------------------------------------------------------------------------------- 1 | import androidx.compose.ui.unit.DpSize 2 | import androidx.compose.ui.unit.dp 3 | import androidx.compose.ui.window.WindowState 4 | import androidx.compose.ui.window.singleWindowApplication 5 | 6 | fun main() = 7 | singleWindowApplication( 8 | title = "Jet Habit", 9 | state = WindowState(size = DpSize(800.dp, 800.dp)) 10 | ) { 11 | MainView() 12 | } 13 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/database/entity/UserProfile.kt: -------------------------------------------------------------------------------- 1 | package core.database.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity(tableName = "user_profile") 7 | data class UserProfile( 8 | @PrimaryKey 9 | val id: Int = 1, // Single user profile 10 | val name: String, 11 | val email: String, 12 | val phoneNumber: String, 13 | val avatarUri: String? 14 | ) -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/core/database/DatabaseBuilder.kt: -------------------------------------------------------------------------------- 1 | package core.database 2 | 3 | import androidx.room.Room 4 | import androidx.room.RoomDatabase 5 | import java.io.File 6 | 7 | fun getDatabaseBuilder(): RoomDatabase.Builder { 8 | val dbFile = File(System.getProperty("java.io.tmpdir"), "jethabit.db") 9 | return Room.databaseBuilder( 10 | name = dbFile.absolutePath, 11 | ) 12 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-APf96A.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha01-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-APf96A.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha02-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexGladkov/JetHabit/HEAD/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/domain/ClearAllHabitsUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.domain 2 | 3 | import feature.daily.data.DailyDao 4 | import feature.habits.data.HabitDao 5 | 6 | class ClearAllHabitsUseCase( 7 | private val habitDao: HabitDao, 8 | private val dailyDao: DailyDao 9 | ) { 10 | 11 | suspend fun execute() { 12 | habitDao.clear() 13 | dailyDao.clear() 14 | } 15 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import androidx.compose.runtime.staticCompositionLocalOf 4 | 5 | enum class Platform { 6 | Android, MacOS, Desktop, iOS, Js 7 | } 8 | 9 | expect class PlatformConfiguration { 10 | val platform: Platform 11 | val appName: String 12 | } 13 | 14 | internal val LocalPlatform = staticCompositionLocalOf { error("no default platform") } 15 | 16 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/SerializationModule.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import kotlinx.serialization.json.Json 4 | import org.kodein.di.DI 5 | import org.kodein.di.bind 6 | import org.kodein.di.singleton 7 | 8 | val serializationModule = DI.Module("serializationModule") { 9 | bind() with singleton { 10 | Json { 11 | isLenient = true 12 | ignoreUnknownKeys = true 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/edit/ui/models/EditProfileEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.edit.ui.models 2 | 3 | sealed interface EditProfileEvent { 4 | data class NameChanged(val name: String) : EditProfileEvent 5 | data class EmailChanged(val email: String) : EditProfileEvent 6 | data object SaveClicked : EditProfileEvent 7 | data object BackClicked : EditProfileEvent 8 | data object LoadProfile : EditProfileEvent 9 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/edit/ui/models/EditProfileViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.edit.ui.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class EditProfileViewState( 7 | val name: String = "", 8 | val email: String = "", 9 | val isEmailValid: Boolean = true, 10 | val showEmailError: Boolean = false, 11 | val isSaving: Boolean = false, 12 | val isLoading: Boolean = false 13 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/di/SettingsModule.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.di 2 | 3 | import di.Inject.instance 4 | import feature.settings.domain.ClearAllHabitsUseCase 5 | import org.kodein.di.DI 6 | import org.kodein.di.bind 7 | import org.kodein.di.provider 8 | 9 | val settingsModule = DI.Module("SettingsModule") { 10 | bind() with provider { 11 | ClearAllHabitsUseCase(instance(), instance()) 12 | } 13 | } -------------------------------------------------------------------------------- /.fleet/run.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | 4 | { 5 | "name": "Main [jvm] (1)", 6 | "type": "gradle", 7 | "workingDir": "$PROJECT_DIR$", 8 | "tasks": ["jvmRun"], 9 | "args": ["-DmainClass=MainKt", "--quiet", "-p", "$PROJECT_DIR$/composeApp"], 10 | "initScripts": { 11 | "flmapper": "ext.mapPath = { path -> null }" 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import android.app.Application 4 | import androidx.activity.ComponentActivity 5 | import core.platform.ImagePicker 6 | 7 | actual class PlatformConfiguration( 8 | val application: Application, 9 | val activity: ComponentActivity, 10 | val imagePicker: ImagePicker 11 | ) { 12 | actual val platform: Platform = Platform.Android 13 | actual val appName: String = "JetHabit" 14 | } -------------------------------------------------------------------------------- /composeApp/src/commonTest/kotlin/core/utils/ValidationUtilsTest.kt: -------------------------------------------------------------------------------- 1 | package core.utils 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertTrue 5 | import kotlin.test.assertFalse 6 | 7 | class ValidationUtilsTest { 8 | @Test 9 | fun validEmailPasses() { 10 | assertTrue("test@example.com".isValidEmail()) 11 | } 12 | 13 | @Test 14 | fun invalidEmailFails() { 15 | assertFalse("test@example.com$".isValidEmail()) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /composeApp/src/macosMain/kotlin/data/DriverFactory.kt: -------------------------------------------------------------------------------- 1 | package data 2 | 3 | import Database 4 | import app.cash.sqldelight.db.SqlDriver 5 | import app.cash.sqldelight.driver.native.NativeSqliteDriver 6 | import di.PlatformConfiguration 7 | 8 | actual class DriverFactory actual constructor(private val platformConfiguration: PlatformConfiguration) { 9 | actual fun createDriver(name: String): SqlDriver { 10 | return NativeSqliteDriver(Database.Schema, name) 11 | } 12 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/start/ui/models/ProfileEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.start.ui.models 2 | 3 | import di.Platform 4 | 5 | sealed interface ProfileEvent { 6 | data class PickImageFromLibrary(val platform: Platform) : ProfileEvent 7 | data class TakePhoto(val platform: Platform) : ProfileEvent 8 | data object EditProfileClicked : ProfileEvent 9 | data object OpenSettings : ProfileEvent 10 | data object LoadProfile : ProfileEvent 11 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/compose/models/ComposeViewState.kt: -------------------------------------------------------------------------------- 1 | package screens.compose.models 2 | 3 | import feature.habits.data.HabitType 4 | import feature.habits.data.Measurement 5 | 6 | data class ComposeViewState( 7 | val habitTitle: String = "", 8 | val isGoodHabit: Boolean = true, 9 | val isSending: Boolean = false, 10 | val habitType: HabitType = HabitType.REGULAR, 11 | val measurement: Measurement = Measurement.KILOGRAMS, 12 | val sendingError: String? = null 13 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/track/presentation/models/TrackHabitEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.health.track.presentation.models 2 | 3 | sealed interface TrackHabitEvent { 4 | data class NewValueChanged(val value: String) : TrackHabitEvent 5 | data class DateSelected(val date: String) : TrackHabitEvent 6 | data object SaveClicked : TrackHabitEvent 7 | data object CloseClicked : TrackHabitEvent 8 | } 9 | 10 | sealed interface TrackHabitAction { 11 | data object NavigateBack : TrackHabitAction 12 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/habits/di/HabitModule.kt: -------------------------------------------------------------------------------- 1 | package feature.habits.di 2 | 3 | import core.database.AppDatabase 4 | import feature.habits.data.HabitDao 5 | import feature.habits.domain.CreateHabitUseCase 6 | import org.kodein.di.* 7 | 8 | val habitModule = DI.Module("HabitModule") { 9 | bind() with singleton { 10 | val appDatabase = instance() 11 | appDatabase.getHabitDao() 12 | } 13 | 14 | bind() with provider { 15 | CreateHabitUseCase(instance()) 16 | } 17 | } -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | gradlePluginPortal() 5 | mavenCentral() 6 | mavenLocal() 7 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") 8 | } 9 | } 10 | 11 | rootProject.name = "JetHabit" 12 | 13 | dependencyResolutionManagement { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | mavenLocal() 18 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") 19 | } 20 | } 21 | 22 | include(":composeApp") 23 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/stats/models/StatsViewState.kt: -------------------------------------------------------------------------------- 1 | package screens.stats.models 2 | 3 | data class StatsViewState( 4 | val habits: List = emptyList(), 5 | val isLoading: Boolean = false 6 | ) 7 | 8 | data class HabitStatistics( 9 | val id: String, 10 | val title: String, 11 | val trackedDays: List, 12 | val completionRate: Float // Percentage of days tracked 13 | ) 14 | 15 | data class TrackedDay( 16 | val date: String, 17 | val isChecked: Boolean, 18 | val wasEverChecked: Boolean = false 19 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/ic_add.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/presentation/models/DetailEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.presentation.models 2 | 3 | import kotlinx.datetime.LocalDate 4 | 5 | sealed class DetailEvent { 6 | data object DeleteItem : DetailEvent() 7 | data object CloseScreen : DetailEvent() 8 | data object SaveChanges : DetailEvent() 9 | data object StartDateClicked: DetailEvent() 10 | data object EndDateClicked : DetailEvent() 11 | data class DateSelected(val value: LocalDate) : DetailEvent() 12 | data class NewValueChanged(val value: String?) : DetailEvent() 13 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/habits/data/HabitEntity.kt: -------------------------------------------------------------------------------- 1 | package feature.habits.data 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | enum class HabitType { 7 | REGULAR, 8 | TRACKER 9 | } 10 | 11 | @Entity 12 | data class HabitEntity( 13 | @PrimaryKey 14 | val id: String, 15 | val title: String, 16 | val isGood: Boolean, 17 | val startDate: String, 18 | val endDate: String, 19 | val daysToCheck: String, 20 | val type: HabitType = HabitType.REGULAR, 21 | val measurement: Measurement = Measurement.KILOGRAMS 22 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/tracker/di/TrackerModule.kt: -------------------------------------------------------------------------------- 1 | package feature.tracker.di 2 | 3 | import core.database.AppDatabase 4 | import feature.tracker.data.TrackerDao 5 | import feature.tracker.domain.UpdateTrackerValueUseCase 6 | import org.kodein.di.* 7 | 8 | val trackerModule = DI.Module("TrackerModule") { 9 | bind() with singleton { 10 | val appDatabase = instance() 11 | appDatabase.getTrackerDao() 12 | } 13 | 14 | bind() with provider { 15 | UpdateTrackerValueUseCase(instance()) 16 | } 17 | } -------------------------------------------------------------------------------- /iosApp/iosApp/iosApp.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import composeApp 3 | 4 | @UIApplicationMain 5 | class AppDelegate: UIResponder, UIApplicationDelegate { 6 | var window: UIWindow? 7 | 8 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 9 | window = UIWindow(frame: UIScreen.main.bounds) 10 | let mainViewController = Main_iosKt.MainViewController() 11 | window?.rootViewController = mainViewController 12 | window?.makeKeyAndVisible() 13 | return true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/core/database/DatabaseBuilder.kt: -------------------------------------------------------------------------------- 1 | package core.database 2 | 3 | import android.content.Context 4 | import androidx.room.Room 5 | import androidx.room.RoomDatabase 6 | 7 | fun getDatabaseBuilder(context: Context): RoomDatabase.Builder { 8 | val applicationContext = context.applicationContext 9 | val databaseFile = applicationContext.getDatabasePath("jethabit.db") 10 | return Room.databaseBuilder( 11 | context = applicationContext, 12 | name = databaseFile.absolutePath 13 | ).fallbackToDestructiveMigration(dropAllTables = true) 14 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/ic_settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/ui/models/DailyEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.ui.models 2 | 3 | sealed class DailyEvent { 4 | data object ReloadScreen : DailyEvent() 5 | data object PreviousDayClicked : DailyEvent() 6 | data object NextDayClicked : DailyEvent() 7 | data object CloseAction : DailyEvent() 8 | data object ComposeAction : DailyEvent() 9 | class HabitClicked(val habitId: String) : DailyEvent() 10 | class HabitCheckClicked(val habitId: String, val newValue: Boolean) : DailyEvent() 11 | class TrackerValueUpdated(val habitId: String, val value: Double) : DailyEvent() 12 | } -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/di/PlatformConfiguration.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | actual class PlatformConfiguration { 4 | actual val appName = "JetHabit" 5 | 6 | val appDataPath = when { 7 | System.getProperty("os.name").contains("Mac", true) -> "/Users/${System.getProperty("user.name")}/Library/Application Support/$appName" 8 | System.getProperty("os.name").contains("windows", true) -> "${System.getProperty("user.home")}\\AppData\\Local\\$appName" 9 | else -> throw IllegalStateException("This type OS not implemented") 10 | } 11 | actual val platform: Platform 12 | get() = Platform.Desktop 13 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/database/Database.kt: -------------------------------------------------------------------------------- 1 | package core.database 2 | 3 | import androidx.room.RoomDatabase 4 | import androidx.sqlite.driver.bundled.BundledSQLiteDriver 5 | import kotlinx.coroutines.Dispatchers 6 | import kotlinx.coroutines.IO 7 | 8 | fun getRoomDatabase( 9 | builder: RoomDatabase.Builder 10 | ): AppDatabase { 11 | return builder 12 | .fallbackToDestructiveMigrationOnDowngrade(dropAllTables = true) 13 | .fallbackToDestructiveMigration(dropAllTables = true) 14 | .setDriver(BundledSQLiteDriver()) 15 | .setQueryCoroutineContext(Dispatchers.IO) 16 | .build() 17 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/di/DetailModule.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.di 2 | 3 | import feature.detail.domain.DeleteHabitUseCase 4 | import feature.detail.domain.GetDetailInfoUseCase 5 | import feature.detail.domain.UpdateHabitUseCase 6 | import org.kodein.di.* 7 | 8 | val detailModule = DI.Module("detailModule") { 9 | bind() with provider { 10 | GetDetailInfoUseCase(instance()) 11 | } 12 | 13 | bind() with provider { 14 | DeleteHabitUseCase(instance()) 15 | } 16 | 17 | bind() with provider { 18 | UpdateHabitUseCase(instance()) 19 | } 20 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/habits/data/HabitDao.kt: -------------------------------------------------------------------------------- 1 | package feature.habits.data 2 | 3 | import androidx.room.* 4 | 5 | @Dao 6 | interface HabitDao { 7 | @Insert(onConflict = OnConflictStrategy.REPLACE) 8 | suspend fun insert(item: HabitEntity) 9 | 10 | @Query("SELECT * FROM HabitEntity") 11 | suspend fun getAll(): List 12 | 13 | @Query("SELECT * FROM HabitEntity WHERE id=:id") 14 | suspend fun getHabitWith(id: String): HabitEntity 15 | 16 | @Query("DELETE FROM HabitEntity") 17 | suspend fun clear() 18 | 19 | @Query("DELETE FROM HabitEntity WHERE id=:id") 20 | suspend fun deleteWith(id: String) 21 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/themes/components/JHDivider.kt: -------------------------------------------------------------------------------- 1 | package ui.themes.components 2 | 3 | import androidx.compose.foundation.layout.fillMaxWidth 4 | import androidx.compose.foundation.layout.height 5 | import androidx.compose.foundation.layout.padding 6 | import androidx.compose.material.Divider 7 | import androidx.compose.runtime.Composable 8 | import androidx.compose.ui.Modifier 9 | import androidx.compose.ui.unit.dp 10 | import ui.themes.JetHabitTheme 11 | 12 | @Composable 13 | fun JHDivider() = Divider(modifier = Modifier.padding(start = 16.dp).height(1.dp).fillMaxWidth(), 14 | thickness = 0.5.dp, color = JetHabitTheme.colors.controlColor.copy(alpha = 0.1f)) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/create/presentation/models/ComposeViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.create.presentation.models 2 | 3 | import feature.habits.data.HabitType 4 | import feature.habits.data.Measurement 5 | import kotlinx.datetime.LocalDate 6 | 7 | data class ComposeViewState( 8 | val habitTitle: String = "", 9 | val isGoodHabit: Boolean = true, 10 | val isSending: Boolean = false, 11 | val habitType: HabitType = HabitType.REGULAR, 12 | val measurement: Measurement = Measurement.KILOGRAMS, 13 | val startDate: LocalDate? = null, 14 | val endDate: LocalDate? = null, 15 | val showStartDatePicker: Boolean = false, 16 | val showEndDatePicker: Boolean = false 17 | ) -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/core/database/DatabaseBuilder.kt: -------------------------------------------------------------------------------- 1 | package core.database 2 | 3 | import androidx.room.Room 4 | import androidx.room.RoomDatabase 5 | import androidx.sqlite.driver.bundled.BundledSQLiteDriver 6 | import kotlinx.coroutines.Dispatchers 7 | import kotlinx.coroutines.IO 8 | import platform.Foundation.NSHomeDirectory 9 | 10 | fun getDatabaseBuilder(): RoomDatabase.Builder { 11 | val dbFilePath = NSHomeDirectory() + "/my_room.db" 12 | return Room.databaseBuilder( 13 | name = dbFilePath, 14 | factory = { AppDatabase::class.instantiateImpl() } 15 | ).setDriver(BundledSQLiteDriver()) 16 | .setQueryCoroutineContext(Dispatchers.IO) 17 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/database/dao/UserProfileDao.kt: -------------------------------------------------------------------------------- 1 | package core.database.dao 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy 6 | import androidx.room.Query 7 | import core.database.entity.UserProfile 8 | import kotlinx.coroutines.flow.Flow 9 | 10 | @Dao 11 | interface UserProfileDao { 12 | @Query("SELECT * FROM user_profile WHERE id = 1") 13 | fun getUserProfile(): Flow 14 | 15 | @Insert(onConflict = OnConflictStrategy.REPLACE) 16 | suspend fun insertOrUpdateProfile(profile: UserProfile) 17 | 18 | @Query("UPDATE user_profile SET avatarUri = :uri WHERE id = 1") 19 | suspend fun updateAvatar(uri: String?) 20 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/medication_calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/domain/UpdateTrackerValueUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.domain 2 | 3 | import feature.tracker.data.TrackerDao 4 | import feature.tracker.data.TrackerEntity 5 | import kotlinx.datetime.LocalDate 6 | import kotlinx.uuid.UUID 7 | import kotlinx.uuid.generateUUID 8 | 9 | class UpdateTrackerValueUseCase( 10 | private val trackerDao: TrackerDao 11 | ) { 12 | suspend fun execute(habitId: String, value: Double, date: LocalDate) { 13 | trackerDao.insert( 14 | TrackerEntity( 15 | id = UUID.generateUUID().toString(), 16 | habitId = habitId, 17 | timestamp = date.toString(), 18 | value = value 19 | ) 20 | ) 21 | } 22 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/utils/Weekdays.kt: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import androidx.compose.runtime.Composable 4 | import org.jetbrains.compose.resources.stringResource 5 | import tech.mobiledeveloper.jethabit.resources.Res 6 | import tech.mobiledeveloper.jethabit.resources.days_today 7 | import tech.mobiledeveloper.jethabit.resources.days_yesterday 8 | 9 | sealed class Weekday { 10 | data object Today : Weekday() 11 | data object Yesterday : Weekday() 12 | class Custom(val value: String) : Weekday() 13 | } 14 | 15 | @Composable 16 | fun Weekday.title(): String = when (this) { 17 | is Weekday.Custom -> value 18 | Weekday.Today -> stringResource(Res.string.days_today) 19 | Weekday.Yesterday -> stringResource(Res.string.days_yesterday) 20 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/tracker/domain/UpdateTrackerValueUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.tracker.domain 2 | 3 | import feature.tracker.data.TrackerDao 4 | import feature.tracker.data.TrackerEntity 5 | import kotlinx.datetime.LocalDate 6 | import kotlinx.uuid.UUID 7 | import kotlinx.uuid.generateUUID 8 | 9 | class UpdateTrackerValueUseCase( 10 | private val trackerDao: TrackerDao 11 | ) { 12 | suspend fun execute(habitId: String, value: Double, date: LocalDate) { 13 | trackerDao.insert( 14 | TrackerEntity( 15 | id = UUID.generateUUID().toString(), 16 | habitId = habitId, 17 | timestamp = date.toString(), 18 | value = value 19 | ) 20 | ) 21 | } 22 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/utils/Date + Title.kt: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import androidx.compose.ui.text.capitalize 4 | import androidx.compose.ui.text.intl.Locale 5 | import androidx.compose.ui.text.toLowerCase 6 | import kotlinx.datetime.* 7 | 8 | fun LocalDate.getTitle(): Weekday { 9 | val today = Clock.System.todayIn(TimeZone.currentSystemDefault()) 10 | val isToday = this.dayOfYear == today.dayOfYear && this.year == today.year 11 | val isYesterday = this.daysUntil(today) == 1 12 | 13 | if (isToday) return Weekday.Today 14 | if (isYesterday) return Weekday.Yesterday 15 | val monthName = month.name.substring(0, 3) 16 | .toLowerCase(Locale.current) 17 | .capitalize(Locale.current) 18 | 19 | return Weekday.Custom("$dayOfMonth $monthName") 20 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/health/track/presentation/models/TrackHabitViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.health.track.presentation.models 2 | 3 | import feature.habits.data.Measurement 4 | import org.jetbrains.compose.resources.StringResource 5 | 6 | data class TrackHabitViewState( 7 | val title: String = "", 8 | val measurement: Measurement = Measurement.KILOGRAMS, 9 | val newValue: Double? = null, 10 | val history: List = emptyList(), 11 | val isLoading: Boolean = false, 12 | val error: StringResource? = null, 13 | val selectedDate: String = "" // Will be initialized in ViewModel 14 | ) 15 | 16 | data class TrackerHistoryItem( 17 | val title: String, 18 | val value: Double, 19 | val date: String, 20 | val measurement: Measurement 21 | ) -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/utils/CalendarDays.kt: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import androidx.compose.runtime.Composable 4 | import org.jetbrains.compose.resources.stringResource 5 | import tech.mobiledeveloper.jethabit.resources.Res 6 | import tech.mobiledeveloper.jethabit.resources.days_today 7 | import tech.mobiledeveloper.jethabit.resources.not_selected 8 | 9 | sealed class CalendarDays { 10 | data object NotSelected : CalendarDays() 11 | data object Today : CalendarDays() 12 | class Custom(val value: String) : CalendarDays() 13 | } 14 | 15 | @Composable 16 | fun CalendarDays.title(): String = when (this) { 17 | CalendarDays.NotSelected -> stringResource(Res.string.not_selected) 18 | CalendarDays.Today -> stringResource(Res.string.days_today) 19 | is CalendarDays.Custom -> value 20 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/ui/components/PlatformImage.kt: -------------------------------------------------------------------------------- 1 | package ui.components 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.Modifier 5 | import androidx.compose.ui.layout.ContentScale 6 | import coil3.compose.AsyncImage 7 | import coil3.compose.LocalPlatformContext 8 | import coil3.request.ImageRequest 9 | 10 | @Composable 11 | fun PlatformImage( 12 | url: String, 13 | contentDescription: String?, 14 | modifier: Modifier = Modifier 15 | ) { 16 | val context = LocalPlatformContext.current 17 | 18 | AsyncImage( 19 | model = ImageRequest.Builder(context) 20 | .data(url) 21 | .build(), 22 | contentDescription = contentDescription, 23 | modifier = modifier, 24 | contentScale = ContentScale.Crop 25 | ) 26 | } -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /composeApp/src/androidMain/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/habits/data/Measurement.kt: -------------------------------------------------------------------------------- 1 | package feature.habits.data 2 | 3 | import org.jetbrains.compose.resources.StringResource 4 | import tech.mobiledeveloper.jethabit.resources.Res 5 | import tech.mobiledeveloper.jethabit.resources.tracker_measurement_cal 6 | import tech.mobiledeveloper.jethabit.resources.tracker_measurement_cm 7 | import tech.mobiledeveloper.jethabit.resources.tracker_measurement_g 8 | import tech.mobiledeveloper.jethabit.resources.tracker_measurement_kg 9 | import tech.mobiledeveloper.jethabit.resources.tracker_measurement_km 10 | 11 | enum class Measurement(val stringRes: StringResource) { 12 | KILOGRAMS(Res.string.tracker_measurement_kg), 13 | KILOMETERS(Res.string.tracker_measurement_km), 14 | GRAMS(Res.string.tracker_measurement_g), 15 | CALORIES(Res.string.tracker_measurement_cal), 16 | CENTIMETERS(Res.string.tracker_measurement_cm) 17 | } -------------------------------------------------------------------------------- /composeApp/src/androidTest/kotlin/tech/mobiledeveloper/jethabit/app/MainActivityTest.kt: -------------------------------------------------------------------------------- 1 | package tech.mobiledeveloper.jethabit.app 2 | 3 | import androidx.compose.ui.test.junit4.createAndroidComposeRule 4 | import androidx.compose.ui.test.assertIsDisplayed 5 | import androidx.compose.ui.test.onNodeWithText 6 | import androidx.test.ext.junit.runners.AndroidJUnit4 7 | import org.junit.Rule 8 | import org.junit.Test 9 | import org.junit.runner.RunWith 10 | 11 | @RunWith(AndroidJUnit4::class) 12 | class MainActivityTest { 13 | @get:Rule 14 | val composeTestRule = createAndroidComposeRule() 15 | 16 | @Test 17 | fun testAppLaunchesSuccessfully() { 18 | composeTestRule.waitForIdle() 19 | composeTestRule.onNodeWithText("Daily", useUnmergedTree = true).assertIsDisplayed() 20 | composeTestRule.onNodeWithText("Stats", useUnmergedTree = true).assertIsDisplayed() 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/presentation/models/DetailViewState.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.presentation.models 2 | 3 | import feature.habits.data.HabitType 4 | import utils.CalendarDays 5 | import kotlinx.datetime.LocalDate 6 | 7 | enum class DateSelectionState { 8 | None, Start, End 9 | } 10 | 11 | data class DetailViewState( 12 | val habitId: String, 13 | val itemTitle: String = "", 14 | val startDate: CalendarDays = CalendarDays.Today, 15 | val endDate: CalendarDays = CalendarDays.Today, 16 | val start: LocalDate? = null, 17 | val end: LocalDate? = null, 18 | val daysToCheck: List = emptyList(), 19 | val isGood: Boolean = true, 20 | val isDeleting: Boolean = false, 21 | val dateSelectionState: DateSelectionState = DateSelectionState.None, 22 | val type: HabitType = HabitType.REGULAR, 23 | val currentValue: Double? = null, 24 | val newValue: Double? = null 25 | ) -------------------------------------------------------------------------------- /composeApp/src/jvmMain/kotlin/core/platform/DesktopImagePicker.kt: -------------------------------------------------------------------------------- 1 | package core.platform 2 | 3 | import javax.swing.JFileChooser 4 | import javax.swing.filechooser.FileNameExtensionFilter 5 | import kotlinx.coroutines.Dispatchers 6 | import kotlinx.coroutines.withContext 7 | 8 | class DesktopImagePicker : ImagePicker { 9 | override suspend fun pickImage(): String? = withContext(Dispatchers.IO) { 10 | val fileChooser = JFileChooser().apply { 11 | fileFilter = FileNameExtensionFilter("Image files", "jpg", "jpeg", "png") 12 | } 13 | 14 | return@withContext when (fileChooser.showOpenDialog(null)) { 15 | JFileChooser.APPROVE_OPTION -> fileChooser.selectedFile.toURI().toString() 16 | else -> null 17 | } 18 | } 19 | 20 | override suspend fun takePhoto(): String? { 21 | // Desktop doesn't support taking photos directly 22 | return null 23 | } 24 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/add_name/MedicationAddNameViewModel.kt: -------------------------------------------------------------------------------- 1 | package screens.add_name 2 | 3 | import base.BaseViewModel 4 | import screens.add_name.models.MedicationAddNameAction 5 | import screens.add_name.models.MedicationAddNameEvent 6 | import screens.add_name.models.MedicationAddNameViewState 7 | 8 | class MedicationAddNameViewModel: BaseViewModel( 9 | initialState = MedicationAddNameViewState() 10 | ) { 11 | 12 | override fun obtainEvent(viewEvent: MedicationAddNameEvent) { 13 | when(viewEvent) { 14 | is MedicationAddNameEvent.ChangeName -> { 15 | viewState = viewState.copy(name = viewEvent.value, isNext = viewEvent.value.isNotBlank()) 16 | } 17 | MedicationAddNameEvent.NextClicked -> viewAction = MedicationAddNameAction.NextClicked 18 | MedicationAddNameEvent.ActionInvoked -> viewAction = null 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-appleMain.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-nativeMain.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/core/database/AppDatabase.kt: -------------------------------------------------------------------------------- 1 | package core.database 2 | 3 | import androidx.room.Database 4 | import androidx.room.RoomDatabase 5 | import core.database.dao.UserProfileDao 6 | import core.database.entity.UserProfile 7 | import feature.daily.data.DailyDao 8 | import feature.daily.data.DailyEntity 9 | import feature.habits.data.HabitDao 10 | import feature.habits.data.HabitEntity 11 | import feature.tracker.data.TrackerDao 12 | import feature.tracker.data.TrackerEntity 13 | 14 | @Database( 15 | entities = [ 16 | HabitEntity::class, 17 | DailyEntity::class, 18 | TrackerEntity::class, 19 | UserProfile::class 20 | ], 21 | version = 7 22 | ) 23 | abstract class AppDatabase: RoomDatabase() { 24 | abstract fun getHabitDao(): HabitDao 25 | abstract fun getDailyDao(): DailyDao 26 | abstract fun getTrackerDao(): TrackerDao 27 | abstract fun getUserProfileDao(): UserProfileDao 28 | } 29 | 30 | internal const val dbFileName = "jethabit.db" -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/DatabaseModule.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import core.database.AppDatabase 4 | import core.database.dao.UserProfileDao 5 | import feature.daily.data.DailyDao 6 | import feature.habits.data.HabitDao 7 | import feature.tracker.data.TrackerDao 8 | import org.kodein.di.DI 9 | import org.kodein.di.bind 10 | import org.kodein.di.instance 11 | import org.kodein.di.singleton 12 | 13 | fun databaseModule() = DI.Module("database") { 14 | bind() with singleton { 15 | instance("appDatabase") as AppDatabase 16 | } 17 | 18 | bind() with singleton { 19 | instance().getHabitDao() 20 | } 21 | 22 | bind() with singleton { 23 | instance().getTrackerDao() 24 | } 25 | 26 | bind() with singleton { 27 | instance().getDailyDao() 28 | } 29 | 30 | bind() with singleton { 31 | instance().getUserProfileDao() 32 | } 33 | } -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 17 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/composeResources/drawable/medication_add.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/di/DailyModule.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.di 2 | 3 | import core.database.AppDatabase 4 | import data.features.daily.DailyRepository 5 | import di.Inject.instance 6 | import feature.daily.data.DailyDao 7 | import feature.daily.domain.GetHabitsForTodayUseCase 8 | import feature.daily.domain.SwitchHabitUseCase 9 | import org.kodein.di.DI 10 | import org.kodein.di.bind 11 | import org.kodein.di.provider 12 | import org.kodein.di.singleton 13 | 14 | val dailyModule = DI.Module("DailyModule") { 15 | bind() with singleton { 16 | val appDatabase = instance() 17 | appDatabase.getDailyDao() 18 | } 19 | 20 | bind() with provider { 21 | GetHabitsForTodayUseCase(instance(), instance(), instance()) 22 | } 23 | 24 | bind() with provider { 25 | SwitchHabitUseCase(instance(), instance()) 26 | } 27 | 28 | bind() with provider { 29 | DailyRepository() 30 | } 31 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/create/presentation/models/ComposeEvent.kt: -------------------------------------------------------------------------------- 1 | package feature.create.presentation.models 2 | 3 | import feature.habits.data.HabitType 4 | import feature.habits.data.Measurement 5 | import kotlinx.datetime.LocalDate 6 | 7 | sealed interface ComposeEvent { 8 | data class TitleChanged(val title: String) : ComposeEvent 9 | data class CheckboxClicked(val isChecked: Boolean) : ComposeEvent 10 | data class TypeSelected(val type: HabitType) : ComposeEvent 11 | data class MeasurementSelected(val measurement: Measurement) : ComposeEvent 12 | data class StartDateSelected(val date: LocalDate) : ComposeEvent 13 | data class EndDateSelected(val date: LocalDate) : ComposeEvent 14 | data object ShowStartDatePicker : ComposeEvent 15 | data object ShowEndDatePicker : ComposeEvent 16 | data object HideStartDatePicker : ComposeEvent 17 | data object HideEndDatePicker : ComposeEvent 18 | data object SaveClicked : ComposeEvent 19 | data object ClearClicked : ComposeEvent 20 | data object CloseClicked : ComposeEvent 21 | } -------------------------------------------------------------------------------- /composeApp/src/androidMain/kotlin/main.android.kt: -------------------------------------------------------------------------------- 1 | import androidx.activity.ComponentActivity 2 | import androidx.compose.runtime.Composable 3 | import androidx.compose.runtime.CompositionLocalProvider 4 | import androidx.compose.runtime.collectAsState 5 | import androidx.compose.runtime.remember 6 | import data.features.settings.LocalSettingsEventBus 7 | import data.features.settings.SettingsEventBus 8 | import di.LocalPlatform 9 | import di.Platform 10 | import themes.MainTheme 11 | 12 | @Composable 13 | fun MainView(activity: ComponentActivity) { 14 | val settingsEventBus = remember { SettingsEventBus() } 15 | val currentSettings = settingsEventBus.currentSettings.collectAsState().value 16 | 17 | MainTheme( 18 | style = currentSettings.style, 19 | darkTheme = currentSettings.isDarkMode, 20 | corners = currentSettings.cornerStyle, 21 | textSize = currentSettings.textSize, 22 | paddingSize = currentSettings.paddingSize 23 | ) { 24 | CompositionLocalProvider( 25 | LocalPlatform provides Platform.Android, 26 | LocalSettingsEventBus provides settingsEventBus 27 | ) { 28 | 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/domain/SwtchHabitUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.domain 2 | 3 | import feature.daily.data.DailyDao 4 | import feature.daily.data.DailyEntity 5 | import feature.habits.data.HabitDao 6 | import kotlinx.datetime.LocalDate 7 | import kotlinx.uuid.UUID 8 | import kotlinx.uuid.generateUUID 9 | 10 | class SwitchHabitUseCase( 11 | private val dailyDao: DailyDao, 12 | private val habitDao: HabitDao 13 | ) { 14 | 15 | suspend fun execute(checked: Boolean, habitId: String, date: LocalDate) { 16 | val habit = habitDao.getAll().first { it.id == habitId } 17 | 18 | // Always delete existing records first to ensure clean state 19 | dailyDao.deleteAllHabitsForToday(habitId, date.toString()) 20 | 21 | // Create new record if checked, regardless of habit type 22 | if (checked) { 23 | dailyDao.insert( 24 | DailyEntity( 25 | id = UUID.generateUUID().toString(), 26 | habitId = habitId, 27 | timestamp = date.toString(), 28 | isChecked = true 29 | ) 30 | ) 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-iosMain.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib 5 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-iosTest.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib 5 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-appleTest.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib 5 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib -------------------------------------------------------------------------------- /.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/.composeApp-nativeTest.cinteropLibraries: -------------------------------------------------------------------------------- 1 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-bundled-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-bundled-cinterop-androidXBundledSqlite-0MuvrA.klib 2 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.kotlinx-atomicfu-0.23.2-nativeMain-cinterop/org.jetbrains.kotlinx_atomicfu-cinterop-interop-yBS35w.klib 3 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/org.jetbrains.compose.ui-ui-uikit-1.6.10-uikitMain-cinterop/org.jetbrains.compose.ui_ui-uikit-cinterop-utils-DC3XFw.klib 4 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/androidx.sqlite-sqlite-framework-2.5.0-alpha03-nativeMain-cinterop/androidx.sqlite_sqlite-framework-cinterop-sqlite3-GE3pgw.klib 5 | /Users/neuradev/Documents/Development/JetHabit/.kotlin/metadata/kotlinTransformedCInteropMetadataLibraries/io.ktor-ktor-utils-2.3.8-iosMain-cinterop/io.ktor_ktor-utils-cinterop-threadUtils-kaBnRw.klib -------------------------------------------------------------------------------- /AGENTS.md: -------------------------------------------------------------------------------- 1 | # AGENTS Instructions 2 | 3 | ## Project architecture 4 | - This repository contains a Compose Multiplatform project. The core module is `composeApp`. 5 | - Platform specific sources live under `composeApp/src/Main/` (e.g. `androidMain`, `iosMain`). 6 | - The `iosApp` directory contains the Xcode project for iOS. The `kotlin-js-store` directory only holds web dependencies. 7 | - Keep changes scoped to the relevant module or folder. Avoid touching unrelated modules when fixing or adding functionality. 8 | 9 | ## Kotlin development rules 10 | - Use **four spaces** for indentation. 11 | - Follow Kotlin naming conventions: `PascalCase` for classes and objects, `camelCase` for functions and variables. 12 | - Provide explicit return types on public functions. 13 | - Document public classes and functions using KDoc comments. 14 | - Prefer immutable data (`val` and data classes) when possible. 15 | - Try to keep line length under **120 characters**. 16 | - Delete unused imports if they exist. 17 | 18 | ## Working with the project 19 | - Before committing code, run `./gradlew build` to ensure the project compiles. 20 | - Only update `iosApp` or `kotlin-js-store` when a change explicitly targets these folders. 21 | -------------------------------------------------------------------------------- /composeApp/src/jsMain/resources/index.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | compose multiplatform web demo 22 | 23 | 24 | 25 | 26 |

compose multiplatform web demo

27 |
28 | 29 |
30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /composeApp/src/iosMain/kotlin/main.ios.kt: -------------------------------------------------------------------------------- 1 | import androidx.compose.runtime.collectAsState 2 | import androidx.compose.runtime.remember 3 | import androidx.compose.ui.window.ComposeUIViewController 4 | import data.features.settings.SettingsEventBus 5 | import di.PlatformConfiguration 6 | import di.PlatformSDK 7 | import platform.UIKit.UIViewController 8 | import themes.MainTheme 9 | import coil3.PlatformContext 10 | import coil3.SingletonPlatformContext 11 | import core.di.initializeCoil 12 | 13 | fun MainViewController(): UIViewController = 14 | ComposeUIViewController { 15 | PlatformSDK.init(PlatformConfiguration()) 16 | val settingsEventBus = remember { SettingsEventBus() } 17 | val currentSettings = settingsEventBus.currentSettings.collectAsState().value 18 | 19 | MainTheme( 20 | style = currentSettings.style, 21 | darkTheme = currentSettings.isDarkMode, 22 | corners = currentSettings.cornerStyle, 23 | textSize = currentSettings.textSize, 24 | paddingSize = currentSettings.paddingSize 25 | ) { 26 | App() 27 | } 28 | } 29 | 30 | fun initializeIOSApp() { 31 | initializeCoil(SingletonPlatformContext) 32 | } 33 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/detail/domain/UpdateHabitUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.detail.domain 2 | 3 | import feature.habits.data.HabitDao 4 | import feature.habits.data.HabitEntity 5 | import kotlinx.datetime.LocalDate 6 | 7 | class UpdateHabitUseCase( 8 | private val habitDao: HabitDao 9 | ) { 10 | 11 | suspend fun execute( 12 | habitId: String, 13 | habitTitle: String, 14 | startDate: LocalDate?, 15 | endDate: LocalDate?, 16 | daysToCheck: String, 17 | isGood: Boolean 18 | ) { 19 | if (startDate == null || endDate == null) throw NullPointerException("Date must not be null") 20 | if (startDate >= endDate) throw IllegalStateException("Start date must be before end date") 21 | if (habitTitle.isEmpty()) throw NullPointerException("Habit title must not be empty") 22 | 23 | habitDao.insert( 24 | HabitEntity( 25 | id = habitId, 26 | title = habitTitle, 27 | startDate = startDate.toString(), 28 | endDate = endDate.toString(), 29 | daysToCheck = daysToCheck, 30 | isGood = isGood 31 | ) 32 | ) 33 | } 34 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/settings/presentation/SettingsViewModel.kt: -------------------------------------------------------------------------------- 1 | package feature.settings.presentation 2 | 3 | import androidx.lifecycle.viewModelScope 4 | import base.BaseViewModel 5 | import di.Inject 6 | import feature.settings.domain.ClearAllHabitsUseCase 7 | import feature.settings.presentation.models.SettingsAction 8 | import feature.settings.presentation.models.SettingsEvent 9 | import feature.settings.presentation.models.SettingsViewState 10 | import kotlinx.coroutines.Dispatchers 11 | import kotlinx.coroutines.launch 12 | 13 | class SettingsViewModel: BaseViewModel( 14 | initialState = SettingsViewState() 15 | ) { 16 | 17 | private val clearAllHabitsUseCase = Inject.instance() 18 | 19 | override fun obtainEvent(viewEvent: SettingsEvent) { 20 | when (viewEvent) { 21 | SettingsEvent.ClearAllQueries -> clearAllData() 22 | SettingsEvent.BackClicked -> viewAction = SettingsAction.NavigateBack 23 | } 24 | } 25 | 26 | private fun clearAllData() { 27 | viewModelScope.launch(Dispatchers.Default) { 28 | clearAllHabitsUseCase.execute() 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/ui/views/DailyViewLoading.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.ui.views 2 | 3 | import PreviewApp 4 | import androidx.compose.foundation.background 5 | import androidx.compose.foundation.layout.Box 6 | import androidx.compose.foundation.layout.fillMaxSize 7 | import androidx.compose.material.CircularProgressIndicator 8 | import androidx.compose.runtime.Composable 9 | import androidx.compose.ui.Alignment 10 | import androidx.compose.ui.Modifier 11 | import feature.daily.ui.DailyView 12 | import feature.daily.ui.models.DailyViewState 13 | import org.jetbrains.compose.ui.tooling.preview.Preview 14 | import ui.themes.JetHabitTheme 15 | 16 | @Composable 17 | internal fun DailyViewLoading() { 18 | Box( 19 | modifier = Modifier.fillMaxSize() 20 | .background(JetHabitTheme.colors.primaryBackground) 21 | ) { 22 | CircularProgressIndicator( 23 | modifier = Modifier.align(Alignment.Center), 24 | color = JetHabitTheme.colors.tintColor 25 | ) 26 | } 27 | } 28 | 29 | @Preview 30 | @Composable 31 | fun DailyViewLoading_Preview() { 32 | PreviewApp { 33 | DailyView( 34 | viewState = DailyViewState() 35 | ) { 36 | 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/di/PlatformSDK.kt: -------------------------------------------------------------------------------- 1 | package di 2 | 3 | import org.kodein.di.DI 4 | import org.kodein.di.DirectDI 5 | import org.kodein.di.bind 6 | import org.kodein.di.direct 7 | import org.kodein.di.instance 8 | import org.kodein.di.singleton 9 | 10 | object PlatformSDK { 11 | private var _di: DirectDI? = null 12 | val di: DirectDI 13 | get() = requireNotNull(_di) 14 | 15 | fun init( 16 | configuration: PlatformConfiguration, 17 | appDatabase: Any? = null 18 | ) { 19 | val configModule = DI.Module("config") { 20 | bind() with singleton { configuration } 21 | if (appDatabase != null) { 22 | bind("appDatabase") with singleton { appDatabase } 23 | } 24 | } 25 | 26 | val platformModule = DI.Module("platform") { 27 | provideImagePicker() 28 | } 29 | 30 | _di = DI { 31 | importAll( 32 | configModule, 33 | platformModule, 34 | databaseModule(), 35 | featureModule() 36 | ) 37 | }.direct 38 | } 39 | 40 | inline fun instance(): T { 41 | return di.instance() 42 | } 43 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Jet Habit 2 | 3 | This is Demo repository for Jetpack Compose features demonstration 4 | Feel free to make issues, forks and pull requests 5 | 6 | Adopted to full Compose Multiplatform and Kotlin Multiplatform 7 | **WARNING!** Compose Multiplatform doesn't work for Web until Compose Multiplatform bugs fixed 8 | 9 | ### Tech Stack: 10 | - Navigation. Odyssey 11 | - Presentation: KViewModel 12 | - Database: Room 13 | - Resources: LibRes 14 | - DI: Kodein 15 | - UI: Compose Multiplatform 16 | 17 | ### Supported Platforms 18 | Android | iOS | Web | Windows | MacOS | Linux (In Progress) 19 | 20 | ### iOS Run 21 | Just launch xcode workspace as usual 22 | 23 | ### Continuous Integration 24 | CI is configured with GitHub Actions. Every pull request to the `main` 25 | branch triggers builds for Android, JVM, iOS and JavaScript targets to 26 | ensure the project compiles and runs without errors on each platform. 27 | 28 | ### Youtube support 29 | 30 | All this code has video support on YouTube (only in Russian) 31 | 32 | * [UI. Basics](https://youtu.be/CAOM-Kq9MKY) 33 | * [Navigation. Basics](https://youtu.be/cX7RVGj19iU) 34 | * [State. Basics](https://youtu.be/ND-OA_9L1vo) 35 | * [Side Effects. Basics](https://youtu.be/NxwkaPdLQPk) 36 | * [ViewModel. Basics](https://youtu.be/o4EQnWfegoE) 37 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/daily/data/DailyDao.kt: -------------------------------------------------------------------------------- 1 | package feature.daily.data 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy.Companion.REPLACE 6 | import androidx.room.Query 7 | import androidx.room.Update 8 | 9 | @Dao 10 | interface DailyDao { 11 | @Insert(onConflict = REPLACE) 12 | suspend fun insert(item: DailyEntity) 13 | 14 | @Query("SELECT * FROM DailyEntity") 15 | suspend fun getAll(): List 16 | 17 | @Query("SELECT * FROM DailyEntity WHERE id=:id") 18 | suspend fun getDailyRecordWith(id: Long): DailyEntity 19 | 20 | @Query("DELETE FROM DailyEntity WHERE habitId=:habitId AND timestamp=:timestamp") 21 | suspend fun deleteAllHabitsForToday(habitId: String, timestamp: String) 22 | 23 | @Update 24 | suspend fun update(item: DailyEntity) 25 | 26 | @Query("DELETE FROM DailyEntity") 27 | suspend fun clear() 28 | 29 | @Query("SELECT EXISTS(SELECT 1 FROM DailyEntity WHERE habitId = :habitId AND timestamp = :date AND isChecked = 1)") 30 | suspend fun isHabitChecked(habitId: String, date: String): Boolean 31 | 32 | @Query("SELECT EXISTS(SELECT 1 FROM DailyEntity WHERE habitId = :habitId AND timestamp = :date)") 33 | suspend fun wasDateEverChecked(habitId: String, date: String): Boolean 34 | } 35 | -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/edit/ui/EditProfileScreen.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.edit.ui 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.runtime.LaunchedEffect 5 | import androidx.compose.runtime.collectAsState 6 | import androidx.compose.runtime.getValue 7 | import androidx.lifecycle.viewmodel.compose.viewModel 8 | import androidx.navigation.NavController 9 | import di.Inject 10 | import feature.profile.edit.presentation.EditProfileViewModel 11 | import feature.profile.edit.ui.models.EditProfileAction 12 | import feature.profile.edit.ui.models.EditProfileEvent 13 | 14 | @Composable 15 | internal fun EditProfileScreen( 16 | navController: NavController, 17 | viewModel: EditProfileViewModel = viewModel { EditProfileViewModel(Inject.instance()) } 18 | ) { 19 | val viewState by viewModel.viewStates().collectAsState() 20 | val viewAction by viewModel.viewActions().collectAsState(null) 21 | 22 | EditProfileView(viewState = viewState) { 23 | viewModel.obtainEvent(it) 24 | } 25 | 26 | when (viewAction) { 27 | EditProfileAction.NavigateBack -> { 28 | navController.popBackStack() 29 | viewModel.clearAction() 30 | } 31 | null -> {} 32 | } 33 | 34 | LaunchedEffect(Unit) { 35 | viewModel.obtainEvent(EditProfileEvent.LoadProfile) 36 | } 37 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/tracker/data/TrackerDao.kt: -------------------------------------------------------------------------------- 1 | package feature.tracker.data 2 | 3 | import androidx.room.* 4 | 5 | @Dao 6 | interface TrackerDao { 7 | @Insert(onConflict = OnConflictStrategy.REPLACE) 8 | suspend fun insert(entity: TrackerEntity) 9 | 10 | @Query("SELECT * FROM TrackerEntity WHERE habitId = :habitId ORDER BY timestamp DESC LIMIT 1") 11 | suspend fun getLatestValueFor(habitId: String): TrackerEntity? 12 | 13 | @Query("SELECT * FROM TrackerEntity WHERE habitId = :habitId AND timestamp = :date") 14 | suspend fun getValueForDate(habitId: String, date: String): TrackerEntity? 15 | 16 | @Query("SELECT * FROM TrackerEntity WHERE habitId = :habitId ORDER BY timestamp DESC") 17 | suspend fun getAllValuesFor(habitId: String): List 18 | 19 | @Query("DELETE FROM TrackerEntity WHERE habitId = :habitId") 20 | suspend fun deleteAllValuesFor(habitId: String) 21 | 22 | @Query("DELETE FROM TrackerEntity") 23 | suspend fun clear() 24 | 25 | @Query("SELECT * FROM TrackerEntity") 26 | suspend fun getAll(): List 27 | 28 | @Query("SELECT * FROM TrackerEntity WHERE habitId = :habitId ORDER BY timestamp DESC") 29 | suspend fun getAllForHabit(habitId: String): List 30 | 31 | @Query("DELETE FROM TrackerEntity WHERE id = :id") 32 | suspend fun delete(id: String) 33 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/navigation/AppScreens.kt: -------------------------------------------------------------------------------- 1 | package navigation 2 | 3 | import androidx.compose.material.icons.Icons 4 | import androidx.compose.material.icons.filled.Favorite 5 | import androidx.compose.material.icons.filled.Home 6 | import androidx.compose.material.icons.filled.Menu 7 | import androidx.compose.material.icons.filled.Person 8 | import androidx.compose.material.icons.filled.Phone 9 | import androidx.compose.material.icons.outlined.Check 10 | import androidx.compose.ui.graphics.vector.ImageVector 11 | import org.jetbrains.compose.resources.StringResource 12 | import tech.mobiledeveloper.jethabit.resources.Res 13 | import tech.mobiledeveloper.jethabit.resources.health_tab 14 | import tech.mobiledeveloper.jethabit.resources.title_daily 15 | import tech.mobiledeveloper.jethabit.resources.title_profile 16 | import tech.mobiledeveloper.jethabit.resources.title_statistics 17 | import tech.mobiledeveloper.jethabit.resources.chat_title 18 | 19 | enum class AppScreens( 20 | val title: String, 21 | val icon: ImageVector, 22 | val titleRes: StringResource 23 | ) { 24 | Daily("daily", Icons.Default.Home, Res.string.title_daily), 25 | Health("health", Icons.Default.Favorite, Res.string.health_tab), 26 | Statistics("statistics", Icons.Outlined.Check, Res.string.title_statistics), 27 | Chat("chat", Icons.Default.Phone, Res.string.chat_title), 28 | Profile("profile", Icons.Default.Person, Res.string.title_profile) 29 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/statistics/ui/views/StatisticsViewNoItems.kt: -------------------------------------------------------------------------------- 1 | package feature.statistics.ui.views 2 | 3 | import androidx.compose.foundation.layout.* 4 | import androidx.compose.material.Text 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.ui.Alignment 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.text.style.TextAlign 9 | import androidx.compose.ui.unit.dp 10 | import org.jetbrains.compose.resources.stringResource 11 | import tech.mobiledeveloper.jethabit.resources.Res 12 | import tech.mobiledeveloper.jethabit.resources.title_statistics 13 | import ui.themes.JetHabitTheme 14 | 15 | @Composable 16 | internal fun StatisticsViewNoItems() { 17 | Column( 18 | modifier = Modifier.fillMaxSize(), 19 | horizontalAlignment = Alignment.CenterHorizontally, 20 | verticalArrangement = Arrangement.Center 21 | ) { 22 | Text( 23 | text = stringResource(Res.string.title_statistics), 24 | style = JetHabitTheme.typography.heading, 25 | color = JetHabitTheme.colors.primaryText 26 | ) 27 | 28 | Spacer(modifier = Modifier.height(8.dp)) 29 | 30 | Text( 31 | text = "Track your habits to see statistics", 32 | style = JetHabitTheme.typography.body, 33 | color = JetHabitTheme.colors.secondaryText, 34 | textAlign = TextAlign.Center 35 | ) 36 | } 37 | } -------------------------------------------------------------------------------- /composeApp/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Keep Kotlin Serialization 2 | -keepattributes *Annotation*, InnerClasses 3 | -dontnote kotlinx.serialization.AnnotationsKt 4 | 5 | -keepclassmembers class kotlinx.serialization.json.** { 6 | *** Companion; 7 | } 8 | -keepclasseswithmembers class kotlinx.serialization.json.** { 9 | kotlinx.serialization.KSerializer serializer(...); 10 | } 11 | 12 | # Keep Room 13 | -keep class * extends androidx.room.RoomDatabase 14 | -keep @androidx.room.Entity class * 15 | -dontwarn androidx.room.paging.** 16 | 17 | # Keep Compose 18 | -keep class androidx.compose.** { *; } 19 | -dontwarn androidx.compose.** 20 | 21 | # Keep Coroutines 22 | -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} 23 | -keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} 24 | 25 | # Keep Kodein 26 | -keep class org.kodein.** { *; } 27 | -keep @org.kodein.di.DI$Tag class * 28 | 29 | # General Android rules 30 | -keepclassmembers class * implements android.os.Parcelable { 31 | public static final android.os.Parcelable$Creator CREATOR; 32 | } 33 | 34 | # Keep your app's models and data classes 35 | -keep class tech.mobiledeveloper.jethabit.** { *; } 36 | 37 | # Keep source file names for better crash reports 38 | -keepattributes SourceFile,LineNumberTable 39 | 40 | # Remove debug logs in release 41 | -assumenosideeffects class android.util.Log { 42 | public static *** d(...); 43 | public static *** v(...); 44 | public static *** i(...); 45 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/profile/start/ui/views/UserHeader.kt: -------------------------------------------------------------------------------- 1 | package feature.profile.start.ui.views 2 | 3 | import androidx.compose.foundation.background 4 | import androidx.compose.foundation.layout.* 5 | import androidx.compose.material.* 6 | import androidx.compose.runtime.Composable 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.draw.clip 9 | import androidx.compose.foundation.shape.RoundedCornerShape 10 | import androidx.compose.ui.unit.dp 11 | import feature.profile.start.ui.models.ProfileViewState 12 | import ui.themes.JetHabitTheme 13 | 14 | @Composable 15 | internal fun UserHeader(viewState: ProfileViewState) { 16 | Column { 17 | Box( 18 | modifier = Modifier.padding(16.dp) 19 | .size(128.dp) 20 | .clip(RoundedCornerShape(64.dp)) 21 | .background(JetHabitTheme.colors.secondaryBackground) 22 | ) 23 | 24 | Text( 25 | modifier = Modifier.padding(start = 16.dp, top = 4.dp), 26 | text = viewState.name.ifBlank { "Add username" }, 27 | style = JetHabitTheme.typography.heading, 28 | color = JetHabitTheme.colors.primaryText 29 | ) 30 | Text( 31 | modifier = Modifier.padding(start = 16.dp, bottom = 16.dp, top = 4.dp), 32 | text = viewState.email.ifBlank { "Add email" }, 33 | style = JetHabitTheme.typography.body, 34 | color = JetHabitTheme.colors.primaryText 35 | ) 36 | } 37 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/screens/create/CreateHabitFlow.kt: -------------------------------------------------------------------------------- 1 | package screens.create 2 | 3 | import androidx.compose.foundation.ExperimentalFoundationApi 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.runtime.getValue 6 | import androidx.compose.ui.ExperimentalComposeUiApi 7 | import androidx.navigation.NavGraphBuilder 8 | import androidx.navigation.compose.NavHost 9 | import androidx.navigation.compose.composable 10 | import androidx.navigation.compose.currentBackStackEntryAsState 11 | import androidx.navigation.compose.rememberNavController 12 | import feature.create.ui.ComposeScreen 13 | import screens.add_name.MedicationAddName 14 | 15 | enum class CreateFlowScreens(val title: String) { 16 | Start("start"), AddName("add_name"), AddDate("add_date") 17 | } 18 | 19 | @Composable 20 | fun CreateHabitFlow() { 21 | val navigationController = rememberNavController() 22 | val backStackEntry by navigationController.currentBackStackEntryAsState() 23 | 24 | NavHost( 25 | navController = navigationController, 26 | startDestination = CreateFlowScreens.Start.title 27 | ) { 28 | createHabitFlow() 29 | } 30 | } 31 | 32 | @OptIn(ExperimentalComposeUiApi::class, ExperimentalFoundationApi::class) 33 | fun NavGraphBuilder.createHabitFlow() { 34 | composable(route = CreateFlowScreens.Start.title) { 35 | ComposeScreen() 36 | } 37 | 38 | composable(route = CreateFlowScreens.AddName.title) { 39 | MedicationAddName() 40 | } 41 | } -------------------------------------------------------------------------------- /composeApp/src/commonMain/kotlin/feature/habits/domain/CreateHabitUseCase.kt: -------------------------------------------------------------------------------- 1 | package feature.habits.domain 2 | 3 | import feature.habits.data.HabitDao 4 | import feature.habits.data.HabitEntity 5 | import feature.habits.data.HabitType 6 | import feature.habits.data.Measurement 7 | import kotlinx.datetime.* 8 | import java.util.UUID 9 | 10 | class CreateHabitUseCase( 11 | private val habitDao: HabitDao 12 | ) { 13 | suspend fun execute( 14 | title: String, 15 | isGood: Boolean, 16 | type: HabitType, 17 | measurement: Measurement, 18 | startDate: String = "", 19 | endDate: String = "" 20 | ) { 21 | // Set default dates if not provided 22 | val timeZone = TimeZone.currentSystemDefault() 23 | val today = Clock.System.now().toLocalDateTime(timeZone).date 24 | val defaultEndDate = today.plus(30, DateTimeUnit.DAY) 25 | 26 | val finalStartDate = if (startDate.isBlank()) today.toString() else startDate 27 | val finalEndDate = if (endDate.isBlank()) defaultEndDate.toString() else endDate 28 | 29 | val habitEntity = HabitEntity( 30 | id = UUID.randomUUID().toString(), 31 | title = title, 32 | isGood = isGood, 33 | startDate = finalStartDate, 34 | endDate = finalEndDate, 35 | daysToCheck = "[0,1,2,3,4,5,6]", 36 | type = type, 37 | measurement = measurement 38 | ) 39 | 40 | habitDao.insert(habitEntity) 41 | } 42 | } --------------------------------------------------------------------------------