[skip ci] feat: prepare for public release

This commit is contained in:
Hampus Kraft
2026-01-02 19:27:51 +00:00
parent 197b23757f
commit 5ae825fc7d
199 changed files with 38391 additions and 33358 deletions

View File

@@ -378,7 +378,7 @@ export const SubMenu = React.forwardRef<HTMLDivElement, SubMenuProps>(
/>
</svg>
</AriaMenuItem>
<AriaPopover placement="right top" offset={4} className={styles.submenuPopover}>
<AriaPopover placement="right top" offset={0} className={styles.submenuPopover}>
<AriaMenu className={styles.ariaMenu} aria-label="Submenu" autoFocus="first" selectionMode={selectionMode}>
{children}
</AriaMenu>

View File

@@ -24,8 +24,10 @@ import * as ModalActionCreators from '~/actions/ModalActionCreators';
import {modal} from '~/actions/ModalActionCreators';
import {RelationshipTypes} from '~/Constants';
import {ChangeFriendNicknameModal} from '~/components/modals/ChangeFriendNicknameModal';
import {Tooltip} from '~/components/uikit/Tooltip/Tooltip';
import type {UserRecord} from '~/records/UserRecord';
import RelationshipStore from '~/stores/RelationshipStore';
import UserStore from '~/stores/UserStore';
import * as RelationshipActionUtils from '~/utils/RelationshipActionUtils';
import {
AcceptFriendRequestIcon,
@@ -50,6 +52,7 @@ export const SendFriendRequestMenuItem: React.FC<SendFriendRequestMenuItemProps>
const [submitting, setSubmitting] = React.useState(false);
const showFriendRequestSent = relationshipType === RelationshipTypes.OUTGOING_REQUEST;
const isCurrentUserUnclaimed = !(UserStore.currentUser?.isClaimed() ?? true);
const handleSendFriendRequest = React.useCallback(async () => {
if (submitting || showFriendRequestSent) return;
@@ -58,6 +61,24 @@ export const SendFriendRequestMenuItem: React.FC<SendFriendRequestMenuItemProps>
setSubmitting(false);
}, [i18n, showFriendRequestSent, submitting, user.id]);
if (isCurrentUserUnclaimed) {
const tooltip = t`Claim your account to send friend requests.`;
return (
<Tooltip text={tooltip} maxWidth="xl">
<div>
<MenuItem
icon={<SendFriendRequestIcon />}
onClick={handleSendFriendRequest}
disabled={true}
closeOnSelect={false}
>
{showFriendRequestSent ? t`Friend Request Sent` : t`Add Friend`}
</MenuItem>
</div>
</Tooltip>
);
}
return (
<MenuItem
icon={<SendFriendRequestIcon />}

View File

@@ -50,6 +50,7 @@ interface PopoutProps {
containerClass?: string;
preventInvert?: boolean;
hoverDelay?: number;
hoverCloseDelay?: number;
toggleClose?: boolean;
subscribeTo?: ComponentActionType;
onOpen?: () => void;
@@ -192,8 +193,8 @@ export const Popout = React.forwardRef<HTMLElement, PopoutProps>((props, ref) =>
if (!isTriggerHoveringRef.current && !isContentHoveringRef.current && !hasActiveDependents) {
close();
}
}, 300);
}, [close, state.id]);
}, props.hoverCloseDelay ?? 300);
}, [close, state.id, props.hoverCloseDelay]);
const handleContentMouseEnter = React.useCallback(() => {
isContentHoveringRef.current = true;

View File

@@ -125,10 +125,10 @@ const PopoutItem: React.FC<PopoutItemProps> = observer(
const transitionStyles = React.useMemo(() => {
const shouldAnimate = animationType === 'smooth' && !prefersReducedMotion;
const duration = shouldAnimate ? '250ms' : '0ms';
const isPositioned = state.isReady;
const isPositioned = animationType === 'none' ? true : state.isReady;
const transform = getTransform(shouldAnimate, isVisible, isPositioned, targetInDOM);
return {
opacity: isVisible && isPositioned && targetInDOM ? 1 : 0,
opacity: isVisible && targetInDOM ? 1 : 0,
transform,
transition: `opacity ${duration} ease-in-out${shouldAnimate ? `, transform ${duration} ease-in-out` : ''}`,
pointerEvents: isPositioned && targetInDOM ? ('auto' as const) : ('none' as const),