diff --git a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
index 37b629d3aaeda0588c4623ce8598d9d707f9e43d..c333babbd9e0e75299e7a082673372b0eab7343f 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
@@ -1,17 +1,24 @@
 package org.futo.circles.feature.timeline.post.create
 
+import android.app.Dialog
 import android.content.Context
+import android.content.DialogInterface
+import android.graphics.Color
 import android.net.Uri
 import android.os.Bundle
+import android.view.LayoutInflater
 import android.view.View
+import android.view.ViewGroup
 import android.view.WindowManager
 import androidx.fragment.app.viewModels
 import androidx.navigation.fragment.findNavController
 import androidx.navigation.fragment.navArgs
+import com.google.android.material.bottomsheet.BottomSheetBehavior
+import com.google.android.material.bottomsheet.BottomSheetDialog
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
 import dagger.hilt.android.AndroidEntryPoint
 import org.futo.circles.R
 import org.futo.circles.core.base.NetworkObserver
-import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
 import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.showError
@@ -23,17 +30,13 @@ import org.futo.circles.core.model.TextContent
 import org.futo.circles.databinding.DialogFragmentCreatePostBinding
 import org.futo.circles.feature.timeline.post.emoji.EmojiPickerListener
 import org.futo.circles.model.CreatePostContent
-import java.util.*
 
 @AndroidEntryPoint
