social library

Chat and sharing widgets built on sheen: people with their presence, chat rows and friend requests, message bubbles, cards for shared music, reactions, a composer, a typing indicator, a friend picker and a listen-together banner.

Import it next to package:sheen/sheen.dart (it uses package:sheen/music.dart for the playing bars).

Classes

SheenAvatarStack
Two to four avatars overlapping, for a group chat or the people listening together.
SheenChatBubble
A message: text in a bubble (mine in the accent at the end, theirs muted at the start), or any child such as a SheenShareCard, with the sender's name above it in groups and reactions under it.
SheenChatRow
One chat in a list: who it is with, the last message, its time and how many messages are unread.
SheenComposer
The bar at the bottom of a chat: a button to share music, a field that grows to five lines, and Send in the accent (disabled while the field is empty). It sits above the keyboard and the home indicator.
SheenFriendChoice<T>
Someone (or a group) to pick in a SheenFriendPicker.
SheenFriendPicker<T>
A grid of friends and groups to send something to, as a share sheet shows them: tap to pick, tap again to drop; the picked ones get an accent ring.
SheenListenTogetherBanner
Listening together in a chat: who hosts, what plays, and Join or Leave, on the accent.
SheenPresenceAvatar
A SheenAvatar with the person's presence: a green dot when online, playing bars while they listen.
SheenPresenceItem
One friend in a SheenPresenceStrip.
SheenPresenceStrip
The friends listening now, in a row that scrolls sideways: avatar with playing bars, name, song.
SheenReactionBar
The emoji to react with, in a floating pill; the one I chose is marked.
SheenReactionCount
One reaction under a message: its emoji, how many chose it, and whether I did.
SheenReactions
The reaction chips under a message; tapping one calls onTap (an app adds or removes mine).
SheenRequestCard
A request from someone new: their avatar, a line about them, and Accept / Decline.
SheenShareAction
One button under a SheenShareCard ("Like", "Play next", "Save a copy").
SheenShareCard
Music shared in a chat: the cover with a play button, what it is ("Song · 3:12", "Playlist · 24 songs"), the title, the artist, the sender's note and up to two actions.
SheenSocialScope
Provides SheenSocialStrings to the social widgets below it.
SheenSocialStrings
The words the social widgets show or announce when you give them none.
SheenTypingIndicator
Three dots that rise in turn while someone types; still under Reduce Motion.
SheenUnreadCount
A count in an accent pill, for unread messages.

Enums

SheenPresence
What a person is doing, as their avatar shows it.

Functions

showSheenReactionBar({required BuildContext context, required Rect anchor, String? chosen, List<String> emojis = SheenReactionBar.defaults}) → Future<String?>
Opens SheenReactionBar over a dimmed screen, right above anchor (the message, in global coordinates, as SheenChatBubble.onReact gives it) or under it when there is no room above. Returns the emoji picked, or null.