├── 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 |
5 |
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 |
7 |
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 |
--------------------------------------------------------------------------------
/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 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
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 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
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 | }
--------------------------------------------------------------------------------