diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7ac43663..e522106a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,6 +13,7 @@
+
diff --git a/build.gradle b/build.gradle
index 92a65520..1d23c551 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,6 +7,7 @@ buildscript {
room_version = "2.3.0"
navigation_version = '2.3.5'
ext.hilt_version = '2.40'
+ compose_version = '1.0.1'
}
repositories {
diff --git a/keypasscompose/.gitignore b/keypasscompose/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/keypasscompose/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/keypasscompose/build.gradle b/keypasscompose/build.gradle
new file mode 100644
index 00000000..553e5833
--- /dev/null
+++ b/keypasscompose/build.gradle
@@ -0,0 +1,65 @@
+plugins {
+ id 'com.android.application'
+ id 'kotlin-android'
+}
+
+android {
+ compileSdk 31
+
+ defaultConfig {
+ applicationId "com.yogeshpaliyal.keypasscompose"
+ minSdk 21
+ targetSdk 31
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ vectorDrawables {
+ useSupportLibrary true
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ useIR = true
+ }
+ buildFeatures {
+ compose true
+ }
+ composeOptions {
+ kotlinCompilerExtensionVersion compose_version
+ kotlinCompilerVersion '1.5.21'
+ }
+ packagingOptions {
+ resources {
+ excludes += '/META-INF/{AL2.0,LGPL2.1}'
+ }
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.core:core-ktx:1.7.0'
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation "androidx.compose.ui:ui:$compose_version"
+ implementation "androidx.compose.material:material:$compose_version"
+ implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'
+ implementation 'androidx.activity:activity-compose:1.4.0'
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
+ debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
+}
\ No newline at end of file
diff --git a/keypasscompose/proguard-rules.pro b/keypasscompose/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/keypasscompose/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/keypasscompose/src/androidTest/java/com/yogeshpaliyal/keypasscompose/ExampleInstrumentedTest.kt b/keypasscompose/src/androidTest/java/com/yogeshpaliyal/keypasscompose/ExampleInstrumentedTest.kt
new file mode 100644
index 00000000..dad7e96e
--- /dev/null
+++ b/keypasscompose/src/androidTest/java/com/yogeshpaliyal/keypasscompose/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.yogeshpaliyal.keypasscompose
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.yogeshpaliyal.keypasscompose", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/keypasscompose/src/main/AndroidManifest.xml b/keypasscompose/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..be22dea9
--- /dev/null
+++ b/keypasscompose/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/MainActivity.kt b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/MainActivity.kt
new file mode 100644
index 00000000..3122da67
--- /dev/null
+++ b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/MainActivity.kt
@@ -0,0 +1,38 @@
+package com.yogeshpaliyal.keypasscompose
+
+import android.os.Bundle
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.tooling.preview.Preview
+import com.yogeshpaliyal.keypasscompose.ui.theme.KeyPassTheme
+
+class MainActivity : ComponentActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContent {
+ KeyPassTheme {
+ // A surface container using the 'background' color from the theme
+ Surface(color = MaterialTheme.colors.background) {
+ Greeting("Android")
+ }
+ }
+ }
+ }
+}
+
+@Composable
+fun Greeting(name: String) {
+ Text(text = "Hello $name!")
+}
+
+@Preview(showBackground = true)
+@Composable
+fun DefaultPreview() {
+ KeyPassTheme {
+ Greeting("Android")
+ }
+}
\ No newline at end of file
diff --git a/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Color.kt b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Color.kt
new file mode 100644
index 00000000..f4855daa
--- /dev/null
+++ b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Color.kt
@@ -0,0 +1,8 @@
+package com.yogeshpaliyal.keypasscompose.ui.theme
+
+import androidx.compose.ui.graphics.Color
+
+val Purple200 = Color(0xFFBB86FC)
+val Purple500 = Color(0xFF6200EE)
+val Purple700 = Color(0xFF3700B3)
+val Teal200 = Color(0xFF03DAC5)
\ No newline at end of file
diff --git a/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Shape.kt b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Shape.kt
new file mode 100644
index 00000000..765b1f8e
--- /dev/null
+++ b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Shape.kt
@@ -0,0 +1,11 @@
+package com.yogeshpaliyal.keypasscompose.ui.theme
+
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.Shapes
+import androidx.compose.ui.unit.dp
+
+val Shapes = Shapes(
+ small = RoundedCornerShape(4.dp),
+ medium = RoundedCornerShape(4.dp),
+ large = RoundedCornerShape(0.dp)
+)
\ No newline at end of file
diff --git a/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Theme.kt b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Theme.kt
new file mode 100644
index 00000000..7cbf9ff8
--- /dev/null
+++ b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Theme.kt
@@ -0,0 +1,44 @@
+package com.yogeshpaliyal.keypasscompose.ui.theme
+
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.darkColors
+import androidx.compose.material.lightColors
+import androidx.compose.runtime.Composable
+
+private val DarkColorPalette = darkColors(
+ primary = Purple200,
+ primaryVariant = Purple700,
+ secondary = Teal200
+)
+
+private val LightColorPalette = lightColors(
+ primary = Purple500,
+ primaryVariant = Purple700,
+ secondary = Teal200
+
+ /* Other default colors to override
+ background = Color.White,
+ surface = Color.White,
+ onPrimary = Color.White,
+ onSecondary = Color.Black,
+ onBackground = Color.Black,
+ onSurface = Color.Black,
+ */
+)
+
+@Composable
+fun KeyPassTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable() () -> Unit) {
+ val colors = if (darkTheme) {
+ DarkColorPalette
+ } else {
+ LightColorPalette
+ }
+
+ MaterialTheme(
+ colors = colors,
+ typography = Typography,
+ shapes = Shapes,
+ content = content
+ )
+}
\ No newline at end of file
diff --git a/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Type.kt b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Type.kt
new file mode 100644
index 00000000..3fde7438
--- /dev/null
+++ b/keypasscompose/src/main/java/com/yogeshpaliyal/keypasscompose/ui/theme/Type.kt
@@ -0,0 +1,28 @@
+package com.yogeshpaliyal.keypasscompose.ui.theme
+
+import androidx.compose.material.Typography
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.sp
+
+// Set of Material typography styles to start with
+val Typography = Typography(
+ body1 = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.Normal,
+ fontSize = 16.sp
+ )
+ /* Other default text styles to override
+ button = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.W500,
+ fontSize = 14.sp
+ ),
+ caption = TextStyle(
+ fontFamily = FontFamily.Default,
+ fontWeight = FontWeight.Normal,
+ fontSize = 12.sp
+ )
+ */
+)
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/drawable-v24/ic_launcher_foreground.xml b/keypasscompose/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/keypasscompose/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/drawable/ic_launcher_background.xml b/keypasscompose/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/keypasscompose/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/keypasscompose/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher.webp b/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 00000000..c209e78e
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..b2dfe3d1
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher.webp b/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 00000000..4f0f1d64
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..62b611da
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher.webp b/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 00000000..948a3070
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..1b9a6956
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..28d4b77f
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9287f508
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..aa7d6427
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9126ae37
Binary files /dev/null and b/keypasscompose/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/keypasscompose/src/main/res/values-night/themes.xml b/keypasscompose/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..082368cd
--- /dev/null
+++ b/keypasscompose/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/values/colors.xml b/keypasscompose/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/keypasscompose/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/values/strings.xml b/keypasscompose/src/main/res/values/strings.xml
new file mode 100644
index 00000000..ade25ba3
--- /dev/null
+++ b/keypasscompose/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ KeyPass Compose
+
\ No newline at end of file
diff --git a/keypasscompose/src/main/res/values/themes.xml b/keypasscompose/src/main/res/values/themes.xml
new file mode 100644
index 00000000..f3ffd182
--- /dev/null
+++ b/keypasscompose/src/main/res/values/themes.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/keypasscompose/src/test/java/com/yogeshpaliyal/keypasscompose/ExampleUnitTest.kt b/keypasscompose/src/test/java/com/yogeshpaliyal/keypasscompose/ExampleUnitTest.kt
new file mode 100644
index 00000000..29d02963
--- /dev/null
+++ b/keypasscompose/src/test/java/com/yogeshpaliyal/keypasscompose/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.yogeshpaliyal.keypasscompose
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 8b61f13a..89491b54 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,4 @@
include ':app'
rootProject.name = "KeyPass"
include ':common'
+include ':keypasscompose'