-class CreatePostDialogFragment :
-    BaseFullscreenDialogFragment(DialogFragmentCreatePostBinding::inflate),
-    PreviewPostListener, EmojiPickerListener {
+class CreatePostDialogFragment : BottomSheetDialogFragment(), PreviewPostListener,
+    EmojiPickerListener {
 
+    private var binding: DialogFragmentCreatePostBinding? = null
     private val args: CreatePostDialogFragmentArgs by navArgs()
-    private val binding by lazy {
-        getBinding() as DialogFragmentCreatePostBinding
-    }
     private val viewModel by viewModels<CreatePostViewModel>()
 
     private val mediaPickerHelper = MediaPickerHelper(this, isVideoAvailable = true)
@@ -45,6 +48,40 @@ class CreatePostDialogFragment :
             parentFragmentManager.fragments.lastOrNull { it is CreatePostListener } as? CreatePostListener
     }
 
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
+    ): View? {
+        binding = DialogFragmentCreatePostBinding.inflate(inflater, container, false)
+        return binding?.root
+    }
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+        val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
+        dialog.setOnShowListener { setupBottomSheet(it) }
+        return dialog
+    }
+
+    private fun setupBottomSheet(dialogInterface: DialogInterface) {
+        val bottomSheetDialog = dialogInterface as BottomSheetDialog
+        val bottomSheet = bottomSheetDialog.findViewById<View>(
+            com.google.android.material.R.id.design_bottom_sheet
+        ) ?: return
+        bottomSheet.setBackgroundColor(Color.TRANSPARENT)
+        bottomSheet.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
+        BottomSheetBehavior.from(bottomSheet).apply {
+            peekHeight = resources.displayMetrics.heightPixels
+            state = BottomSheetBehavior.STATE_EXPANDED
+            addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
+                override fun onStateChanged(bottomSheet: View, newState: Int) {
+                    if (newState == BottomSheetBehavior.STATE_HALF_EXPANDED) dismiss()
+                }
+
+                override fun onSlide(bottomSheet: View, slideOffset: Float) {}
+
+            })
+        }
+    }
+
     @Suppress("DEPRECATION")
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
@@ -55,31 +92,30 @@ class CreatePostDialogFragment :
 
     private fun setupViews() {
         setToolbarTitle()
-        with(binding) {
-            vPostPreview.setup(this@CreatePostDialogFragment, args.roomId, args.isEdit)
-        }
+        binding?.btnClose?.setOnClickListener { dismiss() }
+        binding?.vPostPreview?.setup(this@CreatePostDialogFragment, args.roomId, args.isEdit)
     }
 
     private fun setupObservers() {
         viewModel.postToEditContentLiveData.observeData(this) {
             when (it.type) {
                 PostContentType.IMAGE_CONTENT, PostContentType.VIDEO_CONTENT ->
-                    binding.vPostPreview.setMediaFromExistingPost(it as MediaContent)
+                    binding?.vPostPreview?.setMediaFromExistingPost(it as MediaContent)
 
-                else -> binding.vPostPreview.setText((it as TextContent).message)
+                else -> binding?.vPostPreview?.setText((it as TextContent).message)
             }
         }
     }
 
     private fun setToolbarTitle() {
-        binding.toolbar.title = when {
+        binding?.tvTitle?.text = when {
             args.isEdit -> getString(R.string.edit_post)
             else -> getString(R.string.create_post)
         }
     }
 
     private fun onMediaSelected(uri: Uri, type: MediaType) {
-        binding.vPostPreview.setMedia(uri, type)
+        binding?.vPostPreview?.setMedia(uri, type)
     }
 
     private fun sendPost(content: CreatePostContent) {
@@ -109,7 +145,7 @@ class CreatePostDialogFragment :
 
     override fun onAddLinkClicked() {
         AddLinkDialog(requireContext()) { title, link ->
-            binding.vPostPreview.insertLink(title, link)
+            binding?.vPostPreview?.insertLink(title, link)
         }.show()
     }
 
@@ -123,6 +159,11 @@ class CreatePostDialogFragment :
     }
 
     override fun onEmojiSelected(roomId: String?, eventId: String?, emoji: String) {
-        binding.vPostPreview.insertEmoji(emoji)
+        binding?.vPostPreview?.insertEmoji(emoji)
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        binding = null
     }
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_fragment_create_post.xml b/app/src/main/res/layout/dialog_fragment_create_post.xml
index ac9ce83e80201a992489b57dc0f8e32cbc3ba6c5..f3c76d3a8f4cc348d95b94b21691390c67a07dc7 100644
--- a/app/src/main/res/layout/dialog_fragment_create_post.xml
+++ b/app/src/main/res/layout/dialog_fragment_create_post.xml
@@ -1,52 +1,60 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="@drawable/bg_top_rounded_corners"
     android:orientation="vertical">
 
-    <com.google.android.material.appbar.MaterialToolbar
-        android:id="@+id/toolbar"
-        android:layout_width="0dp"
-        android:layout_height="?attr/actionBarSize"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:navigationIcon="?attr/homeAsUpIndicator"
-        app:title="@string/create_post"
-        app:titleCentered="true" />
+    <View
+        android:id="@+id/vTopLine"
+        android:layout_width="48dp"
+        android:layout_height="2dp"
+        android:layout_gravity="center"
+        android:layout_marginTop="4dp"
+        android:background="@color/divider_color" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tvTitle"
+            style="@style/title2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:text="@string/create_post" />
+
+        <ImageButton
+            android:id="@+id/btnClose"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="end|center"
+            android:background="?selectableItemBackgroundBorderless"
+            android:padding="6dp"
+            android:src="@drawable/ic_close" />
+
+    </FrameLayout>
+
 
     <View
         android:id="@+id/divider"
-        android:layout_width="0dp"
+        android:layout_width="match_parent"
         android:layout_height="@dimen/divider_height"
-        android:background="@color/divider_color"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/toolbar" />
+        android:layout_marginTop="4dp"
+        android:background="@color/divider_color" />
+
 
-    <androidx.constraintlayout.widget.ConstraintLayout
+    <org.futo.circles.view.PreviewPostView
+        android:id="@+id/vPostPreview"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:clipChildren="false"
-        android:clipToPadding="false"
-        android:orientation="vertical"
+        android:layout_height="match_parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/divider">
-
-        <org.futo.circles.view.PreviewPostView
-            android:id="@+id/vPostPreview"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
+        app:layout_constraintTop_toBottomOf="@id/divider" />
 
 
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
+</LinearLayout>
\ No newline at end of file
diff --git a/core/src/main/res/drawable/bg_top_rounded_corners.xml b/core/src/main/res/drawable/bg_top_rounded_corners.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06ea43007348afcfc944ba72f91d61926c8953ed
--- /dev/null
+++ b/core/src/main/res/drawable/bg_top_rounded_corners.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="?android:colorBackground" />
+    <corners
+        android:bottomLeftRadius="0dp"
+        android:bottomRightRadius="0dp"
+        android:topLeftRadius="16dp"
+        android:topRightRadius="16dp" />
+</shape>
\ No newline at end of file