From a84ba121fa7ed5e8d6e0e13783ad50c299b112f2 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Fri, 28 Mar 2025 16:38:24 -0500 Subject: Some design tweaks to web emoji picker (#8076) * Tighten up and reverse action items on web * Tweak web styles for emoji bar * Might as well make disabled more obvious * Format --- src/components/dms/ActionsWrapper.web.tsx | 5 +- src/components/dms/EmojiReactionPicker.web.tsx | 104 ++++++++++++++----------- src/style.css | 35 +++++++++ 3 files changed, 96 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/components/dms/ActionsWrapper.web.tsx b/src/components/dms/ActionsWrapper.web.tsx index aaffc0cfb..75a9b5278 100644 --- a/src/components/dms/ActionsWrapper.web.tsx +++ b/src/components/dms/ActionsWrapper.web.tsx @@ -85,10 +85,9 @@ export function ActionsWrapper({ a.justify_center, a.flex_row, a.align_center, - a.gap_xs, isFromSelf - ? [a.mr_md, {marginLeft: 'auto'}] - : [a.ml_md, {marginRight: 'auto'}], + ? [a.mr_xs, {marginLeft: 'auto'}, a.flex_row_reverse] + : [a.ml_xs, {marginRight: 'auto'}], ]}> {({props, state, isNative, control}) => { diff --git a/src/components/dms/EmojiReactionPicker.web.tsx b/src/components/dms/EmojiReactionPicker.web.tsx index 0425a879a..a1272b293 100644 --- a/src/components/dms/EmojiReactionPicker.web.tsx +++ b/src/components/dms/EmojiReactionPicker.web.tsx @@ -1,15 +1,14 @@ import {useState} from 'react' -import {View} from 'react-native' +import {Pressable, View} from 'react-native' import {type ChatBskyConvoDefs} from '@atproto/api' import EmojiPicker from '@emoji-mart/react' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' +import * as DropdownMenu from '@radix-ui/react-dropdown-menu' import {useSession} from '#/state/session' import {type Emoji} from '#/view/com/composer/text-input/web/EmojiPicker.web' -import {PressableWithHover} from '#/view/com/util/PressableWithHover' -import {atoms as a} from '#/alf' -import {useTheme} from '#/alf' +import {atoms as a, flatten, useTheme} from '#/alf' import {DotGrid_Stroke2_Corner0_Rounded as DotGridIcon} from '#/components/icons/DotGrid' import * as Menu from '#/components/Menu' import {type TriggerProps} from '#/components/Menu/types' @@ -67,48 +66,63 @@ function MenuInner({ return expanded ? ( ) : ( - - {['👍', '😆', '❤️', '👀', '😢'].map(emoji => { - const alreadyReacted = hasAlreadyReacted( - message, - currentAccount?.did, - emoji, - ) - return ( - handleEmojiSelect(emoji)} - hoverStyle={{ - backgroundColor: alreadyReacted - ? t.palette.negative_200 - : !limitReacted - ? t.palette.primary_300 - : undefined, - }} - style={[ - a.rounded_xs, - {height: 40, width: 40}, + + + {['👍', '😆', '❤️', '👀', '😢'].map(emoji => { + const alreadyReacted = hasAlreadyReacted( + message, + currentAccount?.did, + emoji, + ) + return ( + handleEmojiSelect(emoji)} + style={flatten([ + a.flex, + a.flex_col, + a.rounded_full, + a.justify_center, + a.align_center, + a.transition_transform, + { + width: 34, + height: 34, + }, + alreadyReacted && { + backgroundColor: t.atoms.bg_contrast_100.backgroundColor, + }, + ])}> + + {emoji} + + + ) + })} + + setExpanded(true)} + style={flatten([ + a.rounded_full, + {height: 34, width: 34}, a.justify_center, a.align_center, - alreadyReacted && {backgroundColor: t.palette.primary_100}, - ]}> - - {emoji} - - - ) - })} - setExpanded(true)} - hoverStyle={{backgroundColor: t.palette.primary_100}} - style={[ - a.rounded_xs, - {height: 40, width: 40}, - a.justify_center, - a.align_center, - ]}> - - - + ])}> + + + + + ) } diff --git a/src/style.css b/src/style.css index d5a0f9b43..9d72db4a1 100644 --- a/src/style.css +++ b/src/style.css @@ -290,3 +290,38 @@ input[type='range'][orient='vertical']::-moz-range-thumb { width: 16px; margin-left: -6px; } + +/* + * EmojiReactionPicker dropdown elements, within Radix components + */ +.EmojiReactionPicker__Pressable { + cursor: pointer; + border: 1px solid transparent; +} +.EmojiReactionPicker__Pressable:focus { + outline: none; + border-color: var(--text); +} +.EmojiReactionPicker__Pressable:hover { + outline: none; + transform: scale(1.1); + border-color: transparent; +} +.EmojiReactionPicker__Pressable:not(.__selected).__disabled { + transform: scale(1) !important; + border-color: transparent !important; + opacity: 0.7; +} +.EmojiReactionPicker__Pressable ~ button { + cursor: pointer; + border: 1px solid transparent; +} +.EmojiReactionPicker__Pressable ~ button:focus { + outline: none; + border-color: var(--text); +} +.EmojiReactionPicker__Pressable ~ button:hover { + outline: none; + background-color: var(--backgroundLight); + border-color: transparent; +} -- cgit 1.4.1