Просмотр исходного кода

fix(app): better text selection

Adam 1 месяц назад
Родитель
Сommit
e53192889c

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

@@ -1321,6 +1321,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
             onInput={handleInput}
             onKeyDown={handleKeyDown}
             classList={{
+              "select-text": true,
               "w-full px-5 py-3 pr-12 text-14-regular text-text-strong focus:outline-none whitespace-pre-wrap": true,
               "[&_[data-type=file]]:text-icon-info-active": true,
               "font-mono!": store.mode === "shell",

+ 1 - 0
packages/app/src/components/terminal.tsx

@@ -233,6 +233,7 @@ export const Terminal = (props: TerminalProps) => {
       style={{ "background-color": terminalColors().background }}
       classList={{
         ...(local.classList ?? {}),
+        "select-text": true,
         "size-full px-6 py-3 font-mono": true,
         [local.class ?? ""]: !!local.class,
       }}

+ 1 - 1
packages/app/src/pages/layout.tsx

@@ -1015,7 +1015,7 @@ export default function Layout(props: ParentProps) {
   }
 
   return (
-    <div class="relative flex-1 min-h-0 flex flex-col">
+    <div class="relative flex-1 min-h-0 flex flex-col select-none [&_input]:select-text [&_textarea]:select-text [&_[contenteditable]]:select-text">
       <Header
         navigateToProject={navigateToProject}
         navigateToSession={navigateToSession}

+ 3 - 3
packages/app/src/pages/session.tsx

@@ -858,7 +858,7 @@ export default function Page() {
                   </Tabs.List>
                 </div>
                 <Show when={diffs().length}>
-                  <Tabs.Content value="review" class="select-text flex flex-col h-full overflow-hidden contain-strict">
+                  <Tabs.Content value="review" class="flex flex-col h-full overflow-hidden contain-strict">
                     <div class="relative pt-2 flex-1 min-h-0 overflow-hidden">
                       <SessionReview
                         classes={{
@@ -884,7 +884,7 @@ export default function Page() {
                       },
                     )
                     return (
-                      <Tabs.Content value={tab} class="select-text mt-3">
+                      <Tabs.Content value={tab} class="mt-3">
                         <Switch>
                           <Match when={file()}>
                             {(f) => (
@@ -896,7 +896,7 @@ export default function Page() {
                                   cacheKey: checksum(f().content?.content ?? ""),
                                 }}
                                 overflow="scroll"
-                                class="pb-40"
+                                class="select-text pb-40"
                               />
                             )}
                           </Match>

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

@@ -377,6 +377,18 @@
   }
 }
 
+[data-component="user-message"] [data-slot="user-message-text"],
+[data-component="text-part"],
+[data-component="reasoning-part"],
+[data-component="tool-error"],
+[data-component="tool-output"],
+[data-component="edit-content"],
+[data-component="write-content"],
+[data-component="todos"],
+[data-component="diagnostics"] {
+  user-select: text;
+}
+
 [data-component="tool-part-wrapper"] {
   width: 100%;
 

+ 4 - 0
packages/ui/src/components/session-review.css

@@ -65,6 +65,10 @@
     }
   }
 
+  [data-slot="accordion-content"] {
+    user-select: text;
+  }
+
   [data-slot="session-review-trigger-content"] {
     display: flex;
     align-items: center;

+ 5 - 0
packages/ui/src/components/session-turn.css

@@ -116,6 +116,11 @@
     color: var(--text-weak);
   }
 
+  [data-slot="session-turn-markdown"],
+  [data-slot="session-turn-accordion"] [data-slot="accordion-content"] {
+    user-select: text;
+  }
+
   [data-slot="session-turn-markdown"] {
     &[data-diffs="true"] {
       font-size: 15px;