Private
Public Access
Site-wide, any user can upload -- usable both as reactions and inline in message text via :shortcode:, alongside the existing built-in Unicode picker. A :shortcode: reference is stored/sent as literal text (same as the built-in shortcode convention) and resolved to an image at render time, so it degrades to plain text if the emoji is later deleted. Backend: new custom_emoji table (shortcode unique, sized to fit MessageReaction.emoji's existing column alongside its colons), upload/ list/delete endpoints (delete restricted to uploader or site admin). Frontend: a CustomEmojiProvider context feeds a new "Custom" category in the emoji picker (inline upload + hover-to-remove), extends the composer's shortcode autocomplete, and a shared EmojiGlyph resolver renders custom emoji wherever a value can appear -- message text, reaction pills, and the picker itself. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
14 lines
590 B
CSS
14 lines
590 B
CSS
/* #18: em-relative, deliberately -- renders correctly inline in message
|
|
text, inside a reaction pill, and inside the emoji picker's grid without
|
|
a separate override per context, since each of those already sets its
|
|
own font-size and this just tracks it. Kept in this file (imported
|
|
directly by MessageContent.tsx) rather than MessageList.css so it's
|
|
loaded wherever MessageContent renders -- FilePreviewModal and HelpPage
|
|
included, not just the message list. */
|
|
.message-custom-emoji {
|
|
height: 1.2em;
|
|
width: 1.2em;
|
|
object-fit: contain;
|
|
vertical-align: -0.25em;
|
|
}
|