diff --git a/app/templates/library.html b/app/templates/library.html
index 9d96a48..df284f0 100644
--- a/app/templates/library.html
+++ b/app/templates/library.html
@@ -588,7 +588,7 @@ function libraryPage() {
if (isFolder) {
html += '';
} else {
- html += '' + (item.icon || '\ud83d\udcc4') + '';
+ html += '' + self._renderIcon(item.icon, 'file') + '';
}
// Title or rename input
if (isRenaming) {
@@ -617,6 +617,13 @@ function libraryPage() {
_escHtml(s) { var d=document.createElement('div'); d.textContent = s||''; return d.innerHTML; },
_escAttr(s) { return String(s||'').replace(/&/g,'&').replace(/"/g,'"').replace(//g,'>'); },
+ _renderIcon(icon, fallback) {
+ var name = icon || fallback || 'file';
+ // Only allow known icon names, otherwise use fallback
+ var valid = ['folder','file','star','link','trash','book','home','settings','lock','globe','image','edit','calendar','users','user','search','tag','bar-chart','grid','list','align-left','zap','paperclip','key','refresh','upload'];
+ if (valid.indexOf(name) === -1) name = fallback || 'file';
+ return getSvgIcon(name, 14);
+ },
_recomputeFlatItems() {
var result = [];
diff --git a/static/css/app.css b/static/css/app.css
index 2e4032d..73ea146 100644
--- a/static/css/app.css
+++ b/static/css/app.css
@@ -684,7 +684,8 @@ input, select, textarea { font-family: inherit; color: inherit; }
border: 1px solid var(--border-light);
border-radius: var(--radius-md);
box-shadow: 0 8px 24px rgba(0,0,0,0.4);
- min-width: 200px;
+ width: max-content;
+ max-width: 240px;
padding: var(--space-xs) 0;
z-index: 1000;
display: none;