From 9a0bba256cc3d798c734cdc45c2d5ceb01ed2c8c Mon Sep 17 00:00:00 2001
From: Ajay Bura <32841439+ajbura@users.noreply.github.com>
Date: Wed, 22 Jul 2026 14:09:26 +0530
Subject: [PATCH] display user timezone in profile
---
src/app/components/user-profile/UserHero.tsx | 42 +++++++++++++++++--
.../user-profile/UserRoomProfile.tsx | 6 ++-
src/app/styles/Text.css.ts | 17 ++++++++
3 files changed, 61 insertions(+), 4 deletions(-)
diff --git a/src/app/components/user-profile/UserHero.tsx b/src/app/components/user-profile/UserHero.tsx
index 73cb7cac..a486779b 100644
--- a/src/app/components/user-profile/UserHero.tsx
+++ b/src/app/components/user-profile/UserHero.tsx
@@ -9,6 +9,8 @@ import {
OverlayBackdrop,
OverlayCenter,
Text,
+ Tooltip,
+ TooltipProvider,
} from 'folds';
import classNames from 'classnames';
import FocusTrap from 'focus-trap-react';
@@ -17,12 +19,14 @@ import * as css from './styles.css';
import { UserAvatar } from '../user-avatar';
import colorMXID from '../../../util/colorMXID';
import { getMxIdLocalPart } from '../../utils/matrix';
-import { BreakWord, LineClamp3 } from '../../styles/Text.css';
+import { BreakWord, DotDivider, HoverUnderline, LineClamp3 } from '../../styles/Text.css';
import { UserPresence } from '../../hooks/useUserPresence';
import { AvatarPresence, PresenceBadge } from '../presence';
import { ImageViewer } from '../image-viewer';
import { stopPropagation } from '../../utils/keyboard';
import { LINKIFY_OPTS } from '../../plugins/react-custom-html-parser';
+import { useSetting } from '../../state/hooks/settings';
+import { settingsAtom } from '../../state/settings';
type UserHeroProps = {
userId: string;
@@ -112,15 +116,45 @@ export function UserHero({ userId, avatarUrl, bannerUrl, presence }: UserHeroPro
);
}
+export function UserTimezone({ timezone }: { timezone: string }) {
+ const [hour24Clock] = useSetting(settingsAtom, 'hour24Clock');
+
+ const time = new Intl.DateTimeFormat('en-US', {
+ timeZone: timezone,
+ hour: '2-digit',
+ minute: '2-digit',
+ hour12: !hour24Clock,
+ }).format(new Date());
+
+ return (
+
+ {timezone}
+
+ }
+ >
+ {(triggerRef) => (
+
+ {time}
+
+ )}
+
+ );
+}
+
type UserHeroNameProps = {
displayName?: string;
userId: string;
+ timezone?: string;
};
-export function UserHeroName({ displayName, userId }: UserHeroNameProps) {
+export function UserHeroName({ displayName, userId, timezone }: UserHeroNameProps) {
const username = getMxIdLocalPart(userId);
return (
-
+
@{username}
+ {timezone && }
+ {timezone && }
);
diff --git a/src/app/components/user-profile/UserRoomProfile.tsx b/src/app/components/user-profile/UserRoomProfile.tsx
index 85155a26..97d09772 100644
--- a/src/app/components/user-profile/UserRoomProfile.tsx
+++ b/src/app/components/user-profile/UserRoomProfile.tsx
@@ -102,7 +102,11 @@ export function UserRoomProfile({ userId }: UserRoomProfileProps) {
-
+
{userId !== myUserId && (