From 45aab5441a871e763692a7e9d14b88f77b1fe2c4 Mon Sep 17 00:00:00 2001 From: bastndev Date: Tue, 7 Oct 2025 22:48:56 -0500 Subject: [PATCH 01/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[UPDATE]=20Remove?= =?UTF-8?q?=20sponsor=20links=20from=20README.md=20while=20retaining=20spo?= =?UTF-8?q?nsor=20images=20and=20names.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a91aeb5..ebc961c 100644 --- a/README.md +++ b/README.md @@ -119,16 +119,12 @@ If you want to contribute, check the guidelines: [[>_α… ]](https://github.com/ba
- - Sponsor 1 -

Lams

-
+ Sponsor 1 +

Lams

- - Sponsor 2 -

M

-
+ Sponsor 2 +

M

From 74c2141acd59ace64d6b5224391c41dda865009e Mon Sep 17 00:00:00 2001 From: bastndev Date: Tue, 7 Oct 2025 22:54:12 -0500 Subject: [PATCH 02/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[UPDATE]=20Update?= =?UTF-8?q?=20author=20link=20and=20formatting=20in=20README.md;=20adjust?= =?UTF-8?q?=20sponsor=20section=20layout.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ebc961c..312b763 100644 --- a/README.md +++ b/README.md @@ -100,10 +100,10 @@ ext install bastndev.compare-code If you want to contribute, check the guidelines: [[>_α… ]](https://github.com/bastndev/Compare-Code/blob/main/CONTRIBUTING.md). -| [![bastndev](https://github.com/bastndev.png?size=100)](https://www.bastndev.com) | -| :-------------------------------------------------------------------------------: | -| **[Gohit Bastian](https://github.com/bastndev)** | -| _Creator & Maintainer_ | +| ![bastndev](https://github.com/bastndev.png?size=100) | +| :---------------------------------------------------: | +| **[Gohit Bastian](https://www.bastndev.com)** | +| _Creator & Maintainer_ | ## About Me @@ -113,10 +113,9 @@ If you want to contribute, check the guidelines: [[>_α… ]](https://github.com/ba
-## Sponsors +## Sponsors -
- +
Sponsor 1 @@ -146,7 +145,7 @@ If you want to contribute, check the guidelines: [[>_α… ]](https://github.com/ba
-

Made with 🧑 by @bastndev

+

Made with 🧑 by @bastndev

**Enjoy πŸŽ‰ (Compare Code) is now installed!** *If you find any bugs or have feedback, please [open an issue](https://github.com/bastndev/Compare-Code/issues)* From fadab687ad09463ac3eff530495c2fc6e5603103 Mon Sep 17 00:00:00 2001 From: bastndev Date: Wed, 8 Oct 2025 22:32:49 -0500 Subject: [PATCH 03/18] =?UTF-8?q?=F0=9F=94=8D=EF=B8=8F=20[ADD]=20search=20?= =?UTF-8?q?and=20dropdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/display/dropdown.ts | 320 ++++++++++++++++++ src/ui/webview/styles/main.css | 2 + src/ui/webview/styles/main.css.map | 2 +- .../webview/styles/scss/_compare-panel.scss | 7 + src/ui/webview/view/index.html | 18 +- 5 files changed, 344 insertions(+), 5 deletions(-) create mode 100644 src/services/display/dropdown.ts diff --git a/src/services/display/dropdown.ts b/src/services/display/dropdown.ts new file mode 100644 index 0000000..befbd89 --- /dev/null +++ b/src/services/display/dropdown.ts @@ -0,0 +1,320 @@ +// ====================================== +// FILE SELECTOR DROPDOWN | MARK: DROPDOWN +// ====================================== + +declare const acquireVsCodeApi: any; +const vscode = acquireVsCodeApi(); + +interface FileItem { + name: string; + path: string; + relativePath: string; + type: 'file' | 'directory'; +} + +/** + * File Selector Dropdown Manager + */ +export class FileDropdownManager { + private dropdowns: Map = new Map(); + private currentFiles: FileItem[] = []; + private filteredFiles: FileItem[] = []; + + constructor() { + this.initializeDropdowns(); + this.setupMessageListener(); + } + + // ====================================== + // INITIALIZATION | MARK: INIT + // ====================================== + + private initializeDropdowns(): void { + const fileSelectors = document.querySelectorAll('.file-selector'); + + fileSelectors.forEach((selector) => { + const side = selector.getAttribute('data-side') as string; + const button = selector.querySelector( + '.file-dropdown-btn' + ) as HTMLElement; + const menu = selector.querySelector('.file-dropdown-menu') as HTMLElement; + const searchInput = selector.querySelector( + '.file-search input' + ) as HTMLInputElement; + + if (button && menu && side) { + this.dropdowns.set(side, selector as HTMLElement); + + // Button click handler + button.addEventListener('click', (e) => { + e.stopPropagation(); + this.toggleDropdown(side); + }); + + // Search input handler + if (searchInput) { + searchInput.addEventListener('input', (e) => { + const query = (e.target as HTMLInputElement).value; + this.filterFiles(query, side); + }); + } + + // Close dropdown when clicking outside + document.addEventListener('click', (e) => { + if (!selector.contains(e.target as Node)) { + this.closeDropdown(side); + } + }); + } + }); + } + + private setupMessageListener(): void { + window.addEventListener('message', (event) => { + const { type, data } = event.data; + + switch (type) { + case 'workspaceFiles': + this.handleWorkspaceFiles(data.files, data.side); + break; + case 'fileContent': + this.handleFileContent(data.content, data.side, data.fileName); + break; + } + }); + } + + // ====================================== + // DROPDOWN CONTROL | MARK: CONTROL + // ====================================== + + private toggleDropdown(side: string): void { + const dropdown = this.dropdowns.get(side); + if (!dropdown) { + return; + } + + const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; + + if (menu.classList.contains('show')) { + this.closeDropdown(side); + } else { + this.openDropdown(side); + } + } + + private openDropdown(side: string): void { + // Close other dropdowns first + this.closeAllDropdowns(); + + const dropdown = this.dropdowns.get(side); + if (!dropdown) { + return; + } + + const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; + const button = dropdown.querySelector('.file-dropdown-btn') as HTMLElement; + + // Request files from VS Code + this.requestWorkspaceFiles(side); + + // Show dropdown + menu.classList.add('show'); + button.classList.add('open'); + + // Focus search input + const searchInput = dropdown.querySelector( + '.file-search input' + ) as HTMLInputElement; + if (searchInput) { + setTimeout(() => searchInput.focus(), 100); + } + } + + private closeDropdown(side: string): void { + const dropdown = this.dropdowns.get(side); + if (!dropdown) { + return; + } + + const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; + const button = dropdown.querySelector('.file-dropdown-btn') as HTMLElement; + + menu.classList.remove('show'); + button.classList.remove('open'); + + // Clear search + const searchInput = dropdown.querySelector( + '.file-search input' + ) as HTMLInputElement; + if (searchInput) { + searchInput.value = ''; + } + } + + private closeAllDropdowns(): void { + this.dropdowns.forEach((_, side) => { + this.closeDropdown(side); + }); + } + + // ====================================== + // FILE OPERATIONS | MARK: FILES + // ====================================== + + private requestWorkspaceFiles(side: string): void { + vscode.postMessage({ + command: 'getWorkspaceFiles', + side: side, + }); + } + + private handleWorkspaceFiles(files: FileItem[], side: string): void { + this.currentFiles = files; + this.filteredFiles = [...files]; + this.renderFileList(side); + } + + private filterFiles(query: string, side: string): void { + if (!query.trim()) { + this.filteredFiles = [...this.currentFiles]; + } else { + const lowerQuery = query.toLowerCase(); + this.filteredFiles = this.currentFiles.filter( + (file) => + file.name.toLowerCase().includes(lowerQuery) || + file.relativePath.toLowerCase().includes(lowerQuery) + ); + } + this.renderFileList(side); + } + + private renderFileList(side: string): void { + const dropdown = this.dropdowns.get(side); + if (!dropdown) { + return; + } + + const fileList = dropdown.querySelector('.file-list') as HTMLElement; + if (!fileList) { + return; + } + + if (this.filteredFiles.length === 0) { + fileList.innerHTML = '
No files found
'; + return; + } + + const html = this.filteredFiles + .map((file) => { + const icon = this.getFileIcon(file); + return ` +
+ ${icon} + ${file.name} + ${this.truncatePath(file.relativePath)} +
+ `; + }) + .join(''); + + fileList.innerHTML = html; + + // Add click handlers + fileList.querySelectorAll('.file-item').forEach((item) => { + item.addEventListener('click', () => { + const path = item.getAttribute('data-path'); + const itemSide = item.getAttribute('data-side'); + if (path && itemSide) { + this.selectFile(path, itemSide); + } + }); + }); + } + + private selectFile(filePath: string, side: string): void { + // Request file content from VS Code + vscode.postMessage({ + command: 'loadFile', + filePath: filePath, + side: side, + }); + + this.closeDropdown(side); + } + + private handleFileContent( + content: string, + side: string, + fileName: string + ): void { + // Load content into the appropriate textarea + const textareaId = side === 'left' ? 'codeInput1' : 'codeInput2'; + const textarea = document.getElementById(textareaId) as HTMLTextAreaElement; + + if (textarea) { + textarea.value = content; + textarea.dispatchEvent(new Event('input')); // Trigger any listeners + } + + // Update dropdown button text + this.updateSelectedFile(side, fileName); + } + + private updateSelectedFile(side: string, fileName: string): void { + const dropdown = this.dropdowns.get(side); + if (!dropdown) { + return; + } + + const selectedFileSpan = dropdown.querySelector( + '.selected-file' + ) as HTMLElement; + if (selectedFileSpan) { + selectedFileSpan.textContent = fileName; + selectedFileSpan.title = fileName; // Tooltip for long names + } + } + + // ====================================== + // UTILITIES | MARK: UTILS + // ====================================== + + private getFileIcon(file: FileItem): string { + if (file.type === 'directory') { + return 'πŸ“'; + } + + const ext = file.name.split('.').pop()?.toLowerCase(); + const iconMap: { [key: string]: string } = { + js: 'πŸ“„', + ts: 'πŸ“˜', + html: '🌐', + css: '🎨', + scss: '🎨', + json: 'πŸ“‹', + md: 'πŸ“', + txt: 'πŸ“„', + py: '🐍', + java: 'β˜•', + cpp: 'βš™οΈ', + c: 'βš™οΈ', + php: '🐘', + rb: 'πŸ’Ž', + go: 'οΏ½', + rs: 'πŸ¦€', + vue: 'πŸ’š', + jsx: 'βš›οΈ', + tsx: 'βš›οΈ', + }; + + return iconMap[ext || ''] || 'πŸ“„'; + } + + private truncatePath(path: string, maxLength: number = 25): string { + if (path.length <= maxLength) { + return path; + } + return '...' + path.slice(-(maxLength - 3)); + } +} diff --git a/src/ui/webview/styles/main.css b/src/ui/webview/styles/main.css index 34e1b07..f5e89f4 100644 --- a/src/ui/webview/styles/main.css +++ b/src/ui/webview/styles/main.css @@ -458,6 +458,7 @@ body { .options-panel-left { text-align: right; + display: flex; } .options-panel-left button { margin-right: 8px; @@ -465,6 +466,7 @@ body { .options-panel-right { text-align: right; + display: flex; } .options-panel-right button { margin-left: 8px; diff --git a/src/ui/webview/styles/main.css.map b/src/ui/webview/styles/main.css.map index ede5d03..6525c3e 100644 --- a/src/ui/webview/styles/main.css.map +++ b/src/ui/webview/styles/main.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;;AAEA;EACE;;;AAIJ;EACE;;AAEA;EACE;;;AAIJ;EACE;;;AAMF;AAAA;AAAA;EApDE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AAgDN;EA1DE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAgDN;EAEE;;;AAOA;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBF5DU;EE6DV,OFvDU;EEwDV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBF7EQ;;AEiFZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;ACvMJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;;;AAWF;AAAA;AAAA;EA3DE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AAuDN;EAjEE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAuDN;EAEE;;;AAOA;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBFnEU;EEoEV,OF9DU;EE+DV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBFpFQ;;AEwFZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AC9MJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file diff --git a/src/ui/webview/styles/scss/_compare-panel.scss b/src/ui/webview/styles/scss/_compare-panel.scss index aecb54c..57f5f25 100644 --- a/src/ui/webview/styles/scss/_compare-panel.scss +++ b/src/ui/webview/styles/scss/_compare-panel.scss @@ -35,6 +35,7 @@ // Panel Sections .options-panel-left { text-align: right; + display: flex; button { margin-right: 8px; @@ -43,6 +44,7 @@ .options-panel-right { text-align: right; + display: flex; button { margin-left: 8px; @@ -53,6 +55,11 @@ background-color: transparent } +// ====================================== +// File Selector Dropdown | MARK: Dropdown +// ====================================== + + // ====================================== // Action Buttons | MARK: buttons // ====================================== diff --git a/src/ui/webview/view/index.html b/src/ui/webview/view/index.html index d7544e6..3d47772 100644 --- a/src/ui/webview/view/index.html +++ b/src/ui/webview/view/index.html @@ -70,8 +70,13 @@ ================================================== -->
- -
+ +
+ + +
+
@@ -95,11 +95,11 @@
- -
- -
From 9dcea94e253901301f3b5e4231cbf1e2a752b5f1 Mon Sep 17 00:00:00 2001 From: bastndev Date: Thu, 9 Oct 2025 22:03:54 -0500 Subject: [PATCH 05/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[BETTER]=20UI=20o?= =?UTF-8?q?f=20container-sd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ui/webview/styles/main.css | 102 +++++++++++++-- src/ui/webview/styles/main.css.map | 2 +- .../webview/styles/scss/_compare-panel.scss | 118 ++++++++++++++++-- src/ui/webview/view/index.html | 4 + 4 files changed, 202 insertions(+), 24 deletions(-) diff --git a/src/ui/webview/styles/main.css b/src/ui/webview/styles/main.css index 9f02211..34986e1 100644 --- a/src/ui/webview/styles/main.css +++ b/src/ui/webview/styles/main.css @@ -458,29 +458,116 @@ body { .options-panel-left, .options-panel-right { width: 100%; - display: flex; + display: grid; + grid-template-columns: 1fr auto 1fr; align-items: center; - justify-content: space-between; - padding: 0 10px; + padding: 0 15px; + gap: 15px; } .options-panel-left .container-sd, .options-panel-right .container-sd { - flex: 1; + grid-column: 2; display: flex; justify-content: center; align-items: center; + max-width: 280px; } .options-panel-left .copy-clear, .options-panel-right .copy-clear { + grid-column: 3; display: flex; align-items: center; - margin-left: auto; + justify-content: flex-end; + margin-right: 10px; + gap: 10px; } .future { background-color: transparent; } +.container-sd { + display: flex; + align-items: center; + gap: 6px; + background-color: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 5px; + padding: 4px 10px; + height: 28px; + transition: all 0.2s ease; +} +.container-sd:hover { + background-color: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.2); +} +.container-sd:focus-within { + background-color: rgba(255, 255, 255, 0.1); + border-color: #007acc; + box-shadow: 0 0 0 1px #007acc; +} +.container-sd .search-icon { + font-size: 13px; + opacity: 0.6; + user-select: none; + transition: opacity 0.2s ease; + line-height: 1; +} +.container-sd .search-input { + flex: 1; + background: transparent; + border: none; + outline: none; + color: white; + font-size: 12px; + min-width: 80px; + max-width: 150px; +} +.container-sd .search-input::placeholder { + color: rgba(255, 255, 255, 0.4); +} +.container-sd .search-input:focus::placeholder { + color: rgba(255, 255, 255, 0.3); +} +.container-sd .separator { + color: rgba(255, 255, 255, 0.2); + font-size: 13px; + user-select: none; + margin: 0 1px; + line-height: 1; +} +.container-sd .file-search-btn { + background: transparent; + border: none; + cursor: pointer; + padding: 2px 4px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3px; + transition: all 0.2s ease; + line-height: 1; +} +.container-sd .file-search-btn span { + color: rgba(255, 255, 255, 0.6); + font-size: 11px; + transition: all 0.2s ease; + line-height: 1; +} +.container-sd .file-search-btn:hover { + background-color: rgba(255, 255, 255, 0.1); +} +.container-sd .file-search-btn:hover span { + color: rgba(255, 255, 255, 0.9); +} +.container-sd .file-search-btn:active { + background-color: rgba(255, 255, 255, 0.15); + transform: scale(0.95); +} +.container-sd:focus-within .search-icon { + opacity: 0.9; +} + .copy-code, .clear-code, .download-code { @@ -501,11 +588,6 @@ body { opacity: 1; } -.copy-clear { - display: flex; - align-items: center; - gap: 8px; -} .copy-clear button { background: none; cursor: pointer; diff --git a/src/ui/webview/styles/main.css.map b/src/ui/webview/styles/main.css.map index cf9a34f..e7bd621 100644 --- a/src/ui/webview/styles/main.css.map +++ b/src/ui/webview/styles/main.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;;;AAKJ;EACE;;;AAaF;AAAA;AAAA;EAlEE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AA8DN;EACE;EACA;EACA;;AAEA;EA7EA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AA2EJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBF9EU;EE+EV,OFzEU;EE0EV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBF/FQ;;AEmGZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;ACzNJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAMF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAIJ;EACE;;;AAOJ;AAAA;AAAA;EAlKE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AA+JJ;EAzKA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AAuKJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBF1KU;EE2KV,OFrKU;EEsKV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBF3LQ;;AE+LZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;ACrTJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file diff --git a/src/ui/webview/styles/scss/_compare-panel.scss b/src/ui/webview/styles/scss/_compare-panel.scss index cd08114..48b5d33 100644 --- a/src/ui/webview/styles/scss/_compare-panel.scss +++ b/src/ui/webview/styles/scss/_compare-panel.scss @@ -36,22 +36,27 @@ .options-panel-left, .options-panel-right { width: 100%; - display: flex; + display: grid; + grid-template-columns: 1fr auto 1fr; align-items: center; - justify-content: space-between; - padding: 0 10px; + padding: 0 15px; + gap: 15px; .container-sd { - flex: 1; + grid-column: 2; display: flex; justify-content: center; align-items: center; + max-width: 280px; } .copy-clear { + grid-column: 3; display: flex; align-items: center; - margin-left: auto; + justify-content: flex-end; + margin-right: 10px; + gap: 10px; } } @@ -61,11 +66,102 @@ } // ====================================== -// File Selector Dropdown | MARK: Dropdown +// File Selector Dropdown | MARK: Search-sd // ====================================== -// .search-container { -// background-color: rebeccapurple; -// } +.container-sd { + display: flex; + align-items: center; + gap: 6px; + background-color: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 5px; + padding: 4px 10px; + height: 28px; + transition: all 0.2s ease; + + &:hover { + background-color: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.2); + } + + &:focus-within { + background-color: rgba(255, 255, 255, 0.1); + border-color: #007acc; + box-shadow: 0 0 0 1px #007acc; + } + + .search-icon { + font-size: 13px; + opacity: 0.6; + user-select: none; + transition: opacity 0.2s ease; + line-height: 1; + } + + .search-input { + flex: 1; + background: transparent; + border: none; + outline: none; + color: white; + font-size: 12px; + min-width: 80px; + max-width: 150px; + + &::placeholder { + color: rgba(255, 255, 255, 0.4); + } + + &:focus::placeholder { + color: rgba(255, 255, 255, 0.3); + } + } + + .separator { + color: rgba(255, 255, 255, 0.2); + font-size: 13px; + user-select: none; + margin: 0 1px; + line-height: 1; + } + + .file-search-btn { + background: transparent; + border: none; + cursor: pointer; + padding: 2px 4px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 3px; + transition: all 0.2s ease; + line-height: 1; + + span { + color: rgba(255, 255, 255, 0.6); + font-size: 11px; + transition: all 0.2s ease; + line-height: 1; + } + + &:hover { + background-color: rgba(255, 255, 255, 0.1); + + span { + color: rgba(255, 255, 255, 0.9); + } + } + + &:active { + background-color: rgba(255, 255, 255, 0.15); + transform: scale(0.95); + } + } + + &:focus-within .search-icon { + opacity: 0.9; + } +} // ====================================== // Action Buttons | MARK: buttons @@ -77,10 +173,6 @@ } .copy-clear { - display: flex; - align-items: center; - gap: 8px; - button { @include button-icon-mixin; } diff --git a/src/ui/webview/view/index.html b/src/ui/webview/view/index.html index edf7062..33098c7 100644 --- a/src/ui/webview/view/index.html +++ b/src/ui/webview/view/index.html @@ -72,7 +72,9 @@
+ πŸ” + | @@ -97,7 +99,9 @@
+ πŸ” + | From 679219b4c32138d9b53f855390e7ae47a6a10db7 Mon Sep 17 00:00:00 2001 From: bastndev Date: Thu, 9 Oct 2025 22:18:06 -0500 Subject: [PATCH 06/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[REFACTOR]=20ui?= =?UTF-8?q?=20search=20and=20delete=20focus=20border?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ui/webview/styles/main.css | 43 ++++++++++-------- src/ui/webview/styles/main.css.map | 2 +- .../webview/styles/scss/_compare-panel.scss | 45 +++++++++++-------- 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/src/ui/webview/styles/main.css b/src/ui/webview/styles/main.css index 34986e1..374d4be 100644 --- a/src/ui/webview/styles/main.css +++ b/src/ui/webview/styles/main.css @@ -446,7 +446,7 @@ body { ==================================================== */ .compare-panel { background-color: var(--vscode-input-background); - color: white; + color: var(--vscode-foreground); min-height: 38px; width: 100%; display: grid; @@ -490,25 +490,26 @@ body { display: flex; align-items: center; gap: 6px; - background-color: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); + background-color: var(--vscode-input-background); + border: 1px solid var(--vscode-input-border); border-radius: 5px; padding: 4px 10px; height: 28px; transition: all 0.2s ease; } .container-sd:hover { - background-color: rgba(255, 255, 255, 0.08); - border-color: rgba(255, 255, 255, 0.2); + background-color: var(--vscode-list-hoverBackground); + border-color: var(--vscode-widget-border); } .container-sd:focus-within { - background-color: rgba(255, 255, 255, 0.1); - border-color: #007acc; - box-shadow: 0 0 0 1px #007acc; + background-color: var(--vscode-input-background); + border-color: var(--vscode-input-border); + box-shadow: none; } .container-sd .search-icon { font-size: 13px; - opacity: 0.6; + opacity: 0.7; + color: var(--vscode-descriptionForeground); user-select: none; transition: opacity 0.2s ease; line-height: 1; @@ -518,19 +519,21 @@ body { background: transparent; border: none; outline: none; - color: white; + color: var(--vscode-foreground); font-size: 12px; min-width: 80px; max-width: 150px; } .container-sd .search-input::placeholder { - color: rgba(255, 255, 255, 0.4); + color: var(--vscode-descriptionForeground); + opacity: 0.6; } .container-sd .search-input:focus::placeholder { - color: rgba(255, 255, 255, 0.3); + opacity: 0.5; } .container-sd .separator { - color: rgba(255, 255, 255, 0.2); + color: var(--vscode-widget-border); + opacity: 0.5; font-size: 13px; user-select: none; margin: 0 1px; @@ -549,23 +552,27 @@ body { line-height: 1; } .container-sd .file-search-btn span { - color: rgba(255, 255, 255, 0.6); + color: var(--vscode-descriptionForeground); + opacity: 0.8; font-size: 11px; transition: all 0.2s ease; line-height: 1; } .container-sd .file-search-btn:hover { - background-color: rgba(255, 255, 255, 0.1); + background-color: var(--vscode-list-hoverBackground); } .container-sd .file-search-btn:hover span { - color: rgba(255, 255, 255, 0.9); + color: var(--vscode-foreground); + opacity: 1; } .container-sd .file-search-btn:active { - background-color: rgba(255, 255, 255, 0.15); + background-color: var(--vscode-list-hoverBackground); + opacity: 0.8; transform: scale(0.95); } .container-sd:focus-within .search-icon { - opacity: 0.9; + opacity: 1; + color: var(--vscode-foreground); } .copy-code, diff --git a/src/ui/webview/styles/main.css.map b/src/ui/webview/styles/main.css.map index e7bd621..f9c5eac 100644 --- a/src/ui/webview/styles/main.css.map +++ b/src/ui/webview/styles/main.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAMF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAIJ;EACE;;;AAOJ;AAAA;AAAA;EAlKE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AA+JJ;EAzKA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AAuKJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBF1KU;EE2KV,OFrKU;EEsKV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBF3LQ;;AE+LZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;ACrTJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT,OFpBG;EEqBH;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAMF;EACE;EACA;EACA;EACA,kBFvDS;EEwDT;EACA;EACA;EACA;EACA;;AAEA;EACE,kBFlEY;EEmEZ,cF7EK;;AEgFP;EACE,kBFpEO;EEqEP,cFpEW;EEqEX;;AAGF;EACE;EACA;EACA,OF1FO;EE2FP;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,OFtGC;EEuGD;EACA;EACA;;AAEA;EACE,OF3GK;EE4GL;;AAGF;EACE;;AAIJ;EACE,OFpHK;EEqHL;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eF/Ee;EEgFf;EACA;;AAEA;EACE,OF1IK;EE2IL;EACA;EACA;EACA;;AAGF;EACE,kBFvIU;;AEyIV;EACE,OFtJH;EEuJG;;AAIJ;EACE,kBFhJU;EEiJV;EACA;;AAIJ;EACE;EACA,OFpKC;;;AE2KL;AAAA;AAAA;EAzKE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AAsKJ;EAhLA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AA8KJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBFjLU;EEkLV,OF5KU;EE6KV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBFlMQ;;AEsMZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AC5TJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file diff --git a/src/ui/webview/styles/scss/_compare-panel.scss b/src/ui/webview/styles/scss/_compare-panel.scss index 48b5d33..8927122 100644 --- a/src/ui/webview/styles/scss/_compare-panel.scss +++ b/src/ui/webview/styles/scss/_compare-panel.scss @@ -22,7 +22,7 @@ // ============= Main Panel ============= .compare-panel { background-color: $input-bg; - color: white; + color: $fg; min-height: 38px; width: 100%; display: grid; @@ -72,27 +72,28 @@ display: flex; align-items: center; gap: 6px; - background-color: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); + background-color: $input-bg; + border: 1px solid $input-border; border-radius: 5px; padding: 4px 10px; height: 28px; transition: all 0.2s ease; &:hover { - background-color: rgba(255, 255, 255, 0.08); - border-color: rgba(255, 255, 255, 0.2); + background-color: $list-hover-bg; + border-color: $border; } &:focus-within { - background-color: rgba(255, 255, 255, 0.1); - border-color: #007acc; - box-shadow: 0 0 0 1px #007acc; + background-color: $input-bg; + border-color: $input-border; + box-shadow: none; } .search-icon { font-size: 13px; - opacity: 0.6; + opacity: 0.7; + color: $fg-muted; user-select: none; transition: opacity 0.2s ease; line-height: 1; @@ -103,22 +104,24 @@ background: transparent; border: none; outline: none; - color: white; + color: $fg; font-size: 12px; min-width: 80px; max-width: 150px; &::placeholder { - color: rgba(255, 255, 255, 0.4); + color: $fg-muted; + opacity: 0.6; } &:focus::placeholder { - color: rgba(255, 255, 255, 0.3); + opacity: 0.5; } } .separator { - color: rgba(255, 255, 255, 0.2); + color: $border; + opacity: 0.5; font-size: 13px; user-select: none; margin: 0 1px; @@ -133,33 +136,37 @@ display: flex; align-items: center; justify-content: center; - border-radius: 3px; + border-radius: $border-radius-sm; transition: all 0.2s ease; line-height: 1; span { - color: rgba(255, 255, 255, 0.6); + color: $fg-muted; + opacity: 0.8; font-size: 11px; transition: all 0.2s ease; line-height: 1; } &:hover { - background-color: rgba(255, 255, 255, 0.1); + background-color: $list-hover-bg; span { - color: rgba(255, 255, 255, 0.9); + color: $fg; + opacity: 1; } } &:active { - background-color: rgba(255, 255, 255, 0.15); + background-color: $list-hover-bg; + opacity: 0.8; transform: scale(0.95); } } &:focus-within .search-icon { - opacity: 0.9; + opacity: 1; + color: $fg; } } From 3a8f951e9f8bb547232513014422eed1747e5efa Mon Sep 17 00:00:00 2001 From: bastndev Date: Fri, 10 Oct 2025 22:48:01 -0500 Subject: [PATCH 07/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[ADD]=20Implement?= =?UTF-8?q?=20search=20dropdown=20and=20suggestions=20in=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/display/dropdown.ts | 320 ------------------ src/services/display/search-down/dropdown.ts | 0 .../display/search-down/search-manager.ts | 0 .../webview/styles/scss/_compare-panel.scss | 4 + src/ui/webview/view/index.html | 12 +- 5 files changed, 12 insertions(+), 324 deletions(-) delete mode 100644 src/services/display/dropdown.ts create mode 100644 src/services/display/search-down/dropdown.ts create mode 100644 src/services/display/search-down/search-manager.ts diff --git a/src/services/display/dropdown.ts b/src/services/display/dropdown.ts deleted file mode 100644 index befbd89..0000000 --- a/src/services/display/dropdown.ts +++ /dev/null @@ -1,320 +0,0 @@ -// ====================================== -// FILE SELECTOR DROPDOWN | MARK: DROPDOWN -// ====================================== - -declare const acquireVsCodeApi: any; -const vscode = acquireVsCodeApi(); - -interface FileItem { - name: string; - path: string; - relativePath: string; - type: 'file' | 'directory'; -} - -/** - * File Selector Dropdown Manager - */ -export class FileDropdownManager { - private dropdowns: Map = new Map(); - private currentFiles: FileItem[] = []; - private filteredFiles: FileItem[] = []; - - constructor() { - this.initializeDropdowns(); - this.setupMessageListener(); - } - - // ====================================== - // INITIALIZATION | MARK: INIT - // ====================================== - - private initializeDropdowns(): void { - const fileSelectors = document.querySelectorAll('.file-selector'); - - fileSelectors.forEach((selector) => { - const side = selector.getAttribute('data-side') as string; - const button = selector.querySelector( - '.file-dropdown-btn' - ) as HTMLElement; - const menu = selector.querySelector('.file-dropdown-menu') as HTMLElement; - const searchInput = selector.querySelector( - '.file-search input' - ) as HTMLInputElement; - - if (button && menu && side) { - this.dropdowns.set(side, selector as HTMLElement); - - // Button click handler - button.addEventListener('click', (e) => { - e.stopPropagation(); - this.toggleDropdown(side); - }); - - // Search input handler - if (searchInput) { - searchInput.addEventListener('input', (e) => { - const query = (e.target as HTMLInputElement).value; - this.filterFiles(query, side); - }); - } - - // Close dropdown when clicking outside - document.addEventListener('click', (e) => { - if (!selector.contains(e.target as Node)) { - this.closeDropdown(side); - } - }); - } - }); - } - - private setupMessageListener(): void { - window.addEventListener('message', (event) => { - const { type, data } = event.data; - - switch (type) { - case 'workspaceFiles': - this.handleWorkspaceFiles(data.files, data.side); - break; - case 'fileContent': - this.handleFileContent(data.content, data.side, data.fileName); - break; - } - }); - } - - // ====================================== - // DROPDOWN CONTROL | MARK: CONTROL - // ====================================== - - private toggleDropdown(side: string): void { - const dropdown = this.dropdowns.get(side); - if (!dropdown) { - return; - } - - const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; - - if (menu.classList.contains('show')) { - this.closeDropdown(side); - } else { - this.openDropdown(side); - } - } - - private openDropdown(side: string): void { - // Close other dropdowns first - this.closeAllDropdowns(); - - const dropdown = this.dropdowns.get(side); - if (!dropdown) { - return; - } - - const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; - const button = dropdown.querySelector('.file-dropdown-btn') as HTMLElement; - - // Request files from VS Code - this.requestWorkspaceFiles(side); - - // Show dropdown - menu.classList.add('show'); - button.classList.add('open'); - - // Focus search input - const searchInput = dropdown.querySelector( - '.file-search input' - ) as HTMLInputElement; - if (searchInput) { - setTimeout(() => searchInput.focus(), 100); - } - } - - private closeDropdown(side: string): void { - const dropdown = this.dropdowns.get(side); - if (!dropdown) { - return; - } - - const menu = dropdown.querySelector('.file-dropdown-menu') as HTMLElement; - const button = dropdown.querySelector('.file-dropdown-btn') as HTMLElement; - - menu.classList.remove('show'); - button.classList.remove('open'); - - // Clear search - const searchInput = dropdown.querySelector( - '.file-search input' - ) as HTMLInputElement; - if (searchInput) { - searchInput.value = ''; - } - } - - private closeAllDropdowns(): void { - this.dropdowns.forEach((_, side) => { - this.closeDropdown(side); - }); - } - - // ====================================== - // FILE OPERATIONS | MARK: FILES - // ====================================== - - private requestWorkspaceFiles(side: string): void { - vscode.postMessage({ - command: 'getWorkspaceFiles', - side: side, - }); - } - - private handleWorkspaceFiles(files: FileItem[], side: string): void { - this.currentFiles = files; - this.filteredFiles = [...files]; - this.renderFileList(side); - } - - private filterFiles(query: string, side: string): void { - if (!query.trim()) { - this.filteredFiles = [...this.currentFiles]; - } else { - const lowerQuery = query.toLowerCase(); - this.filteredFiles = this.currentFiles.filter( - (file) => - file.name.toLowerCase().includes(lowerQuery) || - file.relativePath.toLowerCase().includes(lowerQuery) - ); - } - this.renderFileList(side); - } - - private renderFileList(side: string): void { - const dropdown = this.dropdowns.get(side); - if (!dropdown) { - return; - } - - const fileList = dropdown.querySelector('.file-list') as HTMLElement; - if (!fileList) { - return; - } - - if (this.filteredFiles.length === 0) { - fileList.innerHTML = '
No files found
'; - return; - } - - const html = this.filteredFiles - .map((file) => { - const icon = this.getFileIcon(file); - return ` -
- ${icon} - ${file.name} - ${this.truncatePath(file.relativePath)} -
- `; - }) - .join(''); - - fileList.innerHTML = html; - - // Add click handlers - fileList.querySelectorAll('.file-item').forEach((item) => { - item.addEventListener('click', () => { - const path = item.getAttribute('data-path'); - const itemSide = item.getAttribute('data-side'); - if (path && itemSide) { - this.selectFile(path, itemSide); - } - }); - }); - } - - private selectFile(filePath: string, side: string): void { - // Request file content from VS Code - vscode.postMessage({ - command: 'loadFile', - filePath: filePath, - side: side, - }); - - this.closeDropdown(side); - } - - private handleFileContent( - content: string, - side: string, - fileName: string - ): void { - // Load content into the appropriate textarea - const textareaId = side === 'left' ? 'codeInput1' : 'codeInput2'; - const textarea = document.getElementById(textareaId) as HTMLTextAreaElement; - - if (textarea) { - textarea.value = content; - textarea.dispatchEvent(new Event('input')); // Trigger any listeners - } - - // Update dropdown button text - this.updateSelectedFile(side, fileName); - } - - private updateSelectedFile(side: string, fileName: string): void { - const dropdown = this.dropdowns.get(side); - if (!dropdown) { - return; - } - - const selectedFileSpan = dropdown.querySelector( - '.selected-file' - ) as HTMLElement; - if (selectedFileSpan) { - selectedFileSpan.textContent = fileName; - selectedFileSpan.title = fileName; // Tooltip for long names - } - } - - // ====================================== - // UTILITIES | MARK: UTILS - // ====================================== - - private getFileIcon(file: FileItem): string { - if (file.type === 'directory') { - return 'πŸ“'; - } - - const ext = file.name.split('.').pop()?.toLowerCase(); - const iconMap: { [key: string]: string } = { - js: 'πŸ“„', - ts: 'πŸ“˜', - html: '🌐', - css: '🎨', - scss: '🎨', - json: 'πŸ“‹', - md: 'πŸ“', - txt: 'πŸ“„', - py: '🐍', - java: 'β˜•', - cpp: 'βš™οΈ', - c: 'βš™οΈ', - php: '🐘', - rb: 'πŸ’Ž', - go: 'οΏ½', - rs: 'πŸ¦€', - vue: 'πŸ’š', - jsx: 'βš›οΈ', - tsx: 'βš›οΈ', - }; - - return iconMap[ext || ''] || 'πŸ“„'; - } - - private truncatePath(path: string, maxLength: number = 25): string { - if (path.length <= maxLength) { - return path; - } - return '...' + path.slice(-(maxLength - 3)); - } -} diff --git a/src/services/display/search-down/dropdown.ts b/src/services/display/search-down/dropdown.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/services/display/search-down/search-manager.ts b/src/services/display/search-down/search-manager.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/ui/webview/styles/scss/_compare-panel.scss b/src/ui/webview/styles/scss/_compare-panel.scss index 8927122..fd3d72e 100644 --- a/src/ui/webview/styles/scss/_compare-panel.scss +++ b/src/ui/webview/styles/scss/_compare-panel.scss @@ -170,6 +170,10 @@ } } +// ====================================== +// File Selector Dropdown | MARK: Search-suggest... +// ====================================== + // ====================================== // Action Buttons | MARK: buttons // ====================================== diff --git a/src/ui/webview/view/index.html b/src/ui/webview/view/index.html index 33098c7..1ac1a48 100644 --- a/src/ui/webview/view/index.html +++ b/src/ui/webview/view/index.html @@ -73,12 +73,14 @@
πŸ” - + | -
+ +
+ +
+ +
+
+ πŸ” + + | + +
+ +
- -
+ +
+
+ πŸ” + + | + +
+ +
- -
-
+
@@ -112,7 +112,7 @@
-
+
From e48f26fc2d5985c3387f18233a2473611b353bf3 Mon Sep 17 00:00:00 2001 From: bastndev Date: Mon, 13 Oct 2025 22:23:03 -0500 Subject: [PATCH 18/18] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20[ADD]=20Implement?= =?UTF-8?q?=20FileExplorerService=20for=20file=20search=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../display/search-down/search-manager.ts | 270 +++++++++++++++- src/services/file-explorer.ts | 304 ++++++++++++++++++ src/ui/compareView.ts | 95 ++++++ src/ui/webview/styles/main.css | 97 +++++- src/ui/webview/styles/main.css.map | 2 +- .../webview/styles/scss/_compare-panel.scss | 121 ++++++- src/ui/webview/view/index.html | 24 ++ 7 files changed, 897 insertions(+), 16 deletions(-) create mode 100644 src/services/file-explorer.ts diff --git a/src/services/display/search-down/search-manager.ts b/src/services/display/search-down/search-manager.ts index 83ece83..dfe5119 100644 --- a/src/services/display/search-down/search-manager.ts +++ b/src/services/display/search-down/search-manager.ts @@ -2,11 +2,21 @@ // Search Manager | MARK: SEARCH MANAGER // ====================================== +export interface FileItem { + name: string; + path: string; + isDirectory: boolean; + extension?: string; + icon?: string; +} + export class SearchManager { private leftInput: HTMLInputElement | null = null; private rightInput: HTMLInputElement | null = null; private leftSuggestions: HTMLElement | null = null; private rightSuggestions: HTMLElement | null = null; + private searchTimeout: NodeJS.Timeout | null = null; + private currentSearchTerm: string = ''; constructor() { this.initializeElements(); @@ -69,12 +79,22 @@ export class SearchManager { private handleInputChange(input: HTMLInputElement, side: 'left' | 'right'): void { const value = input.value.trim(); + // Clear previous timeout + if (this.searchTimeout) { + clearTimeout(this.searchTimeout); + } + if (value.length > 0) { this.showSuggestions(side); - // TODO: AquΓ­ se implementarΓ‘ la bΓΊsqueda de archivos - this.updateSuggestions(side, value); + this.currentSearchTerm = value; + + // Debounce search to avoid too many requests + this.searchTimeout = setTimeout(() => { + this.searchFiles(side, value); + }, 300); } else { this.hideSuggestions(side); + this.currentSearchTerm = ''; } } @@ -106,21 +126,256 @@ export class SearchManager { } } - private updateSuggestions(side: 'left' | 'right', searchTerm: string): void { + private async searchFiles(side: 'left' | 'right', searchTerm: string): Promise { const suggestions = side === 'left' ? this.leftSuggestions : this.rightSuggestions; if (!suggestions) { - return; + return; } - // Por ahora, mostrar un mensaje simple + console.log(`Searching for: "${searchTerm}" in ${side} panel`); + + // Show loading state + this.showLoadingState(suggestions, searchTerm); + + try { + // Request files from the extension + const files = await this.requestFilesFromExtension(searchTerm); + console.log(`Found ${files.length} files for "${searchTerm}":`, files); + this.renderFileSuggestions(suggestions, files, side); + } catch (error) { + console.error('Error searching files:', error); + this.showErrorState(suggestions, 'Error searching files'); + } + } + + private showLoadingState(suggestions: HTMLElement, searchTerm: string): void { + suggestions.innerHTML = ` +
+ πŸ” + Searching for "${searchTerm}"... +
+ `; + } + + private showErrorState(suggestions: HTMLElement, message: string): void { suggestions.innerHTML = ` -
- Searching for: "${searchTerm}"... +
+ ⚠️ + ${message}
`; } + private renderFileSuggestions(suggestions: HTMLElement, files: FileItem[], side: 'left' | 'right'): void { + if (files.length === 0) { + suggestions.innerHTML = ` +
+ πŸ“„ + No files found +
+ `; + return; + } + + const filesHtml = files.map(file => ` +
+ ${file.icon} + ${file.name} + ${file.path} +
+ `).join(''); + + suggestions.innerHTML = filesHtml; + + // Add click event listeners to suggestion items + this.attachSuggestionClickListeners(suggestions, side); + } + + private attachSuggestionClickListeners(suggestions: HTMLElement, side: 'left' | 'right'): void { + const items = suggestions.querySelectorAll('.suggestion-item[data-file-path]'); + + items.forEach(item => { + item.addEventListener('click', (e) => { + e.preventDefault(); + const filePath = item.getAttribute('data-file-path'); + if (filePath) { + this.selectFile(side, filePath); + } + }); + + // Add hover effects + item.addEventListener('mouseenter', () => { + item.classList.add('hover'); + }); + + item.addEventListener('mouseleave', () => { + item.classList.remove('hover'); + }); + }); + } + + private selectFile(side: 'left' | 'right', filePath: string): void { + // Hide suggestions immediately + this.hideSuggestions(side); + + // Show loading state in the input + const input = side === 'left' ? this.leftInput : this.rightInput; + if (input) { + input.value = `Loading ${filePath}...`; + } + + // Notify the extension that a file was selected + this.notifyFileSelected(side, filePath); + } + + private async requestFilesFromExtension(searchTerm: string): Promise { + return new Promise((resolve, reject) => { + console.log('Requesting files from extension for:', searchTerm); + + // Check if VS Code API is available + if (typeof window === 'undefined' || !(window as any).vscode) { + console.error('VS Code API not available, using fallback data'); + // Fallback for testing + setTimeout(() => { + const fallbackFiles: FileItem[] = [ + { name: 'test.tsx', path: 'src/test.tsx', isDirectory: false, extension: '.tsx', icon: 'πŸ”·' }, + { name: 'test2.tsx', path: 'src/test2.tsx', isDirectory: false, extension: '.tsx', icon: 'πŸ”·' }, + { name: 'arrow-functio.tsx', path: 'src/arrow-functio.tsx', isDirectory: false, extension: '.tsx', icon: 'πŸ”·' }, + { name: 'paris.ts', path: 'src/paris.ts', isDirectory: false, extension: '.ts', icon: 'πŸ”·' }, + ].filter(file => + file.name.toLowerCase().includes(searchTerm.toLowerCase()) || + file.path.toLowerCase().includes(searchTerm.toLowerCase()) + ); + resolve(fallbackFiles); + }, 200); + return; + } + + // Set up message listener for this specific request + const messageHandler = (event: MessageEvent) => { + const message = event.data; + console.log('Received message:', message); + + if (message.type === 'fileSearchResults') { + window.removeEventListener('message', messageHandler); + console.log('Received file search results:', message.files); + resolve(message.files || []); + } else if (message.type === 'fileSearchError') { + window.removeEventListener('message', messageHandler); + console.error('File search error:', message.error); + reject(new Error(message.error || 'Search failed')); + } + }; + + // Add temporary message listener + window.addEventListener('message', messageHandler); + + // Request files from extension + try { + (window as any).vscode.postMessage({ + command: 'searchFiles', + searchTerm: searchTerm, + side: 'both' + }); + console.log('Message sent to extension'); + } catch (error) { + window.removeEventListener('message', messageHandler); + console.error('Error sending message to extension:', error); + reject(new Error('Failed to send message to extension')); + } + + // Timeout after 5 seconds + setTimeout(() => { + window.removeEventListener('message', messageHandler); + console.error('Search timeout after 5 seconds'); + reject(new Error('Search timeout')); + }, 5000); + }); + } + + private notifyFileSelected(side: 'left' | 'right', filePath: string): void { + // Send message to extension + if (typeof window !== 'undefined' && (window as any).vscode) { + (window as any).vscode.postMessage({ + command: 'fileSelected', + side: side, + filePath: filePath + }); + } + } + + // ====================================== + // FILE CONTENT HANDLING | MARK: CONTENT + // ====================================== + + public initializeFileContentListener(): void { + // Listen for file content loaded messages from extension + window.addEventListener('message', (event) => { + const message = event.data; + + if (message.type === 'fileContentLoaded') { + this.handleFileContentLoaded(message.side, message.filePath, message.content); + } else if (message.type === 'fileLoadError') { + this.handleFileLoadError(message.side, message.filePath, message.error); + } + }); + } + + private handleFileContentLoaded(side: 'left' | 'right', filePath: string, content: string): void { + // Load content into the appropriate code editor + const codeInput = side === 'left' ? + document.getElementById('codeInput1') as HTMLTextAreaElement : + document.getElementById('codeInput2') as HTMLTextAreaElement; + + if (codeInput) { + // Set the content + codeInput.value = content; + + // Update the input field to show the selected file + const searchInput = side === 'left' ? this.leftInput : this.rightInput; + if (searchInput) { + searchInput.value = filePath; + } + + // Trigger input event to update any listeners + const inputEvent = new Event('input', { bubbles: true }); + codeInput.dispatchEvent(inputEvent); + + // Trigger change event as well + const changeEvent = new Event('change', { bubbles: true }); + codeInput.dispatchEvent(changeEvent); + + console.log(`File content loaded in ${side} panel:`, filePath); + } + + // Show success message + this.showFileLoadSuccess(side, filePath); + } + + private handleFileLoadError(side: 'left' | 'right', filePath: string, error: string): void { + console.error(`Failed to load file ${filePath}:`, error); + + // Reset the input field to show error + const input = side === 'left' ? this.leftInput : this.rightInput; + if (input) { + input.value = `Error loading ${filePath}`; + } + + // Show error message + this.showFileLoadError(side, filePath, error); + } + + private showFileLoadSuccess(side: 'left' | 'right', filePath: string): void { + // You can implement a toast notification here + console.log(`File loaded successfully: ${filePath} (${side} panel)`); + } + + private showFileLoadError(side: 'left' | 'right', filePath: string, error: string): void { + // You can implement a toast notification here + console.error(`Failed to load file ${filePath} (${side} panel): ${error}`); + } + // ====================================== // PUBLIC API | MARK: API // ====================================== @@ -129,6 +384,7 @@ export class SearchManager { // Re-initialize if needed this.initializeElements(); this.attachEventListeners(); + this.initializeFileContentListener(); } } diff --git a/src/services/file-explorer.ts b/src/services/file-explorer.ts new file mode 100644 index 0000000..b5c49f8 --- /dev/null +++ b/src/services/file-explorer.ts @@ -0,0 +1,304 @@ +// ====================================== +// File Explorer Service | MARK: FILE EXPLORER +// ====================================== + +import * as vscode from 'vscode'; +import * as path from 'path'; + +export interface FileItem { + name: string; + path: string; + isDirectory: boolean; + extension?: string; + icon?: string; +} + +export class FileExplorerService { + private workspaceRoot: string | undefined; + + constructor() { + this.workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; + console.log('FileExplorerService initialized with workspace root:', this.workspaceRoot); + } + + // ====================================== + // FILE DISCOVERY | MARK: DISCOVERY + // ====================================== + + /** + * Get all files in the workspace that match the search term + */ + public async searchFiles(searchTerm: string, maxResults: number = 50): Promise { + if (!searchTerm.trim()) { + console.log('Empty search term'); + return []; + } + + // Check if we have a workspace + if (!this.workspaceRoot) { + console.log('No workspace root found, checking for workspace folders...'); + const workspaceFolders = vscode.workspace.workspaceFolders; + console.log('Workspace folders:', workspaceFolders); + + if (workspaceFolders && workspaceFolders.length > 0) { + this.workspaceRoot = workspaceFolders[0].uri.fsPath; + console.log('Updated workspace root:', this.workspaceRoot); + } else { + console.log('No workspace folders available'); + return []; + } + } + + console.log(`Searching in workspace: ${this.workspaceRoot} for: "${searchTerm}"`); + + try { + const files = await this.getFilesRecursively(this.workspaceRoot, searchTerm.toLowerCase(), maxResults); + return files.sort((a, b) => { + const searchLower = searchTerm.toLowerCase(); + const aNameLower = a.name.toLowerCase(); + const bNameLower = b.name.toLowerCase(); + + // Priority 1: Files that start with the search term + const aStartsWith = aNameLower.startsWith(searchLower); + const bStartsWith = bNameLower.startsWith(searchLower); + + if (aStartsWith && !bStartsWith) { + return -1; + } + if (!aStartsWith && bStartsWith) { + return 1; + } + + // Priority 2: Files that contain the search term + const aContains = aNameLower.includes(searchLower); + const bContains = bNameLower.includes(searchLower); + + if (aContains && !bContains) { + return -1; + } + if (!aContains && bContains) { + return 1; + } + + // Priority 3: Files with shorter names (more specific matches) + if (aContains && bContains) { + return a.name.length - b.name.length; + } + + // Default: alphabetical order + return a.name.localeCompare(b.name); + }); + } catch (error) { + console.error('Error searching files:', error); + return []; + } + } + + /** + * Get file icon based on extension + */ + private getFileIcon(filePath: string): string { + const ext = path.extname(filePath).toLowerCase(); + + const iconMap: { [key: string]: string } = { + '.ts': 'πŸ”·', // TypeScript + '.tsx': 'πŸ”·', // TypeScript React + '.js': '🟨', // JavaScript + '.jsx': '🟨', // JavaScript React + '.html': '🌐', // HTML + '.css': '🎨', // CSS + '.scss': '🎨', // SCSS + '.sass': '🎨', // SASS + '.json': 'πŸ“„', // JSON + '.md': 'πŸ“', // Markdown + '.txt': 'πŸ“„', // Text + '.xml': 'πŸ“„', // XML + '.yml': 'βš™οΈ', // YAML + '.yaml': 'βš™οΈ', // YAML + '.py': '🐍', // Python + '.java': 'β˜•', // Java + '.cpp': 'βš™οΈ', // C++ + '.c': 'βš™οΈ', // C + '.php': '🐘', // PHP + '.rb': 'πŸ’Ž', // Ruby + '.go': '🐹', // Go + '.rs': 'πŸ¦€', // Rust + '.vue': 'πŸ’š', // Vue + '.svelte': '🧑', // Svelte + '.astro': '🌌', // Astro + '.svg': 'πŸ–ΌοΈ', // SVG + '.png': 'πŸ–ΌοΈ', // PNG + '.jpg': 'πŸ–ΌοΈ', // JPG + '.jpeg': 'πŸ–ΌοΈ', // JPEG + '.gif': 'πŸ–ΌοΈ', // GIF + '.ico': 'πŸ–ΌοΈ', // ICO + '.pdf': 'πŸ“•', // PDF + '.zip': 'πŸ“¦', // ZIP + '.tar': 'πŸ“¦', // TAR + '.gz': 'πŸ“¦', // GZIP + '.sql': 'πŸ—„οΈ', // SQL + '.sh': '🐚', // Shell + '.bat': '🐚', // Batch + '.ps1': '🐚', // PowerShell + '.dockerfile': '🐳', // Docker + '.gitignore': '🚫', // Git ignore + '.env': 'πŸ”', // Environment + '.config': 'βš™οΈ', // Config + '.lock': 'πŸ”’', // Lock file + }; + + return iconMap[ext] || 'πŸ“„'; // Default file icon + } + + /** + * Recursively get files from directory + */ + private async getFilesRecursively( + dirPath: string, + searchTerm: string, + maxResults: number, + currentResults: FileItem[] = [] + ): Promise { + if (currentResults.length >= maxResults) { + return currentResults; + } + + try { + console.log(`Reading directory: ${dirPath}`); + const entries = await vscode.workspace.fs.readDirectory(vscode.Uri.file(dirPath)); + console.log(`Found ${entries.length} entries in ${dirPath}`); + + for (const [name, type] of entries) { + if (currentResults.length >= maxResults) { + break; + } + + const fullPath = path.join(dirPath, name); + const relativePath = path.relative(this.workspaceRoot!, fullPath); + + // Skip hidden files and common ignore patterns + if (this.shouldIgnoreFile(name, relativePath)) { + continue; + } + + const isDirectory = type === vscode.FileType.Directory; + + // Check if file/directory name matches search term + const nameLower = name.toLowerCase(); + const searchLower = searchTerm.toLowerCase(); + + // More flexible matching: starts with, contains, or fuzzy match + if (nameLower.startsWith(searchLower) || + nameLower.includes(searchLower) || + this.fuzzyMatch(nameLower, searchLower)) { + + const fileItem: FileItem = { + name, + path: relativePath, + isDirectory, + extension: isDirectory ? undefined : path.extname(name), + icon: isDirectory ? 'πŸ“' : this.getFileIcon(name) + }; + + currentResults.push(fileItem); + console.log(`Found matching file: ${name} (${relativePath})`); + } + + // If it's a directory and we haven't reached max results, search recursively + if (isDirectory && currentResults.length < maxResults) { + await this.getFilesRecursively(fullPath, searchTerm, maxResults, currentResults); + } + } + } catch (error) { + console.error(`Error reading directory ${dirPath}:`, error); + } + + return currentResults; + } + + /** + * Simple fuzzy matching for better search results + */ + private fuzzyMatch(text: string, pattern: string): boolean { + if (pattern.length === 0) { + return true; + } + if (pattern.length > text.length) { + return false; + } + + let patternIndex = 0; + for (let i = 0; i < text.length && patternIndex < pattern.length; i++) { + if (text[i] === pattern[patternIndex]) { + patternIndex++; + } + } + + return patternIndex === pattern.length; + } + + /** + * Check if file should be ignored + */ + private shouldIgnoreFile(fileName: string, relativePath: string): boolean { + // Skip hidden files and directories + if (fileName.startsWith('.')) { + return true; + } + + // Skip common build/cache directories + const ignorePatterns = [ + 'node_modules', + 'dist', + 'build', + 'out', + '.git', + '.vscode', + 'coverage', + '.nyc_output', + 'tmp', + 'temp', + '.cache', + '.next', + '.nuxt', + '.vuepress', + '.docusaurus' + ]; + + return ignorePatterns.some(pattern => + relativePath.includes(pattern) || fileName === pattern + ); + } + + /** + * Get file content for preview + */ + public async getFileContent(filePath: string): Promise { + if (!this.workspaceRoot) { + console.log('No workspace root found, checking for workspace folders...'); + const workspaceFolders = vscode.workspace.workspaceFolders; + + if (workspaceFolders && workspaceFolders.length > 0) { + this.workspaceRoot = workspaceFolders[0].uri.fsPath; + console.log('Updated workspace root:', this.workspaceRoot); + } else { + throw new Error('No workspace root found'); + } + } + + const fullPath = path.join(this.workspaceRoot, filePath); + const uri = vscode.Uri.file(fullPath); + + console.log(`Reading file: ${fullPath}`); + + try { + const content = await vscode.workspace.fs.readFile(uri); + const textContent = Buffer.from(content).toString('utf8'); + console.log(`Successfully read file ${filePath}, content length: ${textContent.length}`); + return textContent; + } catch (error) { + console.error(`Error reading file ${filePath}:`, error); + throw error; + } + } +} diff --git a/src/ui/compareView.ts b/src/ui/compareView.ts index e70152d..2f71b24 100644 --- a/src/ui/compareView.ts +++ b/src/ui/compareView.ts @@ -8,6 +8,7 @@ import { createDynamicIconManager, DynamicIconManager, } from './webview/view/webviewIcons'; +import { FileExplorerService, FileItem } from '../services/file-explorer'; // ====================================== // COMPARE VIEW MANAGER | MARK: MANAGER @@ -15,6 +16,7 @@ import { let comparePanel: vscode.WebviewPanel | undefined; let iconManager: DynamicIconManager | undefined; +let fileExplorerService: FileExplorerService | undefined; // ====================================== // TRANSLATIONS | MARK: I18N @@ -110,7 +112,12 @@ export async function createCompareView( // =========== DYNAMIC ICONS ============= iconManager = createDynamicIconManager(context, comparePanel.webview); + // =========== FILE EXPLORER SERVICE ============= + fileExplorerService = new FileExplorerService(); + comparePanel.webview.onDidReceiveMessage(async (message) => { + console.log('Extension received message:', message); + const config = vscode.workspace.getConfiguration('workbench'); const location = config.get('sideBar.location'); @@ -143,6 +150,15 @@ export async function createCompareView( case 'changeLanguage': console.log(`Language changed to: ${message.language}`); break; + case 'searchFiles': + await handleFileSearch(message.searchTerm); + break; + case 'fileSelected': + await handleFileSelected(message.filePath, message.side); + break; + default: + console.log('Unknown command received:', message.command); + break; } }); @@ -151,6 +167,7 @@ export async function createCompareView( iconManager.dispose(); iconManager = undefined; } + fileExplorerService = undefined; comparePanel = undefined; }); } @@ -167,6 +184,7 @@ export async function closeCompareView(): Promise { iconManager.dispose(); iconManager = undefined; } + fileExplorerService = undefined; } /** @@ -280,6 +298,14 @@ function getWebviewContent( }; webview.postMessage(iconMessage); + // Send a test message to verify communication + setTimeout(() => { + webview.postMessage({ + type: 'test', + message: 'Extension is ready' + }); + }, 1000); + return html; } @@ -327,3 +353,72 @@ async function handleCodeDownload( ); } } + +// ====================================== +// FILE SEARCH HANDLERS | MARK: FILE SEARCH +// ====================================== + +/** + * Handle file search requests from webview + */ +async function handleFileSearch(searchTerm: string): Promise { + if (!fileExplorerService || !comparePanel) { + return; + } + + try { + console.log(`Searching for files with term: "${searchTerm}"`); + const files = await fileExplorerService.searchFiles(searchTerm, 20); + console.log(`Found ${files.length} files:`, files); + + // Send files back to webview + comparePanel.webview.postMessage({ + type: 'fileSearchResults', + files: files + }); + } catch (error) { + console.error('Error searching files:', error); + + // Send error back to webview + comparePanel.webview.postMessage({ + type: 'fileSearchError', + error: 'Failed to search files' + }); + } +} + +/** + * Handle file selection from webview + */ +async function handleFileSelected(filePath: string, side: 'left' | 'right'): Promise { + if (!fileExplorerService || !comparePanel) { + console.error('FileExplorerService or comparePanel not available'); + return; + } + + console.log(`Loading file content for: ${filePath} (${side} panel)`); + + try { + const content = await fileExplorerService.getFileContent(filePath); + + console.log(`Successfully loaded file content, sending to webview`); + + // Send file content back to webview + comparePanel.webview.postMessage({ + type: 'fileContentLoaded', + side: side, + filePath: filePath, + content: content + }); + } catch (error) { + console.error('Error loading file content:', error); + + // Send error back to webview + comparePanel.webview.postMessage({ + type: 'fileLoadError', + side: side, + filePath: filePath, + error: `Failed to load file content: ${error instanceof Error ? error.message : 'Unknown error'}` + }); + } +} diff --git a/src/ui/webview/styles/main.css b/src/ui/webview/styles/main.css index 329f9c8..505eada 100644 --- a/src/ui/webview/styles/main.css +++ b/src/ui/webview/styles/main.css @@ -581,16 +581,105 @@ body { display: none; background-color: var(--vscode-input-background); border: 1px solid var(--vscode-input-border); - width: 280px; - max-height: 200px; - border-radius: 5px; + width: 320px; + max-height: 250px; + border-radius: 6px; position: absolute; top: 100%; left: 0; margin-top: 4px; z-index: 999999; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2); overflow-y: auto; + backdrop-filter: blur(8px); +} +.search-suggestions::-webkit-scrollbar { + width: 6px; +} +.search-suggestions::-webkit-scrollbar-track { + background: transparent; +} +.search-suggestions::-webkit-scrollbar-thumb { + background: var(--vscode-widget-border); + border-radius: 3px; +} +.search-suggestions::-webkit-scrollbar-thumb:hover { + background: var(--vscode-descriptionForeground); +} + +.suggestion-item { + display: flex; + align-items: center; + padding: 8px 12px; + cursor: pointer; + transition: all 0.2s ease; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + position: relative; +} +.suggestion-item:last-child { + border-bottom: none; +} +.suggestion-item:hover, .suggestion-item.hover { + background-color: var(--vscode-list-hoverBackground); + transform: translateX(2px); +} +.suggestion-item.loading { + cursor: default; + opacity: 0.7; +} +.suggestion-item.loading:hover { + transform: none; + background-color: transparent; +} +.suggestion-item.error { + cursor: default; + color: #ff6b6b; +} +.suggestion-item.error:hover { + transform: none; + background-color: transparent; +} +.suggestion-item.no-results { + cursor: default; + opacity: 0.6; +} +.suggestion-item.no-results:hover { + transform: none; + background-color: transparent; +} +.suggestion-item .file-icon { + font-size: 16px; + margin-right: 10px; + flex-shrink: 0; + width: 20px; + text-align: center; +} +.suggestion-item .file-name { + font-size: 13px; + font-weight: 500; + color: var(--vscode-foreground); + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: 8px; +} +.suggestion-item .file-path { + font-size: 11px; + color: var(--vscode-descriptionForeground); + opacity: 0.7; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 120px; + flex-shrink: 0; +} +.suggestion-item .file-name .highlight, +.suggestion-item .file-path .highlight { + background-color: rgba(255, 255, 255, 0.2); + padding: 1px 2px; + border-radius: 2px; + font-weight: 600; } .copy-code, diff --git a/src/ui/webview/styles/main.css.map b/src/ui/webview/styles/main.css.map index 2fecfdf..a281c42 100644 --- a/src/ui/webview/styles/main.css.map +++ b/src/ui/webview/styles/main.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT,OFpBG;EEqBH;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAMF;EACE;EACA;EACA;EACA,kBFvDS;EEwDT;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,kBFnEY;EEoEZ,cF9EK;;AEiFP;EACE,kBFrEO;EEsEP,cFrEW;EEsEX;;AAGF;EACE;EACA;EACA,OF3FO;EE4FP;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,OFvGC;EEwGD;EACA;EACA;;AAEA;EACE,OF5GK;EE6GL;;AAGF;EACE;;AAIJ;EACE,OFrHK;EEsHL;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eFhFe;EEiFf;EACA;EACA;EACA;;AAEA;EACE,OF7IK;EE8IL;EACA;EACA;EACA;;AAGF;EACE,kBF1IU;;AE4IV;EACE,OFzJH;EE0JG;;AAIJ;EACE,kBFnJU;EEoJV;EACA;;AAIJ;EACE;EACA,OFvKC;;;AE8KL;EACE;EACA,kBFjKS;EEkKT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMF;AAAA;AAAA;EA/LE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AA4LJ;EAtMA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AAoMJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBFvMU;EEwMV,OFlMU;EEmMV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBFxNQ;;AE4NZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AClVJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EAEE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/global.scss","scss/_toolbar.scss","scss/_compare-panel.scss","scss/_compare-code.scss","scss/_bottom-bar.scss"],"names":[],"mappings":"AA2EA;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE,kBAjFG;EAkFH,OAjFG;EAkFH;EACA;EACA,aA/EY;EAgFZ,WA/EU;EAgFV;EACA;EACA;EACA;EACA;;;AAOF;EACE,OA5EgB;EA6EhB,QA5EiB;;;AA+EnB;EACE,YA/EmB;;;AAkFrB;EACE,YAzGO;;;AAiHT;EACE,kBAvFa;EAwFb;;;AAMF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AA0BJ;AAAA;EAEE;;;AAGF;AAAA;EAzBE;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA,eA/GY;EAgHZ;;;AAIF;AAAA;EAEE;;;AAIF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;EA5DA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EA+CE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EACE;;;AAKJ;EACE;;AAEA;EAhFA;EACA;EACA;EACA;EACA,kBA7HS;EA8HT,OA7IG;EA8IH;EACA;EACA,eAxFiB;EAyFjB;EACA,aA7IY;EAgJZ;EACA;EACA;EACA;EAmEE;EACA;EACA;EACA;;AAIF;EACE;;;AAKJ;EACE;IACE;IACA;;;AAQJ;EACE;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AC5PJ;AAAA;AAAA;AAmCA;EACE,kBDnCG;ECoCH;EACA;EACA;EACA,QDWe;ECVf;EACA;EACA;;;AAIF;EACE;EACA;EACA;;;AAMF;EApCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA+BA;EACA;EACA;;;AAGF;EACE;EACA;EACA,ODhEG;ECiEH;EACA;EACA,eDbc;ECcd,WD9DU;EC+DV;EACA;EACA;;;AAGF;EACE;EACA;EACA,cDfW;;;ACkBb;EACE,WD3EU;EC4EV;;;AAGF;EACE;EACA;EACA,ODxFG;ECyFH;EACA;EACA;EACA;;;AAIF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAMF;EA7FE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAwFA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,KD5DW;EC6DX;EACA,WDtHU;ECuHV,OD7HG;EC8HH;EACA;EACA;;;AAGF;EACE;EACA;EACA,eD/EiB;ECgFjB;EACA;EACA;EACA;EACA,ODjGY;ECkGZ;EACA;EACA;EACA;;AAEA;EApHA;;AAwHA;EAxHA;;AA4HA;EA5HA;;AAgIA;EACE;EACA;;;AAIJ;EACE;EACA,ODrKG;ECsKH;;;AAMF;EA1KE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AA+JJ;EAGE,kBDtKO;ECuKP;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE,OD7LC;EC8LD;EACA;EACA;EACA;;AAGF;EACE,kBD1LQ;EC2LR;EACA;;AAGF;EACE;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAKJ;EAEE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AASN;EACE;EACA;EACA;EACA;EACA;;;AAGF;EAjQE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;;AC3CjB;EACE;;AAsPJ;EAGE;EACA;EACA;EACA;EACA;EACA,KD9MW;EC+MX,cD5MW;;AC8MX;EACE;;;AAKJ;AAAA;EAlRE;EACA;EACA;EACA;EACA;EACA;EACA,eD+CiB;ECgOjB;EACA;;AAEA;AAAA;EACE,kBD/QY;;ACkRd;AAAA;EACE;EACA;;;AClSJ;AAAA;AAAA;AAoBA;EACE,kBFJS;EEKT,OFpBG;EEqBH;EACA;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKJ;EACE;;;AAMF;EACE;EACA;EACA;EACA,kBFvDS;EEwDT;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,kBFnEY;EEoEZ,cF9EK;;AEiFP;EACE,kBFrEO;EEsEP,cFrEW;EEsEX;;AAGF;EACE;EACA;EACA,OF3FO;EE4FP;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,OFvGC;EEwGD;EACA;EACA;;AAEA;EACE,OF5GK;EE6GL;;AAGF;EACE;;AAIJ;EACE,OFrHK;EEsHL;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eFhFe;EEiFf;EACA;EACA;EACA;;AAEA;EACE,OF7IK;EE8IL;EACA;EACA;EACA;;AAGF;EACE,kBF1IU;;AE4IV;EACE,OFzJH;EE0JG;;AAIJ;EACE,kBFnJU;EEoJV;EACA;;AAIJ;EACE;EACA,OFvKC;;;AE8KL;EACE;EACA,kBFjKS;EEkKT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;;AAGF;EACE;;AAGF;EACE,YFtMK;EEuML;;AAEA;EACE,YF3MK;;;AEmNX;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EAEE,kBFvNY;EEwNZ;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,OFhRC;EEiRD;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA,OFzRO;EE0RP;EACA;EACA;EACA;EACA;EACA;;AAMA;AAAA;EACE;EACA;EACA;EACA;;;AAQN;AAAA;AAAA;EAhTE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;EACE;;;AA6SJ;EAvTA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;;AAqTJ;EACE;EACA;;;AAIJ;EACE;IAAK;;EACL;IAAM;;EACN;IAAM;;EACN;IAAM;;EACN;IAAO;;;AAIT;EACE;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,kBFxTU;EEyTV,OFnTU;EEoTV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBFzUQ;;AE6UZ;EACE;EACA;;;AAIJ;EACE;IAAK;IAAqB;;EAC1B;IAAM;IAAuB;;EAC7B;IAAO;IAAqB;;;AAG9B;EACE;IAAK;IAAY;;EACjB;IAAM;IAAY;;EAClB;IAAO;IAAY;;;AAKnB;EACE;;;AAIJ;EACE;IAAK;IAA0B;;EAC/B;IAAM;IAA6B;;EACnC;IAAO;IAA0B;;;AAMnC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;ACncJ;AAAA;AAAA;AA+CA;EACE,kBH/BS;EGgCT;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;;AAGA;EACE;;;AAKJ;EACE;IACE;IACA;;;AAOJ;EACE;EACA,QAhFc;EAiFd,YHtFG;EGuFH;EACA,aHlFY;EGmFZ;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAMF;EACE,OA5GmB;EA6GnB,kBHjHG;EGkHH,OH9Fc;EG+Fd;EACA,aH9GY;EG+GZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA,OHhHc;EGiHd;EACA;EACA;;AAEA;EACE;;AAGF;EA7GA;EACA,OHKY;;AG2GZ;EAjHA;EACA,OHMU;;AG8GV;EArHA;EACA,OHOa;;;AGmHf;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA,YHrKG;EGsKH,OHzHW;EG0HX,aHjKY;EGkKZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAjKA;EACA;EACA;EAIA;EACA;EA+JA;EACA;EACA;EACA;EAGA;;AAEA;EACE;EACA;EACA;;AAGF;EAEE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;EACA;EACA,YH9NG;EG+NH,OH9NG;EG+NH,aH1NY;EG2NZ;EACA;EACA;EACA;EACA;EACA;EAxNA;EACA;EACA;EAIA;EACA;;AAuNE;EACE;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;;AASR;EACE;;AAEF;EACE;;;AAKF;EACE;;AAEF;EACE;;;AAWJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAnRA;EACA;EACA;EAqRA;EACA;EACA;;AAIE;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAIJ;EAvRA;EACA;EACA;EACA,cArByB;;AA6SzB;EA3RA;EACA;EACA;EACA,cArByB;;AAiTzB;EA/RA;EACA;EACA;EACA,cArByB;;AAqTzB;EACE;EACA;EACA,cAvTqB;;AAyTrB;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EAEE,cA/UqB;EAMvB;EACA;EACA;;;AA+UF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAzYA;EACA;EACA;;;AA2YF;EAtXE;EACA,OAuX4C;;AArX5C;EACE;;;AAuXJ;EA3XE;EACA,OA4X0C;;AA1X1C;EACE;;AAuXJ;EAGE;EACA;;AAEA;EACE;;;AAIJ;EAtYE;EACA,OAuY6C;;AArY7C;EACE;;;AA0YJ;EACE;IACE;IACA;;EAGF;IACE;;;AAOJ;EAEI;IAGE;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAIJ;AAAA;AAAA;IAGE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;IACA;;;AASJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;EAEF;IACE;IACA;;;AAOJ;EACE;IACE;IACA;IACA;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;;EAGF;AAAA;AAAA;IAGE;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EAQA;;;AAKJ;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AC7mBJ;AAAA;AAAA;AA6BA;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;AAKJ;EACE;EACA;EACA;EACA,QJxBkB;EIyBlB,OAxEyB;EAyEzB,KJZW;EIaX;EACA,kBJ/DS;EIgET;EACA,eJ1Bc;EI2Bd;;AAEA;EAbF;IAcI,OAhF8B;IAiF9B,KJtBS;;;;AI6Bb;EACE;EACA;EACA;EACA;EACA;EACA;EACA,OA9FY;EA+FZ,QA/FY;EAgGZ;EACA,eJ7CiB;EI8CjB,YACE;;AAIF;EACE,kBJjGY;EIkGZ,eJtDe;EIuDf;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBJhIK;EIiIL;EACA;EACA;;AAGF;EACE;;AAGF;EACE,kBJpIK;EIqIL,OJpIK;;AIsIL;EACE,kBJtIM;;AI0IV;EACE;EACA;EACA;;;AAKJ;EACE,OAxJU;EAyJV,QAzJU;EA0JV;EACA;EACA;;;AAMF;AAAA;EAzJE,YJNO;EIOP;EACA;;AAEA;AAAA;EACE;;;AA6JF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAQN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,kBJpMO;EIqMP;EACA,eJ7Je;EI8Jf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA;EACA,YACE;;AAMJ;EACE;EACA;EACA;EACA,aJ5PQ;EI6PR,OJlQD;EImQC,YACE;EAGF;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE,kBJzQQ;EI0QR;;AAGF;EACE,kBJjRC;EIkRD,OJjRC;EIkRD;;AAIF;EACE,kBJxRC;EIyRD,OJxRC;EIyRD;;AAEA;EACE,kBJ7RD;EI8RC;;;AAUV;EACE;IACE;IACA;;EAGF;IACE;;EAEA;IAEE","file":"main.css"} \ No newline at end of file diff --git a/src/ui/webview/styles/scss/_compare-panel.scss b/src/ui/webview/styles/scss/_compare-panel.scss index 0070326..b5717b8 100644 --- a/src/ui/webview/styles/scss/_compare-panel.scss +++ b/src/ui/webview/styles/scss/_compare-panel.scss @@ -180,16 +180,129 @@ display: none; background-color: $input-bg; border: 1px solid $input-border; - width: 280px; // Mismo ancho que el input - max-height: 200px; - border-radius: 5px; + width: 320px; // Un poco mΓ‘s ancho para mostrar rutas + max-height: 250px; + border-radius: 6px; position: absolute; top: 100%; // Justo debajo del input left: 0; // Alineado con el input margin-top: 4px; // PequeΓ±o espacio z-index: 999999; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2); overflow-y: auto; + backdrop-filter: blur(8px); + + // Scrollbar styling + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: $border; + border-radius: 3px; + + &:hover { + background: $fg-muted; + } + } +} + +// ====================================== +// Suggestion Items | MARK: SUGGESTION ITEMS +// ====================================== +.suggestion-item { + display: flex; + align-items: center; + padding: 8px 12px; + cursor: pointer; + transition: all 0.2s ease; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + position: relative; + + &:last-child { + border-bottom: none; + } + + &:hover, + &.hover { + background-color: $list-hover-bg; + transform: translateX(2px); + } + + &.loading { + cursor: default; + opacity: 0.7; + + &:hover { + transform: none; + background-color: transparent; + } + } + + &.error { + cursor: default; + color: #ff6b6b; + + &:hover { + transform: none; + background-color: transparent; + } + } + + &.no-results { + cursor: default; + opacity: 0.6; + + &:hover { + transform: none; + background-color: transparent; + } + } + + .file-icon { + font-size: 16px; + margin-right: 10px; + flex-shrink: 0; + width: 20px; + text-align: center; + } + + .file-name { + font-size: 13px; + font-weight: 500; + color: $fg; + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: 8px; + } + + .file-path { + font-size: 11px; + color: $fg-muted; + opacity: 0.7; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 120px; + flex-shrink: 0; + } + + // Highlight matching text + .file-name, + .file-path { + .highlight { + background-color: rgba(255, 255, 255, 0.2); + padding: 1px 2px; + border-radius: 2px; + font-weight: 600; + } + } } // ====================================== diff --git a/src/ui/webview/view/index.html b/src/ui/webview/view/index.html index c9238f2..aa4db0e 100644 --- a/src/ui/webview/view/index.html +++ b/src/ui/webview/view/index.html @@ -9,6 +9,30 @@ +