소스 검색

feat(desktop): Image Preview support for Image Attachments (#7841)

Daniel Polito 1 개월 전
부모
커밋
025ed04da0
3개의 변경된 파일5개의 추가작업 그리고 6개의 파일을 삭제
  1. 5 1
      packages/app/src/components/prompt-input.tsx
  2. 0 4
      packages/ui/src/components/message-part.css
  3. 0 1
      packages/ui/src/components/message-part.tsx

+ 5 - 1
packages/app/src/components/prompt-input.tsx

@@ -38,6 +38,7 @@ import { IconButton } from "@opencode-ai/ui/icon-button"
 import { Select } from "@opencode-ai/ui/select"
 import { getDirectory, getFilename } from "@opencode-ai/util/path"
 import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { ImagePreview } from "@opencode-ai/ui/image-preview"
 import { ModelSelectorPopover } from "@/components/dialog-select-model"
 import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid"
 import { useProviders } from "@/hooks/use-providers"
@@ -1484,7 +1485,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
                     <img
                       src={attachment.dataUrl}
                       alt={attachment.filename}
-                      class="size-16 rounded-md object-cover border border-border-base"
+                      class="size-16 rounded-md object-cover border border-border-base hover:border-border-strong-base transition-colors"
+                      onClick={() =>
+                        dialog.show(() => <ImagePreview src={attachment.dataUrl} alt={attachment.filename} />)
+                      }
                     />
                   </Show>
                   <button

+ 0 - 4
packages/ui/src/components/message-part.css

@@ -40,10 +40,6 @@
       border-color: var(--border-strong-base);
     }
 
-    &[data-clickable="true"] {
-      cursor: pointer;
-    }
-
     &[data-type="image"] {
       width: 48px;
       height: 48px;

+ 0 - 1
packages/ui/src/components/message-part.tsx

@@ -327,7 +327,6 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
               <div
                 data-slot="user-message-attachment"
                 data-type={file.mime.startsWith("image/") ? "image" : "file"}
-                data-clickable={file.mime.startsWith("image/") && !!file.url}
                 onClick={() => {
                   if (file.mime.startsWith("image/") && file.url) {
                     openImagePreview(file.url, file.filename)