diff --git a/data/resources/resources.gresource.xml b/data/resources/resources.gresource.xml
index 8dd8a9e9..8840f519 100644
--- a/data/resources/resources.gresource.xml
+++ b/data/resources/resources.gresource.xml
@@ -13,6 +13,9 @@
ui/content-message-file.ui
ui/content-member-page.ui
ui/content-member-row.ui
+ ui/content-invite-subpage.ui
+ ui/content-invitee-item.ui
+ ui/content-invitee-row.ui
ui/content-message-row.ui
ui/content-divider-row.ui
ui/content-room-details.ui
diff --git a/data/resources/style.css b/data/resources/style.css
index 07a5249d..23b12be7 100644
--- a/data/resources/style.css
+++ b/data/resources/style.css
@@ -237,7 +237,7 @@ headerbar.flat {
color: @theme_text_color;
}
-.message-entry .view {
+.view {
padding: 7px 0;
}
diff --git a/data/resources/ui/content-invite-subpage.ui b/data/resources/ui/content-invite-subpage.ui
new file mode 100644
index 00000000..1bc2c339
--- /dev/null
+++ b/data/resources/ui/content-invite-subpage.ui
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
diff --git a/data/resources/ui/content-invitee-item.ui b/data/resources/ui/content-invitee-item.ui
new file mode 100644
index 00000000..07f1ad3c
--- /dev/null
+++ b/data/resources/ui/content-invitee-item.ui
@@ -0,0 +1,15 @@
+
+
+
+ True
+ False
+
+
+
+ GtkListItem
+
+
+
+
+
+
diff --git a/data/resources/ui/content-invitee-row.ui b/data/resources/ui/content-invitee-row.ui
new file mode 100644
index 00000000..b721bfa5
--- /dev/null
+++ b/data/resources/ui/content-invitee-row.ui
@@ -0,0 +1,68 @@
+
+
+
+ 12
+ 12
+ 12
+ 12
+
+
+
+
+
+
diff --git a/data/resources/ui/content-member-page.ui b/data/resources/ui/content-member-page.ui
index 91b97611..b7672eb0 100644
--- a/data/resources/ui/content-member-page.ui
+++ b/data/resources/ui/content-member-page.ui
@@ -23,8 +23,6 @@
Invite new member
end
-
- False
diff --git a/data/resources/ui/pill.ui b/data/resources/ui/pill.ui
index 08c3d298..4592c9c4 100644
--- a/data/resources/ui/pill.ui
+++ b/data/resources/ui/pill.ui
@@ -16,7 +16,6 @@
- middle
30
diff --git a/po/POTFILES.in b/po/POTFILES.in
index eabeb42a..ff8fc197 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -77,6 +77,10 @@ src/session/categories/mod.rs
src/session/content/invite.rs
src/session/content/markdown_popover.rs
src/session/content/mod.rs
+src/session/content/room_details/invite_subpage/invitee.rs
+src/session/content/room_details/invite_subpage/mod.rs
+src/session/content/room_details/invite_subpage/invitee_list.rs
+src/session/content/room_details/invite_subpage/invitee_row.rs
src/session/content/room_details/member_page.rs
src/session/content/room_details/mod.rs
src/session/content/room_history/divider_row.rs
diff --git a/src/meson.build b/src/meson.build
index 8de9ad9c..5b1a394d 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -71,6 +71,10 @@ sources = files(
'session/content/room_history/state_row/mod.rs',
'session/content/room_history/state_row/tombstone.rs',
'session/content/mod.rs',
+ 'session/content/room_details/invite_subpage/invitee.rs',
+ 'session/content/room_details/invite_subpage/mod.rs',
+ 'session/content/room_details/invite_subpage/invitee_list.rs',
+ 'session/content/room_details/invite_subpage/invitee_row.rs',
'session/content/room_details/member_page.rs',
'session/content/room_details/mod.rs',
'session/media_viewer.rs',
diff --git a/src/session/content/room_details/invite_subpage/invitee.rs b/src/session/content/room_details/invite_subpage/invitee.rs
new file mode 100644
index 00000000..16928116
--- /dev/null
+++ b/src/session/content/room_details/invite_subpage/invitee.rs
@@ -0,0 +1,136 @@
+use gtk::glib;
+use gtk::prelude::*;
+use gtk::subclass::prelude::*;
+use matrix_sdk::ruma::identifiers::{MxcUri, UserId};
+
+use crate::session::user::UserExt;
+use crate::session::{Session, User};
+
+mod imp {
+ use super::*;
+ use once_cell::sync::Lazy;
+ use std::cell::{Cell, RefCell};
+
+ #[derive(Debug, Default)]
+ pub struct Invitee {
+ pub invited: Cell,
+ pub anchor: RefCell