diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 1c8421167432f4e800a185ac8886e4b7d62a3499..f7505cd6720bae64f398ffd651864da9352c2da8 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -58,7 +58,7 @@ dependencies {
     androidTestImplementation("androidx.test.ext:junit:1.1.5")
     androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
 
-    val cameraxVersion = "1.3.0-rc01"
+    val cameraxVersion = "1.3.2"
     implementation("androidx.camera:camera-core:$cameraxVersion")
     implementation("androidx.camera:camera-camera2:$cameraxVersion")
     implementation("androidx.camera:camera-lifecycle:$cameraxVersion")
diff --git a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
index d28853329b08cc55e280b39976c46dba4ba4fea4..81b3533b54b05886f18347e2ce36cbdfbed3c823 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
@@ -66,6 +66,7 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener {
         )
         authViewModel.isLoggedIn.observe(this) {
             Log.d("MainActivity", "isLoggedIn: $it")
+
             if (it == false) {
                 Log.d("MainActivity", "onExpired")
                 if (navController.currentDestination?.id != R.id.fragment_login) {
@@ -78,6 +79,11 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener {
                     navController.navigate(R.id.action_fragment_login_to_navigation_transaction)
                 }
             }
+
+            if (it != null) {
+                binding.loading.visibility = View.GONE
+                binding.container.visibility = View.VISIBLE
+            }
         }
 
         /* Randomize Transaction Configuration */
@@ -189,6 +195,16 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener {
             if (destination.id == R.id.fragment_login) {
                 Log.d("MainActivity", "onCreate: fragment_login")
                 navView.visibility = View.GONE
+            } else if (destination.id !in intArrayOf(
+                    R.id.navigation_transaction,
+                    R.id.navigation_scan,
+                    R.id.navigation_graph,
+                    R.id.navigation_twibbon,
+                    R.id.navigation_settings
+                )
+            ) {
+                Log.d("MainActivity", "onCreate: not navigation")
+                navView.visibility = View.GONE
             } else {
                 Log.d("MainActivity", "onCreate: not fragment_login")
                 navView.visibility = View.VISIBLE
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt
index 072e947d4ecf8084c1352c49a3d0eeb02b7e2e22..cd091ef09797c1d14b55f34b171f2bf5909e9a0f 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt
@@ -10,9 +10,12 @@ import androidx.activity.result.contract.ActivityResultContracts
 import androidx.fragment.app.Fragment
 import androidx.navigation.Navigation
 import com.example.bandung_bondowoso.R
+import com.example.bandung_bondowoso.broadcast.connection.ConnectionChangeListener
 import com.example.bandung_bondowoso.databinding.FragmentScanHomeBinding
+import com.example.bandung_bondowoso.util.ConnectionStateMonitor
+import com.example.bandung_bondowoso.view.network.NoNetworkFragment
 
-class ScanHomeFragment: Fragment() {
+class ScanHomeFragment: Fragment(), ConnectionChangeListener {
     private var _binding :FragmentScanHomeBinding ? = null;
     private val binding get() = _binding!!
     private val pickMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
@@ -22,6 +25,8 @@ class ScanHomeFragment: Fragment() {
             Log.d("PhotoPicker", "No photo selected")
         }
     }
+    private val connectionStateMonitor = ConnectionStateMonitor(this)
+
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -36,6 +41,9 @@ class ScanHomeFragment: Fragment() {
         binding.toGaleriButton.setOnClickListener{
             pickImageGallery()
         }
+
+        connectionStateMonitor.enable(requireContext())
+
         return root;
     }
 
@@ -43,4 +51,27 @@ class ScanHomeFragment: Fragment() {
         pickMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
     }
 
+    override fun onConnectionChanged(isConnected: Boolean) {
+        activity?.runOnUiThread(Runnable {
+            if (!isConnected) {
+                // change fragment to no network fragment
+                Log.d("DashboardFragment", binding.scanChildFragment.toString())
+                childFragmentManager.beginTransaction()
+                    .replace(binding.scanChildFragment.id, NoNetworkFragment())
+                    .commit()
+                binding.scanFragment.visibility = View.GONE
+                binding.scanChildFragment.visibility = View.VISIBLE
+            } else {
+                // remove no network fragment
+                Log.d("DashboardFragment", "Connected")
+                val fragment = childFragmentManager.findFragmentById(binding.scanChildFragment.id)
+                if (fragment is NoNetworkFragment) {
+                    childFragmentManager.beginTransaction().remove(fragment).commit()
+                }
+                binding.scanFragment.visibility = View.VISIBLE
+                binding.scanChildFragment.visibility = View.GONE
+            }
+        })
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
index 3c8a4632c40c3a0d9c4e5ee1c62777d36b324c58..b9336b3252bd4aab48b6c0a35520ba13f10eedd3 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
@@ -105,7 +105,6 @@ class CreateTransactionFragment : Fragment() {
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         Log.d(tag, "onViewCreated")
         super.onViewCreated(view, savedInstanceState)
-        (activity as MainActivity).binding.navView.visibility = View.GONE
         randomizeTransactionViewModel = ViewModelProvider(requireActivity()).get(
             RandomizeTransactionViewModel::class.java)
         transactionHelper = TransactionHelper(requireContext())
diff --git a/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt b/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt
index b68f49a9f60fea1cfca081ddc306153e21f16a5a..0bc871b6045d1c7be1c4232ac1fc7b9be7ef23b3 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt
@@ -17,12 +17,12 @@ import com.example.bandung_bondowoso.repository.UserRepository
 import kotlinx.coroutines.launch
 
 class AuthViewModel: ViewModel(), JwtExpiredListener, JwtValidListener {
-    private val _isLoggedIn = MutableLiveData<Boolean>()
-    val isLoggedIn: LiveData<Boolean> = _isLoggedIn
+    private val _isLoggedIn = MutableLiveData<Boolean?>()
+    val isLoggedIn: LiveData<Boolean?> = _isLoggedIn
 
     override fun onExpired() {
         Log.d("AuthViewModel", "onExpired")
-        _isLoggedIn.value = true
+        _isLoggedIn.value = false
     }
 
     override fun onValid() {
diff --git a/app/src/main/res/drawable/bg_button_danger.xml b/app/src/main/res/drawable/bg_button_danger.xml
new file mode 100644
index 0000000000000000000000000000000000000000..df25fce0ee745c6384b2fd5af3cc6de6e708e012
--- /dev/null
+++ b/app/src/main/res/drawable/bg_button_danger.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="12dp" />
+    <solid android:color="@color/md_theme_red" />
+</shape>
diff --git a/app/src/main/res/drawable/bg_button_secondary.xml b/app/src/main/res/drawable/bg_button_secondary.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bf7cfeff6f297aaee06a8035c75493508d82d795
--- /dev/null
+++ b/app/src/main/res/drawable/bg_button_secondary.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="12dp" />
+    <solid android:color="@color/md_theme_secondary" />
+</shape>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 2d12927229947b48ec80b7f249c7d33a43cdb591..ff8ea4437924a5d916dd4d7c47ddd94eebb0eef7 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/md_theme_background" >
+<androidx.constraintlayout.widget.ConstraintLayout
     android:id="@+id/container"
+    android:visibility="gone"
     android:layout_width="match_parent"
     android:background="@color/md_theme_surface"
     android:layout_height="match_parent"
@@ -40,5 +46,19 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="1.0"
         app:navGraph="@navigation/mobile_navigation" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout>
+    <FrameLayout
+        android:id="@+id/loading"
+        android:visibility="visible"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <ProgressBar
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:layout_gravity="center"
+            android:indeterminate="true"
+            android:indeterminateTint="@color/md_theme_primary"
+            android:indeterminateTintMode="src_atop"
+            android:translationZ="10dp" />
+    </FrameLayout>
+</FrameLayout>
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index 0918f1940969668798af39d30d53a641a8efed1f..3020057fa8253b52ba8f6e99ef70a85c3d4c1b24 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -67,6 +67,7 @@
             android:layout_height="wrap_content"
             android:autofillHints="emailAddress"
             android:inputType="textEmailAddress"
+            android:maxLength="255"
             />
     </com.google.android.material.textfield.TextInputLayout>
 
@@ -91,6 +92,7 @@
             android:layout_height="wrap_content"
             android:autofillHints="password"
             android:inputType="textPassword"
+            android:maxLength="100"
             />
     </com.google.android.material.textfield.TextInputLayout>
 
diff --git a/app/src/main/res/layout/fragment_scan_home.xml b/app/src/main/res/layout/fragment_scan_home.xml
index 53b37e0ea2256f75fb66ecce9900ca11f9fbf7af..1b4225689c6d7a21babea1df5d56a6d0aa36be7e 100644
--- a/app/src/main/res/layout/fragment_scan_home.xml
+++ b/app/src/main/res/layout/fragment_scan_home.xml
@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-
-    android:background="@color/md_theme_primary"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    android:background="@color/md_theme_background" >
+<androidx.constraintlayout.widget.ConstraintLayout
+    android:id="@+id/scan_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/md_theme_primary">
     <TextView
         android:id="@+id/tv_scan_title"
         style="@style/TextAppearance.HeadlineLarge"
@@ -23,7 +28,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
-        android:text="Tidak perlu masukin manual! Scan saja!!"
+        android:text="@string/scan_description"
         android:textColor="@color/white"
         android:textSize="16sp"
         app:layout_constraintStart_toStartOf="@+id/tv_scan_title"
@@ -34,14 +39,15 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="0dp"
-        android:layout_marginTop="0dp"
         android:src="@drawable/scan"
         app:layout_constraintStart_toStartOf="@+id/tv_scan_title"
-        app:layout_constraintTop_toBottomOf="@+id/tv_scan_deskripsi" />
+        app:layout_constraintTop_toBottomOf="@+id/tv_scan_deskripsi"
+        android:contentDescription="@string/scan_image" />
 
     <LinearLayout
+        android:id = "@+id/ll_button"
         android:layout_width="match_parent"
-        android:layout_height="190dp"
+        android:layout_height="220dp"
         android:background="@color/white"
         android:orientation="vertical"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -56,7 +62,7 @@
             android:layout_marginStart="30dp"
             android:layout_marginTop="25dp"
             android:layout_marginEnd="30dp"
-            android:text="Foto Struk" />
+            android:text="@string/btn_scan" />
 
         <Button
             android:id = "@+id/to_galeri_button"
@@ -66,8 +72,13 @@
             android:layout_marginStart="30dp"
             android:layout_marginTop="10dp"
             android:layout_marginEnd="30dp"
-            android:text="Buka Galeri" />
+            android:text="@string/btn_scan_gallery" />
     </LinearLayout>
-
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout>
+    <androidx.fragment.app.FragmentContainerView
+        android:id="@+id/scan_child_fragment"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone"
+        />
+</FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 4b23fcd871b98019bf83b80b8f3d0325fde9d2a5..ca2d4c0ca52489b6e78d4b4d2854343e86476f00 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -108,6 +108,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/simpan"
+            style="@style/buttonStylePrimary"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tv_description_settings_card_excel" />
@@ -165,6 +166,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/kirim"
+            style="@style/buttonStylePrimary"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tv_description_settings_card_email" />
@@ -249,6 +251,7 @@
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/title_top_margin"
             android:text="@string/button_random"
+            style="@style/buttonStylePrimary"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/textView2" />
diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml
index 70f7b8a1c36e40502fbe1c9d3529dcbe515787c9..a588bb6b8dd56c04a9064ccc68996d2531d704e2 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -94,7 +94,6 @@
             style="@style/FloatingActionButtonStyle"
             android:layout_width="60dp"
             android:layout_height="60dp"
-            android:layout_marginEnd="@dimen/fragment_horizontal_padding"
             android:layout_marginBottom="30dp"
             android:clickable="true"
             app:backgroundTint="@color/md_theme_primary"
diff --git a/app/src/main/res/layout/fragment_transaction_create.xml b/app/src/main/res/layout/fragment_transaction_create.xml
index 5bbbff922ad7bc9ba4be2634e851e02db0fa5344..eeafc7e8e1d10363d10a2c303e927400f8f0290c 100644
--- a/app/src/main/res/layout/fragment_transaction_create.xml
+++ b/app/src/main/res/layout/fragment_transaction_create.xml
@@ -4,6 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:paddingHorizontal="@dimen/fragment_horizontal_padding"
     tools:context=".view.transaction.CreateTransactionFragment">
 
     <TextView
@@ -12,7 +13,6 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/title_top_margin"
-        android:layout_marginStart="@dimen/title_start_margin"
         android:text="@string/title_transaction_new"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
@@ -20,9 +20,9 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_field"
-        android:layout_width="310dp"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="64dp"
+        android:layout_marginTop="30dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tv_transaction_new">
@@ -123,6 +123,7 @@
                 style="@style/TextAppearance.BodyLarge"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:maxLength="150"
                 android:textColor="@color/md_theme_primary"/>
         </com.google.android.material.textfield.TextInputLayout>
 
@@ -168,7 +169,7 @@
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="310dp"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -177,12 +178,11 @@
 
         <Button
             android:id="@+id/btn_cancel"
-            android:layout_width="wrap_content"
+            android:layout_width="150dp"
             android:layout_height="wrap_content"
-            android:backgroundTint="@color/md_theme_red"
             android:text="@string/btn_cancel"
-            android:textAllCaps="true"
-            android:textAppearance="@style/TextAppearance.LabelLarge"
+            style="@style/buttonStyleDanger"
+            app:backgroundTint="@null"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toStartOf="@+id/btn_submit"
             app:layout_constraintHorizontal_bias="0.0"
@@ -192,12 +192,10 @@
 
         <Button
             android:id="@+id/btn_submit"
-            android:layout_width="wrap_content"
+            android:layout_width="150dp"
             android:layout_height="wrap_content"
-            android:backgroundTint="@color/md_theme_primary"
+            style="@style/buttonStylePrimary"
             android:text="@string/btn_submit"
-            android:textAllCaps="true"
-            android:textAppearance="@style/TextAppearance.LabelLarge"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
diff --git a/app/src/main/res/layout/fragment_transaction_edit.xml b/app/src/main/res/layout/fragment_transaction_edit.xml
index 0c4bb8c3cd6acc93a54579aeaa457294d7176fbc..52a007704d425ee2776eecea938b139554b7c00d 100644
--- a/app/src/main/res/layout/fragment_transaction_edit.xml
+++ b/app/src/main/res/layout/fragment_transaction_edit.xml
@@ -4,6 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:paddingHorizontal="@dimen/fragment_horizontal_padding"
     tools:context=".view.transaction.EditTransactionFragment">
 
     <TextView
@@ -12,7 +13,6 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/title_top_margin"
-        android:layout_marginStart="@dimen/title_start_margin"
         android:text="@string/title_transaction_new"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
@@ -20,9 +20,9 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_field"
-        android:layout_width="310dp"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="64dp"
+        android:layout_marginTop="30dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tv_transaction_edit">
@@ -123,6 +123,7 @@
                 style="@style/TextAppearance.BodyLarge"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:maxLength="150"
                 android:textColor="@color/md_theme_primary"
                 />
 
@@ -168,7 +169,7 @@
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="310dp"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -177,12 +178,10 @@
 
         <Button
             android:id="@+id/btn_cancel"
-            android:layout_width="wrap_content"
+            android:layout_width="150dp"
             android:layout_height="wrap_content"
-            android:backgroundTint="@color/md_theme_red"
             android:text="@string/btn_cancel"
-            android:textAllCaps="true"
-            android:textAppearance="@style/TextAppearance.LabelLarge"
+            style="@style/buttonStyleDanger"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toStartOf="@+id/btn_submit"
             app:layout_constraintHorizontal_bias="0.0"
@@ -192,12 +191,10 @@
 
         <Button
             android:id="@+id/btn_submit"
-            android:layout_width="wrap_content"
+            android:layout_width="150dp"
             android:layout_height="wrap_content"
-            android:backgroundTint="@color/md_theme_primary"
+            style="@style/buttonStylePrimary"
             android:text="@string/btn_submit"
-            android:textAllCaps="true"
-            android:textAppearance="@style/TextAppearance.LabelLarge"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 28eb1ea00e3e2e3fee5ffaa6035c98a952d40285..d5163d3b443b045918a2f93789fdceefbad25206 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -151,4 +151,9 @@
     <style name="buttonStylePrimary" parent="Widget.MaterialComponents.Button">
         <item name="android:background">@drawable/bg_button_primary</item>
     </style>
+
+    <style name="buttonStyleDanger" parent="Widget.MaterialComponents.Button">
+        <item name="android:background">@drawable/bg_button_danger</item>
+        <item name="android:textColor">@color/white</item>
+    </style>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3c1ebe3e1d852ade6962ad48106579ba7c075d32..db85c79ae5cbb93fc6e52e21fd6867790df01203 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -96,4 +96,8 @@
     <string name="tv_settings_alert_email_no_network">Tidak ada koneksi internet</string>
     <string name="tv_description_settings_email_no_network">Silahkan cek pengaturan internet kamu</string>
     <string name="btn_retake">Retake</string>
+    <string name="scan_image">scan image</string>
+    <string name="scan_description">Tidak perlu masukin manual! Scan saja!!</string>
+    <string name="btn_scan">Foto Struk</string>
+    <string name="btn_scan_gallery">Buka Galeri</string>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 0288683a471345bfc77d675b5d00ef7a8bda056e..cafda946330a40d5b83ec312891229bc99ddfb2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -167,6 +167,12 @@
         <item name="android:background">@drawable/bg_button_primary</item>
         <item name="android:textColor">@color/white</item>
     </style>
+
+    <style name="buttonStyleDanger" parent="Widget.MaterialComponents.Button">
+        <item name="android:background">@drawable/bg_button_danger</item>
+        <item name="android:textColor">@color/white</item>
+    </style>
+
     <style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
         <item name="boxStrokeColor">@color/md_theme_primary</item>
         <item name="boxStrokeWidth">2dp</item>