webui: invert diff view layout and improve file selector behavior

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s5b7c42b431634f10k
diff --git a/webui/src/web-components/sketch-diff2-view.ts b/webui/src/web-components/sketch-diff2-view.ts
index 72be0aa..f20dd57 100644
--- a/webui/src/web-components/sketch-diff2-view.ts
+++ b/webui/src/web-components/sketch-diff2-view.ts
@@ -212,6 +212,16 @@
       box-shadow: 0 0 0 2px var(--accent-color-light, rgba(0, 122, 204, 0.2));
     }
 
+    .file-selector:disabled {
+      background-color: var(--background-disabled, #f5f5f5);
+      color: var(--text-disabled, #999);
+      cursor: not-allowed;
+    }
+
+    .spacer {
+      flex: 1;
+    }
+
     sketch-diff-range-picker {
       flex: 1;
       min-width: 400px; /* Ensure minimum width for range picker */
@@ -550,11 +560,12 @@
       <div class="controls">
         <div class="controls-container">
           <div class="range-row">
+            ${this.renderFileSelector()}
+            <div class="spacer"></div>
             <sketch-diff-range-picker
               .gitService="${this.gitService}"
               @range-change="${this.handleRangeChange}"
             ></sketch-diff-range-picker>
-            ${this.renderFileSelector()}
           </div>
         </div>
       </div>
@@ -566,17 +577,16 @@
   }
 
   renderFileSelector() {
-    if (this.files.length === 0) {
-      return html``;
-    }
-
+    const fileCount = this.files.length;
+    
     return html`
       <select
         class="file-selector"
         .value="${this.selectedFile}"
         @change="${this.handleFileSelection}"
+        ?disabled="${fileCount === 0}"
       >
-        <option value="">All files (${this.files.length})</option>
+        <option value="">All files (${fileCount})</option>
         ${this.files.map(
           (file) => html`
             <option value="${file.path}">