This multi kit consists of a an avatar, a status, a caption, a body text, and a time stamp, all of which are optional.
Use this kit when displaying a message or a sort of communication with either a user or a bot. Use it in history displays, chat rooms, discussion threads or comments section.
<%= pb_rails("message", props: { label: "Anna Black", message: "How can we assist you today?", timestamp: "20 seconds ago", avatar_name: "Mike Bishop", avatar_url: "https://randomuser.me/api/portraits/men/50.jpg", avatar_status: "online" }) %> <br><br> <%= pb_rails("message", props: { label: "Patrick Welch", message: "We'll escalate this issue to a Senior Support agent.", timestamp: "9 minutes ago", avatar_name: "Wade Winningham", avatar_url: "https://randomuser.me/api/portraits/men/14.jpg", align_timestamp: "left" }) %> <br><br> <%= pb_rails("message", props: { label: "Lucille Sanchez", message: "Application for Kate Smith is waiting for your approval", timestamp: "4 hours ago", avatar_name: "Becca Jacobs", avatar_url: "https://randomuser.me/api/portraits/women/50.jpg" }) %> <br><br> <%= pb_rails("message", props: { label: "Beverly Reyes", message: "We're so sorry you had a bad experience!", timestamp: "2 days ago", avatar_name: "Tim Wenhold" }) %> <br><br> <%= pb_rails("message", props: { label: "Keith Craig", message: "Please hold for one moment, I'll check with my manager.", timestamp: "2 days ago" }) %> <br><br> <%= pb_rails("message", props: { label: "", message: "We're so sorry you had a bad experience!", timestamp: "2 days ago", avatar_name: "Tim Wenhold" }) %> <br><br> <%= pb_rails("message", props: { label: "", timestamp: "2 days ago", avatar_name: "Tim Wenhold" }) do %> <%= pb_rails("image", props: { alt: "picture of a misty forest", size: "xl", url: "https://unsplash.it/500/400/?image=634" }) %> <% end %> <br><br> <%= pb_rails("message", props: { label: "", message: "Please hold for one moment, I'll check with my manager.", timestamp: "2 days ago", avatar_name: "Tim Wenhold" }) do %> <%= pb_rails("image", props: { alt: "picture of a misty forest", size: "xl", url: "https://unsplash.it/500/400/?image=634" }) %> <% end %>
<%= pb_rails("message", props: { label: "Anna Black", message: "Hover over me to check out the real time I was made!", timestamp: "4 hours ago", timestamp_object: DateTime.current, avatar_name: "Lisa Thompson", avatar_url: "https://randomuser.me/api/portraits/women/39.jpg" }) %> <br><br> <%= pb_rails("message", props: { label: "Becca Jacobs", message: "Application for Kate Smith is waiting for your approval", timestamp: "12.20p", align_timestamp: "left", timestamp_object: DateTime.current, avatar_name: "Lisa Thompson", avatar_url: "https://randomuser.me/api/portraits/women/39.jpg" }) %>
<%= pb_rails("message", props: { avatar_name: "Mike Bishop", avatar_status: "online", avatar_url: "https://randomuser.me/api/portraits/men/50.jpg", border_radius: "rounded", hover: { background: "success_subtle" }, label: "Anna Black", message: "How can we assist you today?", padding: "xs", }) %> <br><br> <%= pb_rails("message", props: { align_timestamp: "left", avatar_name: "Lucille Sanchez", avatar_url: "https://randomuser.me/api/portraits/women/50.jpg", border_radius: "rounded", hover: { shadow: "deepest" }, label: "Becca Jacobs", message: "Application for Kate Smith is waiting for your approval", padding: "xs", }) %> <br><br>
The message kit also supports @mentions using a compound component structure. See the code example for details on how to pass user mentions through your messages.
<%= pb_rails("message", props: { label: "Keith Craig", timestamp: "2 days ago", avatar_name: "Keith Craig", padding_bottom: "md" }) do %> <%= pb_rails("message/message_mention", props: { variant: "user" }) do %> @all <% end %> let's welcome <%= pb_rails("message/message_mention", props: { variant: "self" }) do %> @Lucille Sanchez <% end %> to the team this week! <% end %> <%= pb_rails("message", props: { label: "Lucille Sanchez", timestamp: "2 days ago", avatar_name: "Lucille Sanchez", avatar_url: "https://randomuser.me/api/portraits/women/50.jpg" }) do %> <%= pb_rails("message/message_mention", props: {variant: "self"}) do %> @Keith Craig <% end %> thanks for the warm welcome! I'm so excited! <% end %>
| Props | Type | Values |
|---|---|---|
align_content |
enum | responsive
|
start
end
center
spaceBetween
spaceAround
spaceEvenly
|
align_items |
enum | responsive
|
start
end
center
|
border_radius |
enum
|
none
xs
sm
md
lg
xl
rounded
|
cursor |
enum
|
auto
default
none
contextMenu
help
pointer
progress
wait
cell
|
dark |
boolean
|
true
false
|
flex |
enum | responsive
|
auto
initial
0
1
2
3
4
5
6
7
8
9
10
11
12
none
|
flex_direction |
enum | responsive
|
row
column
rowReverse
columnReverse
|
flex_wrap |
enum | responsive
|
wrap
nowrap
wrapReverse
|
justify_content |
enum | responsive
|
start
end
center
spaceBetween
spaceAround
spaceEvenly
|
line_height |
enum
|
loosest
looser
loose
normal
tight
tighter
tightest
|
margin_right |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_left |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_top |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_bottom |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_x |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin_y |
array
|
none
xxs
xs
sm
md
lg
xl
|
margin |
array
|
none
xxs
xs
sm
md
lg
xl
|
width |
string
|
|
min_width |
string
|
|
max_width |
string
|
|
gap |
string | responsive
|
|
column_gap |
string | responsive
|
|
row_gap |
string | responsive
|
|
number_spacing |
enum
|
tabular
|
order |
enum | responsive
|
none
first
1
2
3
4
5
6
7
8
9
10
11
12
|
overflow_x |
enum
|
scroll
visible
hidden
auto
|
overflow_y |
enum
|
scroll
visible
hidden
auto
|
overflow |
enum
|
scroll
visible
hidden
auto
|
padding_right |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_left |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_top |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_bottom |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_x |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding_y |
array
|
none
xxs
xs
sm
md
lg
xl
|
padding |
array
|
none
xxs
xs
sm
md
lg
xl
|
position |
enum
|
relative
absolute
fixed
sticky
static
|
shadow |
enum
|
none
deep
deeper
deepest
|
text_align |
enum | responsive
|
start
end
left
right
center
justify
justifyAll
matchParent
|
truncate |
enum
|
none
1
2
3
4
5
|
vertical_align |
enum | responsive
|
baseline
super
top
middle
bottom
sub
text-top
text-bottom
|
z_index |
enum | responsive
|
1
2
3
4
5
6
7
8
9
10
max
|
top |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
inset |
boolean
|
true
false
|
right |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
bottom |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
left |
enum | object
|
xxs
xs
sm
md
lg
xl
xxl
|
height |
string
|
|
max_height |
string
|
|
min_height |
string
|
|
hover |
object
|
|
group_hover |
boolean
|
true
false
|
| Props | Type | Values | Default |
|---|---|---|---|
avatar_grayscale |
boolean
|
true
false
|
false
|
avatar_name |
string
|
||
avatar_status |
enum
|
away
offline
online
|
|
avatar_url |
string
|
||
label |
string
|
||
message |
string
|
||
timestamp |
string
|
||
timestamp_object |
date
|
||
timezone |
string
|
America/New_York
|
|
align_timestamp |
string
|
left
right
|
right
|