diff --git a/desktop/src/features/channels/ui/ChannelPane.tsx b/desktop/src/features/channels/ui/ChannelPane.tsx index 93060be3a..90dd441cd 100644 --- a/desktop/src/features/channels/ui/ChannelPane.tsx +++ b/desktop/src/features/channels/ui/ChannelPane.tsx @@ -401,7 +401,7 @@ export const ChannelPane = React.memo(function ChannelPane({ showTopBorder={false} />
-
+
{hasComposerBotActivity ? (
+ {canReply || onToggleReaction ? ( +
+ { + const actionBarMessage = + toActionBarMessage(message); + const remove = + actionBarMessage.reactions?.some( + (reaction) => + reaction.emoji === emoji && + reaction.reactedByCurrentUser, + ) ?? false; + return onToggleReaction( + actionBarMessage, + emoji, + remove, + ); + } + : undefined + } + onReply={ + canReply + ? () => handleSelectReplyTarget(message) + : undefined + } + reactions={message.reactions ?? []} + /> +
+ ) : null}
-
+

{message.authorLabel}

+

+ {message.fullTimestampLabel} +

{message.isSelected ? ( Inbox item ) : null} -

- {message.fullTimestampLabel} -

- {canReply || onToggleReaction ? ( -
-
- { - const actionBarMessage = - toActionBarMessage(message); - const remove = - actionBarMessage.reactions?.some( - (reaction) => - reaction.emoji === emoji && - reaction.reactedByCurrentUser, - ) ?? false; - return onToggleReaction( - actionBarMessage, - emoji, - remove, - ); - } - : undefined - } - onReply={ - canReply - ? () => handleSelectReplyTarget(message) - : undefined - } - reactions={message.reactions ?? []} - /> -
-
- ) : null}
diff --git a/desktop/src/features/messages/ui/MessageComposer.tsx b/desktop/src/features/messages/ui/MessageComposer.tsx index 0f870985c..9e08ff4be 100644 --- a/desktop/src/features/messages/ui/MessageComposer.tsx +++ b/desktop/src/features/messages/ui/MessageComposer.tsx @@ -555,7 +555,7 @@ export function MessageComposer({ aria-hidden="true" className="absolute inset-x-0 bottom-0 h-5 bg-background" /> -
+
); - const metadataNode = ( -
-
-
- -
-
+ const actionBarNode = ( +
+ +
+ ); + + const inlineMetadataNode = ( +
+ {message.pending ? (

Sending @@ -211,7 +213,6 @@ export const MessageRow = React.memo( This message has been edited ) : null} -

); @@ -281,7 +282,7 @@ export const MessageRow = React.memo(
{isThreadReplyLayout ? ( <> -
+
{message.pubkey ? (
); diff --git a/desktop/src/features/messages/ui/MessageTimeline.tsx b/desktop/src/features/messages/ui/MessageTimeline.tsx index 7e223a255..8f0500ed3 100644 --- a/desktop/src/features/messages/ui/MessageTimeline.tsx +++ b/desktop/src/features/messages/ui/MessageTimeline.tsx @@ -135,7 +135,7 @@ export const MessageTimeline = React.memo(function MessageTimeline({ ref={scrollContainerRef} >
diff --git a/desktop/src/features/messages/ui/MessageTimestamp.tsx b/desktop/src/features/messages/ui/MessageTimestamp.tsx index fe6ff873b..e8285d173 100644 --- a/desktop/src/features/messages/ui/MessageTimestamp.tsx +++ b/desktop/src/features/messages/ui/MessageTimestamp.tsx @@ -11,7 +11,9 @@ export function MessageTimestamp({ return ( -

{time}

+

+ {time} +

{formatFullDateTime(createdAt)} diff --git a/desktop/src/features/messages/ui/SystemMessageRow.tsx b/desktop/src/features/messages/ui/SystemMessageRow.tsx index 05fea9bd7..0bd848a68 100644 --- a/desktop/src/features/messages/ui/SystemMessageRow.tsx +++ b/desktop/src/features/messages/ui/SystemMessageRow.tsx @@ -200,7 +200,7 @@ export const SystemMessageRow = React.memo(function SystemMessageRow({ return (
@@ -211,9 +211,15 @@ export const SystemMessageRow = React.memo(function SystemMessageRow({ testId="system-message-avatar" />
-

- {description.title} -

+
+

+ {description.title} +

+ +

{description.action}

@@ -235,86 +241,77 @@ export const SystemMessageRow = React.memo(function SystemMessageRow({ ) : null}
-
-
-
- {canToggleReactions ? ( -
+ {canToggleReactions ? ( +
+
+ -
- - - - - - - - React - - - {reactionErrorMessage ? ( -
-

- {reactionErrorMessage} -

-
- ) : null} - { - void handleReactionSelect(emoji.native).finally( - () => { - setIsReactionPickerOpen(false); - }, - ); - }} - theme="auto" - previewPosition="none" - skinTonePosition="search" - set="native" - maxFrequentRows={2} - perLine={8} - /> -
-
-
-
- ) : null} + + + + + + + React + + + {reactionErrorMessage ? ( +
+

+ {reactionErrorMessage} +

+
+ ) : null} + { + void handleReactionSelect(emoji.native).finally(() => { + setIsReactionPickerOpen(false); + }); + }} + theme="auto" + previewPosition="none" + skinTonePosition="search" + set="native" + maxFrequentRows={2} + perLine={8} + /> +
+ +
-
- + ) : null}
diff --git a/desktop/src/features/messages/ui/TimelineSkeleton.tsx b/desktop/src/features/messages/ui/TimelineSkeleton.tsx index f1132a2f6..d4d156a19 100644 --- a/desktop/src/features/messages/ui/TimelineSkeleton.tsx +++ b/desktop/src/features/messages/ui/TimelineSkeleton.tsx @@ -5,13 +5,16 @@ export function TimelineSkeleton() { return ( <> - {skeletonRows.map((row) => ( + {skeletonRows.map((row, index) => (
- +
- - - +
+ + +
+ +
))} diff --git a/desktop/src/features/messages/ui/TypingIndicatorRow.tsx b/desktop/src/features/messages/ui/TypingIndicatorRow.tsx index 2a843ad9f..cb0278c7c 100644 --- a/desktop/src/features/messages/ui/TypingIndicatorRow.tsx +++ b/desktop/src/features/messages/ui/TypingIndicatorRow.tsx @@ -91,7 +91,6 @@ export function TypingIndicatorRow({ className={cn( "flex w-full items-center gap-2", isActivityVariant && "h-full", - !isActivityVariant && "mx-auto max-w-4xl", )} >
diff --git a/desktop/src/shared/ui/ViewLoadingFallback.tsx b/desktop/src/shared/ui/ViewLoadingFallback.tsx index 491b5f845..29243f7a9 100644 --- a/desktop/src/shared/ui/ViewLoadingFallback.tsx +++ b/desktop/src/shared/ui/ViewLoadingFallback.tsx @@ -45,13 +45,16 @@ function LoadingHeaderSkeleton() { function MessageRowsSkeleton() { return ( <> - {["first", "second", "third", "fourth", "fifth"].map((row) => ( + {["first", "second", "third", "fourth", "fifth"].map((row, index) => (
- -
- - - + +
+
+ + +
+ +
))} @@ -177,13 +180,13 @@ function ChannelLoadingBody() { return (
-
+
-
+
diff --git a/web/src/features/repos/ui/RepoDetailPage.tsx b/web/src/features/repos/ui/RepoDetailPage.tsx index 52bd17fcc..8c86ffe4b 100644 --- a/web/src/features/repos/ui/RepoDetailPage.tsx +++ b/web/src/features/repos/ui/RepoDetailPage.tsx @@ -60,7 +60,7 @@ function CopyableUrl({ url }: { url: string }) { function DetailSkeleton() { return ( -
+
@@ -181,7 +181,7 @@ export function RepoDetailPage() { if (!repo) { return ( -
+
+
{/* Main content */}
{/* Back link */} diff --git a/web/src/features/repos/ui/ReposPage.tsx b/web/src/features/repos/ui/ReposPage.tsx index 0cdadc108..0e1ecdb85 100644 --- a/web/src/features/repos/ui/ReposPage.tsx +++ b/web/src/features/repos/ui/ReposPage.tsx @@ -101,7 +101,7 @@ export function ReposPage() { if (isLoading) { return ( -
+

Repositories @@ -122,7 +122,7 @@ export function ReposPage() { } return ( -
+
{/* Main content */}
{/* Mobile-only connect button */}