- `;
+ // Build via DOM API to keep the renderer clean of inline-styled
+ // HTML strings. The empty-state SVG is the same plus-icon the
+ // static HTML uses, just built programmatically.
+ list.replaceChildren();
+ const wrap = document.createElement('div');
+ wrap.className = 'empty-state merge-empty-state';
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+ svg.setAttribute('viewBox', '0 0 24 24');
+ svg.setAttribute('fill', 'currentColor');
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
+ path.setAttribute('d', 'M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z');
+ svg.appendChild(path);
+ wrap.appendChild(svg);
+ const p = document.createElement('p');
+ p.textContent = UI_TEXT.merge.empty;
+ wrap.appendChild(p);
+ list.appendChild(wrap);
return;
}
diff --git a/src/styles.css b/src/styles.css
index 7f088ce..6954d73 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -2086,6 +2086,23 @@ select option {
line-height: 1.4;
}
+/* Merge-tab empty state — uses the global .empty-state base and adds
+ its own padding override since the merge file-list container sits
+ inside a settings-card with its own padding. */
+.merge-empty-state {
+ padding: 40px 20px;
+}
+
+.merge-empty-state svg {
+ opacity: 0.3;
+ width: 48px;
+ height: 48px;
+}
+
+.merge-empty-state p {
+ margin-top: 10px;
+}
+
/* Old generic scrollbar rules were dead — superseded by the
purple-themed *::-webkit-scrollbar block further down the file.
Removed to avoid confusion when someone greps for scrollbar styles. */