diff --git a/src/renderer/src/components/HorizontalScrollContainer/index.tsx b/src/renderer/src/components/HorizontalScrollContainer/index.tsx index ed5cdc52de..fdc890d2e2 100644 --- a/src/renderer/src/components/HorizontalScrollContainer/index.tsx +++ b/src/renderer/src/components/HorizontalScrollContainer/index.tsx @@ -1,3 +1,4 @@ +import { cn } from '@heroui/react' import Scrollbar from '@renderer/components/Scrollbar' import { ChevronRight } from 'lucide-react' import { useEffect, useRef, useState } from 'react' @@ -17,6 +18,10 @@ export interface HorizontalScrollContainerProps { dependencies?: readonly unknown[] scrollDistance?: number className?: string + classNames?: { + container?: string + content?: string + } gap?: string expandable?: boolean } @@ -26,6 +31,7 @@ const HorizontalScrollContainer: React.FC = ({ dependencies = [], scrollDistance = 200, className, + classNames, gap = '8px', expandable = false }) => { @@ -95,11 +101,16 @@ const HorizontalScrollContainer: React.FC = ({ return ( - + {children} {canScroll && !isExpanded && !isScrolledToEnd && ( diff --git a/src/renderer/src/pages/home/Messages/Message.tsx b/src/renderer/src/pages/home/Messages/Message.tsx index 0e86e9b232..d4a7ceef71 100644 --- a/src/renderer/src/pages/home/Messages/Message.tsx +++ b/src/renderer/src/pages/home/Messages/Message.tsx @@ -1,4 +1,6 @@ +import { cn } from '@heroui/react' import { loggerService } from '@logger' +import HorizontalScrollContainer from '@renderer/components/HorizontalScrollContainer' import Scrollbar from '@renderer/components/Scrollbar' import { useMessageEditing } from '@renderer/context/MessageEditingContext' import { useAssistant } from '@renderer/hooks/useAssistant' @@ -225,20 +227,28 @@ const MessageItem: FC = ({ {showMenubar && ( - - } - setModel={setModel} - onUpdateUseful={onUpdateUseful} - /> + + + } + setModel={setModel} + onUpdateUseful={onUpdateUseful} + /> + )} @@ -282,10 +292,8 @@ const MessageContentContainer = styled(Scrollbar)` overflow-y: auto; ` -const MessageFooter = styled.div<{ $isLastMessage: boolean; $messageStyle: 'plain' | 'bubble' }>` +const MessageFooter = styled.div` display: flex; - flex-direction: ${({ $isLastMessage, $messageStyle }) => - $isLastMessage && $messageStyle === 'plain' ? 'row-reverse' : 'row'}; align-items: center; justify-content: space-between; gap: 10px; diff --git a/src/renderer/src/pages/home/Messages/MessageGroup.tsx b/src/renderer/src/pages/home/Messages/MessageGroup.tsx index 4632c9ffb9..94c9672eda 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroup.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroup.tsx @@ -337,17 +337,30 @@ const GroupContainer = styled.div` const GridContainer = styled(Scrollbar)<{ $count: number; $gridColumns: number }>` width: 100%; display: grid; - overflow-y: visible; gap: 16px; + &.horizontal { padding-bottom: 4px; grid-template-columns: repeat(${({ $count }) => $count}, minmax(420px, 1fr)); + overflow-y: hidden; overflow-x: auto; + &::-webkit-scrollbar { + height: 6px; + } + &::-webkit-scrollbar-thumb { + background: var(--color-scrollbar-thumb); + border-radius: var(--scrollbar-thumb-radius); + } + &::-webkit-scrollbar-thumb:hover { + background: var(--color-scrollbar-thumb-hover); + } } &.fold, &.vertical { grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 8px; + overflow-y: auto; + overflow-x: hidden; } &.grid { grid-template-columns: repeat( @@ -355,11 +368,15 @@ const GridContainer = styled(Scrollbar)<{ $count: number; $gridColumns: number } minmax(0, 1fr) ); grid-template-rows: auto; + overflow-y: auto; + overflow-x: hidden; } &.multi-select-mode { grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 10px; + overflow-y: auto; + overflow-x: hidden; .grid { height: auto; } @@ -385,7 +402,7 @@ interface MessageWrapperProps { const MessageWrapper = styled.div` &.horizontal { padding: 1px; - overflow-y: auto; + /* overflow-y: auto; */ .message { height: 100%; border: 0.5px solid var(--color-border); @@ -405,8 +422,9 @@ const MessageWrapper = styled.div` } } &.grid { + display: block; height: 300px; - overflow-y: hidden; + overflow: hidden; border: 0.5px solid var(--color-border); border-radius: 10px; cursor: pointer;